kirograph 0.13.0 → 0.13.1

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 (35) hide show
  1. package/README.md +141 -85
  2. package/dist/bin/commands/caveman.js +12 -0
  3. package/dist/bin/commands/caveman.js.map +2 -2
  4. package/dist/bin/commands/help.js +6 -4
  5. package/dist/bin/commands/help.js.map +2 -2
  6. package/dist/bin/commands/install.js +8 -2
  7. package/dist/bin/commands/install.js.map +2 -2
  8. package/dist/bin/commands/serve.js +2 -2
  9. package/dist/bin/commands/serve.js.map +2 -2
  10. package/dist/bin/commands/uninit.js +65 -41
  11. package/dist/bin/commands/uninit.js.map +2 -2
  12. package/dist/bin/installer/cli-agent.js +5 -25
  13. package/dist/bin/installer/cli-agent.js.map +2 -2
  14. package/dist/bin/installer/common.js +154 -0
  15. package/dist/bin/installer/common.js.map +7 -0
  16. package/dist/bin/installer/index.js +99 -86
  17. package/dist/bin/installer/index.js.map +2 -2
  18. package/dist/bin/installer/instructions.js +60 -0
  19. package/dist/bin/installer/instructions.js.map +7 -0
  20. package/dist/bin/installer/mcp.js +6 -36
  21. package/dist/bin/installer/mcp.js.map +2 -2
  22. package/dist/bin/installer/targets/claude.js +79 -0
  23. package/dist/bin/installer/targets/claude.js.map +7 -0
  24. package/dist/bin/installer/targets/codex.js +77 -0
  25. package/dist/bin/installer/targets/codex.js.map +7 -0
  26. package/dist/bin/installer/targets/index.js +57 -0
  27. package/dist/bin/installer/targets/index.js.map +7 -0
  28. package/dist/bin/installer/targets/kiro.js +61 -0
  29. package/dist/bin/installer/targets/kiro.js.map +7 -0
  30. package/dist/bin/kirograph.js +1 -1
  31. package/dist/mcp/tool-names.js +48 -0
  32. package/dist/mcp/tool-names.js.map +7 -0
  33. package/dist/mcp/tools.js +3 -0
  34. package/dist/mcp/tools.js.map +2 -2
  35. package/package.json +2 -2
@@ -31,46 +31,16 @@ __export(mcp_exports, {
31
31
  writeMcpConfig: () => writeMcpConfig
32
32
  });
33
33
  module.exports = __toCommonJS(mcp_exports);
34
- var fs = __toESM(require("fs"));
35
34
  var path = __toESM(require("path"));
36
- function ensureDir(p) {
37
- fs.mkdirSync(p, { recursive: true });
38
- }
39
- function readJson(p) {
40
- try {
41
- return JSON.parse(fs.readFileSync(p, "utf8"));
42
- } catch {
43
- return {};
44
- }
45
- }
46
- function writeJson(p, data) {
47
- fs.writeFileSync(p, JSON.stringify(data, null, 2) + "\n");
48
- }
35
+ var import_common = require("./common");
49
36
  function writeMcpConfig(kiroDir) {
50
37
  const mcpPath = path.join(kiroDir, "settings", "mcp.json");
51
- ensureDir(path.dirname(mcpPath));
52
- const existing = readJson(mcpPath);
53
- existing.mcpServers = existing.mcpServers ?? {};
54
- existing.mcpServers.kirograph = {
55
- command: "kirograph",
56
- args: ["serve", "--mcp"],
38
+ (0, import_common.writeMcpServersConfig)(mcpPath, {
39
+ command: import_common.KIROGRAPH_COMMAND,
40
+ args: import_common.KIROGRAPH_MCP_ARGS,
57
41
  disabled: false,
58
- autoApprove: [
59
- "kirograph_search",
60
- "kirograph_context",
61
- "kirograph_callers",
62
- "kirograph_callees",
63
- "kirograph_impact",
64
- "kirograph_node",
65
- "kirograph_status",
66
- "kirograph_files",
67
- "kirograph_dead_code",
68
- "kirograph_circular_deps",
69
- "kirograph_path",
70
- "kirograph_type_hierarchy"
71
- ]
72
- };
73
- writeJson(mcpPath, existing);
42
+ autoApprove: import_common.KIROGRAPH_TOOLS
43
+ });
74
44
  console.log(` \u2713 MCP server registered in ${mcpPath}`);
75
45
  }
76
46
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/bin/installer/mcp.ts"],
4
- "sourcesContent": ["/**\n * KiroGraph Installer \u2014 MCP server registration\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nfunction ensureDir(p: string): void {\n fs.mkdirSync(p, { recursive: true });\n}\n\nfunction readJson(p: string): any {\n try { return JSON.parse(fs.readFileSync(p, 'utf8')); } catch { return {}; }\n}\n\nfunction writeJson(p: string, data: unknown): void {\n fs.writeFileSync(p, JSON.stringify(data, null, 2) + '\\n');\n}\n\nexport function writeMcpConfig(kiroDir: string): void {\n const mcpPath = path.join(kiroDir, 'settings', 'mcp.json');\n ensureDir(path.dirname(mcpPath));\n const existing = readJson(mcpPath);\n existing.mcpServers = existing.mcpServers ?? {};\n existing.mcpServers.kirograph = {\n command: 'kirograph',\n args: ['serve', '--mcp'],\n disabled: false,\n autoApprove: [\n 'kirograph_search',\n 'kirograph_context',\n 'kirograph_callers',\n 'kirograph_callees',\n 'kirograph_impact',\n 'kirograph_node',\n 'kirograph_status',\n 'kirograph_files',\n 'kirograph_dead_code',\n 'kirograph_circular_deps',\n 'kirograph_path',\n 'kirograph_type_hierarchy',\n ],\n };\n writeJson(mcpPath, existing);\n console.log(` \u2713 MCP server registered in ${mcpPath}`);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,SAAoB;AACpB,WAAsB;AAEtB,SAAS,UAAU,GAAiB;AAClC,KAAG,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AACrC;AAEA,SAAS,SAAS,GAAgB;AAChC,MAAI;AAAE,WAAO,KAAK,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAAA,EAAG,QAAQ;AAAE,WAAO,CAAC;AAAA,EAAG;AAC5E;AAEA,SAAS,UAAU,GAAW,MAAqB;AACjD,KAAG,cAAc,GAAG,KAAK,UAAU,MAAM,MAAM,CAAC,IAAI,IAAI;AAC1D;AAEO,SAAS,eAAe,SAAuB;AACpD,QAAM,UAAU,KAAK,KAAK,SAAS,YAAY,UAAU;AACzD,YAAU,KAAK,QAAQ,OAAO,CAAC;AAC/B,QAAM,WAAW,SAAS,OAAO;AACjC,WAAS,aAAa,SAAS,cAAc,CAAC;AAC9C,WAAS,WAAW,YAAY;AAAA,IAC9B,SAAS;AAAA,IACT,MAAM,CAAC,SAAS,OAAO;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,YAAU,SAAS,QAAQ;AAC3B,UAAQ,IAAI,qCAAgC,OAAO,EAAE;AACvD;",
4
+ "sourcesContent": ["/**\n * KiroGraph Installer \u2014 MCP server registration\n */\n\nimport * as path from 'path';\nimport { KIROGRAPH_COMMAND, KIROGRAPH_MCP_ARGS, KIROGRAPH_TOOLS, writeMcpServersConfig } from './common';\n\nexport function writeMcpConfig(kiroDir: string): void {\n const mcpPath = path.join(kiroDir, 'settings', 'mcp.json');\n writeMcpServersConfig(mcpPath, {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n disabled: false,\n autoApprove: KIROGRAPH_TOOLS,\n });\n console.log(` \u2713 MCP server registered in ${mcpPath}`);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,WAAsB;AACtB,oBAA8F;AAEvF,SAAS,eAAe,SAAuB;AACpD,QAAM,UAAU,KAAK,KAAK,SAAS,YAAY,UAAU;AACzD,2CAAsB,SAAS;AAAA,IAC7B,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,EACf,CAAC;AACD,UAAQ,IAAI,qCAAgC,OAAO,EAAE;AACvD;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var claude_exports = {};
30
+ __export(claude_exports, {
31
+ installClaudeEarly: () => installClaudeEarly,
32
+ installClaudeLate: () => installClaudeLate,
33
+ printClaudeNextSteps: () => printClaudeNextSteps,
34
+ uninitClaude: () => uninitClaude
35
+ });
36
+ module.exports = __toCommonJS(claude_exports);
37
+ var fs = __toESM(require("fs"));
38
+ var path = __toESM(require("path"));
39
+ var import_common = require("../common");
40
+ var import_instructions = require("../instructions");
41
+ const CLAUDE_IMPORT = "@.kirograph/claude.md";
42
+ function installClaudeEarly(projectRoot) {
43
+ const mcpPath = path.join(projectRoot, ".mcp.json");
44
+ (0, import_common.writeMcpServersConfig)(mcpPath, {
45
+ command: import_common.KIROGRAPH_COMMAND,
46
+ args: import_common.KIROGRAPH_MCP_ARGS
47
+ });
48
+ console.log(` \u2713 Claude MCP server registered in ${mcpPath}`);
49
+ }
50
+ function installClaudeLate(projectRoot, cavemanMode) {
51
+ const instructionsPath = path.join(projectRoot, ".kirograph", "claude.md");
52
+ (0, import_common.ensureDir)(path.dirname(instructionsPath));
53
+ fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(cavemanMode));
54
+ console.log(` \u2713 Claude instructions written to ${instructionsPath}`);
55
+ const memoryPath = path.join(projectRoot, "CLAUDE.md");
56
+ const changed = (0, import_common.appendImportLine)(memoryPath, CLAUDE_IMPORT, "## KiroGraph");
57
+ console.log(changed ? ` \u2713 Claude project memory updated in ${memoryPath}` : ` \u2713 Claude project memory already imports ${CLAUDE_IMPORT}`);
58
+ }
59
+ function uninitClaude(projectRoot) {
60
+ const mcpPath = path.join(projectRoot, ".mcp.json");
61
+ if ((0, import_common.removeMcpServersConfig)(mcpPath)) {
62
+ console.log(` \u2713 Removed kirograph from .mcp.json`);
63
+ }
64
+ const memoryPath = path.join(projectRoot, "CLAUDE.md");
65
+ if ((0, import_common.removeImportLine)(memoryPath, CLAUDE_IMPORT)) {
66
+ console.log(` \u2713 Removed KiroGraph import from CLAUDE.md`);
67
+ }
68
+ }
69
+ function printClaudeNextSteps() {
70
+ console.log("\n Done! Restart Claude Code for the MCP server and project memory to load.\n");
71
+ }
72
+ // Annotate the CommonJS export names for ESM import in node:
73
+ 0 && (module.exports = {
74
+ installClaudeEarly,
75
+ installClaudeLate,
76
+ printClaudeNextSteps,
77
+ uninitClaude
78
+ });
79
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bin/installer/targets/claude.ts"],
4
+ "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport {\n appendImportLine,\n ensureDir,\n KIROGRAPH_COMMAND,\n KIROGRAPH_MCP_ARGS,\n removeMcpServersConfig,\n removeImportLine,\n writeMcpServersConfig,\n} from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst CLAUDE_IMPORT = '@.kirograph/claude.md';\n\nexport function installClaudeEarly(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.mcp.json');\n writeMcpServersConfig(mcpPath, {\n command: KIROGRAPH_COMMAND,\n args: KIROGRAPH_MCP_ARGS,\n });\n console.log(` \u2713 Claude MCP server registered in ${mcpPath}`);\n}\n\nexport function installClaudeLate(projectRoot: string, cavemanMode?: CavemanMode | 'off'): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'claude.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(cavemanMode));\n console.log(` \u2713 Claude instructions written to ${instructionsPath}`);\n\n const memoryPath = path.join(projectRoot, 'CLAUDE.md');\n const changed = appendImportLine(memoryPath, CLAUDE_IMPORT, '## KiroGraph');\n console.log(changed\n ? ` \u2713 Claude project memory updated in ${memoryPath}`\n : ` \u2713 Claude project memory already imports ${CLAUDE_IMPORT}`);\n}\n\nexport function uninitClaude(projectRoot: string): void {\n const mcpPath = path.join(projectRoot, '.mcp.json');\n if (removeMcpServersConfig(mcpPath)) {\n console.log(` \u2713 Removed kirograph from .mcp.json`);\n }\n\n const memoryPath = path.join(projectRoot, 'CLAUDE.md');\n if (removeImportLine(memoryPath, CLAUDE_IMPORT)) {\n console.log(` \u2713 Removed KiroGraph import from CLAUDE.md`);\n }\n}\n\nexport function printClaudeNextSteps(): void {\n console.log('\\n Done! Restart Claude Code for the MCP server and project memory to load.\\n');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AAEtB,oBAQO;AACP,0BAAuC;AAEvC,MAAM,gBAAgB;AAEf,SAAS,mBAAmB,aAA2B;AAC5D,QAAM,UAAU,KAAK,KAAK,aAAa,WAAW;AAClD,2CAAsB,SAAS;AAAA,IAC7B,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AACD,UAAQ,IAAI,4CAAuC,OAAO,EAAE;AAC9D;AAEO,SAAS,kBAAkB,aAAqB,aAAyC;AAC9F,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,WAAW;AACzE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,4CAAuB,WAAW,CAAC;AACtE,UAAQ,IAAI,2CAAsC,gBAAgB,EAAE;AAEpE,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,QAAM,cAAU,gCAAiB,YAAY,eAAe,cAAc;AAC1E,UAAQ,IAAI,UACR,6CAAwC,UAAU,KAClD,kDAA6C,aAAa,EAAE;AAClE;AAEO,SAAS,aAAa,aAA2B;AACtD,QAAM,UAAU,KAAK,KAAK,aAAa,WAAW;AAClD,UAAI,sCAAuB,OAAO,GAAG;AACnC,YAAQ,IAAI,2CAAsC;AAAA,EACpD;AAEA,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,UAAI,gCAAiB,YAAY,aAAa,GAAG;AAC/C,YAAQ,IAAI,kDAA6C;AAAA,EAC3D;AACF;AAEO,SAAS,uBAA6B;AAC3C,UAAQ,IAAI,gFAAgF;AAC9F;",
6
+ "names": []
7
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var codex_exports = {};
30
+ __export(codex_exports, {
31
+ installCodexEarly: () => installCodexEarly,
32
+ installCodexLate: () => installCodexLate,
33
+ printCodexNextSteps: () => printCodexNextSteps,
34
+ uninitCodex: () => uninitCodex
35
+ });
36
+ module.exports = __toCommonJS(codex_exports);
37
+ var fs = __toESM(require("fs"));
38
+ var path = __toESM(require("path"));
39
+ var import_common = require("../common");
40
+ var import_instructions = require("../instructions");
41
+ const CODEX_BLOCK_ID = "codex";
42
+ function installCodexEarly(_projectRoot) {
43
+ }
44
+ function installCodexLate(projectRoot, cavemanMode) {
45
+ const instructionsPath = path.join(projectRoot, ".kirograph", "codex.md");
46
+ (0, import_common.ensureDir)(path.dirname(instructionsPath));
47
+ fs.writeFileSync(instructionsPath, (0, import_instructions.buildAgentInstructions)(cavemanMode));
48
+ console.log(` \u2713 Codex instructions written to ${instructionsPath}`);
49
+ const agentsPath = path.join(projectRoot, "AGENTS.md");
50
+ const changed = (0, import_common.upsertGeneratedBlock)(agentsPath, CODEX_BLOCK_ID, "## KiroGraph", (0, import_instructions.buildAgentInstructions)(cavemanMode));
51
+ console.log(changed ? ` \u2713 Codex project instructions updated in ${agentsPath}` : ` \u2713 Codex project instructions already up to date`);
52
+ }
53
+ function uninitCodex(projectRoot) {
54
+ const agentsPath = path.join(projectRoot, "AGENTS.md");
55
+ if ((0, import_common.removeGeneratedBlock)(agentsPath, CODEX_BLOCK_ID)) {
56
+ console.log(` \u2713 Removed KiroGraph block from AGENTS.md`);
57
+ }
58
+ }
59
+ function printCodexNextSteps(projectRoot) {
60
+ const escapedPath = projectRoot.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
61
+ console.log("\n Done! Codex project instructions are installed.");
62
+ console.log(" Add the MCP server to Codex with:");
63
+ console.log(` codex mcp add kirograph -- kirograph serve --mcp --path "${escapedPath}"`);
64
+ console.log("\n Or add this to ~/.codex/config.toml:");
65
+ console.log(" [mcp_servers.kirograph]");
66
+ console.log(' command = "kirograph"');
67
+ console.log(` args = ["serve", "--mcp", "--path", "${escapedPath}"]
68
+ `);
69
+ }
70
+ // Annotate the CommonJS export names for ESM import in node:
71
+ 0 && (module.exports = {
72
+ installCodexEarly,
73
+ installCodexLate,
74
+ printCodexNextSteps,
75
+ uninitCodex
76
+ });
77
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bin/installer/targets/codex.ts"],
4
+ "sourcesContent": ["import * as fs from 'fs';\nimport * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport { ensureDir, removeGeneratedBlock, upsertGeneratedBlock } from '../common';\nimport { buildAgentInstructions } from '../instructions';\n\nconst CODEX_BLOCK_ID = 'codex';\n\nexport function installCodexEarly(_projectRoot: string): void {\n // Codex MCP config is user-scoped. We print the exact config in next steps\n // instead of writing outside the project from an installer command.\n}\n\nexport function installCodexLate(projectRoot: string, cavemanMode?: CavemanMode | 'off'): void {\n const instructionsPath = path.join(projectRoot, '.kirograph', 'codex.md');\n ensureDir(path.dirname(instructionsPath));\n fs.writeFileSync(instructionsPath, buildAgentInstructions(cavemanMode));\n console.log(` \u2713 Codex instructions written to ${instructionsPath}`);\n\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n const changed = upsertGeneratedBlock(agentsPath, CODEX_BLOCK_ID, '## KiroGraph', buildAgentInstructions(cavemanMode));\n console.log(changed\n ? ` \u2713 Codex project instructions updated in ${agentsPath}`\n : ` \u2713 Codex project instructions already up to date`);\n}\n\nexport function uninitCodex(projectRoot: string): void {\n const agentsPath = path.join(projectRoot, 'AGENTS.md');\n if (removeGeneratedBlock(agentsPath, CODEX_BLOCK_ID)) {\n console.log(` \u2713 Removed KiroGraph block from AGENTS.md`);\n }\n}\n\nexport function printCodexNextSteps(projectRoot: string): void {\n const escapedPath = projectRoot.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n console.log('\\n Done! Codex project instructions are installed.');\n console.log(' Add the MCP server to Codex with:');\n console.log(` codex mcp add kirograph -- kirograph serve --mcp --path \"${escapedPath}\"`);\n console.log('\\n Or add this to ~/.codex/config.toml:');\n console.log(' [mcp_servers.kirograph]');\n console.log(' command = \"kirograph\"');\n console.log(` args = [\"serve\", \"--mcp\", \"--path\", \"${escapedPath}\"]\\n`);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,WAAsB;AAEtB,oBAAsE;AACtE,0BAAuC;AAEvC,MAAM,iBAAiB;AAEhB,SAAS,kBAAkB,cAA4B;AAG9D;AAEO,SAAS,iBAAiB,aAAqB,aAAyC;AAC7F,QAAM,mBAAmB,KAAK,KAAK,aAAa,cAAc,UAAU;AACxE,+BAAU,KAAK,QAAQ,gBAAgB,CAAC;AACxC,KAAG,cAAc,sBAAkB,4CAAuB,WAAW,CAAC;AACtE,UAAQ,IAAI,0CAAqC,gBAAgB,EAAE;AAEnE,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,QAAM,cAAU,oCAAqB,YAAY,gBAAgB,oBAAgB,4CAAuB,WAAW,CAAC;AACpH,UAAQ,IAAI,UACR,kDAA6C,UAAU,KACvD,wDAAmD;AACzD;AAEO,SAAS,YAAY,aAA2B;AACrD,QAAM,aAAa,KAAK,KAAK,aAAa,WAAW;AACrD,UAAI,oCAAqB,YAAY,cAAc,GAAG;AACpD,YAAQ,IAAI,iDAA4C;AAAA,EAC1D;AACF;AAEO,SAAS,oBAAoB,aAA2B;AAC7D,QAAM,cAAc,YAAY,QAAQ,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAK;AAC1E,UAAQ,IAAI,qDAAqD;AACjE,UAAQ,IAAI,qCAAqC;AACjD,UAAQ,IAAI,gEAAgE,WAAW,GAAG;AAC1F,UAAQ,IAAI,0CAA0C;AACtD,UAAQ,IAAI,6BAA6B;AACzC,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,IAAI,4CAA4C,WAAW;AAAA,CAAM;AAC3E;",
6
+ "names": []
7
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var targets_exports = {};
20
+ __export(targets_exports, {
21
+ getTargetInstaller: () => getTargetInstaller
22
+ });
23
+ module.exports = __toCommonJS(targets_exports);
24
+ var import_kiro = require("./kiro");
25
+ var import_claude = require("./claude");
26
+ var import_codex = require("./codex");
27
+ function getTargetInstaller(target) {
28
+ if (target === "claude") {
29
+ return {
30
+ label: "Claude Code",
31
+ installEarly: import_claude.installClaudeEarly,
32
+ installLate: import_claude.installClaudeLate,
33
+ printNextSteps: import_claude.printClaudeNextSteps,
34
+ uninit: import_claude.uninitClaude
35
+ };
36
+ }
37
+ if (target === "codex") {
38
+ return {
39
+ label: "Codex",
40
+ installEarly: import_codex.installCodexEarly,
41
+ installLate: import_codex.installCodexLate,
42
+ printNextSteps: import_codex.printCodexNextSteps,
43
+ uninit: import_codex.uninitCodex
44
+ };
45
+ }
46
+ return {
47
+ label: "Kiro",
48
+ installEarly: import_kiro.installKiroEarly,
49
+ installLate: import_kiro.installKiroLate,
50
+ printNextSteps: import_kiro.printKiroNextSteps
51
+ };
52
+ }
53
+ // Annotate the CommonJS export names for ESM import in node:
54
+ 0 && (module.exports = {
55
+ getTargetInstaller
56
+ });
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bin/installer/targets/index.ts"],
4
+ "sourcesContent": ["import type { CavemanMode } from '../caveman';\nimport type { InstallTarget } from '../common';\nimport { installKiroEarly, installKiroLate, printKiroNextSteps } from './kiro';\nimport { installClaudeEarly, installClaudeLate, printClaudeNextSteps, uninitClaude } from './claude';\nimport { installCodexEarly, installCodexLate, printCodexNextSteps, uninitCodex } from './codex';\n\nexport interface TargetInstaller {\n label: string;\n installEarly(projectRoot: string): void;\n installLate(projectRoot: string, cavemanMode?: CavemanMode | 'off'): void;\n printNextSteps(projectRoot: string): void;\n uninit?(projectRoot: string): void;\n}\n\nexport function getTargetInstaller(target: InstallTarget): TargetInstaller {\n if (target === 'claude') {\n return {\n label: 'Claude Code',\n installEarly: installClaudeEarly,\n installLate: installClaudeLate,\n printNextSteps: printClaudeNextSteps,\n uninit: uninitClaude,\n };\n }\n\n if (target === 'codex') {\n return {\n label: 'Codex',\n installEarly: installCodexEarly,\n installLate: installCodexLate,\n printNextSteps: printCodexNextSteps,\n uninit: uninitCodex,\n };\n }\n\n return {\n label: 'Kiro',\n installEarly: installKiroEarly,\n installLate: installKiroLate,\n printNextSteps: printKiroNextSteps,\n };\n}\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,kBAAsE;AACtE,oBAA0F;AAC1F,mBAAsF;AAU/E,SAAS,mBAAmB,QAAwC;AACzE,MAAI,WAAW,UAAU;AACvB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,cAAc;AAAA,MACd,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,MAAI,WAAW,SAAS;AACtB,WAAO;AAAA,MACL,OAAO;AAAA,MACP,cAAc;AAAA,MACd,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,EAClB;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var kiro_exports = {};
30
+ __export(kiro_exports, {
31
+ installKiroEarly: () => installKiroEarly,
32
+ installKiroLate: () => installKiroLate,
33
+ printKiroNextSteps: () => printKiroNextSteps
34
+ });
35
+ module.exports = __toCommonJS(kiro_exports);
36
+ var path = __toESM(require("path"));
37
+ var import_cli_agent = require("../cli-agent");
38
+ var import_hooks = require("../hooks");
39
+ var import_mcp = require("../mcp");
40
+ var import_steering = require("../steering");
41
+ function installKiroEarly(projectRoot) {
42
+ const kiroDir = path.join(projectRoot, ".kiro");
43
+ (0, import_mcp.writeMcpConfig)(kiroDir);
44
+ (0, import_hooks.writeHooks)(kiroDir);
45
+ }
46
+ function installKiroLate(projectRoot, cavemanMode) {
47
+ const kiroDir = path.join(projectRoot, ".kiro");
48
+ (0, import_steering.writeSteering)(kiroDir, cavemanMode);
49
+ (0, import_cli_agent.writeCliAgent)(kiroDir);
50
+ }
51
+ function printKiroNextSteps() {
52
+ console.log("\n Done! Restart Kiro IDE for the MCP server to load.");
53
+ console.log(' For Kiro CLI, use the "kirograph" agent: kiro-cli --agent kirograph\n');
54
+ }
55
+ // Annotate the CommonJS export names for ESM import in node:
56
+ 0 && (module.exports = {
57
+ installKiroEarly,
58
+ installKiroLate,
59
+ printKiroNextSteps
60
+ });
61
+ //# sourceMappingURL=kiro.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bin/installer/targets/kiro.ts"],
4
+ "sourcesContent": ["import * as path from 'path';\nimport { CavemanMode } from '../caveman';\nimport { writeCliAgent } from '../cli-agent';\nimport { writeHooks } from '../hooks';\nimport { writeMcpConfig } from '../mcp';\nimport { writeSteering } from '../steering';\n\nexport function installKiroEarly(projectRoot: string): void {\n const kiroDir = path.join(projectRoot, '.kiro');\n writeMcpConfig(kiroDir);\n writeHooks(kiroDir);\n}\n\nexport function installKiroLate(projectRoot: string, cavemanMode?: CavemanMode | 'off'): void {\n const kiroDir = path.join(projectRoot, '.kiro');\n writeSteering(kiroDir, cavemanMode);\n writeCliAgent(kiroDir);\n}\n\nexport function printKiroNextSteps(): void {\n console.log('\\n Done! Restart Kiro IDE for the MCP server to load.');\n console.log(' For Kiro CLI, use the \"kirograph\" agent: kiro-cli --agent kirograph\\n');\n}\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAsB;AAEtB,uBAA8B;AAC9B,mBAA2B;AAC3B,iBAA+B;AAC/B,sBAA8B;AAEvB,SAAS,iBAAiB,aAA2B;AAC1D,QAAM,UAAU,KAAK,KAAK,aAAa,OAAO;AAC9C,iCAAe,OAAO;AACtB,+BAAW,OAAO;AACpB;AAEO,SAAS,gBAAgB,aAAqB,aAAyC;AAC5F,QAAM,UAAU,KAAK,KAAK,aAAa,OAAO;AAC9C,qCAAc,SAAS,WAAW;AAClC,sCAAc,OAAO;AACvB;AAEO,SAAS,qBAA2B;AACzC,UAAQ,IAAI,wDAAwD;AACpE,UAAQ,IAAI,yEAAyE;AACvF;",
6
+ "names": []
7
+ }
@@ -56,7 +56,7 @@ process.on("uncaughtException", (err) => {
56
56
  process.exit(1);
57
57
  });
58
58
  const program = new import_commander.Command();
59
- program.name("kirograph").description("Semantic code knowledge graph for Kiro").version("0.13.0").addHelpCommand(true).hook("preAction", (thisCommand) => {
59
+ program.name("kirograph").description("Semantic code knowledge graph for Kiro").version("0.13.1").addHelpCommand(true).hook("preAction", (thisCommand) => {
60
60
  const name = thisCommand.name();
61
61
  if (name === "init") (0, import_banner.printBanner)();
62
62
  });
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var tool_names_exports = {};
20
+ __export(tool_names_exports, {
21
+ KIROGRAPH_TOOL_NAMES: () => KIROGRAPH_TOOL_NAMES
22
+ });
23
+ module.exports = __toCommonJS(tool_names_exports);
24
+ const KIROGRAPH_TOOL_NAMES = [
25
+ "kirograph_search",
26
+ "kirograph_context",
27
+ "kirograph_callers",
28
+ "kirograph_callees",
29
+ "kirograph_impact",
30
+ "kirograph_node",
31
+ "kirograph_status",
32
+ "kirograph_files",
33
+ "kirograph_dead_code",
34
+ "kirograph_circular_deps",
35
+ "kirograph_path",
36
+ "kirograph_architecture",
37
+ "kirograph_coupling",
38
+ "kirograph_package",
39
+ "kirograph_hotspots",
40
+ "kirograph_surprising",
41
+ "kirograph_diff",
42
+ "kirograph_type_hierarchy"
43
+ ];
44
+ // Annotate the CommonJS export names for ESM import in node:
45
+ 0 && (module.exports = {
46
+ KIROGRAPH_TOOL_NAMES
47
+ });
48
+ //# sourceMappingURL=tool-names.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/mcp/tool-names.ts"],
4
+ "sourcesContent": ["export const KIROGRAPH_TOOL_NAMES = [\n 'kirograph_search',\n 'kirograph_context',\n 'kirograph_callers',\n 'kirograph_callees',\n 'kirograph_impact',\n 'kirograph_node',\n 'kirograph_status',\n 'kirograph_files',\n 'kirograph_dead_code',\n 'kirograph_circular_deps',\n 'kirograph_path',\n 'kirograph_architecture',\n 'kirograph_coupling',\n 'kirograph_package',\n 'kirograph_hotspots',\n 'kirograph_surprising',\n 'kirograph_diff',\n 'kirograph_type_hierarchy',\n];\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
+ "names": []
7
+ }
package/dist/mcp/tools.js CHANGED
@@ -28,6 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var tools_exports = {};
30
30
  __export(tools_exports, {
31
+ KIROGRAPH_TOOL_NAMES: () => import_tool_names.KIROGRAPH_TOOL_NAMES,
31
32
  ToolHandler: () => ToolHandler,
32
33
  tools: () => tools
33
34
  });
@@ -37,6 +38,7 @@ var path = __toESM(require("path"));
37
38
  var crypto = __toESM(require("crypto"));
38
39
  var import__ = __toESM(require("../index"));
39
40
  var import_errors = require("../errors");
41
+ var import_tool_names = require("./tool-names");
40
42
  const MAX_OUTPUT = 15e3;
41
43
  function truncate(s) {
42
44
  return s.length > MAX_OUTPUT ? s.slice(0, MAX_OUTPUT) + "\n\u2026[truncated]" : s;
@@ -773,6 +775,7 @@ class ToolHandler {
773
775
  }
774
776
  // Annotate the CommonJS export names for ESM import in node:
775
777
  0 && (module.exports = {
778
+ KIROGRAPH_TOOL_NAMES,
776
779
  ToolHandler,
777
780
  tools
778
781
  });