kirograph 0.27.1 → 0.28.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 (222) hide show
  1. package/README.md +35 -2
  2. package/dist/bin/commands/annotations.js +56 -0
  3. package/dist/bin/commands/annotations.js.map +7 -0
  4. package/dist/bin/commands/ast-rewrite.js +55 -0
  5. package/dist/bin/commands/ast-rewrite.js.map +7 -0
  6. package/dist/bin/commands/bench.js +103 -0
  7. package/dist/bin/commands/bench.js.map +7 -0
  8. package/dist/bin/commands/branch.js +133 -0
  9. package/dist/bin/commands/branch.js.map +7 -0
  10. package/dist/bin/commands/callees.js +76 -0
  11. package/dist/bin/commands/callees.js.map +7 -0
  12. package/dist/bin/commands/callers.js +76 -0
  13. package/dist/bin/commands/callers.js.map +7 -0
  14. package/dist/bin/commands/changelog.js +55 -0
  15. package/dist/bin/commands/changelog.js.map +7 -0
  16. package/dist/bin/commands/circular-deps.js +68 -0
  17. package/dist/bin/commands/circular-deps.js.map +7 -0
  18. package/dist/bin/commands/commit-context.js +55 -0
  19. package/dist/bin/commands/commit-context.js.map +7 -0
  20. package/dist/bin/commands/complexity.js +60 -0
  21. package/dist/bin/commands/complexity.js.map +7 -0
  22. package/dist/bin/commands/cost.js +146 -0
  23. package/dist/bin/commands/cost.js.map +7 -0
  24. package/dist/bin/commands/dependency-depth.js +55 -0
  25. package/dist/bin/commands/dependency-depth.js.map +7 -0
  26. package/dist/bin/commands/diff-context.js +55 -0
  27. package/dist/bin/commands/diff-context.js.map +7 -0
  28. package/dist/bin/commands/distribution.js +56 -0
  29. package/dist/bin/commands/distribution.js.map +7 -0
  30. package/dist/bin/commands/doc-coverage.js +56 -0
  31. package/dist/bin/commands/doc-coverage.js.map +7 -0
  32. package/dist/bin/commands/doctor.js +202 -0
  33. package/dist/bin/commands/doctor.js.map +7 -0
  34. package/dist/bin/commands/dsm.js +56 -0
  35. package/dist/bin/commands/dsm.js.map +7 -0
  36. package/dist/bin/commands/gini.js +55 -0
  37. package/dist/bin/commands/gini.js.map +7 -0
  38. package/dist/bin/commands/god-class.js +56 -0
  39. package/dist/bin/commands/god-class.js.map +7 -0
  40. package/dist/bin/commands/health.js +55 -0
  41. package/dist/bin/commands/health.js.map +7 -0
  42. package/dist/bin/commands/help.js +224 -45
  43. package/dist/bin/commands/help.js.map +2 -2
  44. package/dist/bin/commands/impact.js +76 -0
  45. package/dist/bin/commands/impact.js.map +7 -0
  46. package/dist/bin/commands/inheritance-depth.js +56 -0
  47. package/dist/bin/commands/inheritance-depth.js.map +7 -0
  48. package/dist/bin/commands/insert-at.js +55 -0
  49. package/dist/bin/commands/insert-at.js.map +7 -0
  50. package/dist/bin/commands/largest.js +56 -0
  51. package/dist/bin/commands/largest.js.map +7 -0
  52. package/dist/bin/commands/manifest.js +158 -0
  53. package/dist/bin/commands/manifest.js.map +7 -0
  54. package/dist/bin/commands/module-api.js +57 -0
  55. package/dist/bin/commands/module-api.js.map +7 -0
  56. package/dist/bin/commands/monitor.js +91 -0
  57. package/dist/bin/commands/monitor.js.map +7 -0
  58. package/dist/bin/commands/multi-replace.js +66 -0
  59. package/dist/bin/commands/multi-replace.js.map +7 -0
  60. package/dist/bin/commands/pr-context.js +55 -0
  61. package/dist/bin/commands/pr-context.js.map +7 -0
  62. package/dist/bin/commands/query.js +19 -1
  63. package/dist/bin/commands/query.js.map +3 -3
  64. package/dist/bin/commands/rank.js +56 -0
  65. package/dist/bin/commands/rank.js.map +7 -0
  66. package/dist/bin/commands/read.js +1 -1
  67. package/dist/bin/commands/read.js.map +2 -2
  68. package/dist/bin/commands/recursion.js +56 -0
  69. package/dist/bin/commands/recursion.js.map +7 -0
  70. package/dist/bin/commands/rename-preview.js +56 -0
  71. package/dist/bin/commands/rename-preview.js.map +7 -0
  72. package/dist/bin/commands/session.js +60 -0
  73. package/dist/bin/commands/session.js.map +7 -0
  74. package/dist/bin/commands/simplify-scan.js +56 -0
  75. package/dist/bin/commands/simplify-scan.js.map +7 -0
  76. package/dist/bin/commands/str-replace.js +55 -0
  77. package/dist/bin/commands/str-replace.js.map +7 -0
  78. package/dist/bin/commands/test-coverage.js +59 -0
  79. package/dist/bin/commands/test-coverage.js.map +7 -0
  80. package/dist/bin/commands/test-map.js +56 -0
  81. package/dist/bin/commands/test-map.js.map +7 -0
  82. package/dist/bin/commands/test-risk.js +59 -0
  83. package/dist/bin/commands/test-risk.js.map +7 -0
  84. package/dist/bin/commands/type-hierarchy.js +76 -0
  85. package/dist/bin/commands/type-hierarchy.js.map +7 -0
  86. package/dist/bin/commands/unused-imports.js +55 -0
  87. package/dist/bin/commands/unused-imports.js.map +7 -0
  88. package/dist/bin/commands/upgrade.js +78 -0
  89. package/dist/bin/commands/upgrade.js.map +7 -0
  90. package/dist/bin/installer/common.js +19 -9
  91. package/dist/bin/installer/common.js.map +2 -2
  92. package/dist/bin/installer/config-prompt.js +147 -12
  93. package/dist/bin/installer/config-prompt.js.map +3 -3
  94. package/dist/bin/installer/index.js +62 -6
  95. package/dist/bin/installer/index.js.map +2 -2
  96. package/dist/bin/installer/instructions.js +14 -25
  97. package/dist/bin/installer/instructions.js.map +2 -2
  98. package/dist/bin/installer/mcp.js.map +2 -2
  99. package/dist/bin/installer/steering.js +569 -100
  100. package/dist/bin/installer/steering.js.map +2 -2
  101. package/dist/bin/installer/targets/aider.js +3 -3
  102. package/dist/bin/installer/targets/aider.js.map +2 -2
  103. package/dist/bin/installer/targets/amp.js +3 -3
  104. package/dist/bin/installer/targets/amp.js.map +2 -2
  105. package/dist/bin/installer/targets/antigravity.js +4 -4
  106. package/dist/bin/installer/targets/antigravity.js.map +2 -2
  107. package/dist/bin/installer/targets/augment.js +3 -3
  108. package/dist/bin/installer/targets/augment.js.map +2 -2
  109. package/dist/bin/installer/targets/claude.js +3 -3
  110. package/dist/bin/installer/targets/claude.js.map +2 -2
  111. package/dist/bin/installer/targets/cline.js +4 -4
  112. package/dist/bin/installer/targets/cline.js.map +2 -2
  113. package/dist/bin/installer/targets/codex.js +4 -4
  114. package/dist/bin/installer/targets/codex.js.map +2 -2
  115. package/dist/bin/installer/targets/continue.js +4 -4
  116. package/dist/bin/installer/targets/continue.js.map +2 -2
  117. package/dist/bin/installer/targets/copilot-cli.js +4 -4
  118. package/dist/bin/installer/targets/copilot-cli.js.map +2 -2
  119. package/dist/bin/installer/targets/copilot.js +4 -4
  120. package/dist/bin/installer/targets/copilot.js.map +2 -2
  121. package/dist/bin/installer/targets/cursor.js +5 -5
  122. package/dist/bin/installer/targets/cursor.js.map +2 -2
  123. package/dist/bin/installer/targets/devin.js +4 -4
  124. package/dist/bin/installer/targets/devin.js.map +2 -2
  125. package/dist/bin/installer/targets/gemini-cli.js +4 -4
  126. package/dist/bin/installer/targets/gemini-cli.js.map +2 -2
  127. package/dist/bin/installer/targets/generic.js +2 -2
  128. package/dist/bin/installer/targets/generic.js.map +2 -2
  129. package/dist/bin/installer/targets/goose.js +3 -4
  130. package/dist/bin/installer/targets/goose.js.map +3 -3
  131. package/dist/bin/installer/targets/index.js.map +1 -1
  132. package/dist/bin/installer/targets/junie.js +4 -4
  133. package/dist/bin/installer/targets/junie.js.map +2 -2
  134. package/dist/bin/installer/targets/kilo.js +4 -4
  135. package/dist/bin/installer/targets/kilo.js.map +2 -2
  136. package/dist/bin/installer/targets/kiro.js +27 -3
  137. package/dist/bin/installer/targets/kiro.js.map +2 -2
  138. package/dist/bin/installer/targets/opencode.js +3 -3
  139. package/dist/bin/installer/targets/opencode.js.map +2 -2
  140. package/dist/bin/installer/targets/openhands.js +3 -3
  141. package/dist/bin/installer/targets/openhands.js.map +2 -2
  142. package/dist/bin/installer/targets/qoder.js +2 -2
  143. package/dist/bin/installer/targets/qoder.js.map +2 -2
  144. package/dist/bin/installer/targets/qwen.js +2 -2
  145. package/dist/bin/installer/targets/qwen.js.map +2 -2
  146. package/dist/bin/installer/targets/replit.js +3 -3
  147. package/dist/bin/installer/targets/replit.js.map +2 -2
  148. package/dist/bin/installer/targets/roo.js +4 -4
  149. package/dist/bin/installer/targets/roo.js.map +2 -2
  150. package/dist/bin/installer/targets/tabnine.js +3 -3
  151. package/dist/bin/installer/targets/tabnine.js.map +2 -2
  152. package/dist/bin/installer/targets/trae.js +3 -3
  153. package/dist/bin/installer/targets/trae.js.map +2 -2
  154. package/dist/bin/installer/targets/warp.js +4 -4
  155. package/dist/bin/installer/targets/warp.js.map +2 -2
  156. package/dist/bin/installer/targets/windsurf.js +4 -4
  157. package/dist/bin/installer/targets/windsurf.js.map +2 -2
  158. package/dist/bin/kirograph.js +83 -1
  159. package/dist/bin/kirograph.js.map +3 -3
  160. package/dist/config.js +30 -8
  161. package/dist/config.js.map +2 -2
  162. package/dist/core/branch-manager.js +111 -0
  163. package/dist/core/branch-manager.js.map +7 -0
  164. package/dist/core/pipeline.js +3 -3
  165. package/dist/core/pipeline.js.map +2 -2
  166. package/dist/data/pixelrag-bridge.js +93 -0
  167. package/dist/data/pixelrag-bridge.js.map +7 -0
  168. package/dist/data/pixelrag-manager.js +416 -0
  169. package/dist/data/pixelrag-manager.js.map +7 -0
  170. package/dist/db/database.js +34 -7
  171. package/dist/db/database.js.map +2 -2
  172. package/dist/db/schema.sql +7 -1
  173. package/dist/extraction/complexity.js +116 -0
  174. package/dist/extraction/complexity.js.map +7 -0
  175. package/dist/extraction/extractor.js +52 -1
  176. package/dist/extraction/extractor.js.map +2 -2
  177. package/dist/graph/git-context.js +229 -0
  178. package/dist/graph/git-context.js.map +7 -0
  179. package/dist/index.js +4 -2
  180. package/dist/index.js.map +2 -2
  181. package/dist/mcp/cache.js +1 -1
  182. package/dist/mcp/cache.js.map +2 -2
  183. package/dist/mcp/handler.js +446 -0
  184. package/dist/mcp/handler.js.map +7 -0
  185. package/dist/mcp/handlers/architecture.js +297 -0
  186. package/dist/mcp/handlers/architecture.js.map +7 -0
  187. package/dist/mcp/handlers/branch.js +175 -0
  188. package/dist/mcp/handlers/branch.js.map +7 -0
  189. package/dist/mcp/handlers/code-health.js +563 -0
  190. package/dist/mcp/handlers/code-health.js.map +7 -0
  191. package/dist/mcp/handlers/complexity.js +267 -0
  192. package/dist/mcp/handlers/complexity.js.map +7 -0
  193. package/dist/mcp/handlers/core.js +611 -0
  194. package/dist/mcp/handlers/core.js.map +7 -0
  195. package/dist/mcp/handlers/data.js +337 -0
  196. package/dist/mcp/handlers/data.js.map +7 -0
  197. package/dist/mcp/handlers/docs.js +159 -0
  198. package/dist/mcp/handlers/docs.js.map +7 -0
  199. package/dist/mcp/handlers/edit-primitives.js +200 -0
  200. package/dist/mcp/handlers/edit-primitives.js.map +7 -0
  201. package/dist/mcp/handlers/git-context.js +286 -0
  202. package/dist/mcp/handlers/git-context.js.map +7 -0
  203. package/dist/mcp/handlers/memory.js +363 -0
  204. package/dist/mcp/handlers/memory.js.map +7 -0
  205. package/dist/mcp/handlers/patterns.js +310 -0
  206. package/dist/mcp/handlers/patterns.js.map +7 -0
  207. package/dist/mcp/handlers/security.js +699 -0
  208. package/dist/mcp/handlers/security.js.map +7 -0
  209. package/dist/mcp/handlers/utils.js +97 -0
  210. package/dist/mcp/handlers/utils.js.map +7 -0
  211. package/dist/mcp/handlers/watchmen.js +104 -0
  212. package/dist/mcp/handlers/watchmen.js.map +7 -0
  213. package/dist/mcp/handlers/wiki.js +242 -0
  214. package/dist/mcp/handlers/wiki.js.map +7 -0
  215. package/dist/mcp/server.js +72 -3
  216. package/dist/mcp/server.js.map +2 -2
  217. package/dist/mcp/tool-names.js +136 -10
  218. package/dist/mcp/tool-names.js.map +2 -2
  219. package/dist/mcp/tools.js +846 -3019
  220. package/dist/mcp/tools.js.map +3 -3
  221. package/dist/types.js.map +2 -2
  222. package/package.json +36 -10
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/bin/installer/targets/replit.ts"],
4
- "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n printMcpCommand,\n upsertGeneratedBlock,\n removeGeneratedBlock,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\nimport { buildInstructionOpts } from '../common';\n\nconst REPLIT_BLOCK_ID = 'replit';\n\nexport function installReplitEarly(_projectRoot: string): void {\n // Replit MCP is configured through the Replit UI or .replit file.\n // We print instructions in next steps.\n}\n\nexport function installReplitLate(projectRoot: string, cavemanMode?: CavemanMode | 'off', shellCompressionLevel?: string, enableMemory?: boolean, enableDocs?: boolean, enableData?: boolean, enableSecurity?: boolean, enableArchitecture?: boolean, enablePatterns?: boolean): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'replit.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));\n console.log(` \u2713 Replit instructions written to ${instructionsPath}`);\n\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n const changed = upsertGeneratedBlock(agentsPath, REPLIT_BLOCK_ID, '## KiroGraph', buildAgentInstructions(buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));\n console.log(changed\n ? ` \u2713 AGENTS.md updated with KiroGraph instructions (Replit)`\n : ` \u2713 AGENTS.md already up to date`);\n}\n\nexport function uninitReplit(projectRoot: string): void {\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n if (removeGeneratedBlock(agentsPath, REPLIT_BLOCK_ID)) {\n console.log(` \u2713 Removed KiroGraph block from AGENTS.md (Replit)`);\n }\n}\n\nexport function printReplitNextSteps(projectRoot: string): void {\n console.log('\\n Done! KiroGraph instructions are in AGENTS.md.');\n printMcpCommand(`kirograph serve --mcp --path \"${projectRoot}\"`);\n console.log(' Configure this command in your Replit workspace MCP settings.');\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AAEtB,oBAKO;AACP,0BAAuC;AACvC,IAAAA,iBAAqC;AAErC,MAAM,kBAAkB;AAEjB,SAAS,mBAAmB,cAA4B;AAG/D;AAEO,SAAS,kBAAkB,aAAqB,aAAmC,uBAAgC,cAAwB,YAAsB,YAAsB,gBAA0B,oBAA8B,gBAAgC;AACpR,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,WAAW;AACzE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,gDAAuB,qCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc,CAAC,CAAC;AACxN,UAAQ,IAAI,2CAAsC,gBAAgB,EAAE;AAEpE,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,QAAM,cAAU,oCAAqB,YAAY,iBAAiB,oBAAgB,gDAAuB,qCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc,CAAC,CAAC;AACvQ,UAAQ,IAAI,UACR,oEACA,uCAAkC;AACxC;AAEO,SAAS,aAAa,aAA2B;AACtD,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,UAAI,oCAAqB,YAAY,eAAe,GAAG;AACrD,YAAQ,IAAI,0DAAqD;AAAA,EACnE;AACF;AAEO,SAAS,qBAAqB,aAA2B;AAC9D,UAAQ,IAAI,oDAAoD;AAChE,qCAAgB,iCAAiC,WAAW,GAAG;AAC/D,UAAQ,IAAI,iEAAiE;AAC/E;",
4
+ "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n printMcpCommand,\n upsertGeneratedBlock,\n removeGeneratedBlock,\n LateInstallOptions,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\nimport { buildInstructionOpts } from '../common';\n\nconst REPLIT_BLOCK_ID = 'replit';\n\nexport function installReplitEarly(_projectRoot: string): void {\n // Replit MCP is configured through the Replit UI or .replit file.\n // We print instructions in next steps.\n}\n\nexport function installReplitLate(projectRoot: string, opts: LateInstallOptions): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'replit.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(buildInstructionOpts(opts, false)));\n console.log(` \u2713 Replit instructions written to ${instructionsPath}`);\n\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n const changed = upsertGeneratedBlock(agentsPath, REPLIT_BLOCK_ID, '## KiroGraph', buildAgentInstructions(buildInstructionOpts(opts, false)));\n console.log(changed\n ? ` \u2713 AGENTS.md updated with KiroGraph instructions (Replit)`\n : ` \u2713 AGENTS.md already up to date`);\n}\n\nexport function uninitReplit(projectRoot: string): void {\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n if (removeGeneratedBlock(agentsPath, REPLIT_BLOCK_ID)) {\n console.log(` \u2713 Removed KiroGraph block from AGENTS.md (Replit)`);\n }\n}\n\nexport function printReplitNextSteps(projectRoot: string): void {\n console.log('\\n Done! KiroGraph instructions are in AGENTS.md.');\n printMcpCommand(`kirograph serve --mcp --path \"${projectRoot}\"`);\n console.log(' Configure this command in your Replit workspace MCP settings.');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AAEtB,oBAMO;AACP,0BAAuC;AACvC,IAAAA,iBAAqC;AAErC,MAAM,kBAAkB;AAEjB,SAAS,mBAAmB,cAA4B;AAG/D;AAEO,SAAS,kBAAkB,aAAqB,MAAgC;AACrF,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,WAAW;AACzE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,gDAAuB,qCAAqB,MAAM,KAAK,CAAC,CAAC;AAC5F,UAAQ,IAAI,2CAAsC,gBAAgB,EAAE;AAEpE,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,QAAM,cAAU,oCAAqB,YAAY,iBAAiB,oBAAgB,gDAAuB,qCAAqB,MAAM,KAAK,CAAC,CAAC;AAC3I,UAAQ,IAAI,UACR,oEACA,uCAAkC;AACxC;AAEO,SAAS,aAAa,aAA2B;AACtD,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,UAAI,oCAAqB,YAAY,eAAe,GAAG;AACrD,YAAQ,IAAI,0DAAqD;AAAA,EACnE;AACF;AAEO,SAAS,qBAAqB,aAA2B;AAC9D,UAAQ,IAAI,oDAAoD;AAChE,qCAAgB,iCAAiC,WAAW,GAAG;AAC/D,UAAQ,IAAI,iEAAiE;AAC/E;",
6
6
  "names": ["import_common"]
7
7
  }
@@ -52,16 +52,16 @@ function installRooEarly(projectRoot) {
52
52
  (0, import_common.writeJson)(mcpPath, config);
53
53
  console.log(` \u2713 Roo Code MCP server registered in ${mcpPath}`);
54
54
  }
55
- function installRooLate(projectRoot, cavemanMode, shellCompressionLevel, enableMemory, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns) {
56
- const opts = (0, import_common.buildInstructionOpts)(cavemanMode, shellCompressionLevel, enableMemory, void 0, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns);
55
+ function installRooLate(projectRoot, opts) {
56
+ const instructionOpts = (0, import_common.buildInstructionOpts)(opts, false);
57
57
  const instructionsPath = path.join(projectRoot, ".kirograph", "roo.md");
58
58
  (0, import_common.ensureDir)(path.dirname(instructionsPath));
59
- fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(opts));
59
+ fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(instructionOpts));
60
60
  console.log(` \u2713 Roo Code instructions written to ${instructionsPath}`);
61
61
  const rulesDir = path.join(projectRoot, ".roo", "rules");
62
62
  (0, import_common.ensureDir)(rulesDir);
63
63
  const rulePath = path.join(rulesDir, ROO_RULES_FILE);
64
- fs.writeFileSync(rulePath, (0, import_instructions.buildAgentInstructions)(opts));
64
+ fs.writeFileSync(rulePath, (0, import_instructions.buildAgentInstructions)(instructionOpts));
65
65
  console.log(` \u2713 Roo Code rule written to ${rulePath}`);
66
66
  }
67
67
  function uninitRoo(projectRoot) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/bin/installer/targets/roo.ts"],
4
- "sourcesContent": ["/**\n * Roo Code target.\n *\n * MCP: user-scoped at ~/.roo/mcp_settings.json (print instructions)\n * Rules: .roo/rules/kirograph.md (directory-based, preferred method)\n * Also reads: AGENTS.md, .roorules (fallback)\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n buildInstructionOpts,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n KIROGRAPH_SERVER_NAME,\n readJson,\n writeJson,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst ROO_RULES_FILE = 'kirograph.md';\n\nexport function installRooEarly(projectRoot: string): void {\n // Write MCP to .roo/mcp.json (project-level, per Roo Code docs)\n const mcpPath = path.join(projectRoot, '.roo', 'mcp.json');\n ensureDir(path.dirname(mcpPath));\n const config = readJson(mcpPath);\n config.mcpServers = config.mcpServers ?? {};\n config.mcpServers[KIROGRAPH_SERVER_NAME] = {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n disabled: false,\n };\n writeJson(mcpPath, config);\n console.log(` \u2713 Roo Code MCP server registered in ${mcpPath}`);\n}\n\nexport function installRooLate(projectRoot: string, cavemanMode?: CavemanMode | 'off', shellCompressionLevel?: string, enableMemory?: boolean, enableDocs?: boolean, enableData?: boolean, enableSecurity?: boolean, enableArchitecture?: boolean, enablePatterns?: boolean): void {\n const opts = buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns);\n\n const instructionsPath = path.join(projectRoot, '.kirograph', 'roo.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(opts));\n console.log(` \u2713 Roo Code instructions written to ${instructionsPath}`);\n\n // Write rules file inside .roo/rules/ directory (preferred method)\n const rulesDir = path.join(projectRoot, '.roo', 'rules');\n ensureDir(rulesDir);\n const rulePath = path.join(rulesDir, ROO_RULES_FILE);\n fs.writeFileSync(rulePath, buildAgentInstructions(opts));\n console.log(` \u2713 Roo Code rule written to ${rulePath}`);\n}\n\nexport function uninitRoo(projectRoot: string): void {\n // Remove MCP entry\n const mcpPath = path.join(projectRoot, '.roo', 'mcp.json');\n if (fs.existsSync(mcpPath)) {\n const config = readJson(mcpPath);\n if (config.mcpServers?.[KIROGRAPH_SERVER_NAME]) {\n delete config.mcpServers[KIROGRAPH_SERVER_NAME];\n if (Object.keys(config.mcpServers).length === 0) delete config.mcpServers;\n writeJson(mcpPath, config);\n console.log(` \u2713 Removed kirograph from .roo/mcp.json`);\n }\n }\n\n // Remove rule file\n const rulePath = path.join(projectRoot, '.roo', 'rules', ROO_RULES_FILE);\n if (fs.existsSync(rulePath)) {\n fs.unlinkSync(rulePath);\n console.log(` \u2713 Removed .roo/rules/${ROO_RULES_FILE}`);\n }\n}\n\nexport function printRooNextSteps(): void {\n console.log('\\n Done! Restart Roo Code for the MCP server to load.');\n console.log(' MCP is in .roo/mcp.json');\n console.log(' KiroGraph rule is in .roo/rules/kirograph.md\\n');\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAoB;AACpB,WAAsB;AAEtB,oBAQO;AACP,0BAAuC;AAEvC,MAAM,iBAAiB;AAEhB,SAAS,gBAAgB,aAA2B;AAEzD,QAAM,UAAU,KAAK,KAAK,aAAa,QAAQ,UAAU;AACzD,+BAAU,KAAK,QAAQ,OAAO,CAAC;AAC/B,QAAM,aAAS,wBAAS,OAAO;AAC/B,SAAO,aAAa,OAAO,cAAc,CAAC;AAC1C,SAAO,WAAW,mCAAqB,IAAI;AAAA,IACzC,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACA,+BAAU,SAAS,MAAM;AACzB,UAAQ,IAAI,8CAAyC,OAAO,EAAE;AAChE;AAEO,SAAS,eAAe,aAAqB,aAAmC,uBAAgC,cAAwB,YAAsB,YAAsB,gBAA0B,oBAA8B,gBAAgC;AACjR,QAAM,WAAO,oCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc;AAEzK,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,QAAQ;AACtE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,4CAAuB,IAAI,CAAC;AAC/D,UAAQ,IAAI,6CAAwC,gBAAgB,EAAE;AAGtE,QAAM,WAAW,KAAK,KAAK,aAAa,QAAQ,OAAO;AACvD,+BAAU,QAAQ;AAClB,QAAM,WAAW,KAAK,KAAK,UAAU,cAAc;AACnD,KAAG,cAAc,cAAU,4CAAuB,IAAI,CAAC;AACvD,UAAQ,IAAI,qCAAgC,QAAQ,EAAE;AACxD;AAEO,SAAS,UAAU,aAA2B;AAEnD,QAAM,UAAU,KAAK,KAAK,aAAa,QAAQ,UAAU;AACzD,MAAI,GAAG,WAAW,OAAO,GAAG;AAC1B,UAAM,aAAS,wBAAS,OAAO;AAC/B,QAAI,OAAO,aAAa,mCAAqB,GAAG;AAC9C,aAAO,OAAO,WAAW,mCAAqB;AAC9C,UAAI,OAAO,KAAK,OAAO,UAAU,EAAE,WAAW,EAAG,QAAO,OAAO;AAC/D,mCAAU,SAAS,MAAM;AACzB,cAAQ,IAAI,+CAA0C;AAAA,IACxD;AAAA,EACF;AAGA,QAAM,WAAW,KAAK,KAAK,aAAa,QAAQ,SAAS,cAAc;AACvE,MAAI,GAAG,WAAW,QAAQ,GAAG;AAC3B,OAAG,WAAW,QAAQ;AACtB,YAAQ,IAAI,+BAA0B,cAAc,EAAE;AAAA,EACxD;AACF;AAEO,SAAS,oBAA0B;AACxC,UAAQ,IAAI,wDAAwD;AACpE,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,IAAI,kDAAkD;AAChE;",
4
+ "sourcesContent": ["/**\n * Roo Code target.\n *\n * MCP: user-scoped at ~/.roo/mcp_settings.json (print instructions)\n * Rules: .roo/rules/kirograph.md (directory-based, preferred method)\n * Also reads: AGENTS.md, .roorules (fallback)\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport {\n ensureDir,\n buildInstructionOpts,\n LateInstallOptions,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n KIROGRAPH_SERVER_NAME,\n readJson,\n writeJson,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst ROO_RULES_FILE = 'kirograph.md';\n\nexport function installRooEarly(projectRoot: string): void {\n // Write MCP to .roo/mcp.json (project-level, per Roo Code docs)\n const mcpPath = path.join(projectRoot, '.roo', 'mcp.json');\n ensureDir(path.dirname(mcpPath));\n const config = readJson(mcpPath);\n config.mcpServers = config.mcpServers ?? {};\n config.mcpServers[KIROGRAPH_SERVER_NAME] = {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n disabled: false,\n };\n writeJson(mcpPath, config);\n console.log(` \u2713 Roo Code MCP server registered in ${mcpPath}`);\n}\n\nexport function installRooLate(projectRoot: string, opts: LateInstallOptions): void {\n const instructionOpts = buildInstructionOpts(opts, false);\n\n const instructionsPath = path.join(projectRoot, '.kirograph', 'roo.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(instructionOpts));\n console.log(` \u2713 Roo Code instructions written to ${instructionsPath}`);\n\n // Write rules file inside .roo/rules/ directory (preferred method)\n const rulesDir = path.join(projectRoot, '.roo', 'rules');\n ensureDir(rulesDir);\n const rulePath = path.join(rulesDir, ROO_RULES_FILE);\n fs.writeFileSync(rulePath, buildAgentInstructions(instructionOpts));\n console.log(` \u2713 Roo Code rule written to ${rulePath}`);\n}\n\nexport function uninitRoo(projectRoot: string): void {\n // Remove MCP entry\n const mcpPath = path.join(projectRoot, '.roo', 'mcp.json');\n if (fs.existsSync(mcpPath)) {\n const config = readJson(mcpPath);\n if (config.mcpServers?.[KIROGRAPH_SERVER_NAME]) {\n delete config.mcpServers[KIROGRAPH_SERVER_NAME];\n if (Object.keys(config.mcpServers).length === 0) delete config.mcpServers;\n writeJson(mcpPath, config);\n console.log(` \u2713 Removed kirograph from .roo/mcp.json`);\n }\n }\n\n // Remove rule file\n const rulePath = path.join(projectRoot, '.roo', 'rules', ROO_RULES_FILE);\n if (fs.existsSync(rulePath)) {\n fs.unlinkSync(rulePath);\n console.log(` \u2713 Removed .roo/rules/${ROO_RULES_FILE}`);\n }\n}\n\nexport function printRooNextSteps(): void {\n console.log('\\n Done! Restart Roo Code for the MCP server to load.');\n console.log(' MCP is in .roo/mcp.json');\n console.log(' KiroGraph rule is in .roo/rules/kirograph.md\\n');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAoB;AACpB,WAAsB;AACtB,oBASO;AACP,0BAAuC;AAEvC,MAAM,iBAAiB;AAEhB,SAAS,gBAAgB,aAA2B;AAEzD,QAAM,UAAU,KAAK,KAAK,aAAa,QAAQ,UAAU;AACzD,+BAAU,KAAK,QAAQ,OAAO,CAAC;AAC/B,QAAM,aAAS,wBAAS,OAAO;AAC/B,SAAO,aAAa,OAAO,cAAc,CAAC;AAC1C,SAAO,WAAW,mCAAqB,IAAI;AAAA,IACzC,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACA,+BAAU,SAAS,MAAM;AACzB,UAAQ,IAAI,8CAAyC,OAAO,EAAE;AAChE;AAEO,SAAS,eAAe,aAAqB,MAAgC;AAClF,QAAM,sBAAkB,oCAAqB,MAAM,KAAK;AAExD,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,QAAQ;AACtE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,4CAAuB,eAAe,CAAC;AAC1E,UAAQ,IAAI,6CAAwC,gBAAgB,EAAE;AAGtE,QAAM,WAAW,KAAK,KAAK,aAAa,QAAQ,OAAO;AACvD,+BAAU,QAAQ;AAClB,QAAM,WAAW,KAAK,KAAK,UAAU,cAAc;AACnD,KAAG,cAAc,cAAU,4CAAuB,eAAe,CAAC;AAClE,UAAQ,IAAI,qCAAgC,QAAQ,EAAE;AACxD;AAEO,SAAS,UAAU,aAA2B;AAEnD,QAAM,UAAU,KAAK,KAAK,aAAa,QAAQ,UAAU;AACzD,MAAI,GAAG,WAAW,OAAO,GAAG;AAC1B,UAAM,aAAS,wBAAS,OAAO;AAC/B,QAAI,OAAO,aAAa,mCAAqB,GAAG;AAC9C,aAAO,OAAO,WAAW,mCAAqB;AAC9C,UAAI,OAAO,KAAK,OAAO,UAAU,EAAE,WAAW,EAAG,QAAO,OAAO;AAC/D,mCAAU,SAAS,MAAM;AACzB,cAAQ,IAAI,+CAA0C;AAAA,IACxD;AAAA,EACF;AAGA,QAAM,WAAW,KAAK,KAAK,aAAa,QAAQ,SAAS,cAAc;AACvE,MAAI,GAAG,WAAW,QAAQ,GAAG;AAC3B,OAAG,WAAW,QAAQ;AACtB,YAAQ,IAAI,+BAA0B,cAAc,EAAE;AAAA,EACxD;AACF;AAEO,SAAS,oBAA0B;AACxC,UAAQ,IAAI,wDAAwD;AACpE,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,IAAI,kDAAkD;AAChE;",
6
6
  "names": []
7
7
  }
@@ -47,14 +47,14 @@ function installTabnineEarly(projectRoot) {
47
47
  });
48
48
  console.log(` \u2713 Tabnine MCP server registered in ${mcpPath}`);
49
49
  }
50
- function installTabnineLate(projectRoot, cavemanMode, shellCompressionLevel, enableMemory, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns) {
50
+ function installTabnineLate(projectRoot, opts) {
51
51
  const instructionsPath = path.join(projectRoot, ".kirograph", "tabnine.md");
52
52
  (0, import_common.ensureDir)(path.dirname(instructionsPath));
53
- fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(cavemanMode, shellCompressionLevel, enableMemory, void 0, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));
53
+ fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(opts, false)));
54
54
  console.log(` \u2713 Tabnine instructions written to ${instructionsPath}`);
55
55
  const rulesPath = path.join(projectRoot, ".tabnine", "instructions.md");
56
56
  (0, import_common.ensureDir)(path.dirname(rulesPath));
57
- fs.writeFileSync(rulesPath, (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(cavemanMode, shellCompressionLevel, enableMemory, void 0, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));
57
+ fs.writeFileSync(rulesPath, (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(opts, false)));
58
58
  console.log(` \u2713 Tabnine instructions written to ${rulesPath}`);
59
59
  }
60
60
  function uninitTabnine(projectRoot) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/bin/installer/targets/tabnine.ts"],
4
- "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n removeMcpServersConfig,\n writeMcpServersConfig,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\nimport { buildInstructionOpts } from '../common';\n\nexport function installTabnineEarly(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.tabnine', 'mcp.json');\n writeMcpServersConfig(mcpPath, {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n });\n console.log(` \u2713 Tabnine MCP server registered in ${mcpPath}`);\n}\n\nexport function installTabnineLate(projectRoot: string, cavemanMode?: CavemanMode | 'off', shellCompressionLevel?: string, enableMemory?: boolean, enableDocs?: boolean, enableData?: boolean, enableSecurity?: boolean, enableArchitecture?: boolean, enablePatterns?: boolean): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'tabnine.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));\n console.log(` \u2713 Tabnine instructions written to ${instructionsPath}`);\n\n const rulesPath = path.join(projectRoot, '.tabnine', 'instructions.md');\n ensureDir(path.dirname(rulesPath));\n fs.writeFileSync(rulesPath, buildAgentInstructions(buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));\n console.log(` \u2713 Tabnine instructions written to ${rulesPath}`);\n}\n\nexport function uninitTabnine(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.tabnine', 'mcp.json');\n if (removeMcpServersConfig(mcpPath)) {\n console.log(` \u2713 Removed kirograph from .tabnine/mcp.json`);\n }\n\n const rulesPath = path.join(projectRoot, '.tabnine', 'instructions.md');\n if (fs.existsSync(rulesPath)) {\n fs.unlinkSync(rulesPath);\n console.log(` \u2713 Removed .tabnine/instructions.md`);\n }\n}\n\nexport function printTabnineNextSteps(): void {\n console.log('\\n Done! Restart Tabnine for the MCP server to load.');\n console.log(' KiroGraph instructions are in .tabnine/instructions.md\\n');\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AAEtB,oBAMO;AACP,0BAAuC;AACvC,IAAAA,iBAAqC;AAE9B,SAAS,oBAAoB,aAA2B;AAC7D,QAAM,UAAU,KAAK,KAAK,aAAa,YAAY,UAAU;AAC7D,2CAAsB,SAAS;AAAA,IAC7B,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AACD,UAAQ,IAAI,6CAAwC,OAAO,EAAE;AAC/D;AAEO,SAAS,mBAAmB,aAAqB,aAAmC,uBAAgC,cAAwB,YAAsB,YAAsB,gBAA0B,oBAA8B,gBAAgC;AACrR,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,YAAY;AAC1E,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,gDAAuB,qCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc,CAAC,CAAC;AACxN,UAAQ,IAAI,4CAAuC,gBAAgB,EAAE;AAErE,QAAM,YAAY,KAAK,KAAK,aAAa,YAAY,iBAAiB;AACtE,+BAAU,KAAK,QAAQ,SAAS,CAAC;AACjC,KAAG,cAAc,eAAW,gDAAuB,qCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc,CAAC,CAAC;AACjN,UAAQ,IAAI,4CAAuC,SAAS,EAAE;AAChE;AAEO,SAAS,cAAc,aAA2B;AACvD,QAAM,UAAU,KAAK,KAAK,aAAa,YAAY,UAAU;AAC7D,UAAI,sCAAuB,OAAO,GAAG;AACnC,YAAQ,IAAI,mDAA8C;AAAA,EAC5D;AAEA,QAAM,YAAY,KAAK,KAAK,aAAa,YAAY,iBAAiB;AACtE,MAAI,GAAG,WAAW,SAAS,GAAG;AAC5B,OAAG,WAAW,SAAS;AACvB,YAAQ,IAAI,2CAAsC;AAAA,EACpD;AACF;AAEO,SAAS,wBAA8B;AAC5C,UAAQ,IAAI,uDAAuD;AACnE,UAAQ,IAAI,4DAA4D;AAC1E;",
4
+ "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n LateInstallOptions,\n removeMcpServersConfig,\n writeMcpServersConfig,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\nimport { buildInstructionOpts } from '../common';\n\nexport function installTabnineEarly(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.tabnine', 'mcp.json');\n writeMcpServersConfig(mcpPath, {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n });\n console.log(` \u2713 Tabnine MCP server registered in ${mcpPath}`);\n}\n\nexport function installTabnineLate(projectRoot: string, opts: LateInstallOptions): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'tabnine.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(buildInstructionOpts(opts, false)));\n console.log(` \u2713 Tabnine instructions written to ${instructionsPath}`);\n\n const rulesPath = path.join(projectRoot, '.tabnine', 'instructions.md');\n ensureDir(path.dirname(rulesPath));\n fs.writeFileSync(rulesPath, buildAgentInstructions(buildInstructionOpts(opts, false)));\n console.log(` \u2713 Tabnine instructions written to ${rulesPath}`);\n}\n\nexport function uninitTabnine(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.tabnine', 'mcp.json');\n if (removeMcpServersConfig(mcpPath)) {\n console.log(` \u2713 Removed kirograph from .tabnine/mcp.json`);\n }\n\n const rulesPath = path.join(projectRoot, '.tabnine', 'instructions.md');\n if (fs.existsSync(rulesPath)) {\n fs.unlinkSync(rulesPath);\n console.log(` \u2713 Removed .tabnine/instructions.md`);\n }\n}\n\nexport function printTabnineNextSteps(): void {\n console.log('\\n Done! Restart Tabnine for the MCP server to load.');\n console.log(' KiroGraph instructions are in .tabnine/instructions.md\\n');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AAEtB,oBAOO;AACP,0BAAuC;AACvC,IAAAA,iBAAqC;AAE9B,SAAS,oBAAoB,aAA2B;AAC7D,QAAM,UAAU,KAAK,KAAK,aAAa,YAAY,UAAU;AAC7D,2CAAsB,SAAS;AAAA,IAC7B,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AACD,UAAQ,IAAI,6CAAwC,OAAO,EAAE;AAC/D;AAEO,SAAS,mBAAmB,aAAqB,MAAgC;AACtF,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,YAAY;AAC1E,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,gDAAuB,qCAAqB,MAAM,KAAK,CAAC,CAAC;AAC5F,UAAQ,IAAI,4CAAuC,gBAAgB,EAAE;AAErE,QAAM,YAAY,KAAK,KAAK,aAAa,YAAY,iBAAiB;AACtE,+BAAU,KAAK,QAAQ,SAAS,CAAC;AACjC,KAAG,cAAc,eAAW,gDAAuB,qCAAqB,MAAM,KAAK,CAAC,CAAC;AACrF,UAAQ,IAAI,4CAAuC,SAAS,EAAE;AAChE;AAEO,SAAS,cAAc,aAA2B;AACvD,QAAM,UAAU,KAAK,KAAK,aAAa,YAAY,UAAU;AAC7D,UAAI,sCAAuB,OAAO,GAAG;AACnC,YAAQ,IAAI,mDAA8C;AAAA,EAC5D;AAEA,QAAM,YAAY,KAAK,KAAK,aAAa,YAAY,iBAAiB;AACtE,MAAI,GAAG,WAAW,SAAS,GAAG;AAC5B,OAAG,WAAW,SAAS;AACvB,YAAQ,IAAI,2CAAsC;AAAA,EACpD;AACF;AAEO,SAAS,wBAA8B;AAC5C,UAAQ,IAAI,uDAAuD;AACnE,UAAQ,IAAI,4DAA4D;AAC1E;",
6
6
  "names": ["import_common"]
7
7
  }
@@ -47,16 +47,16 @@ function installTraeEarly(projectRoot) {
47
47
  });
48
48
  console.log(written ? ` \u2713 Trae MCP server registered in ${mcpPath}` : ` \u2713 Trae MCP already configured in ${mcpPath}`);
49
49
  }
50
- function installTraeLate(projectRoot, cavemanMode, shellCompressionLevel, enableMemory, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns) {
50
+ function installTraeLate(projectRoot, opts) {
51
51
  const instructionsPath = path.join(projectRoot, ".kirograph", "trae.md");
52
52
  (0, import_common.ensureDir)(path.dirname(instructionsPath));
53
- fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(cavemanMode, shellCompressionLevel, enableMemory, void 0, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));
53
+ fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(opts, false)));
54
54
  console.log(` \u2713 Trae instructions written to ${instructionsPath}`);
55
55
  const rulesDir = path.join(projectRoot, ".trae", "rules");
56
56
  (0, import_common.ensureDir)(rulesDir);
57
57
  const rulePath = path.join(rulesDir, "kirograph.md");
58
58
  const frontmatter = "---\nalwaysApply: true\n---\n\n";
59
- fs.writeFileSync(rulePath, frontmatter + (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(cavemanMode, shellCompressionLevel, enableMemory, void 0, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));
59
+ fs.writeFileSync(rulePath, frontmatter + (0, import_instructions.buildAgentInstructions)((0, import_common2.buildInstructionOpts)(opts, false)));
60
60
  console.log(` \u2713 Trae rule written to ${rulePath}`);
61
61
  }
62
62
  function uninitTrae(projectRoot) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/bin/installer/targets/trae.ts"],
4
- "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n removeMcpServersConfig,\n writeMcpServersConfig,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\nimport { buildInstructionOpts } from '../common';\n\nexport function installTraeEarly(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.trae', 'mcp.json');\n const written = writeMcpServersConfig(mcpPath, {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n });\n console.log(written\n ? ` \u2713 Trae MCP server registered in ${mcpPath}`\n : ` \u2713 Trae MCP already configured in ${mcpPath}`);\n}\n\nexport function installTraeLate(projectRoot: string, cavemanMode?: CavemanMode | 'off', shellCompressionLevel?: string, enableMemory?: boolean, enableDocs?: boolean, enableData?: boolean, enableSecurity?: boolean, enableArchitecture?: boolean, enablePatterns?: boolean): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'trae.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));\n console.log(` \u2713 Trae instructions written to ${instructionsPath}`);\n\n const rulesDir = path.join(projectRoot, '.trae', 'rules');\n ensureDir(rulesDir);\n const rulePath = path.join(rulesDir, 'kirograph.md');\n const frontmatter = '---\\nalwaysApply: true\\n---\\n\\n';\n fs.writeFileSync(rulePath, frontmatter + buildAgentInstructions(buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns)));\n console.log(` \u2713 Trae rule written to ${rulePath}`);\n}\n\nexport function uninitTrae(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.trae', 'mcp.json');\n if (removeMcpServersConfig(mcpPath)) {\n console.log(` \u2713 Removed kirograph from .trae/mcp.json`);\n }\n\n const rulePath = path.join(projectRoot, '.trae', 'rules', 'kirograph.md');\n if (fs.existsSync(rulePath)) {\n fs.unlinkSync(rulePath);\n console.log(` \u2713 Removed .trae/rules/kirograph.md`);\n }\n}\n\nexport function printTraeNextSteps(): void {\n console.log('\\n Done! Restart Trae for the MCP server to load.');\n console.log(' KiroGraph rule is in .trae/rules/kirograph.md\\n');\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AAEtB,oBAMO;AACP,0BAAuC;AACvC,IAAAA,iBAAqC;AAE9B,SAAS,iBAAiB,aAA2B;AAC1D,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,UAAU;AAC1D,QAAM,cAAU,qCAAsB,SAAS;AAAA,IAC7C,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AACD,UAAQ,IAAI,UACR,0CAAqC,OAAO,KAC5C,2CAAsC,OAAO,EAAE;AACrD;AAEO,SAAS,gBAAgB,aAAqB,aAAmC,uBAAgC,cAAwB,YAAsB,YAAsB,gBAA0B,oBAA8B,gBAAgC;AAClR,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,SAAS;AACvE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,gDAAuB,qCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc,CAAC,CAAC;AACxN,UAAQ,IAAI,yCAAoC,gBAAgB,EAAE;AAElE,QAAM,WAAW,KAAK,KAAK,aAAa,SAAS,OAAO;AACxD,+BAAU,QAAQ;AAClB,QAAM,WAAW,KAAK,KAAK,UAAU,cAAc;AACnD,QAAM,cAAc;AACpB,KAAG,cAAc,UAAU,kBAAc,gDAAuB,qCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc,CAAC,CAAC;AAC9N,UAAQ,IAAI,iCAA4B,QAAQ,EAAE;AACpD;AAEO,SAAS,WAAW,aAA2B;AACpD,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,UAAU;AAC1D,UAAI,sCAAuB,OAAO,GAAG;AACnC,YAAQ,IAAI,gDAA2C;AAAA,EACzD;AAEA,QAAM,WAAW,KAAK,KAAK,aAAa,SAAS,SAAS,cAAc;AACxE,MAAI,GAAG,WAAW,QAAQ,GAAG;AAC3B,OAAG,WAAW,QAAQ;AACtB,YAAQ,IAAI,2CAAsC;AAAA,EACpD;AACF;AAEO,SAAS,qBAA2B;AACzC,UAAQ,IAAI,oDAAoD;AAChE,UAAQ,IAAI,mDAAmD;AACjE;",
4
+ "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport {\n ensureDir,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n LateInstallOptions,\n removeMcpServersConfig,\n writeMcpServersConfig,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\nimport { buildInstructionOpts } from '../common';\n\nexport function installTraeEarly(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.trae', 'mcp.json');\n const written = writeMcpServersConfig(mcpPath, {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n });\n console.log(written\n ? ` \u2713 Trae MCP server registered in ${mcpPath}`\n : ` \u2713 Trae MCP already configured in ${mcpPath}`);\n}\n\nexport function installTraeLate(projectRoot: string, opts: LateInstallOptions): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'trae.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(buildInstructionOpts(opts, false)));\n console.log(` \u2713 Trae instructions written to ${instructionsPath}`);\n\n const rulesDir = path.join(projectRoot, '.trae', 'rules');\n ensureDir(rulesDir);\n const rulePath = path.join(rulesDir, 'kirograph.md');\n const frontmatter = '---\\nalwaysApply: true\\n---\\n\\n';\n fs.writeFileSync(rulePath, frontmatter + buildAgentInstructions(buildInstructionOpts(opts, false)));\n console.log(` \u2713 Trae rule written to ${rulePath}`);\n}\n\nexport function uninitTrae(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.trae', 'mcp.json');\n if (removeMcpServersConfig(mcpPath)) {\n console.log(` \u2713 Removed kirograph from .trae/mcp.json`);\n }\n\n const rulePath = path.join(projectRoot, '.trae', 'rules', 'kirograph.md');\n if (fs.existsSync(rulePath)) {\n fs.unlinkSync(rulePath);\n console.log(` \u2713 Removed .trae/rules/kirograph.md`);\n }\n}\n\nexport function printTraeNextSteps(): void {\n console.log('\\n Done! Restart Trae for the MCP server to load.');\n console.log(' KiroGraph rule is in .trae/rules/kirograph.md\\n');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AACtB,oBAOO;AACP,0BAAuC;AACvC,IAAAA,iBAAqC;AAE9B,SAAS,iBAAiB,aAA2B;AAC1D,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,UAAU;AAC1D,QAAM,cAAU,qCAAsB,SAAS;AAAA,IAC7C,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AACD,UAAQ,IAAI,UACR,0CAAqC,OAAO,KAC5C,2CAAsC,OAAO,EAAE;AACrD;AAEO,SAAS,gBAAgB,aAAqB,MAAgC;AACnF,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,SAAS;AACvE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,gDAAuB,qCAAqB,MAAM,KAAK,CAAC,CAAC;AAC5F,UAAQ,IAAI,yCAAoC,gBAAgB,EAAE;AAElE,QAAM,WAAW,KAAK,KAAK,aAAa,SAAS,OAAO;AACxD,+BAAU,QAAQ;AAClB,QAAM,WAAW,KAAK,KAAK,UAAU,cAAc;AACnD,QAAM,cAAc;AACpB,KAAG,cAAc,UAAU,kBAAc,gDAAuB,qCAAqB,MAAM,KAAK,CAAC,CAAC;AAClG,UAAQ,IAAI,iCAA4B,QAAQ,EAAE;AACpD;AAEO,SAAS,WAAW,aAA2B;AACpD,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,UAAU;AAC1D,UAAI,sCAAuB,OAAO,GAAG;AACnC,YAAQ,IAAI,gDAA2C;AAAA,EACzD;AAEA,QAAM,WAAW,KAAK,KAAK,aAAa,SAAS,SAAS,cAAc;AACxE,MAAI,GAAG,WAAW,QAAQ,GAAG;AAC3B,OAAG,WAAW,QAAQ;AACtB,YAAQ,IAAI,2CAAsC;AAAA,EACpD;AACF;AAEO,SAAS,qBAA2B;AACzC,UAAQ,IAAI,oDAAoD;AAChE,UAAQ,IAAI,mDAAmD;AACjE;",
6
6
  "names": ["import_common"]
7
7
  }
@@ -51,14 +51,14 @@ function installWarpEarly(projectRoot) {
51
51
  (0, import_common.writeJson)(mcpPath, config);
52
52
  console.log(` \u2713 Warp MCP server registered in ${mcpPath}`);
53
53
  }
54
- function installWarpLate(projectRoot, cavemanMode, shellCompressionLevel, enableMemory, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns) {
55
- const opts = (0, import_common.buildInstructionOpts)(cavemanMode, shellCompressionLevel, enableMemory, void 0, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns);
54
+ function installWarpLate(projectRoot, opts) {
55
+ const instructionOpts = (0, import_common.buildInstructionOpts)(opts, false);
56
56
  const instructionsPath = path.join(projectRoot, ".kirograph", "warp.md");
57
57
  (0, import_common.ensureDir)(path.dirname(instructionsPath));
58
- fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(opts));
58
+ fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(instructionOpts));
59
59
  console.log(` \u2713 Warp instructions written to ${instructionsPath}`);
60
60
  const agentsPath = path.join(projectRoot, "AGENTS.md");
61
- const changed = (0, import_common.upsertGeneratedBlock)(agentsPath, WARP_BLOCK_ID, "## KiroGraph", (0, import_instructions.buildAgentInstructions)(opts));
61
+ const changed = (0, import_common.upsertGeneratedBlock)(agentsPath, WARP_BLOCK_ID, "## KiroGraph", (0, import_instructions.buildAgentInstructions)(instructionOpts));
62
62
  console.log(changed ? ` \u2713 AGENTS.md updated with KiroGraph instructions (Warp)` : ` \u2713 AGENTS.md already up to date`);
63
63
  const legacyRule = path.join(projectRoot, ".warp", "rules", "kirograph.md");
64
64
  if (fs.existsSync(legacyRule)) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/bin/installer/targets/warp.ts"],
4
- "sourcesContent": ["/**\n * Warp target.\n *\n * MCP: .warp/.mcp.json (project-level, standard mcpServers format)\n * Rules: AGENTS.md (Warp reads this natively, upsert block)\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n buildInstructionOpts,\n readJson,\n writeJson,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n KIROGRAPH_SERVER_NAME,\n upsertGeneratedBlock,\n removeGeneratedBlock,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst WARP_BLOCK_ID = 'warp';\n\nexport function installWarpEarly(projectRoot: string): void {\n // Write MCP to .warp/.mcp.json (project-level)\n const mcpPath = path.join(projectRoot, '.warp', '.mcp.json');\n ensureDir(path.dirname(mcpPath));\n const config = readJson(mcpPath);\n config.mcpServers = config.mcpServers ?? {};\n config.mcpServers[KIROGRAPH_SERVER_NAME] = {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n };\n writeJson(mcpPath, config);\n console.log(` \u2713 Warp MCP server registered in ${mcpPath}`);\n}\n\nexport function installWarpLate(projectRoot: string, cavemanMode?: CavemanMode | 'off', shellCompressionLevel?: string, enableMemory?: boolean, enableDocs?: boolean, enableData?: boolean, enableSecurity?: boolean, enableArchitecture?: boolean, enablePatterns?: boolean): void {\n const opts = buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, undefined, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns);\n\n const instructionsPath = path.join(projectRoot, '.kirograph', 'warp.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(opts));\n console.log(` \u2713 Warp instructions written to ${instructionsPath}`);\n\n // Write to AGENTS.md (Warp reads this natively)\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n const changed = upsertGeneratedBlock(agentsPath, WARP_BLOCK_ID, '## KiroGraph', buildAgentInstructions(opts));\n console.log(changed\n ? ` \u2713 AGENTS.md updated with KiroGraph instructions (Warp)`\n : ` \u2713 AGENTS.md already up to date`);\n\n // Remove legacy .warp/rules/kirograph.md if it exists\n const legacyRule = path.join(projectRoot, '.warp', 'rules', 'kirograph.md');\n if (fs.existsSync(legacyRule)) {\n fs.unlinkSync(legacyRule);\n console.log(` \u2713 Removed legacy .warp/rules/kirograph.md`);\n }\n}\n\nexport function uninitWarp(projectRoot: string): void {\n // Remove MCP entry\n const mcpPath = path.join(projectRoot, '.warp', '.mcp.json');\n if (fs.existsSync(mcpPath)) {\n const config = readJson(mcpPath);\n if (config.mcpServers?.[KIROGRAPH_SERVER_NAME]) {\n delete config.mcpServers[KIROGRAPH_SERVER_NAME];\n if (Object.keys(config.mcpServers).length === 0) delete config.mcpServers;\n writeJson(mcpPath, config);\n console.log(` \u2713 Removed kirograph from .warp/.mcp.json`);\n }\n }\n\n // Remove AGENTS.md block\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n if (removeGeneratedBlock(agentsPath, WARP_BLOCK_ID)) {\n console.log(` \u2713 Removed KiroGraph block from AGENTS.md (Warp)`);\n }\n}\n\nexport function printWarpNextSteps(): void {\n console.log('\\n Done! Restart Warp for the MCP server to load.');\n console.log(' MCP is in .warp/.mcp.json');\n console.log(' KiroGraph instructions are in AGENTS.md\\n');\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAoB;AACpB,WAAsB;AAEtB,oBAUO;AACP,0BAAuC;AAEvC,MAAM,gBAAgB;AAEf,SAAS,iBAAiB,aAA2B;AAE1D,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,WAAW;AAC3D,+BAAU,KAAK,QAAQ,OAAO,CAAC;AAC/B,QAAM,aAAS,wBAAS,OAAO;AAC/B,SAAO,aAAa,OAAO,cAAc,CAAC;AAC1C,SAAO,WAAW,mCAAqB,IAAI;AAAA,IACzC,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACA,+BAAU,SAAS,MAAM;AACzB,UAAQ,IAAI,0CAAqC,OAAO,EAAE;AAC5D;AAEO,SAAS,gBAAgB,aAAqB,aAAmC,uBAAgC,cAAwB,YAAsB,YAAsB,gBAA0B,oBAA8B,gBAAgC;AAClR,QAAM,WAAO,oCAAqB,aAAa,uBAAuB,cAAc,QAAW,YAAY,YAAY,gBAAgB,oBAAoB,cAAc;AAEzK,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,SAAS;AACvE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,4CAAuB,IAAI,CAAC;AAC/D,UAAQ,IAAI,yCAAoC,gBAAgB,EAAE;AAGlE,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,QAAM,cAAU,oCAAqB,YAAY,eAAe,oBAAgB,4CAAuB,IAAI,CAAC;AAC5G,UAAQ,IAAI,UACR,kEACA,uCAAkC;AAGtC,QAAM,aAAa,KAAK,KAAK,aAAa,SAAS,SAAS,cAAc;AAC1E,MAAI,GAAG,WAAW,UAAU,GAAG;AAC7B,OAAG,WAAW,UAAU;AACxB,YAAQ,IAAI,kDAA6C;AAAA,EAC3D;AACF;AAEO,SAAS,WAAW,aAA2B;AAEpD,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,WAAW;AAC3D,MAAI,GAAG,WAAW,OAAO,GAAG;AAC1B,UAAM,aAAS,wBAAS,OAAO;AAC/B,QAAI,OAAO,aAAa,mCAAqB,GAAG;AAC9C,aAAO,OAAO,WAAW,mCAAqB;AAC9C,UAAI,OAAO,KAAK,OAAO,UAAU,EAAE,WAAW,EAAG,QAAO,OAAO;AAC/D,mCAAU,SAAS,MAAM;AACzB,cAAQ,IAAI,iDAA4C;AAAA,IAC1D;AAAA,EACF;AAGA,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,UAAI,oCAAqB,YAAY,aAAa,GAAG;AACnD,YAAQ,IAAI,wDAAmD;AAAA,EACjE;AACF;AAEO,SAAS,qBAA2B;AACzC,UAAQ,IAAI,oDAAoD;AAChE,UAAQ,IAAI,6BAA6B;AACzC,UAAQ,IAAI,6CAA6C;AAC3D;",
4
+ "sourcesContent": ["/**\n * Warp target.\n *\n * MCP: .warp/.mcp.json (project-level, standard mcpServers format)\n * Rules: AGENTS.md (Warp reads this natively, upsert block)\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport {\n ensureDir,\n buildInstructionOpts,\n readJson,\n writeJson,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n KIROGRAPH_SERVER_NAME,\n upsertGeneratedBlock,\n removeGeneratedBlock,\n LateInstallOptions,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst WARP_BLOCK_ID = 'warp';\n\nexport function installWarpEarly(projectRoot: string): void {\n // Write MCP to .warp/.mcp.json (project-level)\n const mcpPath = path.join(projectRoot, '.warp', '.mcp.json');\n ensureDir(path.dirname(mcpPath));\n const config = readJson(mcpPath);\n config.mcpServers = config.mcpServers ?? {};\n config.mcpServers[KIROGRAPH_SERVER_NAME] = {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n };\n writeJson(mcpPath, config);\n console.log(` \u2713 Warp MCP server registered in ${mcpPath}`);\n}\n\nexport function installWarpLate(projectRoot: string, opts: LateInstallOptions): void {\n const instructionOpts = buildInstructionOpts(opts, false);\n\n const instructionsPath = path.join(projectRoot, '.kirograph', 'warp.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(instructionOpts));\n console.log(` \u2713 Warp instructions written to ${instructionsPath}`);\n\n // Write to AGENTS.md (Warp reads this natively)\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n const changed = upsertGeneratedBlock(agentsPath, WARP_BLOCK_ID, '## KiroGraph', buildAgentInstructions(instructionOpts));\n console.log(changed\n ? ` \u2713 AGENTS.md updated with KiroGraph instructions (Warp)`\n : ` \u2713 AGENTS.md already up to date`);\n\n // Remove legacy .warp/rules/kirograph.md if it exists\n const legacyRule = path.join(projectRoot, '.warp', 'rules', 'kirograph.md');\n if (fs.existsSync(legacyRule)) {\n fs.unlinkSync(legacyRule);\n console.log(` \u2713 Removed legacy .warp/rules/kirograph.md`);\n }\n}\n\nexport function uninitWarp(projectRoot: string): void {\n // Remove MCP entry\n const mcpPath = path.join(projectRoot, '.warp', '.mcp.json');\n if (fs.existsSync(mcpPath)) {\n const config = readJson(mcpPath);\n if (config.mcpServers?.[KIROGRAPH_SERVER_NAME]) {\n delete config.mcpServers[KIROGRAPH_SERVER_NAME];\n if (Object.keys(config.mcpServers).length === 0) delete config.mcpServers;\n writeJson(mcpPath, config);\n console.log(` \u2713 Removed kirograph from .warp/.mcp.json`);\n }\n }\n\n // Remove AGENTS.md block\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n if (removeGeneratedBlock(agentsPath, WARP_BLOCK_ID)) {\n console.log(` \u2713 Removed KiroGraph block from AGENTS.md (Warp)`);\n }\n}\n\nexport function printWarpNextSteps(): void {\n console.log('\\n Done! Restart Warp for the MCP server to load.');\n console.log(' MCP is in .warp/.mcp.json');\n console.log(' KiroGraph instructions are in AGENTS.md\\n');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAoB;AACpB,WAAsB;AACtB,oBAWO;AACP,0BAAuC;AAEvC,MAAM,gBAAgB;AAEf,SAAS,iBAAiB,aAA2B;AAE1D,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,WAAW;AAC3D,+BAAU,KAAK,QAAQ,OAAO,CAAC;AAC/B,QAAM,aAAS,wBAAS,OAAO;AAC/B,SAAO,aAAa,OAAO,cAAc,CAAC;AAC1C,SAAO,WAAW,mCAAqB,IAAI;AAAA,IACzC,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACA,+BAAU,SAAS,MAAM;AACzB,UAAQ,IAAI,0CAAqC,OAAO,EAAE;AAC5D;AAEO,SAAS,gBAAgB,aAAqB,MAAgC;AACnF,QAAM,sBAAkB,oCAAqB,MAAM,KAAK;AAExD,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,SAAS;AACvE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,4CAAuB,eAAe,CAAC;AAC1E,UAAQ,IAAI,yCAAoC,gBAAgB,EAAE;AAGlE,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,QAAM,cAAU,oCAAqB,YAAY,eAAe,oBAAgB,4CAAuB,eAAe,CAAC;AACvH,UAAQ,IAAI,UACR,kEACA,uCAAkC;AAGtC,QAAM,aAAa,KAAK,KAAK,aAAa,SAAS,SAAS,cAAc;AAC1E,MAAI,GAAG,WAAW,UAAU,GAAG;AAC7B,OAAG,WAAW,UAAU;AACxB,YAAQ,IAAI,kDAA6C;AAAA,EAC3D;AACF;AAEO,SAAS,WAAW,aAA2B;AAEpD,QAAM,UAAU,KAAK,KAAK,aAAa,SAAS,WAAW;AAC3D,MAAI,GAAG,WAAW,OAAO,GAAG;AAC1B,UAAM,aAAS,wBAAS,OAAO;AAC/B,QAAI,OAAO,aAAa,mCAAqB,GAAG;AAC9C,aAAO,OAAO,WAAW,mCAAqB;AAC9C,UAAI,OAAO,KAAK,OAAO,UAAU,EAAE,WAAW,EAAG,QAAO,OAAO;AAC/D,mCAAU,SAAS,MAAM;AACzB,cAAQ,IAAI,iDAA4C;AAAA,IAC1D;AAAA,EACF;AAGA,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,UAAI,oCAAqB,YAAY,aAAa,GAAG;AACnD,YAAQ,IAAI,wDAAmD;AAAA,EACjE;AACF;AAEO,SAAS,qBAA2B;AACzC,UAAQ,IAAI,oDAAoD;AAChE,UAAQ,IAAI,6BAA6B;AACzC,UAAQ,IAAI,6CAA6C;AAC3D;",
6
6
  "names": []
7
7
  }
@@ -74,16 +74,16 @@ function installWindsurfEarly(_projectRoot) {
74
74
  (0, import_common.writeJson)(mcpPath, existing);
75
75
  console.log(` \u2713 Windsurf MCP server registered in ${mcpPath}`);
76
76
  }
77
- function installWindsurfLate(projectRoot, cavemanMode, shellCompressionLevel, enableMemory, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns) {
78
- const opts = (0, import_common.buildInstructionOpts)(cavemanMode, shellCompressionLevel, enableMemory, true, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns);
77
+ function installWindsurfLate(projectRoot, opts) {
78
+ const instructionOpts = (0, import_common.buildInstructionOpts)(opts, true);
79
79
  const instructionsPath = path.join(projectRoot, ".kirograph", "windsurf.md");
80
80
  (0, import_common.ensureDir)(path.dirname(instructionsPath));
81
- fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(opts));
81
+ fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(instructionOpts));
82
82
  console.log(` \u2713 Windsurf instructions written to ${instructionsPath}`);
83
83
  const rulesDir = path.join(projectRoot, ".windsurf", "rules");
84
84
  (0, import_common.ensureDir)(rulesDir);
85
85
  const rulePath = path.join(rulesDir, WINDSURF_RULES_FILE);
86
- fs.writeFileSync(rulePath, buildWindsurfRule((0, import_instructions.buildAgentInstructions)(opts)));
86
+ fs.writeFileSync(rulePath, buildWindsurfRule((0, import_instructions.buildAgentInstructions)(instructionOpts)));
87
87
  console.log(` \u2713 Windsurf rule written to ${rulePath}`);
88
88
  const legacyPath = path.join(projectRoot, ".windsurfrules");
89
89
  if (fs.existsSync(legacyPath)) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/bin/installer/targets/windsurf.ts"],
4
- "sourcesContent": ["/**\n * Windsurf target.\n *\n * MCP: user-scoped at ~/.codeium/windsurf/mcp_config.json (print instructions)\n * Rules: .windsurf/rules/kirograph.md (workspace-level, with frontmatter)\n * Hooks: .windsurf/hooks.json (workspace-level)\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n buildInstructionOpts,\n readJson,\n writeJson,\n printMcpSetup,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n KIROGRAPH_SERVER_NAME,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst WINDSURF_RULES_FILE = 'kirograph.md';\n\nfunction buildWindsurfHooks(): object {\n return {\n hooks: {\n post_cascade_response: [\n { command: 'kirograph sync --quiet 2>/dev/null || true', show_output: false },\n ],\n },\n };\n}\n\nfunction buildWindsurfRule(instructions: string): string {\n const frontmatter = [\n '---',\n 'trigger: always_on',\n '---',\n '',\n ].join('\\n');\n return frontmatter + instructions;\n}\n\nexport function installWindsurfEarly(_projectRoot: string): void {\n // Write MCP config to user-scoped ~/.codeium/windsurf/mcp_config.json\n const home = process.env.HOME || process.env.USERPROFILE || '';\n const mcpPath = path.join(home, '.codeium', 'windsurf', 'mcp_config.json');\n ensureDir(path.dirname(mcpPath));\n const existing = readJson(mcpPath);\n existing.mcpServers = existing.mcpServers ?? {};\n if (existing.mcpServers[KIROGRAPH_SERVER_NAME]) {\n console.log(` \u2713 Windsurf MCP already configured in ${mcpPath}`);\n return;\n }\n existing.mcpServers[KIROGRAPH_SERVER_NAME] = {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n };\n writeJson(mcpPath, existing);\n console.log(` \u2713 Windsurf MCP server registered in ${mcpPath}`);\n}\n\nexport function installWindsurfLate(projectRoot: string, cavemanMode?: CavemanMode | 'off', shellCompressionLevel?: string, enableMemory?: boolean, enableDocs?: boolean, enableData?: boolean, enableSecurity?: boolean, enableArchitecture?: boolean, enablePatterns?: boolean): void {\n const opts = buildInstructionOpts(cavemanMode, shellCompressionLevel, enableMemory, true, enableDocs, enableData, enableSecurity, enableArchitecture, enablePatterns);\n\n const instructionsPath = path.join(projectRoot, '.kirograph', 'windsurf.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(opts));\n console.log(` \u2713 Windsurf instructions written to ${instructionsPath}`);\n\n // Write rules file inside .windsurf/rules/ with frontmatter\n const rulesDir = path.join(projectRoot, '.windsurf', 'rules');\n ensureDir(rulesDir);\n const rulePath = path.join(rulesDir, WINDSURF_RULES_FILE);\n fs.writeFileSync(rulePath, buildWindsurfRule(buildAgentInstructions(opts)));\n console.log(` \u2713 Windsurf rule written to ${rulePath}`);\n\n // Remove legacy .windsurfrules if it exists and was created by us\n const legacyPath = path.join(projectRoot, '.windsurfrules');\n if (fs.existsSync(legacyPath)) {\n const content = fs.readFileSync(legacyPath, 'utf8');\n if (content.includes('kirograph')) {\n fs.unlinkSync(legacyPath);\n console.log(` \u2713 Removed legacy .windsurfrules (migrated to .windsurf/rules/)`);\n }\n }\n\n // Write hooks\n const hooksPath = path.join(projectRoot, '.windsurf', 'hooks.json');\n const existing = readJson(hooksPath);\n const kgHooks = buildWindsurfHooks() as any;\n existing.hooks = existing.hooks ?? {};\n for (const [event, commands] of Object.entries(kgHooks.hooks)) {\n existing.hooks[event] = existing.hooks[event] ?? [];\n for (const cmd of commands as Array<{ command: string; show_output: boolean }>) {\n if (!existing.hooks[event].some((h: any) => h.command === cmd.command)) {\n existing.hooks[event].push(cmd);\n }\n }\n }\n writeJson(hooksPath, existing);\n console.log(` \u2713 Windsurf hooks written to ${hooksPath}`);\n}\n\nexport function uninitWindsurf(projectRoot: string): void {\n // Remove user-scoped MCP config\n const home = process.env.HOME || process.env.USERPROFILE || '';\n const mcpPath = path.join(home, '.codeium', 'windsurf', 'mcp_config.json');\n if (fs.existsSync(mcpPath)) {\n const config = readJson(mcpPath);\n if (config.mcpServers?.[KIROGRAPH_SERVER_NAME]) {\n delete config.mcpServers[KIROGRAPH_SERVER_NAME];\n if (Object.keys(config.mcpServers).length === 0) delete config.mcpServers;\n writeJson(mcpPath, config);\n console.log(` \u2713 Removed kirograph from ${mcpPath}`);\n }\n }\n\n // Remove rule file\n const rulePath = path.join(projectRoot, '.windsurf', 'rules', WINDSURF_RULES_FILE);\n if (fs.existsSync(rulePath)) {\n fs.unlinkSync(rulePath);\n console.log(` \u2713 Removed .windsurf/rules/${WINDSURF_RULES_FILE}`);\n }\n\n // Remove legacy .windsurfrules block\n const legacyPath = path.join(projectRoot, '.windsurfrules');\n if (fs.existsSync(legacyPath)) {\n const content = fs.readFileSync(legacyPath, 'utf8');\n if (content.includes('kirograph')) {\n fs.unlinkSync(legacyPath);\n console.log(` \u2713 Removed legacy .windsurfrules`);\n }\n }\n\n // Remove kirograph hooks\n const hooksPath = path.join(projectRoot, '.windsurf', 'hooks.json');\n if (fs.existsSync(hooksPath)) {\n const config = readJson(hooksPath);\n if (config.hooks) {\n let changed = false;\n for (const event of Object.keys(config.hooks)) {\n const before = config.hooks[event].length;\n config.hooks[event] = config.hooks[event].filter((h: any) => !h.command?.includes('kirograph'));\n if (config.hooks[event].length === 0) delete config.hooks[event];\n if (config.hooks[event]?.length !== before) changed = true;\n }\n if (Object.keys(config.hooks).length === 0) delete config.hooks;\n if (changed) {\n writeJson(hooksPath, config);\n console.log(` \u2713 Removed kirograph hooks from .windsurf/hooks.json`);\n }\n }\n }\n}\n\nexport function printWindsurfNextSteps(_projectRoot: string): void {\n const home = process.env.HOME || process.env.USERPROFILE || '';\n const mcpPath = path.join(home, '.codeium', 'windsurf', 'mcp_config.json');\n console.log('\\n Done! Restart Windsurf for the MCP server and hooks to load.');\n console.log(` MCP registered in ${mcpPath}`);\n console.log(' Rule is in .windsurf/rules/kirograph.md');\n console.log(' Auto-sync hook is in .windsurf/hooks.json\\n');\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Windsurf target.\n *\n * MCP: user-scoped at ~/.codeium/windsurf/mcp_config.json (print instructions)\n * Rules: .windsurf/rules/kirograph.md (workspace-level, with frontmatter)\n * Hooks: .windsurf/hooks.json (workspace-level)\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n ensureDir,\n buildInstructionOpts,\n readJson,\n writeJson,\n printMcpSetup,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n KIROGRAPH_SERVER_NAME,\n LateInstallOptions,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst WINDSURF_RULES_FILE = 'kirograph.md';\n\nfunction buildWindsurfHooks(): object {\n return {\n hooks: {\n post_cascade_response: [\n { command: 'kirograph sync --quiet 2>/dev/null || true', show_output: false },\n ],\n },\n };\n}\n\nfunction buildWindsurfRule(instructions: string): string {\n const frontmatter = [\n '---',\n 'trigger: always_on',\n '---',\n '',\n ].join('\\n');\n return frontmatter + instructions;\n}\n\nexport function installWindsurfEarly(_projectRoot: string): void {\n // Write MCP config to user-scoped ~/.codeium/windsurf/mcp_config.json\n const home = process.env.HOME || process.env.USERPROFILE || '';\n const mcpPath = path.join(home, '.codeium', 'windsurf', 'mcp_config.json');\n ensureDir(path.dirname(mcpPath));\n const existing = readJson(mcpPath);\n existing.mcpServers = existing.mcpServers ?? {};\n if (existing.mcpServers[KIROGRAPH_SERVER_NAME]) {\n console.log(` \u2713 Windsurf MCP already configured in ${mcpPath}`);\n return;\n }\n existing.mcpServers[KIROGRAPH_SERVER_NAME] = {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n };\n writeJson(mcpPath, existing);\n console.log(` \u2713 Windsurf MCP server registered in ${mcpPath}`);\n}\n\nexport function installWindsurfLate(projectRoot: string, opts: LateInstallOptions): void {\n const instructionOpts = buildInstructionOpts(opts, true);\n\n const instructionsPath = path.join(projectRoot, '.kirograph', 'windsurf.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(instructionOpts));\n console.log(` \u2713 Windsurf instructions written to ${instructionsPath}`);\n\n // Write rules file inside .windsurf/rules/ with frontmatter\n const rulesDir = path.join(projectRoot, '.windsurf', 'rules');\n ensureDir(rulesDir);\n const rulePath = path.join(rulesDir, WINDSURF_RULES_FILE);\n fs.writeFileSync(rulePath, buildWindsurfRule(buildAgentInstructions(instructionOpts)));\n console.log(` \u2713 Windsurf rule written to ${rulePath}`);\n\n // Remove legacy .windsurfrules if it exists and was created by us\n const legacyPath = path.join(projectRoot, '.windsurfrules');\n if (fs.existsSync(legacyPath)) {\n const content = fs.readFileSync(legacyPath, 'utf8');\n if (content.includes('kirograph')) {\n fs.unlinkSync(legacyPath);\n console.log(` \u2713 Removed legacy .windsurfrules (migrated to .windsurf/rules/)`);\n }\n }\n\n // Write hooks\n const hooksPath = path.join(projectRoot, '.windsurf', 'hooks.json');\n const existing = readJson(hooksPath);\n const kgHooks = buildWindsurfHooks() as any;\n existing.hooks = existing.hooks ?? {};\n for (const [event, commands] of Object.entries(kgHooks.hooks)) {\n existing.hooks[event] = existing.hooks[event] ?? [];\n for (const cmd of commands as Array<{ command: string; show_output: boolean }>) {\n if (!existing.hooks[event].some((h: any) => h.command === cmd.command)) {\n existing.hooks[event].push(cmd);\n }\n }\n }\n writeJson(hooksPath, existing);\n console.log(` \u2713 Windsurf hooks written to ${hooksPath}`);\n}\n\nexport function uninitWindsurf(projectRoot: string): void {\n // Remove user-scoped MCP config\n const home = process.env.HOME || process.env.USERPROFILE || '';\n const mcpPath = path.join(home, '.codeium', 'windsurf', 'mcp_config.json');\n if (fs.existsSync(mcpPath)) {\n const config = readJson(mcpPath);\n if (config.mcpServers?.[KIROGRAPH_SERVER_NAME]) {\n delete config.mcpServers[KIROGRAPH_SERVER_NAME];\n if (Object.keys(config.mcpServers).length === 0) delete config.mcpServers;\n writeJson(mcpPath, config);\n console.log(` \u2713 Removed kirograph from ${mcpPath}`);\n }\n }\n\n // Remove rule file\n const rulePath = path.join(projectRoot, '.windsurf', 'rules', WINDSURF_RULES_FILE);\n if (fs.existsSync(rulePath)) {\n fs.unlinkSync(rulePath);\n console.log(` \u2713 Removed .windsurf/rules/${WINDSURF_RULES_FILE}`);\n }\n\n // Remove legacy .windsurfrules block\n const legacyPath = path.join(projectRoot, '.windsurfrules');\n if (fs.existsSync(legacyPath)) {\n const content = fs.readFileSync(legacyPath, 'utf8');\n if (content.includes('kirograph')) {\n fs.unlinkSync(legacyPath);\n console.log(` \u2713 Removed legacy .windsurfrules`);\n }\n }\n\n // Remove kirograph hooks\n const hooksPath = path.join(projectRoot, '.windsurf', 'hooks.json');\n if (fs.existsSync(hooksPath)) {\n const config = readJson(hooksPath);\n if (config.hooks) {\n let changed = false;\n for (const event of Object.keys(config.hooks)) {\n const before = config.hooks[event].length;\n config.hooks[event] = config.hooks[event].filter((h: any) => !h.command?.includes('kirograph'));\n if (config.hooks[event].length === 0) delete config.hooks[event];\n if (config.hooks[event]?.length !== before) changed = true;\n }\n if (Object.keys(config.hooks).length === 0) delete config.hooks;\n if (changed) {\n writeJson(hooksPath, config);\n console.log(` \u2713 Removed kirograph hooks from .windsurf/hooks.json`);\n }\n }\n }\n}\n\nexport function printWindsurfNextSteps(_projectRoot: string): void {\n const home = process.env.HOME || process.env.USERPROFILE || '';\n const mcpPath = path.join(home, '.codeium', 'windsurf', 'mcp_config.json');\n console.log('\\n Done! Restart Windsurf for the MCP server and hooks to load.');\n console.log(` MCP registered in ${mcpPath}`);\n console.log(' Rule is in .windsurf/rules/kirograph.md');\n console.log(' Auto-sync hook is in .windsurf/hooks.json\\n');\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -59,6 +59,47 @@ var import_remediation = require("./commands/remediation");
59
59
  var import_pattern = require("./commands/pattern");
60
60
  var import_hook = require("./commands/hook");
61
61
  var import_wiki = require("./commands/wiki");
62
+ var import_callers = require("./commands/callers");
63
+ var import_callees = require("./commands/callees");
64
+ var import_impact = require("./commands/impact");
65
+ var import_type_hierarchy = require("./commands/type-hierarchy");
66
+ var import_circular_deps = require("./commands/circular-deps");
67
+ var import_doctor = require("./commands/doctor");
68
+ var import_manifest = require("./commands/manifest");
69
+ var import_unused_imports = require("./commands/unused-imports");
70
+ var import_gini = require("./commands/gini");
71
+ var import_dependency_depth = require("./commands/dependency-depth");
72
+ var import_module_api = require("./commands/module-api");
73
+ var import_rename_preview = require("./commands/rename-preview");
74
+ var import_doc_coverage = require("./commands/doc-coverage");
75
+ var import_god_class = require("./commands/god-class");
76
+ var import_inheritance_depth = require("./commands/inheritance-depth");
77
+ var import_recursion = require("./commands/recursion");
78
+ var import_largest = require("./commands/largest");
79
+ var import_rank = require("./commands/rank");
80
+ var import_distribution = require("./commands/distribution");
81
+ var import_annotations = require("./commands/annotations");
82
+ var import_session = require("./commands/session");
83
+ var import_str_replace = require("./commands/str-replace");
84
+ var import_multi_replace = require("./commands/multi-replace");
85
+ var import_insert_at = require("./commands/insert-at");
86
+ var import_ast_rewrite = require("./commands/ast-rewrite");
87
+ var import_complexity = require("./commands/complexity");
88
+ var import_simplify_scan = require("./commands/simplify-scan");
89
+ var import_diff_context = require("./commands/diff-context");
90
+ var import_commit_context = require("./commands/commit-context");
91
+ var import_pr_context = require("./commands/pr-context");
92
+ var import_changelog = require("./commands/changelog");
93
+ var import_test_map = require("./commands/test-map");
94
+ var import_health = require("./commands/health");
95
+ var import_dsm = require("./commands/dsm");
96
+ var import_test_risk = require("./commands/test-risk");
97
+ var import_test_coverage = require("./commands/test-coverage");
98
+ var import_bench = require("./commands/bench");
99
+ var import_branch = require("./commands/branch");
100
+ var import_monitor = require("./commands/monitor");
101
+ var import_upgrade = require("./commands/upgrade");
102
+ var import_cost = require("./commands/cost");
62
103
  process.on("uncaughtException", (err) => {
63
104
  const msg = err?.message ?? String(err);
64
105
  const isWasmAbort = msg.includes("Aborted(") || msg.includes("RuntimeError") || err?.constructor?.name === "RuntimeError";
@@ -87,7 +128,7 @@ process.on("uncaughtException", (err) => {
87
128
  process.exit(1);
88
129
  });
89
130
  const program = new import_commander.Command();
90
- program.name("kirograph").description("Semantic code knowledge graph for Kiro").version("0.27.1").addHelpCommand(true).hook("preAction", (thisCommand) => {
131
+ program.name("kirograph").description("Semantic code knowledge graph for Kiro").version("0.28.0").addHelpCommand(true).hook("preAction", (thisCommand) => {
91
132
  const name = thisCommand.name();
92
133
  if (name === "init") (0, import_banner.printBanner)();
93
134
  });
@@ -147,6 +188,47 @@ const securityCmd = (0, import_security.register)(program);
147
188
  (0, import_pattern.register)(program);
148
189
  (0, import_hook.register)(program);
149
190
  (0, import_wiki.register)(program);
191
+ (0, import_callers.register)(program);
192
+ (0, import_callees.register)(program);
193
+ (0, import_impact.register)(program);
194
+ (0, import_type_hierarchy.register)(program);
195
+ (0, import_circular_deps.register)(program);
196
+ (0, import_doctor.register)(program);
197
+ (0, import_manifest.register)(program);
198
+ (0, import_unused_imports.register)(program);
199
+ (0, import_gini.register)(program);
200
+ (0, import_dependency_depth.register)(program);
201
+ (0, import_module_api.register)(program);
202
+ (0, import_rename_preview.register)(program);
203
+ (0, import_doc_coverage.register)(program);
204
+ (0, import_god_class.register)(program);
205
+ (0, import_inheritance_depth.register)(program);
206
+ (0, import_recursion.register)(program);
207
+ (0, import_largest.register)(program);
208
+ (0, import_rank.register)(program);
209
+ (0, import_distribution.register)(program);
210
+ (0, import_annotations.register)(program);
211
+ (0, import_session.register)(program);
212
+ (0, import_str_replace.register)(program);
213
+ (0, import_multi_replace.register)(program);
214
+ (0, import_insert_at.register)(program);
215
+ (0, import_ast_rewrite.register)(program);
216
+ (0, import_complexity.register)(program);
217
+ (0, import_simplify_scan.register)(program);
218
+ (0, import_diff_context.register)(program);
219
+ (0, import_commit_context.register)(program);
220
+ (0, import_pr_context.register)(program);
221
+ (0, import_changelog.register)(program);
222
+ (0, import_test_map.register)(program);
223
+ (0, import_health.register)(program);
224
+ (0, import_dsm.register)(program);
225
+ (0, import_test_risk.register)(program);
226
+ (0, import_test_coverage.register)(program);
227
+ (0, import_bench.register)(program);
228
+ (0, import_branch.register)(program);
229
+ (0, import_monitor.register)(program);
230
+ (0, import_upgrade.register)(program);
231
+ (0, import_cost.register)(program);
150
232
  program.command("help").description("Show interactive help").action(() => {
151
233
  if (process.stdout.isTTY) {
152
234
  (0, import_help.printInteractiveHelp)();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/bin/kirograph.ts"],
4
- "sourcesContent": ["#!/usr/bin/env node\n/**\n * KiroGraph CLI\n */\n\nimport { Command } from 'commander';\nimport { printBanner } from './banner';\nimport { printColoredHelp, printInteractiveHelp, register as registerHelp } from './commands/help';\nimport { register as registerInit } from './commands/init';\nimport { register as registerUninit } from './commands/uninit';\nimport { register as registerIndex } from './commands/index';\nimport { register as registerSync } from './commands/sync';\nimport { register as registerStatus } from './commands/status';\nimport { register as registerQuery } from './commands/query';\nimport { register as registerFiles } from './commands/files';\nimport { register as registerContext } from './commands/context';\nimport { register as registerAffected } from './commands/affected';\nimport { register as registerMarkDirty } from './commands/mark-dirty';\nimport { register as registerSyncIfDirty } from './commands/sync-if-dirty';\nimport { register as registerUnlock } from './commands/unlock';\nimport { register as registerInstall } from './commands/install';\nimport { register as registerServe } from './commands/serve';\nimport { register as registerDashboard } from './commands/dashboard';\nimport { register as registerArchitecture } from './commands/architecture';\nimport { register as registerCoupling } from './commands/coupling';\nimport { register as registerPackage } from './commands/package';\nimport { register as registerCaveman } from './commands/caveman';\nimport { register as registerDeadCode } from './commands/dead-code';\nimport { register as registerHotspots } from './commands/hotspots';\nimport { register as registerSurprising } from './commands/surprising';\nimport { register as registerSnapshot } from './commands/snapshot';\nimport { register as registerPath } from './commands/path';\nimport { register as registerExport } from './commands/export';\nimport { register as registerGain } from './commands/gain';\nimport { register as registerCompression } from './commands/compression';\nimport { register as registerExec } from './commands/exec';\nimport { register as registerMemory } from './commands/memory';\nimport { register as registerDocs } from './commands/docs';\nimport { register as registerData } from './commands/data';\nimport { register as registerBenchmark } from './commands/benchmark';\nimport { register as registerFlows } from './commands/flows';\nimport { register as registerCommunities } from './commands/communities';\nimport { register as registerRefactor } from './commands/refactor';\nimport { register as registerRead } from './commands/read';\nimport { register as registerBudget } from './commands/budget';\nimport { register as registerSecurity } from './commands/security';\nimport { register as registerSbom } from './commands/sbom';\nimport { register as registerVex } from './commands/vex';\nimport { register as registerVulns } from './commands/vulns';\nimport { register as registerReachability } from './commands/reachability';\nimport { register as registerStaleness } from './commands/staleness';\nimport { register as registerLicenses } from './commands/licenses';\nimport { register as registerSecurityExport } from './commands/security-export';\nimport { register as registerVulnSuppress } from './commands/vuln-suppress';\nimport { register as registerAttackSurface } from './commands/attack-surface';\nimport { register as registerSecuritySecrets } from './commands/security-secrets';\nimport { register as registerSecurityFlows } from './commands/security-flows';\nimport { register as registerSecurityCiReport } from './commands/security-ci-report';\nimport { register as registerSupplyChain } from './commands/supply-chain';\nimport { register as registerDepConfusion } from './commands/dep-confusion';\nimport { register as registerRemediation } from './commands/remediation';\nimport { register as registerPattern } from './commands/pattern';\nimport { register as registerHook } from './commands/hook';\nimport { register as registerWiki } from './commands/wiki';\n\n// \u2500\u2500 Global error handler for WASM runtime crashes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// node-sqlite3-wasm calls process.abort() when it hits a fatal error (e.g.\n// database is locked by another process). This produces a raw \"Aborted()\"\n// message with no context. We intercept it here to print a clear explanation\n// before the process exits.\nprocess.on('uncaughtException', (err: Error) => {\n const msg = err?.message ?? String(err);\n const isWasmAbort = msg.includes('Aborted(') || msg.includes('RuntimeError') || (err as any)?.constructor?.name === 'RuntimeError';\n\n if (isWasmAbort) {\n process.stderr.write([\n '',\n ' \u2716 KiroGraph crashed: SQLite WASM runtime aborted.',\n '',\n ' Most likely cause: another process (e.g. the Kiro MCP server) is',\n ' holding the database open while indexing is running.',\n '',\n ' How to fix:',\n ' 1. Close Kiro IDE (or disable the kirograph MCP server) before indexing',\n ' 2. Run: kirograph unlock',\n ' 3. Then retry: kirograph index',\n '',\n ' If the problem persists, delete the lock manually:',\n ' del .kirograph\\\\kirograph.db.lock (Windows)',\n ' rm -rf .kirograph/kirograph.db.lock (macOS/Linux)',\n '',\n ].join('\\n'));\n process.exit(1);\n }\n\n // Not a WASM crash \u2014 re-throw as normal\n process.stderr.write(`Uncaught error: ${msg}\\n`);\n process.exit(1);\n});\n\ndeclare const __CLI_VERSION__: string;\n\nconst program = new Command();\n\nprogram\n .name('kirograph')\n .description('Semantic code knowledge graph for Kiro')\n .version(__CLI_VERSION__)\n .addHelpCommand(true)\n .hook('preAction', (thisCommand) => {\n const name = thisCommand.name();\n if (name === 'init') printBanner();\n });\n\nregisterInstall(program);\nregisterInit(program);\nregisterUninit(program);\nregisterIndex(program);\nregisterSync(program);\nregisterSyncIfDirty(program);\nregisterMarkDirty(program);\nregisterStatus(program);\nregisterQuery(program);\nregisterContext(program);\nregisterFiles(program);\nregisterAffected(program);\nregisterUnlock(program);\nregisterServe(program);\nregisterDashboard(program);\nregisterArchitecture(program);\nregisterCoupling(program);\nregisterPackage(program);\nregisterCaveman(program);\nregisterDeadCode(program);\nregisterHotspots(program);\nregisterSurprising(program);\nregisterSnapshot(program);\nregisterPath(program);\nregisterExport(program);\nregisterGain(program);\nregisterCompression(program);\nregisterExec(program);\nregisterMemory(program);\nregisterDocs(program);\nregisterData(program);\nregisterBenchmark(program);\nregisterFlows(program);\nregisterCommunities(program);\nregisterRefactor(program);\nregisterRead(program);\nregisterBudget(program);\nconst securityCmd = registerSecurity(program);\nregisterSbom(program);\nregisterVex(program);\nregisterVulns(program);\nregisterReachability(program);\nregisterStaleness(program);\nregisterLicenses(program);\nregisterSecurityExport(securityCmd);\nregisterSecuritySecrets(securityCmd);\nregisterSecurityFlows(securityCmd);\nregisterSecurityCiReport(securityCmd);\nregisterVulnSuppress(program);\nregisterAttackSurface(program);\nregisterSupplyChain(program);\nregisterDepConfusion(program);\nregisterRemediation(program);\nregisterPattern(program);\nregisterHook(program);\nregisterWiki(program);\n\n// Register the help command for `kirograph help`\nprogram\n .command('help')\n .description('Show interactive help')\n .action(() => {\n if (process.stdout.isTTY) {\n printInteractiveHelp();\n } else {\n printBanner();\n printColoredHelp();\n process.exit(0);\n }\n });\n\nregisterHelp(program);\n\n// Show interactive help when called with no arguments\nif (process.argv.length === 2) {\n if (process.stdout.isTTY) {\n printInteractiveHelp();\n } else {\n printBanner();\n printColoredHelp();\n process.exit(0);\n }\n} else if (process.argv.includes('--help') || process.argv.includes('-h')) {\n // Intercept --help before Commander to avoid process.exit\n if (process.stdout.isTTY) {\n printInteractiveHelp();\n } else {\n printBanner();\n printColoredHelp();\n process.exit(0);\n }\n} else {\n program.parse(process.argv);\n}\n"],
5
- "mappings": "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",
6
- "names": ["registerInstall", "registerInit", "registerUninit", "registerIndex", "registerSync", "registerSyncIfDirty", "registerMarkDirty", "registerStatus", "registerQuery", "registerContext", "registerFiles", "registerAffected", "registerUnlock", "registerServe", "registerDashboard", "registerArchitecture", "registerCoupling", "registerPackage", "registerCaveman", "registerDeadCode", "registerHotspots", "registerSurprising", "registerSnapshot", "registerPath", "registerExport", "registerGain", "registerCompression", "registerExec", "registerMemory", "registerDocs", "registerData", "registerBenchmark", "registerFlows", "registerCommunities", "registerRefactor", "registerRead", "registerBudget", "registerSecurity", "registerSbom", "registerVex", "registerVulns", "registerReachability", "registerStaleness", "registerLicenses", "registerSecurityExport", "registerSecuritySecrets", "registerSecurityFlows", "registerSecurityCiReport", "registerVulnSuppress", "registerAttackSurface", "registerSupplyChain", "registerDepConfusion", "registerRemediation", "registerPattern", "registerHook", "registerWiki", "registerHelp"]
4
+ "sourcesContent": ["#!/usr/bin/env node\n/**\n * KiroGraph CLI\n */\n\nimport { Command } from 'commander';\nimport { printBanner } from './banner';\nimport { printColoredHelp, printInteractiveHelp, register as registerHelp } from './commands/help';\nimport { register as registerInit } from './commands/init';\nimport { register as registerUninit } from './commands/uninit';\nimport { register as registerIndex } from './commands/index';\nimport { register as registerSync } from './commands/sync';\nimport { register as registerStatus } from './commands/status';\nimport { register as registerQuery } from './commands/query';\nimport { register as registerFiles } from './commands/files';\nimport { register as registerContext } from './commands/context';\nimport { register as registerAffected } from './commands/affected';\nimport { register as registerMarkDirty } from './commands/mark-dirty';\nimport { register as registerSyncIfDirty } from './commands/sync-if-dirty';\nimport { register as registerUnlock } from './commands/unlock';\nimport { register as registerInstall } from './commands/install';\nimport { register as registerServe } from './commands/serve';\nimport { register as registerDashboard } from './commands/dashboard';\nimport { register as registerArchitecture } from './commands/architecture';\nimport { register as registerCoupling } from './commands/coupling';\nimport { register as registerPackage } from './commands/package';\nimport { register as registerCaveman } from './commands/caveman';\nimport { register as registerDeadCode } from './commands/dead-code';\nimport { register as registerHotspots } from './commands/hotspots';\nimport { register as registerSurprising } from './commands/surprising';\nimport { register as registerSnapshot } from './commands/snapshot';\nimport { register as registerPath } from './commands/path';\nimport { register as registerExport } from './commands/export';\nimport { register as registerGain } from './commands/gain';\nimport { register as registerCompression } from './commands/compression';\nimport { register as registerExec } from './commands/exec';\nimport { register as registerMemory } from './commands/memory';\nimport { register as registerDocs } from './commands/docs';\nimport { register as registerData } from './commands/data';\nimport { register as registerBenchmark } from './commands/benchmark';\nimport { register as registerFlows } from './commands/flows';\nimport { register as registerCommunities } from './commands/communities';\nimport { register as registerRefactor } from './commands/refactor';\nimport { register as registerRead } from './commands/read';\nimport { register as registerBudget } from './commands/budget';\nimport { register as registerSecurity } from './commands/security';\nimport { register as registerSbom } from './commands/sbom';\nimport { register as registerVex } from './commands/vex';\nimport { register as registerVulns } from './commands/vulns';\nimport { register as registerReachability } from './commands/reachability';\nimport { register as registerStaleness } from './commands/staleness';\nimport { register as registerLicenses } from './commands/licenses';\nimport { register as registerSecurityExport } from './commands/security-export';\nimport { register as registerVulnSuppress } from './commands/vuln-suppress';\nimport { register as registerAttackSurface } from './commands/attack-surface';\nimport { register as registerSecuritySecrets } from './commands/security-secrets';\nimport { register as registerSecurityFlows } from './commands/security-flows';\nimport { register as registerSecurityCiReport } from './commands/security-ci-report';\nimport { register as registerSupplyChain } from './commands/supply-chain';\nimport { register as registerDepConfusion } from './commands/dep-confusion';\nimport { register as registerRemediation } from './commands/remediation';\nimport { register as registerPattern } from './commands/pattern';\nimport { register as registerHook } from './commands/hook';\nimport { register as registerWiki } from './commands/wiki';\nimport { register as registerCallers } from './commands/callers';\nimport { register as registerCallees } from './commands/callees';\nimport { register as registerImpact } from './commands/impact';\nimport { register as registerTypeHierarchy } from './commands/type-hierarchy';\nimport { register as registerCircularDeps } from './commands/circular-deps';\nimport { register as registerDoctor } from './commands/doctor';\nimport { register as registerManifest } from './commands/manifest';\nimport { register as registerUnusedImports } from './commands/unused-imports';\nimport { register as registerGini } from './commands/gini';\nimport { register as registerDependencyDepth } from './commands/dependency-depth';\nimport { register as registerModuleApi } from './commands/module-api';\nimport { register as registerRenamePreview } from './commands/rename-preview';\nimport { register as registerDocCoverage } from './commands/doc-coverage';\nimport { register as registerGodClass } from './commands/god-class';\nimport { register as registerInheritanceDepth } from './commands/inheritance-depth';\nimport { register as registerRecursion } from './commands/recursion';\nimport { register as registerLargest } from './commands/largest';\nimport { register as registerRank } from './commands/rank';\nimport { register as registerDistribution } from './commands/distribution';\nimport { register as registerAnnotations } from './commands/annotations';\nimport { register as registerSession } from './commands/session';\nimport { register as registerStrReplace } from './commands/str-replace';\nimport { register as registerMultiReplace } from './commands/multi-replace';\nimport { register as registerInsertAt } from './commands/insert-at';\nimport { register as registerAstRewrite } from './commands/ast-rewrite';\nimport { register as registerComplexityCli } from './commands/complexity';\nimport { register as registerSimplifyScan } from './commands/simplify-scan';\nimport { register as registerDiffContext } from './commands/diff-context';\nimport { register as registerCommitContext } from './commands/commit-context';\nimport { register as registerPrContext } from './commands/pr-context';\nimport { register as registerChangelog } from './commands/changelog';\nimport { register as registerTestMap } from './commands/test-map';\nimport { register as registerHealth } from './commands/health';\nimport { register as registerDsm } from './commands/dsm';\nimport { register as registerTestRisk } from './commands/test-risk';\nimport { register as registerTestCoverage } from './commands/test-coverage';\nimport { register as registerBench } from './commands/bench';\nimport { register as registerBranch } from './commands/branch';\nimport { register as registerMonitor } from './commands/monitor';\nimport { register as registerUpgrade } from './commands/upgrade';\nimport { register as registerCost } from './commands/cost';\n\n// \u2500\u2500 Global error handler for WASM runtime crashes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n//\n// node-sqlite3-wasm calls process.abort() when it hits a fatal error (e.g.\n// database is locked by another process). This produces a raw \"Aborted()\"\n// message with no context. We intercept it here to print a clear explanation\n// before the process exits.\nprocess.on('uncaughtException', (err: Error) => {\n const msg = err?.message ?? String(err);\n const isWasmAbort = msg.includes('Aborted(') || msg.includes('RuntimeError') || (err as any)?.constructor?.name === 'RuntimeError';\n\n if (isWasmAbort) {\n process.stderr.write([\n '',\n ' \u2716 KiroGraph crashed: SQLite WASM runtime aborted.',\n '',\n ' Most likely cause: another process (e.g. the Kiro MCP server) is',\n ' holding the database open while indexing is running.',\n '',\n ' How to fix:',\n ' 1. Close Kiro IDE (or disable the kirograph MCP server) before indexing',\n ' 2. Run: kirograph unlock',\n ' 3. Then retry: kirograph index',\n '',\n ' If the problem persists, delete the lock manually:',\n ' del .kirograph\\\\kirograph.db.lock (Windows)',\n ' rm -rf .kirograph/kirograph.db.lock (macOS/Linux)',\n '',\n ].join('\\n'));\n process.exit(1);\n }\n\n // Not a WASM crash \u2014 re-throw as normal\n process.stderr.write(`Uncaught error: ${msg}\\n`);\n process.exit(1);\n});\n\ndeclare const __CLI_VERSION__: string;\n\nconst program = new Command();\n\nprogram\n .name('kirograph')\n .description('Semantic code knowledge graph for Kiro')\n .version(__CLI_VERSION__)\n .addHelpCommand(true)\n .hook('preAction', (thisCommand) => {\n const name = thisCommand.name();\n if (name === 'init') printBanner();\n });\n\nregisterInstall(program);\nregisterInit(program);\nregisterUninit(program);\nregisterIndex(program);\nregisterSync(program);\nregisterSyncIfDirty(program);\nregisterMarkDirty(program);\nregisterStatus(program);\nregisterQuery(program);\nregisterContext(program);\nregisterFiles(program);\nregisterAffected(program);\nregisterUnlock(program);\nregisterServe(program);\nregisterDashboard(program);\nregisterArchitecture(program);\nregisterCoupling(program);\nregisterPackage(program);\nregisterCaveman(program);\nregisterDeadCode(program);\nregisterHotspots(program);\nregisterSurprising(program);\nregisterSnapshot(program);\nregisterPath(program);\nregisterExport(program);\nregisterGain(program);\nregisterCompression(program);\nregisterExec(program);\nregisterMemory(program);\nregisterDocs(program);\nregisterData(program);\nregisterBenchmark(program);\nregisterFlows(program);\nregisterCommunities(program);\nregisterRefactor(program);\nregisterRead(program);\nregisterBudget(program);\nconst securityCmd = registerSecurity(program);\nregisterSbom(program);\nregisterVex(program);\nregisterVulns(program);\nregisterReachability(program);\nregisterStaleness(program);\nregisterLicenses(program);\nregisterSecurityExport(securityCmd);\nregisterSecuritySecrets(securityCmd);\nregisterSecurityFlows(securityCmd);\nregisterSecurityCiReport(securityCmd);\nregisterVulnSuppress(program);\nregisterAttackSurface(program);\nregisterSupplyChain(program);\nregisterDepConfusion(program);\nregisterRemediation(program);\nregisterPattern(program);\nregisterHook(program);\nregisterWiki(program);\nregisterCallers(program);\nregisterCallees(program);\nregisterImpact(program);\nregisterTypeHierarchy(program);\nregisterCircularDeps(program);\nregisterDoctor(program);\nregisterManifest(program);\nregisterUnusedImports(program);\nregisterGini(program);\nregisterDependencyDepth(program);\nregisterModuleApi(program);\nregisterRenamePreview(program);\nregisterDocCoverage(program);\nregisterGodClass(program);\nregisterInheritanceDepth(program);\nregisterRecursion(program);\nregisterLargest(program);\nregisterRank(program);\nregisterDistribution(program);\nregisterAnnotations(program);\nregisterSession(program);\nregisterStrReplace(program);\nregisterMultiReplace(program);\nregisterInsertAt(program);\nregisterAstRewrite(program);\nregisterComplexityCli(program);\nregisterSimplifyScan(program);\nregisterDiffContext(program);\nregisterCommitContext(program);\nregisterPrContext(program);\nregisterChangelog(program);\nregisterTestMap(program);\nregisterHealth(program);\nregisterDsm(program);\nregisterTestRisk(program);\nregisterTestCoverage(program);\nregisterBench(program);\nregisterBranch(program);\nregisterMonitor(program);\nregisterUpgrade(program);\nregisterCost(program);\n\n// Register the help command for `kirograph help`\nprogram\n .command('help')\n .description('Show interactive help')\n .action(() => {\n if (process.stdout.isTTY) {\n printInteractiveHelp();\n } else {\n printBanner();\n printColoredHelp();\n process.exit(0);\n }\n });\n\nregisterHelp(program);\n\n// Show interactive help when called with no arguments\nif (process.argv.length === 2) {\n if (process.stdout.isTTY) {\n printInteractiveHelp();\n } else {\n printBanner();\n printColoredHelp();\n process.exit(0);\n }\n} else if (process.argv.includes('--help') || process.argv.includes('-h')) {\n // Intercept --help before Commander to avoid process.exit\n if (process.stdout.isTTY) {\n printInteractiveHelp();\n } else {\n printBanner();\n printColoredHelp();\n process.exit(0);\n }\n} else {\n program.parse(process.argv);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["registerInstall", "registerInit", "registerUninit", "registerIndex", "registerSync", "registerSyncIfDirty", "registerMarkDirty", "registerStatus", "registerQuery", "registerContext", "registerFiles", "registerAffected", "registerUnlock", "registerServe", "registerDashboard", "registerArchitecture", "registerCoupling", "registerPackage", "registerCaveman", "registerDeadCode", "registerHotspots", "registerSurprising", "registerSnapshot", "registerPath", "registerExport", "registerGain", "registerCompression", "registerExec", "registerMemory", "registerDocs", "registerData", "registerBenchmark", "registerFlows", "registerCommunities", "registerRefactor", "registerRead", "registerBudget", "registerSecurity", "registerSbom", "registerVex", "registerVulns", "registerReachability", "registerStaleness", "registerLicenses", "registerSecurityExport", "registerSecuritySecrets", "registerSecurityFlows", "registerSecurityCiReport", "registerVulnSuppress", "registerAttackSurface", "registerSupplyChain", "registerDepConfusion", "registerRemediation", "registerPattern", "registerHook", "registerWiki", "registerCallers", "registerCallees", "registerImpact", "registerTypeHierarchy", "registerCircularDeps", "registerDoctor", "registerManifest", "registerUnusedImports", "registerGini", "registerDependencyDepth", "registerModuleApi", "registerRenamePreview", "registerDocCoverage", "registerGodClass", "registerInheritanceDepth", "registerRecursion", "registerLargest", "registerRank", "registerDistribution", "registerAnnotations", "registerSession", "registerStrReplace", "registerMultiReplace", "registerInsertAt", "registerAstRewrite", "registerComplexityCli", "registerSimplifyScan", "registerDiffContext", "registerCommitContext", "registerPrContext", "registerChangelog", "registerTestMap", "registerHealth", "registerDsm", "registerTestRisk", "registerTestCoverage", "registerBench", "registerBranch", "registerMonitor", "registerUpgrade", "registerCost", "registerHelp"]
7
7
  }
package/dist/config.js CHANGED
@@ -118,13 +118,20 @@ const KNOWN_FIELDS = /* @__PURE__ */ new Set([
118
118
  "patternLibraryPath",
119
119
  "patternSeverityThreshold",
120
120
  "enableCodeHealth",
121
- "enableAdvancedAnalysis",
121
+ "enableNavigation",
122
+ "enableComplexity",
123
+ "enableGitContext",
124
+ "enableEditPrimitives",
125
+ "enableBranch",
122
126
  "enableAgentUtils",
127
+ "enableGeneralCompression",
123
128
  "contextBudget",
124
129
  // Legacy aliases / derived fields (accepted but ignored or recomputed)
125
130
  "enableCompression",
126
131
  "compressionLevel",
127
- "enableShellExec"
132
+ "enableShellExec",
133
+ // Deprecated: dissolved flag kept here so old configs don't warn
134
+ "enableAdvancedAnalysis"
128
135
  ]);
129
136
  const LOG_LEVELS = /* @__PURE__ */ new Set(["debug", "info", "warn", "error"]);
130
137
  function isSafeRegex(pattern) {
@@ -158,7 +165,7 @@ function createDefaultConfig(_projectRoot) {
158
165
  fuzzyResolutionThreshold: 0.5,
159
166
  enableArchitecture: false,
160
167
  cavemanMode: "off",
161
- shellCompressionLevel: "normal",
168
+ shellCompressionLevel: "off",
162
169
  syncWarningThreshold: 10,
163
170
  enableMemory: false,
164
171
  memorySearchAlpha: 0.5,
@@ -205,10 +212,15 @@ function createDefaultConfig(_projectRoot) {
205
212
  enablePatterns: false,
206
213
  patternLibraryPath: void 0,
207
214
  patternSeverityThreshold: "low",
208
- enableCodeHealth: true,
209
- enableAdvancedAnalysis: true,
215
+ enableCodeHealth: false,
216
+ enableNavigation: false,
217
+ enableComplexity: false,
218
+ enableGitContext: false,
219
+ enableEditPrimitives: false,
220
+ enableBranch: false,
210
221
  enableAgentUtils: true,
211
- enableShellExec: true
222
+ enableGeneralCompression: false,
223
+ enableShellExec: false
212
224
  };
213
225
  }
214
226
  function validateConfig(config) {
@@ -383,8 +395,13 @@ function validateConfig(config) {
383
395
  patternSeverityThreshold = defaults.patternSeverityThreshold;
384
396
  }
385
397
  const enableCodeHealth = typeof raw.enableCodeHealth === "boolean" ? raw.enableCodeHealth : defaults.enableCodeHealth;
386
- const enableAdvancedAnalysis = typeof raw.enableAdvancedAnalysis === "boolean" ? raw.enableAdvancedAnalysis : defaults.enableAdvancedAnalysis;
398
+ const enableNavigation = typeof raw.enableNavigation === "boolean" ? raw.enableNavigation : defaults.enableNavigation;
399
+ const enableComplexity = typeof raw.enableComplexity === "boolean" ? raw.enableComplexity : defaults.enableComplexity;
400
+ const enableGitContext = typeof raw.enableGitContext === "boolean" ? raw.enableGitContext : defaults.enableGitContext;
401
+ const enableEditPrimitives = typeof raw.enableEditPrimitives === "boolean" ? raw.enableEditPrimitives : defaults.enableEditPrimitives;
402
+ const enableBranch = typeof raw.enableBranch === "boolean" ? raw.enableBranch : defaults.enableBranch;
387
403
  const enableAgentUtils = typeof raw.enableAgentUtils === "boolean" ? raw.enableAgentUtils : defaults.enableAgentUtils;
404
+ const enableGeneralCompression = typeof raw.enableGeneralCompression === "boolean" ? raw.enableGeneralCompression : defaults.enableGeneralCompression;
388
405
  let finalEnableArchitecture = enableArchitecture;
389
406
  if (enableSecurity && !enableArchitecture) {
390
407
  (0, import_errors.logWarn)("enableSecurity requires enableArchitecture \u2014 auto-enabling architecture analysis");
@@ -473,8 +490,13 @@ function validateConfig(config) {
473
490
  patternLibraryPath,
474
491
  patternSeverityThreshold,
475
492
  enableCodeHealth,
476
- enableAdvancedAnalysis,
493
+ enableNavigation,
494
+ enableComplexity,
495
+ enableGitContext,
496
+ enableEditPrimitives,
497
+ enableBranch,
477
498
  enableAgentUtils,
499
+ enableGeneralCompression,
478
500
  enableShellExec: shellCompressionLevel !== "off",
479
501
  ...architectureLayers !== void 0 ? { architectureLayers } : {},
480
502
  ...contextBudget !== void 0 ? { contextBudget } : {}