@ai-coders/context 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +117 -146
  2. package/dist/fragments/compose.d.ts +30 -0
  3. package/dist/fragments/compose.d.ts.map +1 -0
  4. package/dist/fragments/compose.js +274 -0
  5. package/dist/fragments/compose.js.map +1 -0
  6. package/dist/fragments/extractors/index.d.ts +26 -0
  7. package/dist/fragments/extractors/index.d.ts.map +1 -0
  8. package/dist/fragments/extractors/index.js +58 -0
  9. package/dist/fragments/extractors/index.js.map +1 -0
  10. package/dist/fragments/extractors/module.d.ts +12 -0
  11. package/dist/fragments/extractors/module.d.ts.map +1 -0
  12. package/dist/fragments/extractors/module.js +302 -0
  13. package/dist/fragments/extractors/module.js.map +1 -0
  14. package/dist/fragments/extractors/project.d.ts +12 -0
  15. package/dist/fragments/extractors/project.d.ts.map +1 -0
  16. package/dist/fragments/extractors/project.js +274 -0
  17. package/dist/fragments/extractors/project.js.map +1 -0
  18. package/dist/fragments/extractors/semantic.d.ts +12 -0
  19. package/dist/fragments/extractors/semantic.d.ts.map +1 -0
  20. package/dist/fragments/extractors/semantic.js +329 -0
  21. package/dist/fragments/extractors/semantic.js.map +1 -0
  22. package/dist/fragments/index.d.ts +47 -0
  23. package/dist/fragments/index.d.ts.map +1 -0
  24. package/dist/fragments/index.js +75 -0
  25. package/dist/fragments/index.js.map +1 -0
  26. package/dist/fragments/query.d.ts +101 -0
  27. package/dist/fragments/query.d.ts.map +1 -0
  28. package/dist/fragments/query.js +200 -0
  29. package/dist/fragments/query.js.map +1 -0
  30. package/dist/fragments/render/compact.d.ts +15 -0
  31. package/dist/fragments/render/compact.d.ts.map +1 -0
  32. package/dist/fragments/render/compact.js +209 -0
  33. package/dist/fragments/render/compact.js.map +1 -0
  34. package/dist/fragments/render/index.d.ts +17 -0
  35. package/dist/fragments/render/index.d.ts.map +1 -0
  36. package/dist/fragments/render/index.js +40 -0
  37. package/dist/fragments/render/index.js.map +1 -0
  38. package/dist/fragments/render/json.d.ts +9 -0
  39. package/dist/fragments/render/json.d.ts.map +1 -0
  40. package/dist/fragments/render/json.js +44 -0
  41. package/dist/fragments/render/json.js.map +1 -0
  42. package/dist/fragments/render/markdown.d.ts +9 -0
  43. package/dist/fragments/render/markdown.d.ts.map +1 -0
  44. package/dist/fragments/render/markdown.js +291 -0
  45. package/dist/fragments/render/markdown.js.map +1 -0
  46. package/dist/fragments/store.d.ts +49 -0
  47. package/dist/fragments/store.d.ts.map +1 -0
  48. package/dist/fragments/store.js +161 -0
  49. package/dist/fragments/store.js.map +1 -0
  50. package/dist/fragments/types.d.ts +241 -0
  51. package/dist/fragments/types.d.ts.map +1 -0
  52. package/dist/fragments/types.js +8 -0
  53. package/dist/fragments/types.js.map +1 -0
  54. package/dist/generators/agents/agentGenerator.d.ts +8 -1
  55. package/dist/generators/agents/agentGenerator.d.ts.map +1 -1
  56. package/dist/generators/agents/agentGenerator.js +108 -10
  57. package/dist/generators/agents/agentGenerator.js.map +1 -1
  58. package/dist/generators/agents/templates/playbookTemplate.d.ts +3 -2
  59. package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -1
  60. package/dist/generators/agents/templates/playbookTemplate.js +147 -45
  61. package/dist/generators/agents/templates/playbookTemplate.js.map +1 -1
  62. package/dist/generators/agents/templates/types.d.ts +9 -1
  63. package/dist/generators/agents/templates/types.d.ts.map +1 -1
  64. package/dist/generators/documentation/documentationGenerator.d.ts +2 -0
  65. package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
  66. package/dist/generators/documentation/documentationGenerator.js +18 -3
  67. package/dist/generators/documentation/documentationGenerator.js.map +1 -1
  68. package/dist/generators/documentation/guideRegistry.d.ts.map +1 -1
  69. package/dist/generators/documentation/guideRegistry.js +0 -8
  70. package/dist/generators/documentation/guideRegistry.js.map +1 -1
  71. package/dist/generators/documentation/templates/apiReferenceTemplate.d.ts.map +1 -1
  72. package/dist/generators/documentation/templates/apiReferenceTemplate.js +3 -22
  73. package/dist/generators/documentation/templates/apiReferenceTemplate.js.map +1 -1
  74. package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -1
  75. package/dist/generators/documentation/templates/architectureTemplate.js +174 -36
  76. package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -1
  77. package/dist/generators/documentation/templates/common.d.ts +33 -1
  78. package/dist/generators/documentation/templates/common.d.ts.map +1 -1
  79. package/dist/generators/documentation/templates/common.js +144 -10
  80. package/dist/generators/documentation/templates/common.js.map +1 -1
  81. package/dist/generators/documentation/templates/dataFlowTemplate.d.ts.map +1 -1
  82. package/dist/generators/documentation/templates/dataFlowTemplate.js +106 -22
  83. package/dist/generators/documentation/templates/dataFlowTemplate.js.map +1 -1
  84. package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts.map +1 -1
  85. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js +4 -19
  86. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js.map +1 -1
  87. package/dist/generators/documentation/templates/glossaryTemplate.d.ts +1 -1
  88. package/dist/generators/documentation/templates/glossaryTemplate.d.ts.map +1 -1
  89. package/dist/generators/documentation/templates/glossaryTemplate.js +57 -25
  90. package/dist/generators/documentation/templates/glossaryTemplate.js.map +1 -1
  91. package/dist/generators/documentation/templates/indexTemplate.d.ts.map +1 -1
  92. package/dist/generators/documentation/templates/indexTemplate.js +1 -18
  93. package/dist/generators/documentation/templates/indexTemplate.js.map +1 -1
  94. package/dist/generators/documentation/templates/migrationTemplate.d.ts.map +1 -1
  95. package/dist/generators/documentation/templates/migrationTemplate.js +3 -23
  96. package/dist/generators/documentation/templates/migrationTemplate.js.map +1 -1
  97. package/dist/generators/documentation/templates/onboardingTemplate.d.ts.map +1 -1
  98. package/dist/generators/documentation/templates/onboardingTemplate.js +3 -23
  99. package/dist/generators/documentation/templates/onboardingTemplate.js.map +1 -1
  100. package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts.map +1 -1
  101. package/dist/generators/documentation/templates/projectOverviewTemplate.js +94 -28
  102. package/dist/generators/documentation/templates/projectOverviewTemplate.js.map +1 -1
  103. package/dist/generators/documentation/templates/securityTemplate.d.ts.map +1 -1
  104. package/dist/generators/documentation/templates/securityTemplate.js +11 -22
  105. package/dist/generators/documentation/templates/securityTemplate.js.map +1 -1
  106. package/dist/generators/documentation/templates/testingTemplate.d.ts.map +1 -1
  107. package/dist/generators/documentation/templates/testingTemplate.js +4 -19
  108. package/dist/generators/documentation/templates/testingTemplate.js.map +1 -1
  109. package/dist/generators/documentation/templates/toolingTemplate.d.ts.map +1 -1
  110. package/dist/generators/documentation/templates/toolingTemplate.js +11 -25
  111. package/dist/generators/documentation/templates/toolingTemplate.js.map +1 -1
  112. package/dist/generators/documentation/templates/troubleshootingTemplate.d.ts.map +1 -1
  113. package/dist/generators/documentation/templates/troubleshootingTemplate.js +3 -23
  114. package/dist/generators/documentation/templates/troubleshootingTemplate.js.map +1 -1
  115. package/dist/generators/documentation/templates/types.d.ts +2 -1
  116. package/dist/generators/documentation/templates/types.d.ts.map +1 -1
  117. package/dist/generators/plans/planGenerator.d.ts +4 -0
  118. package/dist/generators/plans/planGenerator.d.ts.map +1 -1
  119. package/dist/generators/plans/planGenerator.js +30 -2
  120. package/dist/generators/plans/planGenerator.js.map +1 -1
  121. package/dist/generators/plans/templates/indexTemplate.d.ts.map +1 -1
  122. package/dist/generators/plans/templates/indexTemplate.js +3 -12
  123. package/dist/generators/plans/templates/indexTemplate.js.map +1 -1
  124. package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -1
  125. package/dist/generators/plans/templates/planTemplate.js +57 -33
  126. package/dist/generators/plans/templates/planTemplate.js.map +1 -1
  127. package/dist/generators/plans/templates/types.d.ts +10 -0
  128. package/dist/generators/plans/templates/types.d.ts.map +1 -1
  129. package/dist/generators/shared/generatorUtils.d.ts.map +1 -1
  130. package/dist/generators/shared/generatorUtils.js +6 -9
  131. package/dist/generators/shared/generatorUtils.js.map +1 -1
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +646 -114
  134. package/dist/index.js.map +1 -1
  135. package/dist/prompts/defaults.d.ts +2 -2
  136. package/dist/prompts/defaults.d.ts.map +1 -1
  137. package/dist/prompts/defaults.js +26 -56
  138. package/dist/prompts/defaults.js.map +1 -1
  139. package/dist/services/ai/agentEvents.d.ts +45 -0
  140. package/dist/services/ai/agentEvents.d.ts.map +1 -0
  141. package/dist/services/ai/agentEvents.js +61 -0
  142. package/dist/services/ai/agentEvents.js.map +1 -0
  143. package/dist/services/ai/agents/documentationAgent.d.ts +53 -0
  144. package/dist/services/ai/agents/documentationAgent.d.ts.map +1 -0
  145. package/dist/services/ai/agents/documentationAgent.js +217 -0
  146. package/dist/services/ai/agents/documentationAgent.js.map +1 -0
  147. package/dist/services/ai/agents/index.d.ts +7 -0
  148. package/dist/services/ai/agents/index.d.ts.map +1 -0
  149. package/dist/services/ai/agents/index.js +10 -0
  150. package/dist/services/ai/agents/index.js.map +1 -0
  151. package/dist/services/ai/agents/planAgent.d.ts +68 -0
  152. package/dist/services/ai/agents/planAgent.d.ts.map +1 -0
  153. package/dist/services/ai/agents/planAgent.js +342 -0
  154. package/dist/services/ai/agents/planAgent.js.map +1 -0
  155. package/dist/services/ai/agents/playbookAgent.d.ts +54 -0
  156. package/dist/services/ai/agents/playbookAgent.d.ts.map +1 -0
  157. package/dist/services/ai/agents/playbookAgent.js +244 -0
  158. package/dist/services/ai/agents/playbookAgent.js.map +1 -0
  159. package/dist/services/ai/aiSdkClient.d.ts +67 -0
  160. package/dist/services/ai/aiSdkClient.d.ts.map +1 -0
  161. package/dist/services/ai/aiSdkClient.js +143 -0
  162. package/dist/services/ai/aiSdkClient.js.map +1 -0
  163. package/dist/services/ai/index.d.ts +7 -0
  164. package/dist/services/ai/index.d.ts.map +1 -0
  165. package/dist/services/ai/index.js +49 -0
  166. package/dist/services/ai/index.js.map +1 -0
  167. package/dist/services/ai/prompts/index.d.ts +2 -0
  168. package/dist/services/ai/prompts/index.d.ts.map +1 -0
  169. package/dist/services/ai/prompts/index.js +12 -0
  170. package/dist/services/ai/prompts/index.js.map +1 -0
  171. package/dist/services/ai/prompts/sharedPrompts.d.ts +33 -0
  172. package/dist/services/ai/prompts/sharedPrompts.d.ts.map +1 -0
  173. package/dist/services/ai/prompts/sharedPrompts.js +136 -0
  174. package/dist/services/ai/prompts/sharedPrompts.js.map +1 -0
  175. package/dist/services/ai/providerFactory.d.ts +35 -0
  176. package/dist/services/ai/providerFactory.d.ts.map +1 -0
  177. package/dist/services/ai/providerFactory.js +107 -0
  178. package/dist/services/ai/providerFactory.js.map +1 -0
  179. package/dist/services/ai/schemas.d.ts +331 -0
  180. package/dist/services/ai/schemas.d.ts.map +1 -0
  181. package/dist/services/ai/schemas.js +236 -0
  182. package/dist/services/ai/schemas.js.map +1 -0
  183. package/dist/services/ai/toolRegistry.d.ts +27 -0
  184. package/dist/services/ai/toolRegistry.d.ts.map +1 -0
  185. package/dist/services/ai/toolRegistry.js +126 -0
  186. package/dist/services/ai/toolRegistry.js.map +1 -0
  187. package/dist/services/ai/tools/analyzeSymbolsTool.d.ts +33 -0
  188. package/dist/services/ai/tools/analyzeSymbolsTool.d.ts.map +1 -0
  189. package/dist/services/ai/tools/analyzeSymbolsTool.js +57 -0
  190. package/dist/services/ai/tools/analyzeSymbolsTool.js.map +1 -0
  191. package/dist/services/ai/tools/checkScaffoldingTool.d.ts +18 -0
  192. package/dist/services/ai/tools/checkScaffoldingTool.d.ts.map +1 -0
  193. package/dist/services/ai/tools/checkScaffoldingTool.js +86 -0
  194. package/dist/services/ai/tools/checkScaffoldingTool.js.map +1 -0
  195. package/dist/services/ai/tools/fillScaffoldingTool.d.ts +108 -0
  196. package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +1 -0
  197. package/dist/services/ai/tools/fillScaffoldingTool.js +463 -0
  198. package/dist/services/ai/tools/fillScaffoldingTool.js.map +1 -0
  199. package/dist/services/ai/tools/getFileStructureTool.d.ts +29 -0
  200. package/dist/services/ai/tools/getFileStructureTool.d.ts.map +1 -0
  201. package/dist/services/ai/tools/getFileStructureTool.js +48 -0
  202. package/dist/services/ai/tools/getFileStructureTool.js.map +1 -0
  203. package/dist/services/ai/tools/index.d.ts +20 -0
  204. package/dist/services/ai/tools/index.d.ts.map +1 -0
  205. package/dist/services/ai/tools/index.js +68 -0
  206. package/dist/services/ai/tools/index.js.map +1 -0
  207. package/dist/services/ai/tools/initializeContextTool.d.ts +25 -0
  208. package/dist/services/ai/tools/initializeContextTool.d.ts.map +1 -0
  209. package/dist/services/ai/tools/initializeContextTool.js +121 -0
  210. package/dist/services/ai/tools/initializeContextTool.js.map +1 -0
  211. package/dist/services/ai/tools/listFilesTool.d.ts +18 -0
  212. package/dist/services/ai/tools/listFilesTool.d.ts.map +1 -0
  213. package/dist/services/ai/tools/listFilesTool.js +34 -0
  214. package/dist/services/ai/tools/listFilesTool.js.map +1 -0
  215. package/dist/services/ai/tools/readFileTool.d.ts +17 -0
  216. package/dist/services/ai/tools/readFileTool.d.ts.map +1 -0
  217. package/dist/services/ai/tools/readFileTool.js +63 -0
  218. package/dist/services/ai/tools/readFileTool.js.map +1 -0
  219. package/dist/services/ai/tools/scaffoldPlanTool.d.ts +19 -0
  220. package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +1 -0
  221. package/dist/services/ai/tools/scaffoldPlanTool.js +81 -0
  222. package/dist/services/ai/tools/scaffoldPlanTool.js.map +1 -0
  223. package/dist/services/ai/tools/searchCodeTool.d.ts +25 -0
  224. package/dist/services/ai/tools/searchCodeTool.d.ts.map +1 -0
  225. package/dist/services/ai/tools/searchCodeTool.js +96 -0
  226. package/dist/services/ai/tools/searchCodeTool.js.map +1 -0
  227. package/dist/services/fill/fillService.d.ts +11 -1
  228. package/dist/services/fill/fillService.d.ts.map +1 -1
  229. package/dist/services/fill/fillService.js +157 -40
  230. package/dist/services/fill/fillService.js.map +1 -1
  231. package/dist/services/init/initService.d.ts +1 -0
  232. package/dist/services/init/initService.d.ts.map +1 -1
  233. package/dist/services/init/initService.js +12 -7
  234. package/dist/services/init/initService.js.map +1 -1
  235. package/dist/services/llmClientFactory.d.ts +36 -2
  236. package/dist/services/llmClientFactory.d.ts.map +1 -1
  237. package/dist/services/llmClientFactory.js +57 -11
  238. package/dist/services/llmClientFactory.js.map +1 -1
  239. package/dist/services/mcp/index.d.ts +2 -0
  240. package/dist/services/mcp/index.d.ts.map +1 -0
  241. package/dist/services/mcp/index.js +7 -0
  242. package/dist/services/mcp/index.js.map +1 -0
  243. package/dist/services/mcp/mcpServer.d.ts +45 -0
  244. package/dist/services/mcp/mcpServer.d.ts.map +1 -0
  245. package/dist/services/mcp/mcpServer.js +411 -0
  246. package/dist/services/mcp/mcpServer.js.map +1 -0
  247. package/dist/services/openRouterClient.js +1 -1
  248. package/dist/services/openRouterClient.js.map +1 -1
  249. package/dist/services/passthrough/commandRouter.d.ts +53 -0
  250. package/dist/services/passthrough/commandRouter.d.ts.map +1 -0
  251. package/dist/services/passthrough/commandRouter.js +349 -0
  252. package/dist/services/passthrough/commandRouter.js.map +1 -0
  253. package/dist/services/passthrough/index.d.ts +7 -0
  254. package/dist/services/passthrough/index.d.ts.map +1 -0
  255. package/dist/services/passthrough/index.js +23 -0
  256. package/dist/services/passthrough/index.js.map +1 -0
  257. package/dist/services/passthrough/protocol.d.ts +269 -0
  258. package/dist/services/passthrough/protocol.d.ts.map +1 -0
  259. package/dist/services/passthrough/protocol.js +151 -0
  260. package/dist/services/passthrough/protocol.js.map +1 -0
  261. package/dist/services/passthrough/stdinReader.d.ts +42 -0
  262. package/dist/services/passthrough/stdinReader.d.ts.map +1 -0
  263. package/dist/services/passthrough/stdinReader.js +111 -0
  264. package/dist/services/passthrough/stdinReader.js.map +1 -0
  265. package/dist/services/plan/planService.d.ts +3 -1
  266. package/dist/services/plan/planService.d.ts.map +1 -1
  267. package/dist/services/plan/planService.js +49 -41
  268. package/dist/services/plan/planService.js.map +1 -1
  269. package/dist/services/semantic/codebaseAnalyzer.d.ts +40 -0
  270. package/dist/services/semantic/codebaseAnalyzer.d.ts.map +1 -0
  271. package/dist/services/semantic/codebaseAnalyzer.js +540 -0
  272. package/dist/services/semantic/codebaseAnalyzer.js.map +1 -0
  273. package/dist/services/semantic/contextBuilder.d.ts +79 -0
  274. package/dist/services/semantic/contextBuilder.d.ts.map +1 -0
  275. package/dist/services/semantic/contextBuilder.js +538 -0
  276. package/dist/services/semantic/contextBuilder.js.map +1 -0
  277. package/dist/services/semantic/index.d.ts +12 -0
  278. package/dist/services/semantic/index.d.ts.map +1 -0
  279. package/dist/services/semantic/index.js +33 -0
  280. package/dist/services/semantic/index.js.map +1 -0
  281. package/dist/services/semantic/lsp/index.d.ts +2 -0
  282. package/dist/services/semantic/lsp/index.d.ts.map +1 -0
  283. package/dist/services/semantic/lsp/index.js +6 -0
  284. package/dist/services/semantic/lsp/index.js.map +1 -0
  285. package/dist/services/semantic/lsp/lspLayer.d.ts +32 -0
  286. package/dist/services/semantic/lsp/lspLayer.d.ts.map +1 -0
  287. package/dist/services/semantic/lsp/lspLayer.js +378 -0
  288. package/dist/services/semantic/lsp/lspLayer.js.map +1 -0
  289. package/dist/services/semantic/treeSitter/index.d.ts +2 -0
  290. package/dist/services/semantic/treeSitter/index.d.ts.map +1 -0
  291. package/dist/services/semantic/treeSitter/index.js +6 -0
  292. package/dist/services/semantic/treeSitter/index.js.map +1 -0
  293. package/dist/services/semantic/treeSitter/treeSitterLayer.d.ts +37 -0
  294. package/dist/services/semantic/treeSitter/treeSitterLayer.d.ts.map +1 -0
  295. package/dist/services/semantic/treeSitter/treeSitterLayer.js +518 -0
  296. package/dist/services/semantic/treeSitter/treeSitterLayer.js.map +1 -0
  297. package/dist/services/semantic/types.d.ts +122 -0
  298. package/dist/services/semantic/types.d.ts.map +1 -0
  299. package/dist/services/semantic/types.js +31 -0
  300. package/dist/services/semantic/types.js.map +1 -0
  301. package/dist/services/serve/index.d.ts +2 -0
  302. package/dist/services/serve/index.d.ts.map +1 -0
  303. package/dist/services/serve/index.js +6 -0
  304. package/dist/services/serve/index.js.map +1 -0
  305. package/dist/services/serve/serveService.d.ts +38 -0
  306. package/dist/services/serve/serveService.d.ts.map +1 -0
  307. package/dist/services/serve/serveService.js +99 -0
  308. package/dist/services/serve/serveService.js.map +1 -0
  309. package/dist/services/shared/llmConfig.d.ts +19 -3
  310. package/dist/services/shared/llmConfig.d.ts.map +1 -1
  311. package/dist/services/shared/llmConfig.js +39 -10
  312. package/dist/services/shared/llmConfig.js.map +1 -1
  313. package/dist/services/state/index.d.ts +2 -0
  314. package/dist/services/state/index.d.ts.map +1 -0
  315. package/dist/services/state/index.js +6 -0
  316. package/dist/services/state/index.js.map +1 -0
  317. package/dist/services/state/stateDetector.d.ts +53 -0
  318. package/dist/services/state/stateDetector.d.ts.map +1 -0
  319. package/dist/services/state/stateDetector.js +189 -0
  320. package/dist/services/state/stateDetector.js.map +1 -0
  321. package/dist/services/sync/index.d.ts +6 -0
  322. package/dist/services/sync/index.d.ts.map +1 -0
  323. package/dist/services/sync/index.js +16 -0
  324. package/dist/services/sync/index.js.map +1 -0
  325. package/dist/services/sync/markdownReferenceHandler.d.ts +3 -0
  326. package/dist/services/sync/markdownReferenceHandler.d.ts.map +1 -0
  327. package/dist/services/sync/markdownReferenceHandler.js +133 -0
  328. package/dist/services/sync/markdownReferenceHandler.js.map +1 -0
  329. package/dist/services/sync/presets.d.ts +6 -0
  330. package/dist/services/sync/presets.d.ts.map +1 -0
  331. package/dist/services/sync/presets.js +49 -0
  332. package/dist/services/sync/presets.js.map +1 -0
  333. package/dist/services/sync/symlinkHandler.d.ts +7 -0
  334. package/dist/services/sync/symlinkHandler.d.ts.map +1 -0
  335. package/dist/services/sync/symlinkHandler.js +129 -0
  336. package/dist/services/sync/symlinkHandler.js.map +1 -0
  337. package/dist/services/sync/syncService.d.ts +15 -0
  338. package/dist/services/sync/syncService.d.ts.map +1 -0
  339. package/dist/services/sync/syncService.js +222 -0
  340. package/dist/services/sync/syncService.js.map +1 -0
  341. package/dist/services/sync/types.d.ts +62 -0
  342. package/dist/services/sync/types.d.ts.map +1 -0
  343. package/dist/services/sync/types.js +3 -0
  344. package/dist/services/sync/types.js.map +1 -0
  345. package/dist/services/update/index.d.ts +2 -0
  346. package/dist/services/update/index.d.ts.map +1 -0
  347. package/dist/services/update/index.js +6 -0
  348. package/dist/services/update/index.js.map +1 -0
  349. package/dist/services/update/updateService.d.ts +64 -0
  350. package/dist/services/update/updateService.d.ts.map +1 -0
  351. package/dist/services/update/updateService.js +295 -0
  352. package/dist/services/update/updateService.js.map +1 -0
  353. package/dist/types.d.ts +2 -6
  354. package/dist/types.d.ts.map +1 -1
  355. package/dist/utils/cliUI.d.ts +33 -0
  356. package/dist/utils/cliUI.d.ts.map +1 -1
  357. package/dist/utils/cliUI.js +157 -107
  358. package/dist/utils/cliUI.js.map +1 -1
  359. package/dist/utils/contentSanitizer.d.ts +42 -0
  360. package/dist/utils/contentSanitizer.d.ts.map +1 -0
  361. package/dist/utils/contentSanitizer.js +238 -0
  362. package/dist/utils/contentSanitizer.js.map +1 -0
  363. package/dist/utils/frontMatter.d.ts +55 -0
  364. package/dist/utils/frontMatter.d.ts.map +1 -0
  365. package/dist/utils/frontMatter.js +173 -0
  366. package/dist/utils/frontMatter.js.map +1 -0
  367. package/dist/utils/gitService.d.ts.map +1 -1
  368. package/dist/utils/gitService.js +12 -14
  369. package/dist/utils/gitService.js.map +1 -1
  370. package/dist/utils/i18n.d.ts +101 -13
  371. package/dist/utils/i18n.d.ts.map +1 -1
  372. package/dist/utils/i18n.js +204 -28
  373. package/dist/utils/i18n.js.map +1 -1
  374. package/dist/utils/prompts/configSummary.d.ts +7 -0
  375. package/dist/utils/prompts/configSummary.d.ts.map +1 -0
  376. package/dist/utils/prompts/configSummary.js +63 -0
  377. package/dist/utils/prompts/configSummary.js.map +1 -0
  378. package/dist/utils/prompts/index.d.ts +22 -0
  379. package/dist/utils/prompts/index.d.ts.map +1 -0
  380. package/dist/utils/prompts/index.js +122 -0
  381. package/dist/utils/prompts/index.js.map +1 -0
  382. package/dist/utils/prompts/llmPrompts.d.ts +11 -0
  383. package/dist/utils/prompts/llmPrompts.d.ts.map +1 -0
  384. package/dist/utils/prompts/llmPrompts.js +96 -0
  385. package/dist/utils/prompts/llmPrompts.js.map +1 -0
  386. package/dist/utils/prompts/smartDefaults.d.ts +15 -0
  387. package/dist/utils/prompts/smartDefaults.d.ts.map +1 -0
  388. package/dist/utils/prompts/smartDefaults.js +105 -0
  389. package/dist/utils/prompts/smartDefaults.js.map +1 -0
  390. package/dist/utils/prompts/types.d.ts +38 -0
  391. package/dist/utils/prompts/types.d.ts.map +1 -0
  392. package/dist/utils/prompts/types.js +3 -0
  393. package/dist/utils/prompts/types.js.map +1 -0
  394. package/dist/utils/theme.d.ts +66 -0
  395. package/dist/utils/theme.d.ts.map +1 -0
  396. package/dist/utils/theme.js +93 -0
  397. package/dist/utils/theme.js.map +1 -0
  398. package/dist/version.d.ts +8 -0
  399. package/dist/version.d.ts.map +1 -0
  400. package/dist/version.js +15 -0
  401. package/dist/version.js.map +1 -0
  402. package/package.json +12 -2
  403. package/prompts/update_scaffold_prompt.md +14 -34
  404. package/dist/commands/shared/agents.d.ts +0 -2
  405. package/dist/commands/shared/agents.d.ts.map +0 -1
  406. package/dist/commands/shared/agents.js +0 -15
  407. package/dist/commands/shared/agents.js.map +0 -1
  408. package/dist/commands/shared/selection.d.ts +0 -12
  409. package/dist/commands/shared/selection.d.ts.map +0 -1
  410. package/dist/commands/shared/selection.js +0 -95
  411. package/dist/commands/shared/selection.js.map +0 -1
  412. package/dist/generators/documentation/templates/frontMatter.d.ts +0 -11
  413. package/dist/generators/documentation/templates/frontMatter.d.ts.map +0 -1
  414. package/dist/generators/documentation/templates/frontMatter.js +0 -29
  415. package/dist/generators/documentation/templates/frontMatter.js.map +0 -1
  416. package/dist/services/anthropicClient.d.ts +0 -12
  417. package/dist/services/anthropicClient.d.ts.map +0 -1
  418. package/dist/services/anthropicClient.js +0 -98
  419. package/dist/services/anthropicClient.js.map +0 -1
  420. package/dist/services/geminiClient.d.ts +0 -12
  421. package/dist/services/geminiClient.d.ts.map +0 -1
  422. package/dist/services/geminiClient.js +0 -96
  423. package/dist/services/geminiClient.js.map +0 -1
  424. package/dist/services/grokClient.d.ts +0 -12
  425. package/dist/services/grokClient.d.ts.map +0 -1
  426. package/dist/services/grokClient.js +0 -101
  427. package/dist/services/grokClient.js.map +0 -1
  428. package/dist/services/openaiClient.d.ts +0 -12
  429. package/dist/services/openaiClient.d.ts.map +0 -1
  430. package/dist/services/openaiClient.js +0 -98
  431. package/dist/services/openaiClient.js.map +0 -1
  432. package/dist/utils/pricing.d.ts +0 -14
  433. package/dist/utils/pricing.d.ts.map +0 -1
  434. package/dist/utils/pricing.js +0 -115
  435. package/dist/utils/pricing.js.map +0 -1
package/README.md CHANGED
@@ -4,195 +4,166 @@
4
4
  [![CI](https://github.com/vinilana/ai-coders-context/actions/workflows/ci.yml/badge.svg)](https://github.com/vinilana/ai-coders-context/actions/workflows/ci.yml)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
 
7
- <img width="663" height="192" alt="image" src="https://github.com/user-attachments/assets/4b07f61d-6800-420a-ae91-6e952cbc790d" />
8
7
 
8
+ Context engineering for AI should be stupidly simple.
9
9
 
10
- A lightweight CLI that scaffolds living documentation and AI-agent playbooks for any repository—no LLMs or API keys required. The generated structure gives teams a consistent starting point for knowledge sharing while keeping everything under version control.
11
-
12
- ## ⚙️ Requirements
13
-
14
- - Node.js 20+ (we currently test on 20, 22, 23, and 24)
15
-
16
- ## ✨ What You Get
17
-
18
- - 📚 `docs/` folder with a documentation index plus ready-to-edit guides (overview, architecture, workflow, testing)
19
- - 🤖 `agents/` folder containing playbooks for common engineering agents and a handy index
20
- - 🔁 Repeatable scaffolding that you can re-run as the project evolves
21
- - 🧭 Repository-aware templates that highlight top-level directories for quick orientation
22
- - 🧠 AI-ready front matter and `agent-update` markers so assistants know exactly what to refresh
23
-
24
- ## 📦 Installation
25
-
26
- Use `npx` to run the CLI without installing globally:
10
+ ## Usage
27
11
 
28
12
  ```bash
29
13
  npx @ai-coders/context
30
14
  ```
31
15
 
32
- Or add it to your dev dependencies:
16
+ That's it. The wizard detects what needs to be done.
33
17
 
34
- ```bash
35
- npm install --save-dev @ai-coders/context
36
- ```
18
+ ## What it does
37
19
 
38
- ## 🚀 Quick Start
20
+ 1. **Creates documentation** — Structured docs from your codebase
21
+ 2. **Generates playbooks** — Guides for AI agents (Claude, GPT, etc.)
22
+ 3. **Keeps it updated** — Detects code changes and suggests updates
39
23
 
40
- ```bash
41
- # Launch the interactive wizard
42
- npx @ai-coders/context
24
+ ## For automation
43
25
 
26
+ ```bash
27
+ npx @ai-coders/context init . # Create structure
28
+ npx @ai-coders/context fill . # Fill with AI
29
+ npx @ai-coders/context update # Update outdated docs
30
+ npx @ai-coders/context plan name # Create work plan
31
+ ```
44
32
 
45
- # Scaffold docs and agents into ./.context
46
- npx @ai-coders/context init ./my-repo
33
+ ## Requirements
47
34
 
48
- # Only generate docs
49
- npx @ai-coders/context init ./my-repo docs
35
+ - Node.js 20+
36
+ - API key from a supported provider (for AI features)
50
37
 
51
- # Only generate agent playbooks, with a custom output directory
52
- npx @ai-coders/context init ./my-repo agents --output ./knowledge-base
38
+ ## Supported Providers
53
39
 
54
- # Fill docs and agents with the repo context (preview the first 3 updates)
55
- npx @ai-coders/context fill ./my-repo --output ./.context --limit 3
40
+ | Provider | Environment Variable |
41
+ |----------|---------------------|
42
+ | OpenRouter | `OPENROUTER_API_KEY` |
43
+ | OpenAI | `OPENAI_API_KEY` |
44
+ | Anthropic | `ANTHROPIC_API_KEY` |
45
+ | Google | `GOOGLE_API_KEY` |
56
46
 
57
- # Draft a collaboration plan seeded with agent and doc touchpoints
58
- npx @ai-coders/context plan release-readiness --output ./.context
47
+ ## MCP Server Setup
59
48
 
60
- # Let the LLM enrich an existing plan with the latest context
61
- npx @ai-coders/context plan release-readiness --output ./.context --fill --dry-run
62
- ```
49
+ This package includes an MCP (Model Context Protocol) server that provides AI coding assistants with powerful tools to analyze and document your codebase.
63
50
 
64
- > ℹ️ The CLI pings npm for fresh releases at startup. Set `AI_CONTEXT_DISABLE_UPDATE_CHECK=true` to skip the check.
51
+ ### Claude Code (CLI)
65
52
 
66
- After running the command, inspect the generated structure:
53
+ Add the MCP server using the Claude CLI:
67
54
 
55
+ ```bash
56
+ claude mcp add ai-context -- npx @ai-coders/context mcp
68
57
  ```
69
- .context/
70
- ├── agents/
71
- │ ├── README.md
72
- │ ├── code-reviewer.md
73
- │ └── ...
74
- └── docs/
75
- ├── README.md
76
- ├── architecture.md
77
- └── ...
78
- ```
79
-
80
- Customize the Markdown files to reflect your project’s specifics and commit them alongside the code.
81
-
82
- ## 🧠 Guided Updates for AI Assistants
83
58
 
84
- Need help filling in the scaffold? Use [`prompts/update_scaffold_prompt.md`](./prompts/update_scaffold_prompt.md) as the canonical instruction set for any LLM or CLI agent. It walks through:
85
-
86
- - Gathering repository context and locating `agent-update`/`agent-fill` markers.
87
- - Updating documentation sections while satisfying the YAML front matter criteria.
88
- - Aligning agent playbooks with the refreshed docs and recording evidence for maintainers.
89
-
90
- Share that prompt verbatim with your assistant to keep updates consistent across teams.
59
+ Or configure manually in `~/.claude.json`:
60
+
61
+ ```json
62
+ {
63
+ "mcpServers": {
64
+ "ai-context": {
65
+ "command": "npx",
66
+ "args": ["@ai-coders/context", "mcp"]
67
+ }
68
+ }
69
+ }
70
+ ```
91
71
 
92
- ### Available Doc Guides & Agent Types
72
+ ### Claude Desktop
93
73
 
94
- The scaffold includes the following guides and playbooks out of the box:
74
+ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows):
95
75
 
96
- - Docs: `project-overview`, `architecture`, `development-workflow`, `testing-strategy`, `glossary`, `data-flow`, `security`, `tooling`
97
- - Agents: `code-reviewer`, `bug-fixer`, `feature-developer`, `refactoring-specialist`, `test-writer`, `documentation-writer`, `performance-optimizer`, `security-auditor`, `backend-specialist`, `frontend-specialist`, `architect-specialist`
76
+ ```json
77
+ {
78
+ "mcpServers": {
79
+ "ai-context": {
80
+ "command": "npx",
81
+ "args": ["@ai-coders/context", "mcp"]
82
+ }
83
+ }
84
+ }
85
+ ```
98
86
 
99
- ### AI Marker Reference
87
+ ### Cursor AI
100
88
 
101
- - `<!-- agent-update:start:section-id --> <!-- agent-update:end -->` wrap the sections that AI assistants should rewrite with up-to-date project knowledge.
102
- - `<!-- agent-fill:slot-id --> … <!-- /agent-fill -->` highlight inline placeholders that must be replaced with concrete details before removing the wrapper.
103
- - `<!-- agent-readonly:context -->` flags guidance that should remain as-is; treat the adjacent content as instructions rather than editable prose.
89
+ Create `.cursor/mcp.json` in your project root:
104
90
 
105
- When contributing, focus edits inside `agent-update` regions or `agent-fill` placeholders and leave `agent-readonly` guidance untouched unless you have explicit maintainer approval.
91
+ ```json
92
+ {
93
+ "mcpServers": {
94
+ "ai-context": {
95
+ "command": "npx",
96
+ "args": ["@ai-coders/context", "mcp"]
97
+ }
98
+ }
99
+ }
100
+ ```
106
101
 
107
- ## 🛠 Commands
102
+ ### Windsurf
108
103
 
109
- ### `init`
110
- Scaffold documentation and/or agent playbooks.
104
+ Add to your Windsurf MCP config (`~/.codeium/windsurf/mcp_config.json`):
111
105
 
106
+ ```json
107
+ {
108
+ "mcpServers": {
109
+ "ai-context": {
110
+ "command": "npx",
111
+ "args": ["@ai-coders/context", "mcp"]
112
+ }
113
+ }
114
+ }
112
115
  ```
113
- Usage: ai-context init <repo-path> [type]
114
-
115
- Arguments:
116
- repo-path Path to the repository you want to scan
117
- type "docs", "agents", or "both" (default)
118
-
119
- Options:
120
- -o, --output <dir> Output directory (default: ./.context)
121
- --exclude <patterns...> Glob patterns to skip during the scan
122
- --include <patterns...> Glob patterns to explicitly include
123
- -v, --verbose Print detailed progress information
124
- -h, --help Display help for command
125
- ```
126
-
127
- ### `fill`
128
- Use an LLM to refresh scaffolded docs and agent playbooks automatically.
129
116
 
130
- ```
131
- Usage: ai-context fill <repo-path>
132
-
133
- Options:
134
- -o, --output <dir> Scaffold directory containing docs/ and agents/ (default: ./.context)
135
- -k, --api-key <key> API key for the selected LLM provider
136
- -m, --model <model> LLM model to use (default: x-ai/grok-4-fast)
137
- -p, --provider <name> Provider (openrouter only)
138
- --base-url <url> Custom base URL for OpenRouter
139
- --prompt <file> Instruction prompt to follow (optional; uses bundled instructions when omitted)
140
- --limit <number> Maximum number of files to update in one run
141
- -h, --help Display help for command
117
+ ### Zed Editor
118
+
119
+ Add to your Zed settings (`~/.config/zed/settings.json`):
120
+
121
+ ```json
122
+ {
123
+ "context_servers": {
124
+ "ai-context": {
125
+ "command": {
126
+ "path": "npx",
127
+ "args": ["@ai-coders/context", "mcp"]
128
+ }
129
+ }
130
+ }
131
+ }
142
132
  ```
143
133
 
144
- Under the hood, the command loads the prompt above, iterates over every Markdown file in `.context/docs` and `.context/agents`, and asks the LLM to produce the fully updated content.
134
+ ### Cline (VS Code Extension)
145
135
 
146
- ### `plan`
147
- Create a collaboration plan that links documentation guides and agent playbooks, or fill an existing plan with LLM assistance.
136
+ Configure in Cline settings (VS Code → Settings → Cline → MCP Servers):
148
137
 
149
- ```
150
- Usage: ai-context plan <plan-name>
151
-
152
- Options:
153
- -o, --output <dir> Scaffold directory containing docs/ and agents/ (default: ./.context)
154
- --title <title> Custom title for the plan document
155
- --summary <text> Seed the plan with a short summary or goal statement
156
- -f, --force Overwrite the plan if it already exists (scaffold mode)
157
- --fill Use an LLM to fill or update the plan instead of scaffolding
158
- -r, --repo <path> Repository root to summarize for additional context (fill mode)
159
- -k, --api-key <key> API key for the selected LLM provider (fill mode)
160
- -m, --model <model> LLM model to use (default: x-ai/grok-4-fast)
161
- -p, --provider <name> Provider (openrouter only)
162
- --base-url <url> Custom base URL for OpenRouter
163
- --prompt <file> Instruction prompt to follow (optional; uses bundled instructions when omitted)
164
- --dry-run Preview changes without writing files
165
- --include <patterns...> Glob patterns to include during repository analysis
166
- --exclude <patterns...> Glob patterns to exclude from repository analysis
167
- -h, --help Display help for command
138
+ ```json
139
+ {
140
+ "mcpServers": {
141
+ "ai-context": {
142
+ "command": "npx",
143
+ "args": ["@ai-coders/context", "mcp"]
144
+ }
145
+ }
146
+ }
168
147
  ```
169
148
 
170
- In scaffold mode the command creates `.context/plans/<plan-name>.md`, keeps a `plans/README.md` index, and reminds contributors to consult the agent handbook before delegating work to an AI assistant. In fill mode it will scaffold the plan automatically if it does not exist, then read the plan plus its referenced docs and agent playbooks, send that context to the LLM, and either preview or write the updated Markdown.
149
+ ### Available MCP Tools
171
150
 
172
- 💡 Tip: run `npx @ai-coders/context` with no arguments to enter an interactive mode that guides you through scaffold and LLM-fill options.
151
+ Once configured, your AI assistant will have access to:
173
152
 
174
- Prefer driving the update elsewhere? Just grab [`prompts/update_scaffold_prompt.md`](./prompts/update_scaffold_prompt.md) and run it in your favorite playground or agent host. When you’re ready to automate, drop your API key in `.env` (for example `OPENROUTER_API_KEY` and `OPENROUTER_MODEL`) and let `fill` handle the edits inline.
175
-
176
- ## 🧰 Local Development
177
-
178
- ```bash
179
- git clone https://github.com/vinilana/ai-coders-context.git
180
- cd ai-coders-context
181
- npm install
182
- npm run build
183
- npm run test
184
- ```
185
-
186
- During development you can run the CLI directly against TypeScript sources:
187
-
188
- ```bash
189
- npm run dev -- ./path/to/repo
190
- ```
153
+ | Tool | Description |
154
+ |------|-------------|
155
+ | `buildSemanticContext` | Build optimized context for LLM prompts |
156
+ | `initializeContext` | Create `.context` scaffolding |
157
+ | `fillScaffolding` | Generate documentation content |
158
+ | `analyzeSymbols` | Analyze code symbols (classes, functions, etc.) |
159
+ | `searchCode` | Search for patterns across files |
160
+ | `getFileStructure` | Get repository directory structure |
161
+ | `scaffoldPlan` | Create work plans |
191
162
 
192
- ## 🤝 Contributing
163
+ ## Contributing
193
164
 
194
- See [`AGENTS.md`](./AGENTS.md) for contributor guidelines, coding standards, and release tips. Pull requests are welcome!
165
+ - [Development Guide](./AGENTS.md) Development guidelines
195
166
 
196
- ## 📄 License
167
+ ## License
197
168
 
198
169
  MIT © Vinícius Lana
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Fragment Composition - Strategies for combining fragments
3
+ */
4
+ import type { ContextFragment, CompositionOptions, FragmentStore } from './types.js';
5
+ /**
6
+ * Compose fragments into a coherent context using the specified strategy
7
+ */
8
+ export declare function composeFragments(fragments: ContextFragment<unknown>[], options: CompositionOptions): ContextFragment<unknown>[];
9
+ /**
10
+ * Create a composition pipeline helper
11
+ */
12
+ export declare function createComposer(store: FragmentStore): {
13
+ /**
14
+ * Compose by priority (default)
15
+ */
16
+ byPriority(maxTokens?: number): ContextFragment<unknown>[];
17
+ /**
18
+ * Compose by expanding from a seed
19
+ */
20
+ expand(seed: string, depth?: number, maxTokens?: number): ContextFragment<unknown>[];
21
+ /**
22
+ * Compose by task relevance
23
+ */
24
+ forTask(task: string, maxTokens?: number): ContextFragment<unknown>[];
25
+ /**
26
+ * Get essential context (project overview + high priority)
27
+ */
28
+ essential(maxTokens?: number): ContextFragment<unknown>[];
29
+ };
30
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/fragments/compose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAElB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EACrC,OAAO,EAAE,kBAAkB,GAC1B,eAAe,CAAC,OAAO,CAAC,EAAE,CAW5B;AA6QD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa;IAE/C;;OAEG;2BACoB,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE;IAO1D;;OAEG;iBACU,MAAM,UAAU,MAAM,cAAc,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE;IASpF;;OAEG;kBACW,MAAM,cAAc,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE;IAQrE;;OAEG;0BACmB,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE;EAe5D"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ /**
3
+ * Fragment Composition - Strategies for combining fragments
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.composeFragments = composeFragments;
7
+ exports.createComposer = createComposer;
8
+ /**
9
+ * Compose fragments into a coherent context using the specified strategy
10
+ */
11
+ function composeFragments(fragments, options) {
12
+ switch (options.strategy) {
13
+ case 'priority':
14
+ return composePriority(fragments, options);
15
+ case 'expand':
16
+ return composeExpand(fragments, options);
17
+ case 'task':
18
+ return composeTask(fragments, options);
19
+ default:
20
+ return composePriority(fragments, options);
21
+ }
22
+ }
23
+ /**
24
+ * Priority-based composition: sort by priority, limit by tokens
25
+ */
26
+ function composePriority(fragments, options) {
27
+ // Sort by priority (highest first)
28
+ const sorted = [...fragments].sort((a, b) => b.meta.priority - a.meta.priority);
29
+ if (!options.maxTokens) {
30
+ return sorted;
31
+ }
32
+ // Estimate tokens and cut off
33
+ return limitByTokens(sorted, options.maxTokens);
34
+ }
35
+ /**
36
+ * Graph expansion: start from a seed symbol/file, expand to related fragments
37
+ */
38
+ function composeExpand(fragments, options) {
39
+ const seed = options.seed;
40
+ const depth = options.depth || 2;
41
+ if (!seed) {
42
+ return composePriority(fragments, options);
43
+ }
44
+ const result = [];
45
+ const visited = new Set();
46
+ const queue = [];
47
+ // Find seed fragments
48
+ const seedFragments = fragments.filter((f) => f.refs.symbols.includes(seed) ||
49
+ f.refs.files.some((file) => file.includes(seed)) ||
50
+ f.data &&
51
+ typeof f.data === 'object' &&
52
+ 'name' in f.data &&
53
+ f.data.name === seed);
54
+ for (const fragment of seedFragments) {
55
+ queue.push({ fragment, level: 0 });
56
+ }
57
+ while (queue.length > 0) {
58
+ const { fragment, level } = queue.shift();
59
+ if (visited.has(fragment.id))
60
+ continue;
61
+ visited.add(fragment.id);
62
+ result.push(fragment);
63
+ if (level >= depth)
64
+ continue;
65
+ // Find related fragments
66
+ const related = findRelatedFragments(fragment, fragments, visited);
67
+ for (const relFragment of related) {
68
+ queue.push({ fragment: relFragment, level: level + 1 });
69
+ }
70
+ }
71
+ // Sort by priority within result
72
+ result.sort((a, b) => b.meta.priority - a.meta.priority);
73
+ if (options.maxTokens) {
74
+ return limitByTokens(result, options.maxTokens);
75
+ }
76
+ return result;
77
+ }
78
+ /**
79
+ * Task-based composition: select fragments relevant to a task description
80
+ */
81
+ function composeTask(fragments, options) {
82
+ const task = options.task;
83
+ if (!task) {
84
+ return composePriority(fragments, options);
85
+ }
86
+ // Extract keywords from task
87
+ const keywords = extractKeywords(task);
88
+ // Score fragments by relevance to task
89
+ const scored = fragments.map((fragment) => ({
90
+ fragment,
91
+ score: scoreRelevance(fragment, keywords),
92
+ }));
93
+ // Sort by combined score (relevance + priority)
94
+ scored.sort((a, b) => {
95
+ const aTotal = a.score * 0.7 + a.fragment.meta.priority * 0.3;
96
+ const bTotal = b.score * 0.7 + b.fragment.meta.priority * 0.3;
97
+ return bTotal - aTotal;
98
+ });
99
+ const result = scored.map((s) => s.fragment);
100
+ if (options.maxTokens) {
101
+ return limitByTokens(result, options.maxTokens);
102
+ }
103
+ return result;
104
+ }
105
+ /**
106
+ * Find fragments related to a given fragment
107
+ */
108
+ function findRelatedFragments(fragment, allFragments, visited) {
109
+ const related = [];
110
+ // By referenced fragments
111
+ for (const refId of fragment.refs.fragments) {
112
+ const refFragment = allFragments.find((f) => f.id === refId && !visited.has(f.id));
113
+ if (refFragment) {
114
+ related.push(refFragment);
115
+ }
116
+ }
117
+ // By shared files
118
+ for (const file of fragment.refs.files) {
119
+ const fileFragments = allFragments.filter((f) => f.refs.files.includes(file) && !visited.has(f.id));
120
+ related.push(...fileFragments);
121
+ }
122
+ // By shared symbols
123
+ for (const symbol of fragment.refs.symbols) {
124
+ const symbolFragments = allFragments.filter((f) => (f.refs.symbols.includes(symbol) ||
125
+ (f.data &&
126
+ typeof f.data === 'object' &&
127
+ 'name' in f.data &&
128
+ f.data.name === symbol)) &&
129
+ !visited.has(f.id));
130
+ related.push(...symbolFragments);
131
+ }
132
+ // Deduplicate
133
+ const uniqueIds = new Set();
134
+ return related.filter((f) => {
135
+ if (uniqueIds.has(f.id))
136
+ return false;
137
+ uniqueIds.add(f.id);
138
+ return true;
139
+ });
140
+ }
141
+ /**
142
+ * Extract keywords from a task description
143
+ */
144
+ function extractKeywords(task) {
145
+ const stopWords = new Set([
146
+ 'a', 'an', 'the', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
147
+ 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
148
+ 'should', 'may', 'might', 'must', 'shall', 'can', 'need', 'to', 'of',
149
+ 'in', 'for', 'on', 'with', 'at', 'by', 'from', 'up', 'about', 'into',
150
+ 'through', 'during', 'before', 'after', 'above', 'below', 'between',
151
+ 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when',
152
+ 'where', 'why', 'how', 'all', 'each', 'few', 'more', 'most', 'other',
153
+ 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than',
154
+ 'too', 'very', 'just', 'and', 'but', 'if', 'or', 'because', 'as', 'until',
155
+ 'while', 'this', 'that', 'these', 'those', 'i', 'me', 'my', 'we', 'our',
156
+ 'you', 'your', 'it', 'its', 'add', 'create', 'new', 'implement', 'fix',
157
+ 'update', 'change', 'modify', 'help', 'want', 'make', 'get', 'set',
158
+ ]);
159
+ return task
160
+ .toLowerCase()
161
+ .replace(/[^a-z0-9\s]/g, ' ')
162
+ .split(/\s+/)
163
+ .filter((word) => word.length > 2 && !stopWords.has(word));
164
+ }
165
+ /**
166
+ * Score a fragment's relevance to keywords
167
+ */
168
+ function scoreRelevance(fragment, keywords) {
169
+ let score = 0;
170
+ const textToSearch = [
171
+ fragment.summary || '',
172
+ fragment.type,
173
+ ...fragment.meta.tags,
174
+ ...fragment.refs.symbols,
175
+ ...(fragment.data && typeof fragment.data === 'object'
176
+ ? Object.values(fragment.data)
177
+ .filter((v) => typeof v === 'string')
178
+ .map((v) => v)
179
+ : []),
180
+ ]
181
+ .join(' ')
182
+ .toLowerCase();
183
+ for (const keyword of keywords) {
184
+ if (textToSearch.includes(keyword)) {
185
+ score += 1;
186
+ // Bonus for exact symbol match
187
+ if (fragment.refs.symbols.some((s) => s.toLowerCase() === keyword)) {
188
+ score += 2;
189
+ }
190
+ // Bonus for type match
191
+ if (fragment.type.includes(keyword)) {
192
+ score += 1;
193
+ }
194
+ }
195
+ }
196
+ // Normalize by keyword count
197
+ return keywords.length > 0 ? score / keywords.length : 0;
198
+ }
199
+ /**
200
+ * Limit fragments by estimated token count
201
+ */
202
+ function limitByTokens(fragments, maxTokens) {
203
+ const result = [];
204
+ let totalTokens = 0;
205
+ for (const fragment of fragments) {
206
+ const tokens = estimateTokens(fragment);
207
+ if (totalTokens + tokens > maxTokens) {
208
+ break;
209
+ }
210
+ result.push(fragment);
211
+ totalTokens += tokens;
212
+ }
213
+ return result;
214
+ }
215
+ /**
216
+ * Estimate token count for a fragment (rough approximation)
217
+ */
218
+ function estimateTokens(fragment) {
219
+ const json = JSON.stringify(fragment);
220
+ // Rough estimate: ~4 chars per token
221
+ return Math.ceil(json.length / 4);
222
+ }
223
+ /**
224
+ * Create a composition pipeline helper
225
+ */
226
+ function createComposer(store) {
227
+ return {
228
+ /**
229
+ * Compose by priority (default)
230
+ */
231
+ byPriority(maxTokens) {
232
+ return composeFragments(store.all(), {
233
+ strategy: 'priority',
234
+ maxTokens,
235
+ });
236
+ },
237
+ /**
238
+ * Compose by expanding from a seed
239
+ */
240
+ expand(seed, depth, maxTokens) {
241
+ return composeFragments(store.all(), {
242
+ strategy: 'expand',
243
+ seed,
244
+ depth,
245
+ maxTokens,
246
+ });
247
+ },
248
+ /**
249
+ * Compose by task relevance
250
+ */
251
+ forTask(task, maxTokens) {
252
+ return composeFragments(store.all(), {
253
+ strategy: 'task',
254
+ task,
255
+ maxTokens,
256
+ });
257
+ },
258
+ /**
259
+ * Get essential context (project overview + high priority)
260
+ */
261
+ essential(maxTokens) {
262
+ const essential = store
263
+ .all()
264
+ .filter((f) => f.type === 'project-overview' ||
265
+ f.meta.tags.includes('essential') ||
266
+ f.meta.priority >= 8);
267
+ return composeFragments(essential, {
268
+ strategy: 'priority',
269
+ maxTokens,
270
+ });
271
+ },
272
+ };
273
+ }
274
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/fragments/compose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Fragment Extractors - Registry and common utilities
3
+ */
4
+ import type { ContextFragment, FragmentExtractor, FragmentType } from '../types.js';
5
+ import { RepoStructure } from '../../types.js';
6
+ import type { SemanticContext } from '../../services/semantic/types.js';
7
+ export interface ExtractionInput {
8
+ repoStructure: RepoStructure;
9
+ semantics?: SemanticContext;
10
+ packageJson?: Record<string, unknown>;
11
+ readme?: string;
12
+ }
13
+ type AnyFragment = ContextFragment<unknown>;
14
+ export interface ExtractorRegistry {
15
+ extractors: FragmentExtractor<ExtractionInput>[];
16
+ extractAll(input: ExtractionInput): AnyFragment[];
17
+ getByType(type: FragmentType): FragmentExtractor<ExtractionInput>[];
18
+ }
19
+ /**
20
+ * Create the default extractor registry with all built-in extractors
21
+ */
22
+ export declare function createExtractorRegistry(): ExtractorRegistry;
23
+ export { extractProjectFragments } from './project.js';
24
+ export { extractModuleFragments } from './module.js';
25
+ export { extractSemanticFragments } from './semantic.js';
26
+ //# sourceMappingURL=index.d.ts.map