codestrate 0.1.1 → 0.2.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 (85) hide show
  1. package/dist/constants.d.ts.map +1 -1
  2. package/dist/constants.js +5 -3
  3. package/dist/constants.js.map +1 -1
  4. package/dist/index.js +42 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/install.d.ts +17 -0
  7. package/dist/install.d.ts.map +1 -0
  8. package/dist/install.js +251 -0
  9. package/dist/install.js.map +1 -0
  10. package/dist/schemas/index.d.ts +1021 -3
  11. package/dist/schemas/index.d.ts.map +1 -1
  12. package/dist/schemas/index.js +229 -0
  13. package/dist/schemas/index.js.map +1 -1
  14. package/dist/services/code-searcher.d.ts.map +1 -1
  15. package/dist/services/code-searcher.js +9 -5
  16. package/dist/services/code-searcher.js.map +1 -1
  17. package/dist/services/context-builder.js +8 -7
  18. package/dist/services/context-builder.js.map +1 -1
  19. package/dist/services/repository-parser.js +65 -42
  20. package/dist/services/repository-parser.js.map +1 -1
  21. package/dist/services/tree-sitter.d.ts.map +1 -1
  22. package/dist/services/tree-sitter.js +158 -4
  23. package/dist/services/tree-sitter.js.map +1 -1
  24. package/dist/services/validation-runner.d.ts.map +1 -1
  25. package/dist/services/validation-runner.js +35 -15
  26. package/dist/services/validation-runner.js.map +1 -1
  27. package/dist/store/sqlite.d.ts +2 -0
  28. package/dist/store/sqlite.d.ts.map +1 -1
  29. package/dist/store/sqlite.js +34 -0
  30. package/dist/store/sqlite.js.map +1 -1
  31. package/dist/tools/analyze-impact.d.ts.map +1 -1
  32. package/dist/tools/analyze-impact.js +5 -2
  33. package/dist/tools/analyze-impact.js.map +1 -1
  34. package/dist/tools/detect-dead-code.d.ts +7 -0
  35. package/dist/tools/detect-dead-code.d.ts.map +1 -0
  36. package/dist/tools/detect-dead-code.js +67 -0
  37. package/dist/tools/detect-dead-code.js.map +1 -0
  38. package/dist/tools/explore.d.ts.map +1 -1
  39. package/dist/tools/explore.js +23 -5
  40. package/dist/tools/explore.js.map +1 -1
  41. package/dist/tools/get-context.d.ts.map +1 -1
  42. package/dist/tools/get-context.js +4 -2
  43. package/dist/tools/get-context.js.map +1 -1
  44. package/dist/tools/inspect-symbol.d.ts.map +1 -1
  45. package/dist/tools/inspect-symbol.js +4 -2
  46. package/dist/tools/inspect-symbol.js.map +1 -1
  47. package/dist/tools/recall-experience.d.ts.map +1 -1
  48. package/dist/tools/recall-experience.js +5 -3
  49. package/dist/tools/recall-experience.js.map +1 -1
  50. package/dist/tools/record-experience.d.ts.map +1 -1
  51. package/dist/tools/record-experience.js +4 -2
  52. package/dist/tools/record-experience.js.map +1 -1
  53. package/dist/tools/register.d.ts +23 -0
  54. package/dist/tools/register.d.ts.map +1 -0
  55. package/dist/tools/register.js +4 -0
  56. package/dist/tools/register.js.map +1 -0
  57. package/dist/tools/reindex.d.ts.map +1 -1
  58. package/dist/tools/reindex.js +27 -3
  59. package/dist/tools/reindex.js.map +1 -1
  60. package/dist/tools/repo-overview.d.ts.map +1 -1
  61. package/dist/tools/repo-overview.js +59 -3
  62. package/dist/tools/repo-overview.js.map +1 -1
  63. package/dist/tools/run-validation.d.ts.map +1 -1
  64. package/dist/tools/run-validation.js +4 -2
  65. package/dist/tools/run-validation.js.map +1 -1
  66. package/dist/tools/search-code.d.ts.map +1 -1
  67. package/dist/tools/search-code.js +4 -2
  68. package/dist/tools/search-code.js.map +1 -1
  69. package/dist/tools/search-history.d.ts.map +1 -1
  70. package/dist/tools/search-history.js +4 -2
  71. package/dist/tools/search-history.js.map +1 -1
  72. package/dist/tools/status.d.ts.map +1 -1
  73. package/dist/tools/status.js +6 -4
  74. package/dist/tools/status.js.map +1 -1
  75. package/dist/tools/trace-flow.d.ts.map +1 -1
  76. package/dist/tools/trace-flow.js +4 -2
  77. package/dist/tools/trace-flow.js.map +1 -1
  78. package/grammars/tree-sitter-c.wasm +0 -0
  79. package/grammars/tree-sitter-cpp.wasm +0 -0
  80. package/grammars/tree-sitter-go.wasm +0 -0
  81. package/grammars/tree-sitter-java.wasm +0 -0
  82. package/grammars/tree-sitter-javascript.wasm +0 -0
  83. package/grammars/tree-sitter-rust.wasm +0 -0
  84. package/grammars/tree-sitter-tsx.wasm +0 -0
  85. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO3C,eAAO,MAAM,WAAW,mCAAmC,CAAC;AAC5D,eAAO,MAAM,cAAc,UAAU,CAAC;AAItC,eAAO,MAAM,kBAAkB,QAAsC,CAAC;AACtE,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAIzC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAC9C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAgBrC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAOR;AAED,eAAO,MAAM,wBAAwB;;;;;;;CAO3B,CAAC;AAIX,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAmBxD,CAAC;AAUF,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CA0CtD"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO3C,eAAO,MAAM,WAAW,mCAAmC,CAAC;AAC5D,eAAO,MAAM,cAAc,UAAU,CAAC;AAItC,eAAO,MAAM,kBAAkB,QAAsC,CAAC;AACtE,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAIzC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAC9C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAgBrC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAOR;AAED,eAAO,MAAM,wBAAwB;;;;;;;CAO3B,CAAC;AAIX,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAoBxD,CAAC;AAUF,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CA2CtD"}
package/dist/constants.js CHANGED
@@ -75,13 +75,14 @@ export const CONTEXT_BUDGET_BREAKDOWN = {
75
75
  };
76
76
  // ─── File extensions by language ──────────────────────────
77
77
  export const LANGUAGE_EXTENSIONS = {
78
- typescript: [".ts", ".tsx", ".mts", ".cts"],
78
+ typescript: [".ts", ".mts", ".cts"],
79
+ tsx: [".tsx"],
79
80
  javascript: [".js", ".jsx", ".mjs", ".cjs"],
80
81
  python: [".py", ".pyi", ".pyx"],
82
+ go: [".go"],
83
+ rust: [".rs", ".rlib"],
81
84
  java: [".java", ".kt", ".kts"],
82
85
  kotlin: [".kt", ".kts"],
83
- rust: [".rs", ".rlib"],
84
- go: [".go"],
85
86
  csharp: [".cs", ".csx"],
86
87
  cpp: [".cpp", ".cc", ".cxx", ".hpp", ".h"],
87
88
  c: [".c", ".h"],
@@ -126,6 +127,7 @@ export function loadConfig(repoPath) {
126
127
  };
127
128
  }
128
129
  catch {
130
+ console.warn("[constants] lỗi parse config file, bỏ qua:", file);
129
131
  // fall through
130
132
  }
131
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAE9C,6DAA6D;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,6DAA6D;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,6DAA6D;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,0DAA0D;AAC1D,+DAA+D;AAC/D,gEAAgE;AAChE,yDAAyD;AACzD,oEAAoE;AACpE,uBAAuB;AAEvB,MAAM,UAAU,GAAG;IACjB,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;IAC5B,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;IAC5B,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;CACzB,CAAC;AAEX;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,IAAS,SAAS,GAAG,GAAG;QAAI,OAAO,CAAC,CAAC;SAChC,IAAI,SAAS,GAAG,KAAK;QAAE,OAAO,CAAC,CAAC;SAChC,IAAI,SAAS,GAAG,MAAM;QAAE,OAAO,CAAC,CAAC;SACjC,IAAI,SAAS,GAAG,MAAM;QAAE,OAAO,CAAC,CAAC;;QACT,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,cAAyC,EACzC,SAAwB;IAExB,IAAI,cAAc,IAAI,cAAc,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAChE,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAC5D,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QACzC,IAAI,SAAS,IAAI,GAAG;YAAE,OAAO,MAAM,CAAC;IACtC,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;CACJ,CAAC;AAEX,6DAA6D;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACnC,GAAG,EAAE,CAAC,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,KAAK,CAAC;IACX,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;IAC1C,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACf,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,GAAG,EAAE,CAAC,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,6DAA6D;AAE7D,MAAM,YAAY,GAAG;IACnB,cAAc;IACd,oBAAoB;IACpB,2BAA2B;CAC5B,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,QAAiB;IAC1C,MAAM,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO;oBACL,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,kBAAkB;oBAC9C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,kBAAkB;oBAC5D,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI;4BAClC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI;4BAChC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI;yBACjC;wBACD,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,0BAA0B;wBAClD,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,qBAAqB;qBAClD;oBACD,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,MAAM;oBAC1C,YAAY,EAAE,GAAG,CAAC,YAAY;iBAC/B,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,IAAI,CAAC,CAAC;gBACjE,eAAe;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,kBAAkB;QAC7B,gBAAgB,EAAE,kBAAkB;QACpC,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YAChE,OAAO,EAAE,0BAA0B;YACnC,SAAS,EAAE,qBAAqB;SACjC;QACD,aAAa,EAAE,MAAM;KACtB,CAAC;AACJ,CAAC"}
package/dist/index.js CHANGED
@@ -33,9 +33,13 @@ import { readFileSync, existsSync } from "fs";
33
33
  import { appendFileSync } from "fs";
34
34
  import { join, resolve } from "path";
35
35
  import { SERVER_NAME, SERVER_VERSION } from "./constants.js";
36
- import { loadIndex } from "./store/index.js";
36
+ import { loadIndex, setSnapshot, setSymbols, setRelations, resetIndex, saveIndex } from "./store/index.js";
37
37
  import { loadMemoryStore } from "./store/memory.js";
38
38
  import { loadConfig } from "./constants.js";
39
+ import { parseRepository } from "./services/repository-parser.js";
40
+ import { indexSymbols } from "./services/symbol-indexer.js";
41
+ import { getStore } from "./store/sqlite.js";
42
+ import { initTreeSitter } from "./services/tree-sitter.js";
39
43
  // ─── Import tool registrations ────────────────────────────
40
44
  import { registerRepoOverview } from "./tools/repo-overview.js";
41
45
  import { registerSearchCode } from "./tools/search-code.js";
@@ -46,6 +50,7 @@ import { registerRecallExperience } from "./tools/recall-experience.js";
46
50
  import { registerRunValidation } from "./tools/run-validation.js";
47
51
  import { registerRecordExperience } from "./tools/record-experience.js";
48
52
  import { registerTraceFlow } from "./tools/trace-flow.js";
53
+ import { registerDetectDeadCode } from "./tools/detect-dead-code.js";
49
54
  import { registerStatus } from "./tools/status.js";
50
55
  import { registerReindex } from "./tools/reindex.js";
51
56
  import { registerAnalyzeImpact } from "./tools/analyze-impact.js";
@@ -92,10 +97,45 @@ function injectAgentsMd() {
92
97
  appendFileSync(agentsPath, `\n${MARKER}\n${AGENTS_CONTENT}\n`);
93
98
  }
94
99
  catch {
100
+ console.warn("[index] không ghi được AGENTS.md:", agentsPath);
95
101
  // Không ghi được → bỏ qua, không crash server
96
102
  }
97
103
  }
98
104
  injectAgentsMd();
105
+ // ─── Auto-index on connect ─────────────────────────────
106
+ // Tự động index repo khi server start nếu có repoPath.
107
+ // Chạy background — không block server startup.
108
+ async function autoReindex() {
109
+ if (!config.repoPath)
110
+ return;
111
+ try {
112
+ await initTreeSitter();
113
+ resetIndex();
114
+ const snapshot = await parseRepository({ path: config.repoPath, depth: 3 });
115
+ setSnapshot(snapshot);
116
+ const allFiles = snapshot.files.map(f => ({ path: f.path, language: f.language }));
117
+ const { symbols, relations } = await indexSymbols({
118
+ repoPath: config.repoPath,
119
+ files: allFiles,
120
+ commitSha: snapshot.commitSha,
121
+ repoFingerprint: snapshot.repoFingerprint,
122
+ });
123
+ setSymbols(symbols);
124
+ setRelations(relations);
125
+ saveIndex(config.storePath);
126
+ try {
127
+ getStore().populateGraph(symbols, relations);
128
+ }
129
+ catch {
130
+ console.warn("[index] populateGraph thất bại (JSON store fallback)"); /* JSON store */
131
+ }
132
+ console.error(`Auto-index: ${allFiles.length} files, ${symbols.length} symbols`);
133
+ }
134
+ catch (err) {
135
+ console.error("Auto-index failed (non-fatal):", err instanceof Error ? err.message : err);
136
+ }
137
+ }
138
+ autoReindex();
99
139
  // ─── Register tools ───────────────────────────────────────
100
140
  registerRepoOverview(server);
101
141
  registerSearchCode(server);
@@ -103,6 +143,7 @@ registerInspectSymbol(server);
103
143
  registerGetContext(server);
104
144
  registerSearchHistory(server);
105
145
  registerRecallExperience(server);
146
+ registerDetectDeadCode(server);
106
147
  registerTraceFlow(server);
107
148
  registerStatus(server);
108
149
  registerRunValidation(server);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAiB,MAAM,IAAI,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,6DAA6D;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,6DAA6D;AAE7D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAEH,6DAA6D;AAE7D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAC5B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;IACpB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5B,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,0DAA0D;AAC1D,gEAAgE;AAChE,2CAA2C;AAE3C,MAAM,cAAc,GAAG;;;;;;;;;;;;;;CActB,CAAC;AAEF,SAAS,cAAc;IACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,qBAAqB,CAAC;IAErC,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,CAAC,gBAAgB;QACzD,CAAC;QACD,cAAc,CAAC,UAAU,EAAE,KAAK,MAAM,KAAK,cAAc,IAAI,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC;QAC9D,8CAA8C;IAChD,CAAC;AACH,CAAC;AACD,cAAc,EAAE,CAAC;AAEjB,0DAA0D;AAC1D,uDAAuD;AACvD,gDAAgD;AAEhD,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO;IAC7B,IAAI,CAAC;QACH,MAAM,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5E,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CAAC;YAChD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAC,CAAC;QACH,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC;YAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC,gBAAgB;QAAC,CAAC;QACtJ,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AACD,WAAW,EAAE,CAAC;AAEd,6DAA6D;AAE7D,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,cAAc,CAAC,MAAM,CAAC,CAAC;AACvB,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjC,eAAe,CAAC,MAAM,CAAC,CAAC;AAExB,6DAA6D;AAE7D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAE/D,SAAS,sBAAsB,CAAC,IAAY,EAAE,WAAmB;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAEjD,yBAAyB;IACzB,MAAM,CAAC,gBAAgB,CACrB,KAAK,EACL,gBAAgB,IAAI,EAAE,EACtB,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,EAC1C,KAAK,EAAE,GAAQ,EAAE,EAAE;QACjB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO;YACL,QAAQ,EAAE,CAAC;oBACT,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;oBACnB,QAAQ,EAAE,eAAe;oBACzB,IAAI,EAAE,OAAO;iBACd,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,cAAc,CACnB,IAAI,EACJ,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,EACtC,KAAK,EAAE,IAAuB,EAAE,EAAE;QAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,OAAO;qBACd;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,sBAAsB,CAAC,qBAAqB,EAAE,+CAA+C,CAAC,CAAC;AAC/F,sBAAsB,CAAC,mBAAmB,EAAE,+CAA+C,CAAC,CAAC;AAC7F,sBAAsB,CAAC,aAAa,EAAE,iEAAiE,CAAC,CAAC;AAEzG,6DAA6D;AAE7D,KAAK,UAAU,QAAQ;IACrB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,KAAK,cAAc,oBAAoB,CAAC,CAAC;IACrE,OAAO,CAAC,KAAK,CAAC,mLAAmL,CAAC,CAAC;IACnM,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;AAChF,CAAC;AAED,6DAA6D;AAE7D,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Install script for codestrate — prints MCP configuration instructions
4
+ * and automatically injects an MCP server section into AGENTS.md
5
+ * so coding agents know to use the available tools.
6
+ */
7
+ /**
8
+ * Inject or update the codestrate MCP section in AGENTS.md.
9
+ *
10
+ * Looks for markers `<!-- codestrate-mcp -->` … `<!-- /codestrate-mcp -->`.
11
+ * If found, replaces the content between them. Otherwise appends at end of file.
12
+ *
13
+ * @param agentsPath - Path to AGENTS.md (default: cwd/AGENTS.md)
14
+ * @returns true if the file was modified, false if skipped
15
+ */
16
+ export declare function injectToAgentsMd(agentsPath?: string): boolean;
17
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":";AACA;;;;GAIG;AA6IH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAwC7D"}
@@ -0,0 +1,251 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Install script for codestrate — prints MCP configuration instructions
4
+ * and automatically injects an MCP server section into AGENTS.md
5
+ * so coding agents know to use the available tools.
6
+ */
7
+ import { readFileSync, writeFileSync } from "fs";
8
+ import { resolve } from "path";
9
+ import { SERVER_NAME, SERVER_VERSION } from "./constants.js";
10
+ const TOOLS = [
11
+ {
12
+ name: "ci_get_context",
13
+ description: "Primary context retrieval — finds relevant symbols, files, tests, git history, and past experiences for a natural-language task description, within a token budget.",
14
+ usage: "Call first for any new coding task to gather relevant context before diving in.",
15
+ },
16
+ {
17
+ name: "ci_explore",
18
+ description: "Search symbols, files, and patterns using graph FTS5 + symbol index. Returns compressed, relevance-ranked results.",
19
+ usage: "Explore unknown code; find where a symbol is defined or referenced across the codebase.",
20
+ },
21
+ {
22
+ name: "ci_repo_overview",
23
+ description: "Scan repository structure, build system, frameworks, entry points, and available commands (build/test/lint). Returns a Markdown or JSON report.",
24
+ usage: "Understand a new repository's architecture and toolchain on first encounter.",
25
+ },
26
+ {
27
+ name: "ci_search_code",
28
+ description: "Full-text code search via ripgrep + BM25 symbol scoring. Supports language filters and pagination.",
29
+ usage: "Find code by content or pattern when you need raw text search across files.",
30
+ },
31
+ {
32
+ name: "ci_inspect_symbol",
33
+ description: "Look up a symbol definition, its callers, callees, imports, and related tests.",
34
+ usage: "Understand a specific symbol's role, who calls it, and what it depends on.",
35
+ },
36
+ {
37
+ name: "ci_trace_flow",
38
+ description: "Trace the call/import flow for a symbol — finds callers, callees, imports, and dependencies up to a configurable depth.",
39
+ usage: "Follow a call chain across modules to understand execution paths or data flow.",
40
+ },
41
+ {
42
+ name: "ci_search_history",
43
+ description: "Search git history for commits matching a query (commit messages, files, authors).",
44
+ usage: "Find when/why something changed; investigate bug introduction or feature history.",
45
+ },
46
+ {
47
+ name: "ci_recall_experience",
48
+ description: "Search past experiences and memories semantically similar to the current task. Supports filtering by memory type (episodic, semantic, procedural, negative) and repository.",
49
+ usage: "Check if a similar problem was solved before; learn from past debugging sessions.",
50
+ },
51
+ {
52
+ name: "ci_detect_dead_code",
53
+ description: "Find symbols with zero callers in the graph — potential dead code candidates for removal.",
54
+ usage: "Clean up unused code; identify functions, methods, or variables never referenced elsewhere.",
55
+ },
56
+ {
57
+ name: "ci_analyze_impact",
58
+ description: "Analyze the impact of file changes — finds dependents, imports, exports, and related tests to identify affected modules.",
59
+ usage: "Before refactoring or deleting code, check what else would break or need updates.",
60
+ },
61
+ {
62
+ name: "ci_status",
63
+ description: "Report the current repository index state — fingerprint, commit, age, symbol count, relation count, and staleness detection.",
64
+ usage: "Check if the index is up-to-date; verify the server has indexed the repository.",
65
+ },
66
+ {
67
+ name: "ci_run_validation",
68
+ description: "Run validation commands (build, test, lint) against the project to verify code quality. Reports pass/fail per target with output.",
69
+ usage: "After making changes, run validation to confirm nothing is broken.",
70
+ },
71
+ {
72
+ name: "ci_record_experience",
73
+ description: "Save a verified experience to memory. Requires validation evidence: build/test pass, commit SHA, changed files, and the validation command that was run.",
74
+ usage: "After fixing a bug or completing a task, record the experience so future sessions benefit from the knowledge.",
75
+ },
76
+ {
77
+ name: "ci_reindex",
78
+ description: "Rebuild the repository index — rescans files, extracts symbols, and updates relations. Supports incremental (git diff) and full modes.",
79
+ usage: "Trigger re-indexing when the index is stale or after significant codebase changes via git operations.",
80
+ },
81
+ ];
82
+ // ─── AGENTS.md section generator ───────────────────────────
83
+ const MARKER_OPEN = "<!-- codestrate-mcp -->";
84
+ const MARKER_CLOSE = "<!-- /codestrate-mcp -->";
85
+ function generateMdSection() {
86
+ const lines = [];
87
+ lines.push("");
88
+ lines.push(MARKER_OPEN);
89
+ lines.push("## MCP Servers");
90
+ lines.push("");
91
+ lines.push("The following MCP server is available via `stdio` transport. Its tools provide code understanding, symbol analysis, repository intelligence, and cross-session memory for coding agents.");
92
+ lines.push("");
93
+ lines.push("### codestrate");
94
+ lines.push("");
95
+ lines.push(`- **Package**: \`codestrate\` on npm`);
96
+ lines.push(`- **Transport**: stdio`);
97
+ lines.push(`- **Command**: \`npx -y codestrate\``);
98
+ lines.push(`- **Registry**: ${TOOLS.length} tools (all prefixed \`ci_\`)`);
99
+ lines.push("");
100
+ lines.push("#### Tool Reference");
101
+ lines.push("");
102
+ lines.push("| Tool | Description | When to Use |");
103
+ lines.push("|------|-------------|-------------|");
104
+ for (const t of TOOLS) {
105
+ // Escape pipe characters in descriptions
106
+ const desc = t.description.replace(/\|/g, "\\|");
107
+ const usage = t.usage.replace(/\|/g, "\\|");
108
+ lines.push(`| \`${t.name}\` | ${desc} | ${usage} |`);
109
+ }
110
+ lines.push("");
111
+ lines.push("#### Best Practices");
112
+ lines.push("");
113
+ lines.push("1. **Start every task** by calling `ci_get_context` first. It retrieves relevant symbols, files, tests, git history, and past experiences — the agent equivalent of opening the files you'll work on.");
114
+ lines.push("2. **Explore unknown code** with `ci_explore` (keyword/symbol search) or `ci_search_code` (full-text search). Prefer `ci_explore` for structure-aware lookups.");
115
+ lines.push("3. **Understand symbols** with `ci_inspect_symbol` (definition + callers + callees) and `ci_trace_flow` (call chain up to N depths).");
116
+ lines.push("4. **Check impact** before refactoring: use `ci_analyze_impact` to find everything that depends on the files you're changing.");
117
+ lines.push("5. **Learn from history**: use `ci_recall_experience` to find similar past fixes; use `ci_search_history` for git archaeology.");
118
+ lines.push("6. **Verify changes** with `ci_run_validation` (build/test/lint) after making edits.");
119
+ lines.push("7. **Save knowledge**: call `ci_record_experience` after fixing a bug or completing a non-trivial task — it feeds future recall.");
120
+ lines.push("8. **Keep the index fresh**: if the index is stale (check with `ci_status`), run `ci_reindex`.");
121
+ lines.push("");
122
+ lines.push(MARKER_CLOSE);
123
+ lines.push("");
124
+ return lines.join("\n");
125
+ }
126
+ // ─── Inject into AGENTS.md ──────────────────────────────────
127
+ /**
128
+ * Inject or update the codestrate MCP section in AGENTS.md.
129
+ *
130
+ * Looks for markers `<!-- codestrate-mcp -->` … `<!-- /codestrate-mcp -->`.
131
+ * If found, replaces the content between them. Otherwise appends at end of file.
132
+ *
133
+ * @param agentsPath - Path to AGENTS.md (default: cwd/AGENTS.md)
134
+ * @returns true if the file was modified, false if skipped
135
+ */
136
+ export function injectToAgentsMd(agentsPath) {
137
+ const path = resolve(agentsPath ?? "AGENTS.md");
138
+ const section = generateMdSection();
139
+ let content;
140
+ let existed = true;
141
+ try {
142
+ content = readFileSync(path, "utf-8");
143
+ }
144
+ catch {
145
+ // File doesn't exist — create it with just the section
146
+ content = "# Agent Instructions\n\n";
147
+ existed = false;
148
+ }
149
+ const openIdx = content.indexOf(MARKER_OPEN);
150
+ const closeIdx = content.indexOf(MARKER_CLOSE);
151
+ if (openIdx !== -1 && closeIdx !== -1 && closeIdx > openIdx) {
152
+ // Replace existing section (inclusive of markers)
153
+ const before = content.slice(0, openIdx);
154
+ const after = content.slice(closeIdx + MARKER_CLOSE.length);
155
+ const newContent = before + section.trimStart() + after;
156
+ if (newContent === content) {
157
+ return false; // No change
158
+ }
159
+ writeFileSync(path, newContent, "utf-8");
160
+ console.error(`Updated MCP server section in ${path}`);
161
+ return true;
162
+ }
163
+ // Append at end
164
+ const needsNewline = content.endsWith("\n");
165
+ const newContent = content + (needsNewline ? "" : "\n") + section;
166
+ writeFileSync(path, newContent, "utf-8");
167
+ console.error(existed
168
+ ? `Appended MCP server section to ${path}`
169
+ : `Created ${path} with MCP server section`);
170
+ return true;
171
+ }
172
+ // ─── CLI ────────────────────────────────────────────────────
173
+ function parseArgs() {
174
+ const args = process.argv.slice(2);
175
+ let agentsPath;
176
+ let noInject = false;
177
+ for (let i = 0; i < args.length; i++) {
178
+ const arg = args[i];
179
+ if (arg === "--agents-path" && i + 1 < args.length) {
180
+ agentsPath = args[++i];
181
+ }
182
+ else if (arg === "--no-inject") {
183
+ noInject = true;
184
+ }
185
+ else if (arg === "--help" || arg === "-h") {
186
+ console.log("Usage: npx codestrate [options]");
187
+ console.log("");
188
+ console.log("Options:");
189
+ console.log(" --agents-path <path> Path to AGENTS.md (default: ./AGENTS.md)");
190
+ console.log(" --no-inject Skip injecting into AGENTS.md");
191
+ console.log(" --help, -h Show this help");
192
+ process.exit(0);
193
+ }
194
+ }
195
+ return { agentsPath, noInject };
196
+ }
197
+ // ─── Instructions output ───────────────────────────────────
198
+ function separator() {
199
+ return "─".repeat(60);
200
+ }
201
+ function bold(text) {
202
+ return process.stdout.isTTY ? `\x1b[1m${text}\x1b[22m` : text;
203
+ }
204
+ function printInstructions() {
205
+ const toolNames = TOOLS.map((t) => t.name);
206
+ console.log(`\n${separator()}`);
207
+ console.log(` ${bold(SERVER_NAME)} v${SERVER_VERSION}`);
208
+ console.log(`${separator()}\n`);
209
+ console.log(" Bin aliases:\n");
210
+ console.log(" • codestrate → dist/index.js");
211
+ console.log(" • ci-mcp → dist/index.js");
212
+ console.log(" • ci-install → dist/install.js");
213
+ console.log(`\n${separator()}`);
214
+ console.log(` ${bold(`Tools (${TOOLS.length})`)}`);
215
+ console.log(`${separator()}\n`);
216
+ for (const t of TOOLS) {
217
+ console.log(` • ${t.name}`);
218
+ }
219
+ console.log(`\n${separator()}`);
220
+ console.log(` ${bold("MCP Configuration — Claude Code")}`);
221
+ console.log(`${separator()}\n`);
222
+ console.log(" Add to Claude Code MCP settings:\n");
223
+ console.log(' {\n'
224
+ + ' "mcpServers": {\n'
225
+ + ` "${SERVER_NAME}": {\n`
226
+ + ' "command": "npx",\n'
227
+ + ' "args": ["-y", "codestrate"]\n'
228
+ + ' }\n'
229
+ + ' }\n'
230
+ + ' }\n');
231
+ console.log(" Or run locally:\n");
232
+ console.log(' command: node');
233
+ console.log(' args: ["<repo>/dist/index.js"]\n');
234
+ console.log(`${separator()}`);
235
+ console.log(` ${bold("Quick Start")}`);
236
+ console.log(`${separator()}\n`);
237
+ console.log(" 1. Build: npm run build");
238
+ console.log(" 2. Run: npm start");
239
+ console.log(` 3. Test: ask Claude to use ${toolNames[0]}\n`);
240
+ console.log(`${separator()}\n`);
241
+ }
242
+ // ─── Main ──────────────────────────────────────────────────
243
+ function main() {
244
+ const { agentsPath, noInject } = parseArgs();
245
+ printInstructions();
246
+ if (!noInject) {
247
+ injectToAgentsMd(agentsPath);
248
+ }
249
+ }
250
+ main();
251
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}