mdcontext 0.0.1 → 0.2.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 (337) hide show
  1. package/.changeset/README.md +28 -0
  2. package/.changeset/config.json +11 -0
  3. package/.claude/settings.local.json +25 -0
  4. package/.github/workflows/ci.yml +83 -0
  5. package/.github/workflows/claude-code-review.yml +44 -0
  6. package/.github/workflows/claude.yml +85 -0
  7. package/.github/workflows/release.yml +113 -0
  8. package/.tldrignore +112 -0
  9. package/BACKLOG.md +338 -0
  10. package/CONTRIBUTING.md +186 -0
  11. package/NOTES/NOTES +44 -0
  12. package/README.md +434 -11
  13. package/biome.json +36 -0
  14. package/cspell.config.yaml +14 -0
  15. package/dist/chunk-23UPXDNL.js +3044 -0
  16. package/dist/chunk-2W7MO2DL.js +1366 -0
  17. package/dist/chunk-3NUAZGMA.js +1689 -0
  18. package/dist/chunk-7TOWB2XB.js +366 -0
  19. package/dist/chunk-7XOTOADQ.js +3065 -0
  20. package/dist/chunk-AH2PDM2K.js +3042 -0
  21. package/dist/chunk-BNXWSZ63.js +3742 -0
  22. package/dist/chunk-BTL5DJVU.js +3222 -0
  23. package/dist/chunk-HDHYG7E4.js +104 -0
  24. package/dist/chunk-HLR4KZBP.js +3234 -0
  25. package/dist/chunk-IP3FRFEB.js +1045 -0
  26. package/dist/chunk-KHU56VDO.js +3042 -0
  27. package/dist/chunk-KRYIFLQR.js +88 -0
  28. package/dist/chunk-LBSDNLEM.js +287 -0
  29. package/dist/chunk-MNTQ7HCP.js +2643 -0
  30. package/dist/chunk-MUJELQQ6.js +1387 -0
  31. package/dist/chunk-MXJGMSLV.js +2199 -0
  32. package/dist/chunk-N6QJGC3Z.js +2636 -0
  33. package/dist/chunk-OBELGBPM.js +1713 -0
  34. package/dist/chunk-OT7R5XTA.js +3192 -0
  35. package/dist/chunk-P7X4RA2T.js +106 -0
  36. package/dist/chunk-PIDUQNC2.js +3185 -0
  37. package/dist/chunk-POGCDIH4.js +3187 -0
  38. package/dist/chunk-PSIEOQGZ.js +3043 -0
  39. package/dist/chunk-PVRT3IHA.js +3238 -0
  40. package/dist/chunk-QNN4TT23.js +1430 -0
  41. package/dist/chunk-RE3R45RJ.js +3042 -0
  42. package/dist/chunk-S7E6TFX6.js +803 -0
  43. package/dist/chunk-SG6GLU4U.js +1378 -0
  44. package/dist/chunk-SJCDV2ST.js +274 -0
  45. package/dist/chunk-SYE5XLF3.js +104 -0
  46. package/dist/chunk-T5VLYBZD.js +103 -0
  47. package/dist/chunk-TOQB7VWU.js +3238 -0
  48. package/dist/chunk-VFNMZ4ZQ.js +3228 -0
  49. package/dist/chunk-VVTGZNBT.js +1629 -0
  50. package/dist/chunk-W7Q4RFEV.js +104 -0
  51. package/dist/chunk-XTYYVRLO.js +3190 -0
  52. package/dist/chunk-Y6MDYVJD.js +3063 -0
  53. package/dist/cli/main.d.ts +1 -0
  54. package/dist/cli/main.js +5458 -0
  55. package/dist/index.d.ts +653 -0
  56. package/dist/index.js +79 -0
  57. package/dist/mcp/server.d.ts +1 -0
  58. package/dist/mcp/server.js +472 -0
  59. package/dist/schema-BAWSG7KY.js +22 -0
  60. package/dist/schema-E3QUPL26.js +20 -0
  61. package/dist/schema-EHL7WUT6.js +20 -0
  62. package/docs/019-USAGE.md +625 -0
  63. package/docs/020-current-implementation.md +364 -0
  64. package/docs/021-DOGFOODING-FINDINGS.md +175 -0
  65. package/docs/BACKLOG.md +80 -0
  66. package/docs/CONFIG.md +1123 -0
  67. package/docs/DESIGN.md +439 -0
  68. package/docs/ERRORS.md +383 -0
  69. package/docs/PROJECT.md +88 -0
  70. package/docs/ROADMAP.md +407 -0
  71. package/docs/summarization.md +320 -0
  72. package/docs/test-links.md +9 -0
  73. package/justfile +40 -0
  74. package/package.json +74 -9
  75. package/pnpm-workspace.yaml +5 -0
  76. package/research/INDEX.md +315 -0
  77. package/research/code-review/README.md +90 -0
  78. package/research/code-review/cli-error-handling-review.md +979 -0
  79. package/research/code-review/code-review-validation-report.md +464 -0
  80. package/research/code-review/main-ts-review.md +1128 -0
  81. package/research/config-analysis/01-current-implementation.md +470 -0
  82. package/research/config-analysis/02-strategy-recommendation.md +428 -0
  83. package/research/config-analysis/03-task-candidates.md +715 -0
  84. package/research/config-analysis/033-research-configuration-management.md +828 -0
  85. package/research/config-analysis/034-research-effect-cli-config.md +1504 -0
  86. package/research/config-analysis/04-consolidated-task-candidates.md +277 -0
  87. package/research/config-docs/SUMMARY.md +357 -0
  88. package/research/config-docs/TEST-RESULTS.md +776 -0
  89. package/research/config-docs/TODO.md +542 -0
  90. package/research/config-docs/analysis.md +744 -0
  91. package/research/config-docs/fix-validation.md +502 -0
  92. package/research/config-docs/help-audit.md +264 -0
  93. package/research/config-docs/help-system-analysis.md +890 -0
  94. package/research/dogfood/consolidated-tool-evaluation.md +373 -0
  95. package/research/dogfood/strategy-a/a-synthesis.md +184 -0
  96. package/research/dogfood/strategy-a/a1-docs.md +226 -0
  97. package/research/dogfood/strategy-a/a2-amorphic.md +156 -0
  98. package/research/dogfood/strategy-a/a3-llm.md +164 -0
  99. package/research/dogfood/strategy-b/b-synthesis.md +228 -0
  100. package/research/dogfood/strategy-b/b1-architecture.md +207 -0
  101. package/research/dogfood/strategy-b/b2-gaps.md +258 -0
  102. package/research/dogfood/strategy-b/b3-workflows.md +250 -0
  103. package/research/dogfood/strategy-c/c-synthesis.md +451 -0
  104. package/research/dogfood/strategy-c/c1-explorer.md +192 -0
  105. package/research/dogfood/strategy-c/c2-diver-memory.md +145 -0
  106. package/research/dogfood/strategy-c/c3-diver-control.md +148 -0
  107. package/research/dogfood/strategy-c/c4-diver-failure.md +151 -0
  108. package/research/dogfood/strategy-c/c5-diver-execution.md +221 -0
  109. package/research/dogfood/strategy-c/c6-diver-org.md +221 -0
  110. package/research/effect-cli-error-handling.md +845 -0
  111. package/research/effect-errors-as-values.md +943 -0
  112. package/research/errors-task-analysis/00-consolidated-tasks.md +207 -0
  113. package/research/errors-task-analysis/cli-commands-analysis.md +909 -0
  114. package/research/errors-task-analysis/embeddings-analysis.md +709 -0
  115. package/research/errors-task-analysis/index-search-analysis.md +812 -0
  116. package/research/frontmatter/COMMENTS-ARE-SKIPPED.md +149 -0
  117. package/research/frontmatter/LLM-CODE-NAVIGATION.md +276 -0
  118. package/research/issue-review.md +603 -0
  119. package/research/llm-summarization/agent-cli-tools-2026.md +1082 -0
  120. package/research/llm-summarization/alternative-providers-2026.md +1428 -0
  121. package/research/llm-summarization/anthropic-2026.md +367 -0
  122. package/research/llm-summarization/claude-cli-integration.md +1706 -0
  123. package/research/llm-summarization/cli-integration-patterns.md +3155 -0
  124. package/research/llm-summarization/openai-2026.md +473 -0
  125. package/research/llm-summarization/openai-compatible-providers-2026.md +1022 -0
  126. package/research/llm-summarization/opencode-cli-integration.md +1552 -0
  127. package/research/llm-summarization/prompt-engineering-2026.md +1426 -0
  128. package/research/llm-summarization/prototype-results.md +56 -0
  129. package/research/llm-summarization/provider-switching-patterns-2026.md +2153 -0
  130. package/research/llm-summarization/typescript-llm-libraries-2026.md +2436 -0
  131. package/research/mdcontext-error-analysis.md +521 -0
  132. package/research/mdcontext-pudding/00-EXECUTIVE-SUMMARY.md +282 -0
  133. package/research/mdcontext-pudding/01-index-embed.md +956 -0
  134. package/research/mdcontext-pudding/02-search-COMMANDS.md +142 -0
  135. package/research/mdcontext-pudding/02-search-SUMMARY.md +146 -0
  136. package/research/mdcontext-pudding/02-search.md +970 -0
  137. package/research/mdcontext-pudding/03-context.md +779 -0
  138. package/research/mdcontext-pudding/04-navigation-and-analytics.md +803 -0
  139. package/research/mdcontext-pudding/04-tree.md +704 -0
  140. package/research/mdcontext-pudding/05-config.md +1038 -0
  141. package/research/mdcontext-pudding/06-links-summary.txt +87 -0
  142. package/research/mdcontext-pudding/06-links.md +679 -0
  143. package/research/mdcontext-pudding/07-stats.md +693 -0
  144. package/research/mdcontext-pudding/BUG-FIX-PLAN.md +388 -0
  145. package/research/mdcontext-pudding/P0-BUG-VALIDATION.md +167 -0
  146. package/research/mdcontext-pudding/README.md +168 -0
  147. package/research/mdcontext-pudding/TESTING-SUMMARY.md +128 -0
  148. package/research/npm_publish/011-npm-workflow-research-agent2.md +792 -0
  149. package/research/npm_publish/012-npm-workflow-research-agent1.md +530 -0
  150. package/research/npm_publish/013-npm-workflow-research-agent3.md +722 -0
  151. package/research/npm_publish/014-npm-workflow-synthesis.md +556 -0
  152. package/research/npm_publish/031-npm-workflow-task-analysis.md +134 -0
  153. package/research/research-quality-review.md +834 -0
  154. package/research/semantic-search/002-research-embedding-models.md +490 -0
  155. package/research/semantic-search/003-research-rag-alternatives.md +523 -0
  156. package/research/semantic-search/004-research-vector-search.md +841 -0
  157. package/research/semantic-search/032-research-semantic-search.md +427 -0
  158. package/research/semantic-search/embedding-text-analysis.md +156 -0
  159. package/research/semantic-search/multi-word-failure-reproduction.md +171 -0
  160. package/research/semantic-search/query-processing-analysis.md +207 -0
  161. package/research/semantic-search/root-cause-and-solution.md +114 -0
  162. package/research/semantic-search/threshold-validation-report.md +69 -0
  163. package/research/semantic-search/vector-search-analysis.md +63 -0
  164. package/research/task-management-2026/00-synthesis-recommendations.md +295 -0
  165. package/research/task-management-2026/01-ai-workflow-tools.md +416 -0
  166. package/research/task-management-2026/02-agent-framework-patterns.md +476 -0
  167. package/research/task-management-2026/03-lightweight-file-based.md +567 -0
  168. package/research/task-management-2026/04-established-tools-ai-features.md +541 -0
  169. package/research/task-management-2026/linear/01-core-features-workflow.md +771 -0
  170. package/research/task-management-2026/linear/02-api-integrations.md +930 -0
  171. package/research/task-management-2026/linear/03-ai-features.md +368 -0
  172. package/research/task-management-2026/linear/04-pricing-setup.md +205 -0
  173. package/research/task-management-2026/linear/05-usage-patterns-best-practices.md +605 -0
  174. package/research/test-path-issues.md +276 -0
  175. package/review/ALP-76/1-error-type-design.md +962 -0
  176. package/review/ALP-76/2-error-handling-patterns.md +906 -0
  177. package/review/ALP-76/3-error-presentation.md +624 -0
  178. package/review/ALP-76/4-test-coverage.md +625 -0
  179. package/review/ALP-76/5-migration-completeness.md +440 -0
  180. package/review/ALP-76/6-effect-best-practices.md +755 -0
  181. package/scripts/apply-branch-protection.sh +47 -0
  182. package/scripts/branch-protection-templates.json +79 -0
  183. package/scripts/prototype-summarization.ts +346 -0
  184. package/scripts/rebuild-hnswlib.js +58 -0
  185. package/scripts/setup-branch-protection.sh +64 -0
  186. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/active-provider.json +7 -0
  187. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.json +541 -0
  188. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.meta.json +5 -0
  189. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/config.json +8 -0
  190. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
  191. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
  192. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/documents.json +60 -0
  193. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/links.json +13 -0
  194. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/sections.json +1197 -0
  195. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/configuration-management.md +99 -0
  196. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/distributed-systems.md +92 -0
  197. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/error-handling.md +78 -0
  198. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/failure-automation.md +55 -0
  199. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/job-context.md +69 -0
  200. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/process-orchestration.md +99 -0
  201. package/src/cli/argv-preprocessor.test.ts +210 -0
  202. package/src/cli/argv-preprocessor.ts +202 -0
  203. package/src/cli/cli.test.ts +627 -0
  204. package/src/cli/commands/backlinks.ts +54 -0
  205. package/src/cli/commands/config-cmd.ts +642 -0
  206. package/src/cli/commands/context.ts +285 -0
  207. package/src/cli/commands/duplicates.ts +122 -0
  208. package/src/cli/commands/embeddings.ts +529 -0
  209. package/src/cli/commands/index-cmd.ts +480 -0
  210. package/src/cli/commands/index.ts +16 -0
  211. package/src/cli/commands/links.ts +52 -0
  212. package/src/cli/commands/search.ts +1281 -0
  213. package/src/cli/commands/stats.ts +149 -0
  214. package/src/cli/commands/tree.ts +128 -0
  215. package/src/cli/config-layer.ts +176 -0
  216. package/src/cli/error-handler.test.ts +235 -0
  217. package/src/cli/error-handler.ts +655 -0
  218. package/src/cli/flag-schemas.ts +341 -0
  219. package/src/cli/help.ts +588 -0
  220. package/src/cli/index.ts +9 -0
  221. package/src/cli/main.ts +435 -0
  222. package/src/cli/options.ts +41 -0
  223. package/src/cli/shared-error-handling.ts +199 -0
  224. package/src/cli/typo-suggester.test.ts +105 -0
  225. package/src/cli/typo-suggester.ts +130 -0
  226. package/src/cli/utils.ts +259 -0
  227. package/src/config/file-provider.test.ts +320 -0
  228. package/src/config/file-provider.ts +273 -0
  229. package/src/config/index.ts +72 -0
  230. package/src/config/integration.test.ts +667 -0
  231. package/src/config/precedence.test.ts +277 -0
  232. package/src/config/precedence.ts +451 -0
  233. package/src/config/schema.test.ts +414 -0
  234. package/src/config/schema.ts +603 -0
  235. package/src/config/service.test.ts +320 -0
  236. package/src/config/service.ts +243 -0
  237. package/src/config/testing.test.ts +264 -0
  238. package/src/config/testing.ts +110 -0
  239. package/src/core/index.ts +1 -0
  240. package/src/core/types.ts +113 -0
  241. package/src/duplicates/detector.test.ts +183 -0
  242. package/src/duplicates/detector.ts +414 -0
  243. package/src/duplicates/index.ts +18 -0
  244. package/src/embeddings/embedding-namespace.test.ts +300 -0
  245. package/src/embeddings/embedding-namespace.ts +947 -0
  246. package/src/embeddings/heading-boost.test.ts +222 -0
  247. package/src/embeddings/hnsw-build-options.test.ts +198 -0
  248. package/src/embeddings/hyde.test.ts +272 -0
  249. package/src/embeddings/hyde.ts +264 -0
  250. package/src/embeddings/index.ts +10 -0
  251. package/src/embeddings/openai-provider.ts +414 -0
  252. package/src/embeddings/pricing.json +22 -0
  253. package/src/embeddings/provider-constants.ts +204 -0
  254. package/src/embeddings/provider-errors.test.ts +967 -0
  255. package/src/embeddings/provider-errors.ts +565 -0
  256. package/src/embeddings/provider-factory.test.ts +240 -0
  257. package/src/embeddings/provider-factory.ts +225 -0
  258. package/src/embeddings/provider-integration.test.ts +788 -0
  259. package/src/embeddings/query-preprocessing.test.ts +187 -0
  260. package/src/embeddings/semantic-search-threshold.test.ts +508 -0
  261. package/src/embeddings/semantic-search.ts +1270 -0
  262. package/src/embeddings/types.ts +359 -0
  263. package/src/embeddings/vector-store.ts +708 -0
  264. package/src/embeddings/voyage-provider.ts +313 -0
  265. package/src/errors/errors.test.ts +845 -0
  266. package/src/errors/index.ts +533 -0
  267. package/src/index/ignore-patterns.test.ts +354 -0
  268. package/src/index/ignore-patterns.ts +305 -0
  269. package/src/index/index.ts +4 -0
  270. package/src/index/indexer.ts +684 -0
  271. package/src/index/storage.ts +260 -0
  272. package/src/index/types.ts +147 -0
  273. package/src/index/watcher.ts +189 -0
  274. package/src/index.ts +30 -0
  275. package/src/integration/search-keyword.test.ts +678 -0
  276. package/src/mcp/server.ts +612 -0
  277. package/src/parser/index.ts +1 -0
  278. package/src/parser/parser.test.ts +291 -0
  279. package/src/parser/parser.ts +394 -0
  280. package/src/parser/section-filter.test.ts +277 -0
  281. package/src/parser/section-filter.ts +392 -0
  282. package/src/search/__tests__/hybrid-search.test.ts +650 -0
  283. package/src/search/bm25-store.ts +366 -0
  284. package/src/search/cross-encoder.test.ts +253 -0
  285. package/src/search/cross-encoder.ts +406 -0
  286. package/src/search/fuzzy-search.test.ts +419 -0
  287. package/src/search/fuzzy-search.ts +273 -0
  288. package/src/search/hybrid-search.ts +448 -0
  289. package/src/search/path-matcher.test.ts +276 -0
  290. package/src/search/path-matcher.ts +33 -0
  291. package/src/search/query-parser.test.ts +260 -0
  292. package/src/search/query-parser.ts +319 -0
  293. package/src/search/searcher.test.ts +280 -0
  294. package/src/search/searcher.ts +724 -0
  295. package/src/search/wink-bm25.d.ts +30 -0
  296. package/src/summarization/cli-providers/claude.ts +202 -0
  297. package/src/summarization/cli-providers/detection.test.ts +273 -0
  298. package/src/summarization/cli-providers/detection.ts +118 -0
  299. package/src/summarization/cli-providers/index.ts +8 -0
  300. package/src/summarization/cost.test.ts +139 -0
  301. package/src/summarization/cost.ts +102 -0
  302. package/src/summarization/error-handler.test.ts +127 -0
  303. package/src/summarization/error-handler.ts +111 -0
  304. package/src/summarization/index.ts +102 -0
  305. package/src/summarization/pipeline.test.ts +498 -0
  306. package/src/summarization/pipeline.ts +231 -0
  307. package/src/summarization/prompts.test.ts +269 -0
  308. package/src/summarization/prompts.ts +133 -0
  309. package/src/summarization/provider-factory.test.ts +396 -0
  310. package/src/summarization/provider-factory.ts +178 -0
  311. package/src/summarization/types.ts +184 -0
  312. package/src/summarize/budget-bugs.test.ts +620 -0
  313. package/src/summarize/formatters.ts +419 -0
  314. package/src/summarize/index.ts +20 -0
  315. package/src/summarize/summarizer.test.ts +275 -0
  316. package/src/summarize/summarizer.ts +597 -0
  317. package/src/summarize/verify-bugs.test.ts +238 -0
  318. package/src/types/huggingface-transformers.d.ts +66 -0
  319. package/src/utils/index.ts +1 -0
  320. package/src/utils/tokens.test.ts +142 -0
  321. package/src/utils/tokens.ts +186 -0
  322. package/tests/fixtures/cli/.mdcontext/active-provider.json +7 -0
  323. package/tests/fixtures/cli/.mdcontext/config.json +8 -0
  324. package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
  325. package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
  326. package/tests/fixtures/cli/.mdcontext/indexes/documents.json +33 -0
  327. package/tests/fixtures/cli/.mdcontext/indexes/links.json +12 -0
  328. package/tests/fixtures/cli/.mdcontext/indexes/sections.json +247 -0
  329. package/tests/fixtures/cli/README.md +9 -0
  330. package/tests/fixtures/cli/api-reference.md +11 -0
  331. package/tests/fixtures/cli/getting-started.md +11 -0
  332. package/tests/integration/embed-index.test.ts +712 -0
  333. package/tests/integration/search-context.test.ts +469 -0
  334. package/tests/integration/search-semantic.test.ts +522 -0
  335. package/tsconfig.json +26 -0
  336. package/vitest.config.ts +16 -0
  337. package/vitest.setup.ts +12 -0
package/BACKLOG.md ADDED
@@ -0,0 +1,338 @@
1
+ # mdcontext Improvement Backlog
2
+
3
+ > Generated from validation experiment with 11 AI agents across 3 strategies.
4
+ > See `/reports/FINAL-SYNTHESIS.md` for full analysis.
5
+
6
+ ---
7
+
8
+ ## P0 - Critical (Blocking Agent Workflows)
9
+
10
+ ### 1. Boolean Query Operators
11
+
12
+ **Problem:** Agents couldn't search for multi-term concepts like "architecture AND criticism" or "checkpoint NOT example". Phrases returned 0 results even when concepts were present separately.
13
+
14
+ **Impact:** 3-5x more commands needed for workaround (multiple single-term searches + manual correlation). Strategy B agents rated tool lower (4.2/5) partly due to this.
15
+
16
+ **Solution:** Add boolean operators to search command.
17
+
18
+ **Acceptance Criteria:**
19
+ - [ ] `mdcontext search "auth AND criticism"` returns results containing both terms
20
+ - [ ] `mdcontext search "checkpoint OR gate"` returns results containing either term
21
+ - [ ] `mdcontext search "implementation NOT example"` excludes results with "example"
22
+ - [ ] `mdcontext search --help` documents boolean syntax
23
+
24
+ **Effort:** Medium
25
+
26
+ **Sources:** B1, B2, B3, C3, C4, FINAL-SYNTHESIS
27
+
28
+ ---
29
+
30
+ ### 2. Graceful Embeddings Fallback
31
+
32
+ **Problem:** Semantic searches returned 0 results without clear indication that embeddings weren't built. Agent A2 was confused by silent failures.
33
+
34
+ **Impact:** Inconsistent behavior, wasted agent turns, reduced confidence. A2 rating would be 5/5 with better UX.
35
+
36
+ **Solution:** Auto-detect embeddings state and provide clear feedback.
37
+
38
+ **Acceptance Criteria:**
39
+ - [ ] When embeddings don't exist, search shows: "Semantic search unavailable. Using structural search. Run `mdcontext index --embed` for semantic search."
40
+ - [ ] OR: Auto-prompt on first search: "Enable semantic search? (requires ~30s indexing)"
41
+ - [ ] Search output shows mode indicator: `[semantic]` or `[structural]`
42
+ - [ ] `mdcontext stats` shows embeddings status: "Embeddings: Yes/No (run index --embed to enable)"
43
+
44
+ **Effort:** Low-Medium
45
+
46
+ **Sources:** A2, FINAL-SYNTHESIS
47
+
48
+ ---
49
+
50
+ ### 3. Section-Level Context Extraction
51
+
52
+ **Problem:** Agents couldn't request context for a specific section without retrieving the entire file. When investigating a specific subsection, full-file context wastes tokens.
53
+
54
+ **Impact:** Over-retrieval or multiple refined searches needed. Forces choosing between full context or aggressive summarization.
55
+
56
+ **Solution:** Enable section-targeted context extraction.
57
+
58
+ **Acceptance Criteria:**
59
+ - [ ] `mdcontext context file.md --section "Memory Model"` returns only that section
60
+ - [ ] `mdcontext context file.md:5.3` returns section 5.3 (by number)
61
+ - [ ] `mdcontext context file.md --section "Memory*"` supports glob patterns
62
+ - [ ] Nested sections included by default, `--shallow` flag for top-level only
63
+
64
+ **Effort:** Medium-High
65
+
66
+ **Sources:** A1, A2, C2, C4, FINAL-SYNTHESIS
67
+
68
+ ---
69
+
70
+ ## P1 - High Priority (Significant UX Improvement)
71
+
72
+ ### 4. Search Result Context Lines
73
+
74
+ **Problem:** Search results show line numbers but minimal surrounding context. Hard to evaluate relevance without reading full sections.
75
+
76
+ **Impact:** Extra commands needed to fetch context around matches. Agents requested grep-like `-C` behavior.
77
+
78
+ **Solution:** Add context lines around search matches.
79
+
80
+ **Acceptance Criteria:**
81
+ - [ ] `mdcontext search "checkpoint" -C 3` shows 3 lines before/after each match
82
+ - [ ] `mdcontext search "checkpoint" -B 2 -A 5` shows 2 before, 5 after
83
+ - [ ] Context lines clearly delineated from match lines
84
+ - [ ] Works with both structural and semantic search
85
+
86
+ **Effort:** Low-Medium
87
+
88
+ **Sources:** B2, C3, C5, FINAL-SYNTHESIS
89
+
90
+ ---
91
+
92
+ ### 5. Remove 10-Result Limit / Add Pagination
93
+
94
+ **Problem:** Default 10 results per query makes it hard to see ALL occurrences of a theme. Agents needed multiple queries to ensure comprehensive coverage.
95
+
96
+ **Impact:** Incomplete results for common terms, extra commands for pagination workarounds.
97
+
98
+ **Solution:** Add flags for result limit control.
99
+
100
+ **Acceptance Criteria:**
101
+ - [ ] `mdcontext search "workflow" --all` shows all matches (no limit)
102
+ - [ ] `mdcontext search "workflow" -n 50` shows up to 50 results
103
+ - [ ] `mdcontext search "workflow" --offset 10 -n 10` for pagination
104
+ - [ ] Default remains 10 for quick searches
105
+
106
+ **Effort:** Low
107
+
108
+ **Sources:** B1, B3, C1, FINAL-SYNTHESIS
109
+
110
+ ---
111
+
112
+ ### 6. Truncation UX Improvement
113
+
114
+ **Problem:** When output truncated, agents couldn't selectively access missing sections. Truncation note appeared at end, not clearly signaled upfront.
115
+
116
+ **Impact:** Forces over-retrieval or multiple refined searches. 50-96% reduction sometimes excessive.
117
+
118
+ **Solution:** Better truncation signaling and navigation.
119
+
120
+ **Acceptance Criteria:**
121
+ - [ ] Truncation warning appears at TOP of output: "Output truncated (showing 2000/8500 tokens). Use --full or --section to retrieve more."
122
+ - [ ] `mdcontext context file.md --full` shows complete content (no truncation)
123
+ - [ ] Truncated output shows which sections were included/excluded
124
+ - [ ] `mdcontext context file.md --sections` lists available sections for targeted retrieval
125
+
126
+ **Effort:** Medium
127
+
128
+ **Sources:** A2, B2, C2, FINAL-SYNTHESIS
129
+
130
+ ---
131
+
132
+ ### 7. Phrase Search with Quotes
133
+
134
+ **Problem:** No way to search for exact phrases. "context resumption" as two words found irrelevant matches.
135
+
136
+ **Impact:** Reduced precision for multi-word concepts.
137
+
138
+ **Solution:** Support quoted phrase search.
139
+
140
+ **Acceptance Criteria:**
141
+ - [ ] `mdcontext search '"context resumption"'` matches exact phrase only
142
+ - [ ] `mdcontext search '"drift-free"'` matches hyphenated terms
143
+ - [ ] Can combine with boolean: `mdcontext search '"context resumption" AND drift`
144
+ - [ ] `mdcontext search --help` documents phrase syntax
145
+
146
+ **Effort:** Medium
147
+
148
+ **Sources:** B1, B2, FINAL-SYNTHESIS
149
+
150
+ ---
151
+
152
+ ## P2 - Medium Priority (Nice to Have)
153
+
154
+ ### 8. Cross-File Link Analysis
155
+
156
+ **Problem:** No command to find which files reference which concepts. Backlinks/links commands showed 0 for most queries.
157
+
158
+ **Impact:** Manual grep needed to understand document relationships. Particularly wanted by Strategy C agents for architectural investigation.
159
+
160
+ **Solution:** Implement concept-based cross-file analysis.
161
+
162
+ **Acceptance Criteria:**
163
+ - [ ] `mdcontext refs "Execution Context"` shows all files mentioning this concept
164
+ - [ ] `mdcontext refs --graph` outputs dependency graph (mermaid/dot format)
165
+ - [ ] `mdcontext backlinks file.md` shows files that link TO this file
166
+ - [ ] Works with markdown links `[text](file.md)` and concept mentions
167
+
168
+ **Effort:** High
169
+
170
+ **Sources:** C1, C6, FINAL-SYNTHESIS
171
+
172
+ ---
173
+
174
+ ### 9. Neighborhood View Around Search Results
175
+
176
+ **Problem:** Search results show isolated matches. Agents wanted to see adjacent sections for context without fetching entire file.
177
+
178
+ **Impact:** Extra context commands needed to understand match surroundings.
179
+
180
+ **Solution:** Add section-level context around search results.
181
+
182
+ **Acceptance Criteria:**
183
+ - [ ] `mdcontext search "checkpoint" --context-sections 1` shows 1 section before/after each match
184
+ - [ ] Section context clearly labeled with headers
185
+ - [ ] Works with structural and semantic search
186
+
187
+ **Effort:** Medium
188
+
189
+ **Sources:** C2, C3, FINAL-SYNTHESIS
190
+
191
+ ---
192
+
193
+ ### 10. Search Mode Indicator
194
+
195
+ **Problem:** Agents couldn't tell if search was using semantic or structural mode. Behavior varied based on embeddings presence.
196
+
197
+ **Impact:** Confusion about why some searches worked differently than others.
198
+
199
+ **Solution:** Always show search mode in output.
200
+
201
+ **Acceptance Criteria:**
202
+ - [ ] Search results header shows: `[semantic search]` or `[structural search]`
203
+ - [ ] If semantic attempted but embeddings missing, show: `[structural search - embeddings not found]`
204
+ - [ ] `mdcontext search --mode` flag to force mode: `--mode semantic` or `--mode structural`
205
+
206
+ **Effort:** Low
207
+
208
+ **Sources:** A2, FINAL-SYNTHESIS
209
+
210
+ ---
211
+
212
+ ### 11. Query Syntax Help
213
+
214
+ **Problem:** Agents had to discover search syntax through trial and error. No examples in help.
215
+
216
+ **Impact:** Wasted turns on failed queries, inconsistent usage patterns.
217
+
218
+ **Solution:** Improve search help with examples.
219
+
220
+ **Acceptance Criteria:**
221
+ - [ ] `mdcontext search --help` includes example section:
222
+ ```
223
+ EXAMPLES:
224
+ mdcontext search "auth" # Single term (structural)
225
+ mdcontext search "how to deploy" # Semantic (if embeddings exist)
226
+ mdcontext search "auth AND deploy" # Boolean AND
227
+ mdcontext search '"context resumption"' # Exact phrase
228
+ mdcontext search "impl NOT test" -C 3 # Exclude term, show context
229
+ ```
230
+ - [ ] `mdcontext search --examples` shows extended examples with explanations
231
+
232
+ **Effort:** Low
233
+
234
+ **Sources:** B2, B3, FINAL-SYNTHESIS
235
+
236
+ ---
237
+
238
+ ## P3 - Low Priority (Future Enhancements)
239
+
240
+ ### 12. Multi-File Glob Context
241
+
242
+ **Problem:** Agents had to run context command on each file separately for batch operations.
243
+
244
+ **Impact:** More commands needed for comprehensive extraction.
245
+
246
+ **Solution:** Support glob patterns in context command.
247
+
248
+ **Acceptance Criteria:**
249
+ - [ ] `mdcontext context "docs/**/*.md"` extracts context from all matching files
250
+ - [ ] `mdcontext context "docs/*.md" -t 5000` applies token budget across all files
251
+ - [ ] Output clearly shows which content came from which file
252
+
253
+ **Effort:** Medium
254
+
255
+ **Sources:** FINAL-SYNTHESIS
256
+
257
+ ---
258
+
259
+ ### 13. Saved Queries / Aliases
260
+
261
+ **Problem:** Agents repeatedly ran similar complex queries.
262
+
263
+ **Impact:** Command duplication, typo risk.
264
+
265
+ **Solution:** Allow saving common query patterns.
266
+
267
+ **Acceptance Criteria:**
268
+ - [ ] `mdcontext alias add arch-issues "search 'architecture AND (problem OR issue OR concern)'"`
269
+ - [ ] `mdcontext arch-issues` runs saved query
270
+ - [ ] Aliases stored in `.mdcontext/aliases.json`
271
+
272
+ **Effort:** Medium
273
+
274
+ **Sources:** FINAL-SYNTHESIS
275
+
276
+ ---
277
+
278
+ ### 14. Relevance Score Display
279
+
280
+ **Problem:** Search results showed matches but not how relevant each match was.
281
+
282
+ **Impact:** Harder to prioritize which results to investigate first.
283
+
284
+ **Solution:** Show relevance/similarity scores.
285
+
286
+ **Acceptance Criteria:**
287
+ - [ ] Semantic search shows similarity score: `[0.87] docs/ARCH.md:45 - Control Plane...`
288
+ - [ ] Results sorted by relevance by default
289
+ - [ ] `--sort recent` flag to sort by file modification time instead
290
+
291
+ **Effort:** Low-Medium
292
+
293
+ **Sources:** C1, FINAL-SYNTHESIS
294
+
295
+ ---
296
+
297
+ ### 15. Troubleshooting Guide
298
+
299
+ **Problem:** Agents encountered issues (0 results, truncation, embeddings) without clear resolution paths.
300
+
301
+ **Impact:** Wasted turns debugging tool behavior.
302
+
303
+ **Solution:** Add troubleshooting documentation.
304
+
305
+ **Acceptance Criteria:**
306
+ - [ ] `mdcontext troubleshoot` command shows common issues and fixes
307
+ - [ ] Covers: 0 results, embeddings setup, truncation, index staleness
308
+ - [ ] OR: Add troubleshooting section to README
309
+
310
+ **Effort:** Low
311
+
312
+ **Sources:** FINAL-SYNTHESIS
313
+
314
+ ---
315
+
316
+ ## Summary
317
+
318
+ | Priority | Count | Theme |
319
+ |----------|-------|-------|
320
+ | P0 Critical | 3 | Boolean search, embeddings UX, section extraction |
321
+ | P1 High | 4 | Context lines, pagination, truncation, phrases |
322
+ | P2 Medium | 4 | Cross-file analysis, neighborhood view, mode indicator, help |
323
+ | P3 Low | 4 | Glob context, aliases, relevance scores, docs |
324
+
325
+ **Total: 15 actionable tasks**
326
+
327
+ ---
328
+
329
+ ## Validation Sources
330
+
331
+ All tasks derived from agent feedback across three strategies:
332
+
333
+ - **Strategy A:** A1, A2, A3, A-Synth (4 agents, by-folder approach)
334
+ - **Strategy B:** B1, B2, B3, B-Synth (4 agents, by-question approach)
335
+ - **Strategy C:** C1, C2-C6, C-Synth (7 agents, two-phase approach)
336
+ - **Final Synthesis:** Cross-strategy analysis
337
+
338
+ Full reports: `/Users/alphab/Dev/LLM/DEV/TMP/memory/reports/`
@@ -0,0 +1,186 @@
1
+ # Contributing to mdcontext
2
+
3
+ Thank you for your interest in contributing to mdcontext! This guide will help you get started.
4
+
5
+ ## Development Setup
6
+
7
+ ### Prerequisites
8
+
9
+ - Node.js >= 18.0.0
10
+ - pnpm (recommended, version 10+)
11
+ - Python 3.12+ (for native module compilation)
12
+
13
+ ### Getting Started
14
+
15
+ ```bash
16
+ # Clone the repository
17
+ git clone https://github.com/mdcontext/mdcontext.git
18
+ cd mdcontext
19
+
20
+ # Install dependencies
21
+ pnpm install
22
+
23
+ # Build the project
24
+ pnpm build
25
+
26
+ # Run tests
27
+ pnpm test
28
+ ```
29
+
30
+ ### Available Commands
31
+
32
+ | Command | Description |
33
+ |---------|-------------|
34
+ | `pnpm build` | Build the project |
35
+ | `pnpm test` | Run the test suite |
36
+ | `pnpm test:all` | Run tests including semantic search tests (requires `OPENAI_API_KEY`) |
37
+ | `pnpm typecheck` | Run TypeScript type checking |
38
+ | `pnpm lint` | Run Biome linter |
39
+ | `pnpm format` | Format code with Biome |
40
+ | `pnpm check` | Run format, lint, and typecheck |
41
+
42
+ ## Making Changes
43
+
44
+ 1. **Create a branch** for your changes:
45
+ ```bash
46
+ git checkout -b feature/my-awesome-feature
47
+ ```
48
+
49
+ 2. **Make your changes** and ensure:
50
+ - All tests pass: `pnpm test`
51
+ - Type checking passes: `pnpm typecheck`
52
+ - Code is formatted: `pnpm format`
53
+
54
+ 3. **Create a changeset** (see below)
55
+
56
+ 4. **Submit a pull request** to the `main` branch
57
+
58
+ ## Changeset Workflow
59
+
60
+ We use [Changesets](https://github.com/changesets/changesets) to manage versions and releases. **Every PR that affects the published package should include a changeset.**
61
+
62
+ ### Creating a Changeset
63
+
64
+ After making your changes, run:
65
+
66
+ ```bash
67
+ pnpm changeset
68
+ ```
69
+
70
+ This will prompt you to:
71
+ 1. Select the package (mdcontext)
72
+ 2. Choose a bump type (patch/minor/major)
73
+ 3. Write a summary of your changes
74
+
75
+ A markdown file will be created in the `.changeset/` directory. **Commit this file with your PR.**
76
+
77
+ ### Choosing a Bump Type
78
+
79
+ | Type | When to use | Example |
80
+ |------|-------------|---------|
81
+ | **patch** | Bug fixes, documentation updates, internal refactors | Fixing a search result formatting bug |
82
+ | **minor** | New features that are backwards compatible | Adding a new CLI flag or command |
83
+ | **major** | Breaking changes to public API or CLI | Changing command syntax, removing flags |
84
+
85
+ #### Examples
86
+
87
+ **Patch** (bug fix):
88
+ ```markdown
89
+ ---
90
+ "mdcontext": patch
91
+ ---
92
+
93
+ Fixed section extraction to correctly handle nested headings
94
+ ```
95
+
96
+ **Minor** (new feature):
97
+ ```markdown
98
+ ---
99
+ "mdcontext": minor
100
+ ---
101
+
102
+ Added --json flag to context command for structured output
103
+ ```
104
+
105
+ **Major** (breaking change):
106
+ ```markdown
107
+ ---
108
+ "mdcontext": major
109
+ ---
110
+
111
+ Changed search command syntax: path argument now comes before query
112
+
113
+ Migration: `mdcontext search "query" path/` becomes `mdcontext search path/ "query"`
114
+ ```
115
+
116
+ ### When You Don't Need a Changeset
117
+
118
+ - Documentation-only changes (README, comments)
119
+ - Test-only changes
120
+ - CI/tooling changes that don't affect the package
121
+ - Internal refactors with no user-facing changes
122
+
123
+ If the changesets bot comments on your PR asking for a changeset and you believe one isn't needed, you can add an empty changeset:
124
+
125
+ ```bash
126
+ pnpm changeset add --empty
127
+ ```
128
+
129
+ ## Release Process
130
+
131
+ Here's what happens after your PR is merged:
132
+
133
+ 1. **Changesets are collected**: The release workflow detects changeset files in `main`
134
+
135
+ 2. **Version Packages PR is created**: GitHub Actions creates a PR titled "chore: release packages" that:
136
+ - Bumps the version in `package.json`
137
+ - Updates `CHANGELOG.md` with your changeset descriptions
138
+ - Deletes the changeset files
139
+
140
+ 3. **Publish on merge**: When a maintainer merges the "Version Packages" PR:
141
+ - The package is automatically published to npm
142
+ - A GitHub release is created
143
+ - Package provenance is attached via npm's OIDC support
144
+
145
+ ### For Maintainers
146
+
147
+ To trigger a release:
148
+ 1. Review the auto-generated "Version Packages" PR
149
+ 2. Verify the version bump and changelog look correct
150
+ 3. Merge the PR
151
+ 4. The release happens automatically
152
+
153
+ ## Code Style
154
+
155
+ - We use [Biome](https://biomejs.dev/) for formatting and linting
156
+ - Run `pnpm format` before committing
157
+ - TypeScript strict mode is enabled
158
+ - Prefer functional patterns (Effect-TS is used throughout)
159
+
160
+ ## Testing
161
+
162
+ - Write tests for new features and bug fixes
163
+ - Tests are located in `*.test.ts` files alongside source files
164
+ - Use [Vitest](https://vitest.dev/) for testing
165
+ - Semantic search tests require `OPENAI_API_KEY` and are skipped by default
166
+
167
+ ### Running Specific Tests
168
+
169
+ ```bash
170
+ # Run a specific test file
171
+ pnpm vitest run src/search/searcher.test.ts
172
+
173
+ # Run tests matching a pattern
174
+ pnpm vitest run -t "keyword search"
175
+
176
+ # Watch mode during development
177
+ pnpm test:watch
178
+ ```
179
+
180
+ ## Questions?
181
+
182
+ - Open an issue for bugs or feature requests
183
+ - Check existing issues before creating new ones
184
+ - For questions about using mdcontext, see the README and docs/
185
+
186
+ Thank you for contributing!
package/NOTES/NOTES ADDED
@@ -0,0 +1,44 @@
1
+ ralph orchestrate search-enhancements
2
+ ralph orchestrate context-precision
3
+ ralph orchestrate embeddings-ux
4
+
5
+ - Semantic search with embeddings
6
+ - Boolean operators (AND, OR, NOT)
7
+ - Phrase search (exact match)
8
+ - Section-level context extraction
9
+ - Search context lines
10
+
11
+ Ideas for Part 3:
12
+ Option: A
13
+ Strategy: Feature Battle
14
+ Focus: Parallel agents each test ONE new feature (semantic,
15
+ boolean, phrase) - compare effectiveness
16
+ ────────────────────────────────────────
17
+ Option: B
18
+ Strategy: Meta-Dogfood
19
+ Focus: Use mdtldr to explore md-tldr's own codebase - eat our
20
+ own
21
+ dogfood
22
+ ────────────────────────────────────────
23
+ Option: C
24
+ Strategy: Query Refinement
25
+ Focus: Single agent that does iterative search, refining queries
26
+
27
+ based on results
28
+ ────────────────────────────────────────
29
+ Option: D
30
+ Strategy: Scale Test
31
+ Focus: Same docs corpus but with much larger token budgets, more
32
+
33
+ -----
34
+
35
+
36
+ Let have a subagent review
37
+ /Users/alphab/Dev/LLM/DEV/md-tldr/docs/002-research-embedding-
38
+ models.md
39
+ /Users/alphab/Dev/LLM/DEV/md-tldr/docs/003-research-rag-altern
40
+ atives.md
41
+ /Users/alphab/Dev/LLM/DEV/md-tldr/docs/004-research-vector-sea
42
+ rch.md
43
+
44
+ and document task candidates