contextpro-mcp 0.0.0-stage → 1.4.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 (466) hide show
  1. package/CHANGELOG.md +416 -0
  2. package/INSTALL.md +128 -0
  3. package/INSTRUCTIONS.md +33 -0
  4. package/LICENSE +21 -0
  5. package/NOTICE +12 -0
  6. package/README.md +164 -2
  7. package/SECURITY.md +27 -0
  8. package/agent-guide.md +323 -0
  9. package/agent-instructions.md +1 -0
  10. package/build/core/agent-setup.d.ts +5 -0
  11. package/build/core/agent-setup.d.ts.map +1 -0
  12. package/build/core/agent-setup.js +94 -0
  13. package/build/core/agent-setup.js.map +1 -0
  14. package/build/core/artifacts.d.ts +64 -0
  15. package/build/core/artifacts.d.ts.map +1 -0
  16. package/build/core/artifacts.js +370 -0
  17. package/build/core/artifacts.js.map +1 -0
  18. package/build/core/bounded-source.d.ts +15 -0
  19. package/build/core/bounded-source.d.ts.map +1 -0
  20. package/build/core/bounded-source.js +78 -0
  21. package/build/core/bounded-source.js.map +1 -0
  22. package/build/core/changed-since.d.ts +20 -0
  23. package/build/core/changed-since.d.ts.map +1 -0
  24. package/build/core/changed-since.js +43 -0
  25. package/build/core/changed-since.js.map +1 -0
  26. package/build/core/chat-model.d.ts +8 -0
  27. package/build/core/chat-model.d.ts.map +1 -0
  28. package/build/core/chat-model.js +135 -0
  29. package/build/core/chat-model.js.map +1 -0
  30. package/build/core/clustering.d.ts +6 -0
  31. package/build/core/clustering.d.ts.map +1 -0
  32. package/build/core/clustering.js +201 -0
  33. package/build/core/clustering.js.map +1 -0
  34. package/build/core/context-metadata.d.ts +50 -0
  35. package/build/core/context-metadata.d.ts.map +1 -0
  36. package/build/core/context-metadata.js +118 -0
  37. package/build/core/context-metadata.js.map +1 -0
  38. package/build/core/data-dir.d.ts +5 -0
  39. package/build/core/data-dir.d.ts.map +1 -0
  40. package/build/core/data-dir.js +53 -0
  41. package/build/core/data-dir.js.map +1 -0
  42. package/build/core/db-native.d.ts +28 -0
  43. package/build/core/db-native.d.ts.map +1 -0
  44. package/build/core/db-native.js +120 -0
  45. package/build/core/db-native.js.map +1 -0
  46. package/build/core/db.d.ts +294 -0
  47. package/build/core/db.d.ts.map +1 -0
  48. package/build/core/db.js +1047 -0
  49. package/build/core/db.js.map +1 -0
  50. package/build/core/doctor.d.ts +13 -0
  51. package/build/core/doctor.d.ts.map +1 -0
  52. package/build/core/doctor.js +55 -0
  53. package/build/core/doctor.js.map +1 -0
  54. package/build/core/efficiency.d.ts +16 -0
  55. package/build/core/efficiency.d.ts.map +1 -0
  56. package/build/core/efficiency.js +170 -0
  57. package/build/core/efficiency.js.map +1 -0
  58. package/build/core/embedding-tracker.d.ts +25 -0
  59. package/build/core/embedding-tracker.d.ts.map +1 -0
  60. package/build/core/embedding-tracker.js +228 -0
  61. package/build/core/embedding-tracker.js.map +1 -0
  62. package/build/core/embeddings.d.ts +90 -0
  63. package/build/core/embeddings.d.ts.map +1 -0
  64. package/build/core/embeddings.js +693 -0
  65. package/build/core/embeddings.js.map +1 -0
  66. package/build/core/evidence-state.d.ts +42 -0
  67. package/build/core/evidence-state.d.ts.map +1 -0
  68. package/build/core/evidence-state.js +153 -0
  69. package/build/core/evidence-state.js.map +1 -0
  70. package/build/core/extractor-stamp.d.ts +10 -0
  71. package/build/core/extractor-stamp.d.ts.map +1 -0
  72. package/build/core/extractor-stamp.js +51 -0
  73. package/build/core/extractor-stamp.js.map +1 -0
  74. package/build/core/feature-brief-cache.d.ts +37 -0
  75. package/build/core/feature-brief-cache.d.ts.map +1 -0
  76. package/build/core/feature-brief-cache.js +100 -0
  77. package/build/core/feature-brief-cache.js.map +1 -0
  78. package/build/core/file-fingerprint.d.ts +15 -0
  79. package/build/core/file-fingerprint.d.ts.map +1 -0
  80. package/build/core/file-fingerprint.js +24 -0
  81. package/build/core/file-fingerprint.js.map +1 -0
  82. package/build/core/graph-analytics.d.ts +46 -0
  83. package/build/core/graph-analytics.d.ts.map +1 -0
  84. package/build/core/graph-analytics.js +371 -0
  85. package/build/core/graph-analytics.js.map +1 -0
  86. package/build/core/hub.d.ts +23 -0
  87. package/build/core/hub.d.ts.map +1 -0
  88. package/build/core/hub.js +123 -0
  89. package/build/core/hub.js.map +1 -0
  90. package/build/core/ignore-dirs.d.ts +7 -0
  91. package/build/core/ignore-dirs.d.ts.map +1 -0
  92. package/build/core/ignore-dirs.js +84 -0
  93. package/build/core/ignore-dirs.js.map +1 -0
  94. package/build/core/index-freshness.d.ts +15 -0
  95. package/build/core/index-freshness.d.ts.map +1 -0
  96. package/build/core/index-freshness.js +96 -0
  97. package/build/core/index-freshness.js.map +1 -0
  98. package/build/core/index-reconcile.d.ts +28 -0
  99. package/build/core/index-reconcile.d.ts.map +1 -0
  100. package/build/core/index-reconcile.js +129 -0
  101. package/build/core/index-reconcile.js.map +1 -0
  102. package/build/core/local-daemon.d.ts +5 -0
  103. package/build/core/local-daemon.d.ts.map +1 -0
  104. package/build/core/local-daemon.js +282 -0
  105. package/build/core/local-daemon.js.map +1 -0
  106. package/build/core/memory-graph.d.ts +68 -0
  107. package/build/core/memory-graph.d.ts.map +1 -0
  108. package/build/core/memory-graph.js +152 -0
  109. package/build/core/memory-graph.js.map +1 -0
  110. package/build/core/native-repair.d.ts +12 -0
  111. package/build/core/native-repair.d.ts.map +1 -0
  112. package/build/core/native-repair.js +167 -0
  113. package/build/core/native-repair.js.map +1 -0
  114. package/build/core/native-runtime.d.ts +12 -0
  115. package/build/core/native-runtime.d.ts.map +1 -0
  116. package/build/core/native-runtime.js +38 -0
  117. package/build/core/native-runtime.js.map +1 -0
  118. package/build/core/pagerank.d.ts +29 -0
  119. package/build/core/pagerank.d.ts.map +1 -0
  120. package/build/core/pagerank.js +90 -0
  121. package/build/core/pagerank.js.map +1 -0
  122. package/build/core/parser-process.d.ts +21 -0
  123. package/build/core/parser-process.d.ts.map +1 -0
  124. package/build/core/parser-process.js +103 -0
  125. package/build/core/parser-process.js.map +1 -0
  126. package/build/core/parser-worker.d.ts +2 -0
  127. package/build/core/parser-worker.d.ts.map +1 -0
  128. package/build/core/parser-worker.js +17 -0
  129. package/build/core/parser-worker.js.map +1 -0
  130. package/build/core/parser.d.ts +66 -0
  131. package/build/core/parser.d.ts.map +1 -0
  132. package/build/core/parser.js +750 -0
  133. package/build/core/parser.js.map +1 -0
  134. package/build/core/path-guard.d.ts +6 -0
  135. package/build/core/path-guard.d.ts.map +1 -0
  136. package/build/core/path-guard.js +55 -0
  137. package/build/core/path-guard.js.map +1 -0
  138. package/build/core/process-lifecycle.d.ts +30 -0
  139. package/build/core/process-lifecycle.d.ts.map +1 -0
  140. package/build/core/process-lifecycle.js +129 -0
  141. package/build/core/process-lifecycle.js.map +1 -0
  142. package/build/core/project-config.d.ts +83 -0
  143. package/build/core/project-config.d.ts.map +1 -0
  144. package/build/core/project-config.js +302 -0
  145. package/build/core/project-config.js.map +1 -0
  146. package/build/core/project-graph.d.ts +69 -0
  147. package/build/core/project-graph.d.ts.map +1 -0
  148. package/build/core/project-graph.js +874 -0
  149. package/build/core/project-graph.js.map +1 -0
  150. package/build/core/provider-config.d.ts +15 -0
  151. package/build/core/provider-config.d.ts.map +1 -0
  152. package/build/core/provider-config.js +67 -0
  153. package/build/core/provider-config.js.map +1 -0
  154. package/build/core/provider-usage.d.ts +21 -0
  155. package/build/core/provider-usage.d.ts.map +1 -0
  156. package/build/core/provider-usage.js +52 -0
  157. package/build/core/provider-usage.js.map +1 -0
  158. package/build/core/python-language-server.d.ts +23 -0
  159. package/build/core/python-language-server.d.ts.map +1 -0
  160. package/build/core/python-language-server.js +217 -0
  161. package/build/core/python-language-server.js.map +1 -0
  162. package/build/core/python-runtime-identity.d.ts +3 -0
  163. package/build/core/python-runtime-identity.d.ts.map +1 -0
  164. package/build/core/python-runtime-identity.js +53 -0
  165. package/build/core/python-runtime-identity.js.map +1 -0
  166. package/build/core/reconcile-scheduler.d.ts +20 -0
  167. package/build/core/reconcile-scheduler.d.ts.map +1 -0
  168. package/build/core/reconcile-scheduler.js +58 -0
  169. package/build/core/reconcile-scheduler.js.map +1 -0
  170. package/build/core/request-context.d.ts +7 -0
  171. package/build/core/request-context.d.ts.map +1 -0
  172. package/build/core/request-context.js +17 -0
  173. package/build/core/request-context.js.map +1 -0
  174. package/build/core/request-root.d.ts +19 -0
  175. package/build/core/request-root.d.ts.map +1 -0
  176. package/build/core/request-root.js +26 -0
  177. package/build/core/request-root.js.map +1 -0
  178. package/build/core/root-guard.d.ts +8 -0
  179. package/build/core/root-guard.d.ts.map +1 -0
  180. package/build/core/root-guard.js +53 -0
  181. package/build/core/root-guard.js.map +1 -0
  182. package/build/core/roots-detect.d.ts +17 -0
  183. package/build/core/roots-detect.d.ts.map +1 -0
  184. package/build/core/roots-detect.js +63 -0
  185. package/build/core/roots-detect.js.map +1 -0
  186. package/build/core/runtime-session.d.ts +5 -0
  187. package/build/core/runtime-session.d.ts.map +1 -0
  188. package/build/core/runtime-session.js +10 -0
  189. package/build/core/runtime-session.js.map +1 -0
  190. package/build/core/scip-index.d.ts +71 -0
  191. package/build/core/scip-index.d.ts.map +1 -0
  192. package/build/core/scip-index.js +343 -0
  193. package/build/core/scip-index.js.map +1 -0
  194. package/build/core/semantic-diff.d.ts +32 -0
  195. package/build/core/semantic-diff.d.ts.map +1 -0
  196. package/build/core/semantic-diff.js +259 -0
  197. package/build/core/semantic-diff.js.map +1 -0
  198. package/build/core/source-context.d.ts +3 -0
  199. package/build/core/source-context.d.ts.map +1 -0
  200. package/build/core/source-context.js +86 -0
  201. package/build/core/source-context.js.map +1 -0
  202. package/build/core/source-mask.d.ts +8 -0
  203. package/build/core/source-mask.d.ts.map +1 -0
  204. package/build/core/source-mask.js +156 -0
  205. package/build/core/source-mask.js.map +1 -0
  206. package/build/core/source-mutation.d.ts +16 -0
  207. package/build/core/source-mutation.d.ts.map +1 -0
  208. package/build/core/source-mutation.js +193 -0
  209. package/build/core/source-mutation.js.map +1 -0
  210. package/build/core/sql-schema.d.ts +59 -0
  211. package/build/core/sql-schema.d.ts.map +1 -0
  212. package/build/core/sql-schema.js +218 -0
  213. package/build/core/sql-schema.js.map +1 -0
  214. package/build/core/startup-health.d.ts +40 -0
  215. package/build/core/startup-health.d.ts.map +1 -0
  216. package/build/core/startup-health.js +132 -0
  217. package/build/core/startup-health.js.map +1 -0
  218. package/build/core/team-ledger.d.ts +60 -0
  219. package/build/core/team-ledger.d.ts.map +1 -0
  220. package/build/core/team-ledger.js +171 -0
  221. package/build/core/team-ledger.js.map +1 -0
  222. package/build/core/test-impact.d.ts +23 -0
  223. package/build/core/test-impact.d.ts.map +1 -0
  224. package/build/core/test-impact.js +131 -0
  225. package/build/core/test-impact.js.map +1 -0
  226. package/build/core/tool-metrics.d.ts +29 -0
  227. package/build/core/tool-metrics.d.ts.map +1 -0
  228. package/build/core/tool-metrics.js +74 -0
  229. package/build/core/tool-metrics.js.map +1 -0
  230. package/build/core/tool-profile.d.ts +12 -0
  231. package/build/core/tool-profile.d.ts.map +1 -0
  232. package/build/core/tool-profile.js +102 -0
  233. package/build/core/tool-profile.js.map +1 -0
  234. package/build/core/tool-trace.d.ts +8 -0
  235. package/build/core/tool-trace.d.ts.map +1 -0
  236. package/build/core/tool-trace.js +70 -0
  237. package/build/core/tool-trace.js.map +1 -0
  238. package/build/core/tree-sitter-runtime.d.ts +20 -0
  239. package/build/core/tree-sitter-runtime.d.ts.map +1 -0
  240. package/build/core/tree-sitter-runtime.js +324 -0
  241. package/build/core/tree-sitter-runtime.js.map +1 -0
  242. package/build/core/tree-sitter.d.ts +6 -0
  243. package/build/core/tree-sitter.d.ts.map +1 -0
  244. package/build/core/tree-sitter.js +24 -0
  245. package/build/core/tree-sitter.js.map +1 -0
  246. package/build/core/typescript-reference-process.d.ts +30 -0
  247. package/build/core/typescript-reference-process.d.ts.map +1 -0
  248. package/build/core/typescript-reference-process.js +124 -0
  249. package/build/core/typescript-reference-process.js.map +1 -0
  250. package/build/core/typescript-reference-worker.d.ts +2 -0
  251. package/build/core/typescript-reference-worker.d.ts.map +1 -0
  252. package/build/core/typescript-reference-worker.js +14 -0
  253. package/build/core/typescript-reference-worker.js.map +1 -0
  254. package/build/core/typescript-references.d.ts +71 -0
  255. package/build/core/typescript-references.d.ts.map +1 -0
  256. package/build/core/typescript-references.js +392 -0
  257. package/build/core/typescript-references.js.map +1 -0
  258. package/build/core/typescript-skeleton.d.ts +5 -0
  259. package/build/core/typescript-skeleton.d.ts.map +1 -0
  260. package/build/core/typescript-skeleton.js +49 -0
  261. package/build/core/typescript-skeleton.js.map +1 -0
  262. package/build/core/walker.d.ts +16 -0
  263. package/build/core/walker.d.ts.map +1 -0
  264. package/build/core/walker.js +152 -0
  265. package/build/core/walker.js.map +1 -0
  266. package/build/core/workspace-router.d.ts +28 -0
  267. package/build/core/workspace-router.d.ts.map +1 -0
  268. package/build/core/workspace-router.js +93 -0
  269. package/build/core/workspace-router.js.map +1 -0
  270. package/build/core/worktree-gc.d.ts +16 -0
  271. package/build/core/worktree-gc.d.ts.map +1 -0
  272. package/build/core/worktree-gc.js +69 -0
  273. package/build/core/worktree-gc.js.map +1 -0
  274. package/build/core/worktree-overlay.d.ts +22 -0
  275. package/build/core/worktree-overlay.d.ts.map +1 -0
  276. package/build/core/worktree-overlay.js +84 -0
  277. package/build/core/worktree-overlay.js.map +1 -0
  278. package/build/core/worktree-root-guard.d.ts +8 -0
  279. package/build/core/worktree-root-guard.d.ts.map +1 -0
  280. package/build/core/worktree-root-guard.js +82 -0
  281. package/build/core/worktree-root-guard.js.map +1 -0
  282. package/build/core/worktree-seed.d.ts +14 -0
  283. package/build/core/worktree-seed.d.ts.map +1 -0
  284. package/build/core/worktree-seed.js +98 -0
  285. package/build/core/worktree-seed.js.map +1 -0
  286. package/build/git/shadow.d.ts +40 -0
  287. package/build/git/shadow.d.ts.map +1 -0
  288. package/build/git/shadow.js +298 -0
  289. package/build/git/shadow.js.map +1 -0
  290. package/build/index.d.ts +3 -0
  291. package/build/index.d.ts.map +1 -0
  292. package/build/index.js +599 -0
  293. package/build/index.js.map +1 -0
  294. package/build/tools/agentic-context.d.ts +86 -0
  295. package/build/tools/agentic-context.d.ts.map +1 -0
  296. package/build/tools/agentic-context.js +1546 -0
  297. package/build/tools/agentic-context.js.map +1 -0
  298. package/build/tools/blast-radius.d.ts +24 -0
  299. package/build/tools/blast-radius.d.ts.map +1 -0
  300. package/build/tools/blast-radius.js +231 -0
  301. package/build/tools/blast-radius.js.map +1 -0
  302. package/build/tools/changed-since.d.ts +7 -0
  303. package/build/tools/changed-since.d.ts.map +1 -0
  304. package/build/tools/changed-since.js +68 -0
  305. package/build/tools/changed-since.js.map +1 -0
  306. package/build/tools/compiler-actions.d.ts +26 -0
  307. package/build/tools/compiler-actions.d.ts.map +1 -0
  308. package/build/tools/compiler-actions.js +121 -0
  309. package/build/tools/compiler-actions.js.map +1 -0
  310. package/build/tools/context-tree.d.ts +9 -0
  311. package/build/tools/context-tree.d.ts.map +1 -0
  312. package/build/tools/context-tree.js +131 -0
  313. package/build/tools/context-tree.js.map +1 -0
  314. package/build/tools/context.d.ts +37 -0
  315. package/build/tools/context.d.ts.map +1 -0
  316. package/build/tools/context.js +800 -0
  317. package/build/tools/context.js.map +1 -0
  318. package/build/tools/diff.d.ts +9 -0
  319. package/build/tools/diff.d.ts.map +1 -0
  320. package/build/tools/diff.js +176 -0
  321. package/build/tools/diff.js.map +1 -0
  322. package/build/tools/directory-prior.d.ts +16 -0
  323. package/build/tools/directory-prior.d.ts.map +1 -0
  324. package/build/tools/directory-prior.js +121 -0
  325. package/build/tools/directory-prior.js.map +1 -0
  326. package/build/tools/discovery-documents.d.ts +11 -0
  327. package/build/tools/discovery-documents.d.ts.map +1 -0
  328. package/build/tools/discovery-documents.js +71 -0
  329. package/build/tools/discovery-documents.js.map +1 -0
  330. package/build/tools/discovery-hints.d.ts +25 -0
  331. package/build/tools/discovery-hints.d.ts.map +1 -0
  332. package/build/tools/discovery-hints.js +329 -0
  333. package/build/tools/discovery-hints.js.map +1 -0
  334. package/build/tools/efficiency-report.d.ts +13 -0
  335. package/build/tools/efficiency-report.d.ts.map +1 -0
  336. package/build/tools/efficiency-report.js +78 -0
  337. package/build/tools/efficiency-report.js.map +1 -0
  338. package/build/tools/evidence-retrieval.d.ts +33 -0
  339. package/build/tools/evidence-retrieval.d.ts.map +1 -0
  340. package/build/tools/evidence-retrieval.js +200 -0
  341. package/build/tools/evidence-retrieval.js.map +1 -0
  342. package/build/tools/exact-references.d.ts +10 -0
  343. package/build/tools/exact-references.d.ts.map +1 -0
  344. package/build/tools/exact-references.js +349 -0
  345. package/build/tools/exact-references.js.map +1 -0
  346. package/build/tools/explain.d.ts +14 -0
  347. package/build/tools/explain.d.ts.map +1 -0
  348. package/build/tools/explain.js +370 -0
  349. package/build/tools/explain.js.map +1 -0
  350. package/build/tools/feature-brief.d.ts +7 -0
  351. package/build/tools/feature-brief.d.ts.map +1 -0
  352. package/build/tools/feature-brief.js +89 -0
  353. package/build/tools/feature-brief.js.map +1 -0
  354. package/build/tools/feature-hub.d.ts +15 -0
  355. package/build/tools/feature-hub.d.ts.map +1 -0
  356. package/build/tools/feature-hub.js +404 -0
  357. package/build/tools/feature-hub.js.map +1 -0
  358. package/build/tools/file-skeleton.d.ts +7 -0
  359. package/build/tools/file-skeleton.d.ts.map +1 -0
  360. package/build/tools/file-skeleton.js +190 -0
  361. package/build/tools/file-skeleton.js.map +1 -0
  362. package/build/tools/grep.d.ts +25 -0
  363. package/build/tools/grep.d.ts.map +1 -0
  364. package/build/tools/grep.js +341 -0
  365. package/build/tools/grep.js.map +1 -0
  366. package/build/tools/impact-delta.d.ts +7 -0
  367. package/build/tools/impact-delta.d.ts.map +1 -0
  368. package/build/tools/impact-delta.js +102 -0
  369. package/build/tools/impact-delta.js.map +1 -0
  370. package/build/tools/memory-tools.d.ts +69 -0
  371. package/build/tools/memory-tools.d.ts.map +1 -0
  372. package/build/tools/memory-tools.js +366 -0
  373. package/build/tools/memory-tools.js.map +1 -0
  374. package/build/tools/planning-helpers.d.ts +26 -0
  375. package/build/tools/planning-helpers.d.ts.map +1 -0
  376. package/build/tools/planning-helpers.js +269 -0
  377. package/build/tools/planning-helpers.js.map +1 -0
  378. package/build/tools/project-graph.d.ts +19 -0
  379. package/build/tools/project-graph.d.ts.map +1 -0
  380. package/build/tools/project-graph.js +259 -0
  381. package/build/tools/project-graph.js.map +1 -0
  382. package/build/tools/propose-commit.d.ts +9 -0
  383. package/build/tools/propose-commit.d.ts.map +1 -0
  384. package/build/tools/propose-commit.js +156 -0
  385. package/build/tools/propose-commit.js.map +1 -0
  386. package/build/tools/register-tools.d.ts +18 -0
  387. package/build/tools/register-tools.d.ts.map +1 -0
  388. package/build/tools/register-tools.js +1131 -0
  389. package/build/tools/register-tools.js.map +1 -0
  390. package/build/tools/reindex.d.ts +76 -0
  391. package/build/tools/reindex.d.ts.map +1 -0
  392. package/build/tools/reindex.js +871 -0
  393. package/build/tools/reindex.js.map +1 -0
  394. package/build/tools/related.d.ts +6 -0
  395. package/build/tools/related.d.ts.map +1 -0
  396. package/build/tools/related.js +143 -0
  397. package/build/tools/related.js.map +1 -0
  398. package/build/tools/repo-map.d.ts +59 -0
  399. package/build/tools/repo-map.d.ts.map +1 -0
  400. package/build/tools/repo-map.js +270 -0
  401. package/build/tools/repo-map.js.map +1 -0
  402. package/build/tools/resolve-symbol.d.ts +41 -0
  403. package/build/tools/resolve-symbol.d.ts.map +1 -0
  404. package/build/tools/resolve-symbol.js +250 -0
  405. package/build/tools/resolve-symbol.js.map +1 -0
  406. package/build/tools/retrieval-helpers.d.ts +35 -0
  407. package/build/tools/retrieval-helpers.d.ts.map +1 -0
  408. package/build/tools/retrieval-helpers.js +302 -0
  409. package/build/tools/retrieval-helpers.js.map +1 -0
  410. package/build/tools/scip-index.d.ts +12 -0
  411. package/build/tools/scip-index.d.ts.map +1 -0
  412. package/build/tools/scip-index.js +66 -0
  413. package/build/tools/scip-index.js.map +1 -0
  414. package/build/tools/scoped-discovery.d.ts +7 -0
  415. package/build/tools/scoped-discovery.d.ts.map +1 -0
  416. package/build/tools/scoped-discovery.js +89 -0
  417. package/build/tools/scoped-discovery.js.map +1 -0
  418. package/build/tools/search.d.ts +62 -0
  419. package/build/tools/search.d.ts.map +1 -0
  420. package/build/tools/search.js +419 -0
  421. package/build/tools/search.js.map +1 -0
  422. package/build/tools/semantic-diff.d.ts +7 -0
  423. package/build/tools/semantic-diff.d.ts.map +1 -0
  424. package/build/tools/semantic-diff.js +45 -0
  425. package/build/tools/semantic-diff.js.map +1 -0
  426. package/build/tools/semantic-identifiers.d.ts +51 -0
  427. package/build/tools/semantic-identifiers.d.ts.map +1 -0
  428. package/build/tools/semantic-identifiers.js +522 -0
  429. package/build/tools/semantic-identifiers.js.map +1 -0
  430. package/build/tools/semantic-navigate.d.ts +18 -0
  431. package/build/tools/semantic-navigate.d.ts.map +1 -0
  432. package/build/tools/semantic-navigate.js +413 -0
  433. package/build/tools/semantic-navigate.js.map +1 -0
  434. package/build/tools/semantic-search.d.ts +30 -0
  435. package/build/tools/semantic-search.d.ts.map +1 -0
  436. package/build/tools/semantic-search.js +466 -0
  437. package/build/tools/semantic-search.js.map +1 -0
  438. package/build/tools/sql-schema.d.ts +23 -0
  439. package/build/tools/sql-schema.d.ts.map +1 -0
  440. package/build/tools/sql-schema.js +155 -0
  441. package/build/tools/sql-schema.js.map +1 -0
  442. package/build/tools/static-analysis.d.ts +7 -0
  443. package/build/tools/static-analysis.d.ts.map +1 -0
  444. package/build/tools/static-analysis.js +331 -0
  445. package/build/tools/static-analysis.js.map +1 -0
  446. package/build/tools/status.d.ts +74 -0
  447. package/build/tools/status.d.ts.map +1 -0
  448. package/build/tools/status.js +227 -0
  449. package/build/tools/status.js.map +1 -0
  450. package/build/tools/symbolic-edit.d.ts +57 -0
  451. package/build/tools/symbolic-edit.d.ts.map +1 -0
  452. package/build/tools/symbolic-edit.js +500 -0
  453. package/build/tools/symbolic-edit.js.map +1 -0
  454. package/build/tools/test-impact.d.ts +7 -0
  455. package/build/tools/test-impact.d.ts.map +1 -0
  456. package/build/tools/test-impact.js +34 -0
  457. package/build/tools/test-impact.js.map +1 -0
  458. package/build/tools/test-map.d.ts +8 -0
  459. package/build/tools/test-map.d.ts.map +1 -0
  460. package/build/tools/test-map.js +75 -0
  461. package/build/tools/test-map.js.map +1 -0
  462. package/docs/README.md +26 -0
  463. package/docs/architecture.md +35 -0
  464. package/docs/configuration.md +178 -0
  465. package/docs/maintenance.md +77 -0
  466. package/package.json +80 -4
@@ -0,0 +1,75 @@
1
+ // Map source files to their test files using import graph and naming conventions
2
+ // FEATURE: TestMap — which tests cover which code
3
+ import { getDB } from "../core/db.js";
4
+ import { execFile } from "child_process";
5
+ import { promisify } from "util";
6
+ import { findTestsForFiles, isTestFile } from "./retrieval-helpers.js";
7
+ import { isSupportedFile } from "../core/parser.js";
8
+ const execFileAsync = promisify(execFile);
9
+ async function getChangedFiles(rootDir) {
10
+ try {
11
+ const [{ stdout: unstaged }, { stdout: staged }, { stdout: untracked }] = await Promise.all([
12
+ execFileAsync("git", ["diff", "--name-only"], { cwd: rootDir, timeout: 5000 }),
13
+ execFileAsync("git", ["diff", "--name-only", "--cached"], { cwd: rootDir, timeout: 5000 }),
14
+ execFileAsync("git", ["ls-files", "--others", "--exclude-standard"], { cwd: rootDir, timeout: 5000 }),
15
+ ]);
16
+ const dirty = [...new Set(`${unstaged}\n${staged}\n${untracked}`.trim().split("\n").filter((l) => l.trim()))]
17
+ .filter(isSourceTarget);
18
+ if (dirty.length > 0)
19
+ return dirty;
20
+ const { stdout: recent } = await execFileAsync("git", ["diff-tree", "--root", "--no-commit-id", "--name-only", "-r", "HEAD"], { cwd: rootDir, timeout: 5000 });
21
+ return [...new Set(recent.trim().split("\n").filter((line) => line.trim()))].filter(isSourceTarget);
22
+ }
23
+ catch {
24
+ return [];
25
+ }
26
+ }
27
+ function isSourceTarget(path) {
28
+ return !path.startsWith(".contextpro/")
29
+ && !path.startsWith(".contextplus/")
30
+ && !isTestFile(path)
31
+ && isSupportedFile(path);
32
+ }
33
+ export async function getTestMap(options) {
34
+ const db = await getDB(options.rootDir);
35
+ let targetFiles = [];
36
+ if (options.changed) {
37
+ targetFiles = await getChangedFiles(options.rootDir);
38
+ targetFiles = targetFiles.filter(isSourceTarget);
39
+ }
40
+ else if (options.file) {
41
+ targetFiles = [options.file];
42
+ }
43
+ else if (options.symbol) {
44
+ const symbols = db.searchSymbolsByName(options.symbol);
45
+ const fileIds = [...new Set(symbols.map((s) => s.file_id))];
46
+ const allDbFiles = db.getAllFiles();
47
+ targetFiles = fileIds.map((id) => allDbFiles.find((f) => f.id === id)?.path).filter(Boolean);
48
+ }
49
+ if (targetFiles.length === 0) {
50
+ return options.changed ? "No changed or recently committed source files to map." : "No target files specified. Use file, symbol, or changed parameter.";
51
+ }
52
+ const lines = [`=== Test Map ===`, ""];
53
+ for (const file of targetFiles) {
54
+ const allTests = await findTestsForFiles(options.rootDir, [file]);
55
+ lines.push(`${file}:`);
56
+ if (allTests.length > 0) {
57
+ for (const test of allTests) {
58
+ lines.push(` → ${test.path} (${test.reason}, ${Math.round(test.score * 100)}%)`);
59
+ }
60
+ }
61
+ else {
62
+ lines.push(" ⚠ No tests found");
63
+ }
64
+ lines.push("");
65
+ }
66
+ const totalMapped = targetFiles.length;
67
+ let withTests = 0;
68
+ for (const file of targetFiles) {
69
+ if ((await findTestsForFiles(options.rootDir, [file])).length > 0)
70
+ withTests++;
71
+ }
72
+ lines.push(`Coverage: ${withTests}/${totalMapped} files have tests`);
73
+ return lines.join("\n");
74
+ }
75
+ //# sourceMappingURL=test-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-map.js","sourceRoot":"","sources":["../../src/tools/test-map.ts"],"names":[],"mappings":"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"}
package/docs/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # Documentation
2
+
3
+ ## Current guides
4
+
5
+ | Document | Purpose |
6
+ | --- | --- |
7
+ | [README](../README.md) | Capabilities, quick start and evidence limits |
8
+ | [Install](../INSTALL.md) | Local launch and client configuration; native repair |
9
+ | [Configuration](configuration.md) | Current defaults and optional providers |
10
+ | [Agent guide](../agent-guide.md) | On-demand MCP workflow reference |
11
+ | [Project instructions](../INSTRUCTIONS.md) | Short policy to append to client rules |
12
+ | [Architecture](architecture.md) | Runtime, workers, storage and source boundaries |
13
+ | [Maintenance](maintenance.md) | Builds, validation, documentation checks and cleanup |
14
+ | [Status](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/STATUS.md) | Verified implementation state |
15
+ | [Roadmap](roadmaps/contextpro-roadmap.md) | Remaining work and acceptance gates |
16
+ | [Contributing](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/CONTRIBUTING.md) / [support](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/SUPPORT.md) | Community setup and reporting |
17
+ | [Security](../SECURITY.md) / [conduct](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/CODE_OF_CONDUCT.md) | Trust boundaries and community expectations |
18
+ | [Comparisons](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/docs/comparison.md) | Fair measurements and publication standards |
19
+ | [Releases](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/docs/releasing.md) / [launch checklist](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/docs/launch/checklist.md) | Versioning, publication and visibility gates |
20
+ | [Benchmarks](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/docs/benchmarks/README.md) | Measurements and their methodological limits |
21
+
22
+ ## Historical records
23
+
24
+ [CHANGELOG](../CHANGELOG.md) retains dated history. Raw benchmark data recorded on private repositories is not published.
25
+
26
+ `agent-instructions.md` is the tiny MCP manifest hint. `agent-guide.md` is served as `contextpro://instructions`.
@@ -0,0 +1,35 @@
1
+ # Runtime architecture
2
+
3
+ ContextPro runs an MCP stdio server from `src/index.ts`. Each request resolves a verified project/worktree root. `src/tools/register-tools.ts` owns schemas and handlers; `src/core/tool-profile.ts` controls the initial catalog and discovery enables experts for the session.
4
+
5
+ ## Retrieval path
6
+
7
+ 1. Direct `context` targets read bounded current source without search or embeddings. Discovery queries use the index and ranking paths.
8
+ 2. Graph-backed tools pass through freshness checks. The walker respects exclusions; fingerprints identify suspicious files, hashes verify content, and coordinated writers repair structural rows.
9
+ 3. Retrieval combines lexical evidence with optional existing vectors. Task packets and source slices select bounded evidence and expose omissions rather than pretending selection is exhaustive. Query-based source selection also combines named-identifier text hits with concrete path topics and existing directory prefixes. Bounded interior windows follow exact-name evidence in packing order; no inferred relationship becomes a compiler reference. Exact targets and semantic-only evaluations bypass these lexical hints.
10
+ 4. Artifacts and prior packet IDs support reuse. A client must still possess a baseline before requesting a delta.
11
+
12
+ ## Process boundaries
13
+
14
+ - The MCP parent handles transport, root routing, request bookkeeping and tool dispatch.
15
+ - `parser-process.ts` and `parser-worker.ts` isolate Tree-sitter WASM; regex fallback is lower precision and syntax validation can reject when parsing is unavailable.
16
+ - `typescript-reference-process.ts` and its worker isolate TypeScript language services. Versioned snapshots and project configurations support reuse. References distinguish direct calls, imports, definitions and other occurrences.
17
+ - Embedding and optional chat requests use independent provider configuration. Retrieval deadlines and lexical fallback limit some provider failures; they do not prove every possible native failure is recoverable.
18
+
19
+ ## Storage and freshness
20
+
21
+ Each project's `.contextpro/index.db` uses SQLite WAL and sqlite-vec. Schema v7 adds ctime to file fingerprints. Source rows, symbols, imports and calls are updated transactionally per file from the same source read. Index generations invalidate derived context. Background watching is backed by periodic reconciliation, which continues after watcher failure.
22
+
23
+ The directory also holds configuration, memory-related state, artifacts and restore points. It must not be treated as one disposable cache. Native libraries live separately in an ABI-specific user cache. The workspace registry records known projects for routing.
24
+
25
+ No single operation atomically snapshots every file of an arbitrarily changing worktree. Explicit scope, stale/incomplete warnings and post-edit compiler/tests are part of the evidence contract.
26
+
27
+ ## Evidence and edits
28
+
29
+ Compiler-resolved TS/JS references, imported SCIP evidence, AST-derived structure and textual/heuristic candidates are distinct. Reflection, unindexed/generated files, runtime injection and other repositories can be outside the returned scope. Imported SCIP revision validation remains planned.
30
+
31
+ Source mutations check expected revisions, reject disallowed paths/symlinks, serialize project writes and preserve restore points. Multi-file publication can partially succeed and reports recovery details. ContextPro's rename is textual; compiler-backed reference lookup does not turn it into a semantic rename engine.
32
+
33
+ ## Documentation surfaces
34
+
35
+ `agent-instructions.md` is deliberately tiny because clients can repeat it in tool context. `agent-guide.md` is the on-demand MCP resource. `INSTRUCTIONS.md` is the concise project policy. Raw benchmarks are outside the runtime's normal instruction path.
@@ -0,0 +1,178 @@
1
+ # Configuration reference
2
+
3
+ Defaults below describe this checkout's MCP launch path. Set environment variables in the client that launches the server, then restart it. `src/core/provider-config.ts`, `src/core/tool-profile.ts` and `src/index.ts` are the implementation sources; legacy aliases remain accepted where implemented, but new configurations should use `CONTEXTPRO_*`.
4
+
5
+ ## Profiles
6
+
7
+ `CONTEXTPRO_TOOL_PROFILE` defaults to `workflow` (14 initial tools). `lean` advertises `context`, `exact_references` and `discover_tools`; `core` includes common editing/graph operations; `full` advertises everything. Existing custom profiles survive `init`. Discovering or enabling tools does not execute them. Enabling returns schemas; hosts without catalog updates can use `discover_tools({root,call:{name,arguments}})` for tools marked `callable` (reads and indexing, never source edits). The target schema and normal request routing still apply. Use `full` for other experts on those hosts.
8
+
9
+ ## Providers
10
+
11
+ | Variable | Default | Purpose |
12
+ | --- | --- | --- |
13
+ | `CONTEXTPRO_PROVIDER` | `ollama` | Local Ollama or the OpenAI-compatible backend |
14
+ | `CONTEXTPRO_BASE_URL` | `https://api.openai.com/v1` | Compatible endpoint base; ensure it supports the operation requested |
15
+ | `CONTEXTPRO_API_KEY` | unset | Compatible endpoint credential; inject without committing |
16
+ | `CONTEXTPRO_EMBED_MODEL` | `nomic-embed-text:latest` locally; `text-embedding-3-small` for compatible backend | Embedding identity; reindex after changing it |
17
+ | `CONTEXTPRO_CHAT_PROVIDER` | embedding provider | Separate chat backend selection; key/base URL remain shared |
18
+ | `CONTEXTPRO_CHAT_MODEL` | provider fallback when chat is invoked | Optional explicit selection; fallback names are `gemma4:12b` and `gpt-4o-mini`, not a promise of endpoint availability |
19
+ | `CONTEXTPRO_CHAT_RERANK` | off | Opt in to reranking the top eight planning/connected candidates with current bounded source snippets; model call deadline 1.5 seconds, deterministic fallback |
20
+ | `CONTEXTPRO_FEATURE_SUMMARIES` | off | Allow explicit `feature_brief` preparation to generate citation-checked model interpretations; 30-second deadline. Ordinary context discovery only reuses valid cached briefs |
21
+ | `CONTEXTPRO_AUTO_HUBS` | off | Opt in to chat-assisted hub generation during reindex |
22
+ | `OLLAMA_HOST` | `http://127.0.0.1:11434` | Local Ollama endpoint |
23
+
24
+ Compatible-provider aliases select the same API implementation; an alias does not guarantee that a vendor supports embeddings or a particular model. Check your endpoint's capabilities. Explicit chat operations can use configured credentials and fallback models; an omitted chat-model variable is not a universal disable switch.
25
+
26
+ Hosted requests can contain source/context material. The coding agent's model usage and ContextPro's optional provider usage are independent. Normal direct source/structural reads do not require chat inference.
27
+
28
+ For provider-free discovery use `search(preset:"keyword_only")` or direct `context(targets:[...])`. Set `CONTEXTPRO_REINDEX_NO_EMBED=true` or pass `reindex(no_embed:true)` to skip corpus embedding generation; that setting alone does not prohibit query embeddings on a later hybrid search. Memory embedding/search operations have their own provider requirements.
29
+
30
+ ## Indexing and retrieval
31
+
32
+ | Variable | Launch default | Purpose |
33
+ | --- | --- | --- |
34
+ | `CONTEXTPRO_CONNECTED_CONTEXT` | off | Experimental shared `context`/`task_pack` retrieval: reciprocal-rank fusion, one-hop connected evidence, at most 32 candidate files. Explicit task-pack graph settings override its defaults |
35
+ | `CONTEXTPRO_EMBED_TRACKER` | `lazy` | Start tracking when needed; `eager` starts at boot; `off` disables the background tracker |
36
+ | `CONTEXTPRO_EMBED_TRACKER_DEBOUNCE_MS` | `700` | Debounce changes; tracker helper enforces a 500 ms minimum |
37
+ | `CONTEXTPRO_EMBED_TRACKER_MAX_FILES` | `8` | Per-tick changes, clamped to 5–10 |
38
+ | `CONTEXTPRO_RECONCILE_INTERVAL_MS` | `30000` | Background reconciliation interval, at least 5000 ms; idle scheduling may skip ticks while watching works |
39
+ | `CONTEXTPRO_RECONCILE_MAX_FILES` | `40` | Repair budget per sweep |
40
+ | `CONTEXTPRO_AUTO_REFRESH` | enabled | Pre-query structural freshness gate, including search/context discovery; false leaves warnings and skips automatic maintenance |
41
+ | `CONTEXTPRO_REFRESH` | metadata fast path | Set `hash` to hash every source during quick refresh |
42
+ | `CONTEXTPRO_QUICKREFRESH_MAX_FILES` | `30` | Quick-refresh threshold; the structural gate can fall back to a full structural refresh |
43
+ | `CONTEXTPRO_REINDEX_NO_EMBED` | off | Skip eager corpus embeddings |
44
+ | `CONTEXTPRO_QUERY_EMBED_TIMEOUT_MS` | `1500` | Query-embedding budget, clamped to 100–10000 ms |
45
+ | `CONTEXTPRO_EMBED_BATCH_SIZE` | `32` local / `8` compatible | Inputs per embedding request, clamped to 1–128 |
46
+ | `CONTEXTPRO_EMBED_CHUNK_CHARS` | `2000` | Embedding chunk size, clamped to 256–8000 characters |
47
+ | `CONTEXTPRO_MAX_FILE_SIZE` | `5242880` | Full-reindex source size cap in bytes |
48
+ | `CONTEXTPRO_MAX_EMBED_FILE_SIZE` | `51200` | File embedding size cap in bytes |
49
+
50
+ Normal refresh compares size, full mtime and ctime, then hashes suspicious files. Hashing and parsing share a verified read. Freshness warnings describe remaining drift or failure, not merely the number of files already repaired. Watcher failure keeps periodic reconciliation alive when the tracker is enabled.
51
+
52
+ Interactive retrieval reuses existing vectors rather than generating a corpus on demand. A failed query embedding can fall back to keyword ranking; explicit semantic-only requests still need semantic evidence.
53
+
54
+ Query-based `context` responses include a `source_context` ID. Pass it as
55
+ `previous_context_id` only while holding the complete prior packet. Compatible
56
+ requests return added, changed and removed source ranges. Different roots,
57
+ queries, settings or budgets, missing artifacts and incomplete deliveries recover
58
+ with a full response. Omit the ID after compaction. Exact `targets` remain
59
+ stateless, index-independent reads and reject `previous_context_id`.
60
+
61
+ The discoverable `feature_brief` expert accepts `query`, optional `refresh`, and
62
+ `max_tokens` (512–12000, default 2000; UTF-8 bytes/4). Its deterministic facts cite
63
+ source ranges. Optional model interpretations are labeled separately; citation
64
+ validation does not verify the claims themselves. Cached briefs validate source
65
+ hashes, dependency membership, generator/model identity and retrieval settings
66
+ (adaptive mode, reranking and embedding identity) before reuse. Neither
67
+ briefs nor deltas imply exhaustive repository coverage. Use `artifact_read` for
68
+ full stored packets. Both experts support compatibility dispatch through
69
+ `discover_tools`; the lean catalog remains three tools.
70
+
71
+ Local full-text search stores full source for indexed files, so text beyond the
72
+ embedding summary is searchable. This increases the regenerable database size;
73
+ embedding inputs and response budgets remain bounded separately. The extraction
74
+ stamp automatically rebuilds older summary-only indexes on the next structural
75
+ freshness check. Unicode query tokens and phrase matching use that local index.
76
+ Default natural-language `context` discovery considers twelve ranked files before
77
+ packing bounded source ranges; exact identifiers consider four. These candidate
78
+ counts are independent of `max_tokens` and do not imply complete scope coverage.
79
+
80
+ ## Runtime and reporting
81
+
82
+ | Variable | Default | Purpose |
83
+ | --- | --- | --- |
84
+ | `CONTEXTPRO_NATIVE_AUTO_REPAIR` | `true` | Isolated per-runtime binding repair; npm/network needed for a cache miss |
85
+ | `CONTEXTPRO_NATIVE_CACHE_DIR` | `~/.cache/contextpro/native` | Stable ABI/platform/architecture/libc/dependency cache |
86
+ | `CONTEXTPRO_EFFICIENCY_FOOTER` | `false` | Legacy per-call estimated footer; prefer reporting only when requested |
87
+ | `CONTEXTPRO_PROJECT_ID` | derived | Project identity override |
88
+ | `CONTEXTPRO_CLIENT_ID` | unset | Optional client grouping |
89
+ | `CONTEXTPRO_SESSION_ID` | unset | Session metadata for scoped memory |
90
+ | `CONTEXTPRO_SESSION_SOURCE` | `mcp` | Session source label |
91
+ | `CONTEXTPRO_INSTRUCTIONS_REMOTE` | `false` | Optional trusted remote instructions; bundled guide is the normal path |
92
+ | `CONTEXTPRO_INSTRUCTIONS_REMOTE_URL` | `https://contextpro.dev/api/instructions` | Remote source when enabled |
93
+ | `CONTEXTPRO_ALLOW_UNSAFE_ROOT` | `false` | Override root/home-level root checks; ordinary project roots need no override |
94
+ | `CONTEXTPRO_REFERENCE_HEAP_MB` | `1024` | Reference-worker JavaScript heap ceiling (not preallocated); integer 256–4096, invalid values use 1024; restart the host after changing |
95
+
96
+ The TypeScript reference worker retains at most one project and releases completed
97
+ compiler graphs between configurations in a monorepo. Single-project queries
98
+ reuse their compiler. Other limits are 60-second idle disposal, a 30-second active
99
+ request deadline and 20,000 input files. Heap exhaustion returns a specific error
100
+ with the configured limit. Parser requests have a 15-second deadline and separate
101
+ queue/source limits. These are not whole-machine resource guarantees.
102
+
103
+ Query-based `context` in both default and connected modes adds at most eight
104
+ source candidates corroborated by a named identifier and path topics, or an
105
+ existing relative directory prefix plus a topic. Each of up to eight identifier
106
+ hints examines at most 64 local text hits. The shared source collector selects
107
+ bounded interior windows; connected packets remain capped at 32 candidate files.
108
+ These are lexical hints, not binding-resolved references or hard scope filters.
109
+ No additional chat/embedding calls are introduced. Exact target reads remain
110
+ stateless, and semantic-only evaluation bypasses these lexical candidates.
111
+
112
+ Lexical discovery retains quoted phrases and compound keys, and treats tests and
113
+ translation catalogs as secondary evidence unless requested. SQL files participate
114
+ in source-text search and freshness checks; SQL binding references and structural
115
+ symbol extraction are not provided by this text fallback. Source budgets still
116
+ allow omissions, especially for broad questions spanning many modules.
117
+
118
+ Discovery includes source under `.github/` and `.maestro/`, including nested app
119
+ directories. Project and nested `.gitignore`/`.contextproignore` rules still
120
+ apply. Other hidden entries, dependency/build directories and symlinks remain
121
+ excluded from discovery; use exact targets for a known source outside that scope.
122
+
123
+ See [installation](../INSTALL.md) for launch examples and [maintenance](maintenance.md) for test/runtime and disk-cleanup guidance.
124
+
125
+ ## Optional benchmark tracing
126
+
127
+ `CONTEXTPRO_PROVIDER_TRACE_PATH` optionally records local JSONL events containing
128
+ provider/model identity, call duration, status and provider-reported input/output
129
+ counts. It records no prompts, source or credentials. Missing counts stay null;
130
+ local embeddings commonly report input counts without output counts. These
131
+ events are separate from the coding agent's usage and are not billing estimates.
132
+
133
+ Set `CONTEXTPRO_TOOL_TRACE_PATH` to an absolute local JSONL path before starting the server. Tracing is off by default and adds no MCP response text. Each event records tool arguments, status, a session/request ID, total server duration, preparation (root verification/freshness/waits), handler execution and postprocessing. Spans can overlap; their sum is not elapsed agent time.
134
+
135
+ The trace caps each argument payload at 8 KiB and the file at 64 MiB, redacts common credential/content keys and requires a private regular destination file (created with mode 0600). Query strings and paths can still contain private information; keep raw traces local. Write failures are best-effort and produce a stderr warning. A missing or partial trace is unavailable evidence, not zero execution time. See the [benchmark procedure](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/docs/benchmarks/methodology.md).
136
+ ## Experimental development context
137
+
138
+ `contextpro daemon start|status|stop` manages an optional private local compute service. Set `CONTEXTPRO_DAEMON=true` in each MCP process to share freshness/indexing, TypeScript compiler work and configured Python analysis. Build, Node ABI and provider/runtime configuration must match. Incompatibility, crashes and unavailable services fall back to local computation. The service expires after five idle minutes; Windows currently uses local compute because a private Unix socket is required. `CONTEXTPRO_RUNTIME_DIR` overrides the default `~/.contextpro/runtime` directory for isolated installations. Stop a running service using its original build/configuration before upgrading it.
139
+
140
+ `context` accepts a query-only `intent` hint: `auto`, `lookup`, `change`, `debug`, `review`, or `overview`. Supplying it enables adaptive retrieval for that call. `CONTEXTPRO_ADAPTIVE_CONTEXT=true` enables inferred intent for query calls. Omit both to retain the existing selector. Exact targets remain stateless and reject an intent hint.
141
+
142
+ Change/debug/review requests reuse the connected evidence retriever for implementations, callers, dependencies and tests. Configuration and contract candidates are labelled by path; these are structural/textual hints, not compiler proof. Missing evidence and output omissions do not establish absence. Response budgets and source delta IDs retain their existing contracts.
143
+
144
+ These intents also inspect at most twelve matching task-risk candidates lexically and return up to two current records within the existing output budget. Notes cite their memory IDs and remain textual claims. Stale, unverified and superseded risk notes are excluded; unavailable and omitted risk evidence are explicit. Changed notes invalidate context reuse. Ordinary lookup requests do not perform this memory search.
145
+
146
+ ## Verifiable memory and host checks
147
+
148
+ `memory_record_task` accepts `source_evidence: [{file, hash?, start?, end?}]`, `supersedes: [memory_id]` and `validation_refs: [artifact_id]`. Source references capture whole-file SHA-256 hashes, the canonical worktree root and Git revision, plus configuration and dependency-manifest evidence. Existing `files` also bind source evidence; deleted legacy file references remain recordable as explicitly unverified. Explicit structured references reject unavailable files and invalid line ranges. Each task record is immutable history: recording the same task again creates another record. Explicit supersession preserves the old record and its evidence.
149
+
150
+ Retrieval labels records `current`, `stale`, `unverified` or `superseded`. Stale and superseded conclusions do not enter automatic task recommendations. Manual memory search/listing retains them, with lexical fallback when embeddings are unavailable. Legacy records migrate logically as `unverified`; no destructive migration is required. A returned `handoff` artifact contains completed work, remaining risks, assumptions, source references and validation state. Read it through `artifact_read`; current source/supersession and validation applicability are rechecked alongside the historical payload.
151
+
152
+ Referenced validation receipts also affect task-memory applicability: a stale receipt makes its conclusion stale, and an unavailable receipt makes it unverified. A current source hash alone does not renew an old validation conclusion.
153
+
154
+ Call `validate_scope` after edits and before running checks. Its snapshot covers ignore-aware workspace files, configuration and manifests; ignored dependencies, build outputs and unsaved buffers are outside that snapshot. Run checks in the coding host, then call `validation_record({root, snapshot_id, command, exit_code, runtime, evidence?})`. Results are explicitly host-reported. Source/configuration/membership/revision changes invalidate applicability; recommended commands never count as executed checks. Snapshots cap at 20,000 files and fail rather than silently truncate evidence.
155
+
156
+ Evidence snapshots include authored hidden files and directories, including `.eslintrc.json` and `.babelrc`, while honoring nested ignore rules, dependency/cache exclusions and symlink protections. Their contents are hashed, not copied into the evidence record. Configuration-bound memory and rename previews use the same policy. Older snapshots that omitted these inputs become stale when compared with the expanded inventory; take a new snapshot and rerun the checks.
157
+
158
+ Rollback: previous builds ignore the additive metadata/artifacts. Retain records for inspection; do not infer that an older build validates them. Writes require an enabled specialist tool or the full profile; the discovery dispatcher does not execute memory/validation writes.
159
+
160
+ ## Local teamwork
161
+
162
+ Discover `team_status` and `team_task` when coordination is needed. The three-tool lean catalog is unchanged. `team_status` shows dependencies, ready task IDs, ownership, expiry and recent history. `team_task` supports `create`, `update`, `claim`, `renew`, `release`, `block`, `complete` and `handoff`. Claims require an explicit `owner`; individual-file leases expire after five minutes and must be renewed while working. Dependency cycles and incomplete prerequisites reject claims. A same-worktree file conflict fails atomically; overlap in another worktree returns a warning. Leases are advisory and do not prevent external editors from writing.
163
+
164
+ The SQLite ledger lives under `~/.contextpro/teams`, keyed by canonical Git common directory (canonical root outside Git). `CONTEXTPRO_TEAM_DIR` permits isolated test installations. Expired ownership is reclaimable, with tasks, events and handoff links retained. `handoff_id` links an existing handoff artifact from that worktree. ContextPro never spawns agents or sends messages. To roll back, stop invoking the tools and retain the independent ledger; existing source indexes are unchanged.
165
+
166
+ Each event retains its task/lease/handoff snapshot in `details`, so a later handoff does not erase earlier references. Inspect a task with `team_status({task_id})`; paginate with `before_event_id: olderEventsBefore` and optional `event_limit` (1–50, default 20). Existing ledgers receive an additive `details` column; old events have empty details and remain readable by previous builds.
167
+
168
+ ## Compiler diagnostics and rename
169
+
170
+ Discover `compiler_diagnostics({root,files})` for TypeScript/JavaScript or configured Python diagnostics. TypeScript reuses the bounded compiler worker. For Python, set `CONTEXTPRO_PYRIGHT_COMMAND` to an installed `pyright-langserver` executable; ContextPro invokes it with `--stdio`, without shell execution or runtime downloads. Integration tests pin MIT-licensed Pyright `1.1.414`. `CONTEXTPRO_PYTHON_PATH` optionally specifies an interpreter; normal `pyrightconfig.json` / `pyproject.toml` settings, including virtual environments, apply. Python sessions cap at two canonical roots, serialize a bounded queue, use a 1 GiB JavaScript heap limit and expire after 60 idle seconds. Unconfigured Python exact references retain explicitly labelled heuristic/SCIP evidence; configured LSP errors do not silently turn into heuristic success.
171
+
172
+ For compiler-backed edits, request `rename_preview({root,file,line,column,new_name,max_tokens?})` using one-based positions. Inspect its immutable artifact and then invoke `rename_apply({root,preview_id})`. TS/JS uses compiler rename locations (including alias prefix/suffix edits); Python uses Pyright's prepare/rename operations. Unsupported operations reject. Apply verifies workspace membership, revision and every affected file hash, creates a restore point, and publishes only the previewed edits. Limits are 100 files, 5,000 edits and an 8 MiB artifact. A concurrent outside writer can still cause partial publication; the error identifies completed files and the restore point. Run diagnostics/tests after application: a compiler-generated rename is not proof of behavioral correctness.
173
+
174
+ The older `rename_symbol` remains an explicitly textual compatibility tool. It is never a silent fallback for `rename_apply`. Rollback: unset Python configuration and stop using the added specialist tools; source restoration uses the returned restore point. Stop the shared service before rebuilding, then restart it with matching build, parser/compiler dependencies, Node ABI and environment. Shared compute remains opt-in.
175
+
176
+ Python cache identity includes the configured executable, npm Pyright package/server content and version, interpreter setting, relevant configuration and dependency manifests. Installation or manifest changes restart the session. Shared-service compatibility also includes the configured Python installation identity.
177
+
178
+ Each Python operation checks the hashes and membership of ignore-aware workspace `.py` and `.pyi` files, not only the requested files. Changes notify Pyright and advance requested document versions so diagnostics must reflect refreshed imports; deleted imports also lose any old open-document overlay. The freshness inventory caps at 20,000 files, requested open files at 1,000, and existing operation deadlines still apply. Ignored dependency installations and external source trees remain outside this inventory.
@@ -0,0 +1,77 @@
1
+ # Maintenance and cleanup
2
+
3
+ ## Build and validate
4
+
5
+ The package uses an npm lockfile. Use Node to launch MCP and the same executable across clients where possible. The full test suite also needs Git and ripgrep (`rg`) for its offline native-search baseline; see [contributor setup](https://github.com/AlaeddineMessadi/contextpro-mcp/blob/main/CONTRIBUTING.md#development-setup).
6
+
7
+ ```sh
8
+ npm ci
9
+ npm run build
10
+ npm test
11
+ npm run docs:check
12
+ npm pack --dry-run
13
+ ```
14
+
15
+ If tests use temporary HOME directories and Node differs from the shared native installation, pin the existing isolated cache explicitly:
16
+
17
+ ```sh
18
+ CONTEXTPRO_NATIVE_CACHE_DIR="$HOME/.cache/contextpro/native" npm test
19
+ ```
20
+
21
+ Repair a missing compatible cache with the failing runtime's `doctor --fix`; do not rebuild shared native modules for one client. `test:demo` and `test:all` include optional demo/provider scenarios; inspect their requirements before running them. The maintained `test/main/` suite replaces the removed one-off `scripts/autonomous-verify.mjs` audit probe.
22
+
23
+ Direct imports of built tool modules inherit the shell environment, not the MCP client's configuration. When validating a real project, use the client's provider/model settings as well as its Node runtime: a different model identity can clear regenerable vectors. Prefer temporary fixtures for isolated probes.
24
+
25
+ ## Recover semantic search
26
+
27
+ A fresh structural index means files, symbols and imports are current. Automatic
28
+ query refreshes intentionally skip corpus embeddings. They do not populate a
29
+ missing semantic index. A semantic rebuild under a different provider/model
30
+ invalidates incompatible vectors, including when the models share a dimension.
31
+ Structural-only refreshes preserve the existing vector-space identity; workers
32
+ with a different model use lexical evidence instead of comparing incompatible vectors.
33
+
34
+ Use the same intended embedding provider/model in each client. Inspect
35
+ `status({root:"/absolute/project/root",format:"json"})`: check `embeddings`,
36
+ including the stored model, stale reason, counts, skipped flag and last error.
37
+ With that provider available, run
38
+ `reindex({root:"/absolute/project/root",no_embed:false,auto_hubs:false})`.
39
+ Also unset `CONTEXTPRO_REINDEX_NO_EMBED`, which overrides the argument.
40
+ In the lean catalog, discover the current schema with
41
+ `discover_tools({root:"/absolute/project/root",enable:["status","reindex"]})`;
42
+ if the client does not refresh its catalog, execute through
43
+ `discover_tools({root:"/absolute/project/root",call:{name:"reindex",arguments:{no_embed:false,auto_hubs:false}}})`.
44
+
45
+ Rebuild each affected project/worktree once. Large local corpora can take several
46
+ minutes. If a client times out, check status for an ongoing rebuild before starting
47
+ another one. After completion, verify nonzero file/identifier vectors, no stale
48
+ flag or embedding error, and replay a representative query. A weak semantic match
49
+ with healthy vectors alone is not a reason to rebuild. Existing MCP processes need
50
+ reconnecting to load new server code or changed client model settings.
51
+
52
+ ## Documentation source of truth
53
+
54
+ - `README.md`: concise entry point; link to detailed guides instead of repeating every environment setting.
55
+ - `INSTALL.md` and `docs/configuration.md`: launch/setup and current defaults.
56
+ - `agent-instructions.md`: tiny manifest hint; keep it under the existing regression-test limit.
57
+ - `agent-guide.md`: detailed MCP instructions resource.
58
+ - `INSTRUCTIONS.md`: project policy.
59
+ - `STATUS.md` / roadmap: current state and pending work. Historical results belong in dated reports.
60
+
61
+ `npm run docs:check` verifies local links in current documentation.
62
+
63
+ Keep `AGENTS.md` and `CLAUDE.md` aligned with the managed template in `src/core/agent-setup.ts` if changing the installer policy. Never expand the manifest into the full guide merely for convenience.
64
+
65
+ ## What can be removed
66
+
67
+ | Path/data | Cleanup rule |
68
+ | --- | --- |
69
+ | `.DS_Store`, temporary logs, `*.tsbuildinfo` | Regenerable metadata; remove when not needed for diagnosis |
70
+ | `build/` | Rebuildable, but live MCP workers load files here; stop clients before deleting |
71
+ | `graft/` | Regenerable structural index; keep it while active agents use it |
72
+ | `node_modules/` | Reinstallable, but active clients/apps depend on it; do not purge |
73
+ | `.contextpro/` | **Mixed durable state and caches. Do not delete wholesale.** Inspect artifacts, memory, configuration and restore points separately |
74
+ | `~/.cache/contextpro/native` | Shared per-runtime native bindings; removing live runtimes' entries can break clients or force repairs |
75
+ | Dated benchmark JSON | Retain evidence; old paths in raw records are historical observations |
76
+
77
+ Use the `gc` tool's own current schema and inspect its result when reclaiming supported artifacts/restore points. Do not infer that every old file is safe to delete.
package/package.json CHANGED
@@ -1,6 +1,82 @@
1
1
  {
2
2
  "name": "contextpro-mcp",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.4.0",
4
+ "description": "Local-first MCP code intelligence: bounded source context, exact references, and evidence-aware coding workflows.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/AlaeddineMessadi/contextpro-mcp.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/AlaeddineMessadi/contextpro-mcp/issues"
13
+ },
14
+ "homepage": "https://github.com/AlaeddineMessadi/contextpro-mcp#readme",
15
+ "keywords": [
16
+ "mcp",
17
+ "model-context-protocol",
18
+ "code-intelligence",
19
+ "coding-agent",
20
+ "semantic-search",
21
+ "scip",
22
+ "lsp",
23
+ "rag"
24
+ ],
25
+ "engines": {
26
+ "node": ">=20 <27"
27
+ },
28
+ "files": [
29
+ "build",
30
+ "README.md",
31
+ "INSTALL.md",
32
+ "CHANGELOG.md",
33
+ "LICENSE",
34
+ "NOTICE",
35
+ "SECURITY.md",
36
+ "INSTRUCTIONS.md",
37
+ "agent-instructions.md",
38
+ "agent-guide.md",
39
+ "docs/configuration.md",
40
+ "docs/architecture.md",
41
+ "docs/maintenance.md"
42
+ ],
43
+ "bin": {
44
+ "contextpro-mcp": "./build/index.js",
45
+ "contextpro": "./build/index.js"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc",
49
+ "dev": "tsc --watch",
50
+ "start": "node build/index.js",
51
+ "prepack": "npm run build",
52
+ "pack:dry": "npm pack --dry-run",
53
+ "pretest": "npm run build",
54
+ "test": "node --test test/main/*.test.mjs",
55
+ "test:demo": "node --test test/demo/*.demo.mjs",
56
+ "test:all": "node --test test/main/*.test.mjs test/demo/*.demo.mjs",
57
+ "typecheck": "tsc --noEmit",
58
+ "bench:retrieval": "npm run build && node scripts/benchmark-retrieval.mjs",
59
+ "docs:check": "node scripts/check-docs.mjs",
60
+ "release:check": "node scripts/check-release.mjs",
61
+ "pack:check": "node scripts/check-package.mjs"
62
+ },
63
+ "dependencies": {
64
+ "@modelcontextprotocol/sdk": "^1.32.2",
65
+ "better-sqlite3": "^12.10.0",
66
+ "ignore": "^7.0.14",
67
+ "ml-matrix": "^6.15.1",
68
+ "ollama": "^0.6.4",
69
+ "p-limit": "^7.3.3",
70
+ "sqlite-vec": "^0.1.9",
71
+ "tree-sitter-wasms": "^0.1.13",
72
+ "typescript": "^5.9.3",
73
+ "vscode-jsonrpc": "10.0.0",
74
+ "web-tree-sitter": "^0.20.8",
75
+ "zod": "^4.6.7"
76
+ },
77
+ "devDependencies": {
78
+ "@types/better-sqlite3": "^7.6.13",
79
+ "@types/node": "^26.6.5",
80
+ "pyright": "1.1.414"
81
+ }
82
+ }