@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
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlanAgent = void 0;
4
+ const ai_1 = require("ai");
5
+ const providerFactory_1 = require("../providerFactory");
6
+ const tools_1 = require("../tools");
7
+ const schemas_1 = require("../schemas");
8
+ const agentEvents_1 = require("../agentEvents");
9
+ const semantic_1 = require("../../semantic");
10
+ const contentSanitizer_1 = require("../../../utils/contentSanitizer");
11
+ const prompts_1 = require("../prompts");
12
+ // Use shared system prompts from prompts module
13
+ const SYSTEM_PROMPT = (0, prompts_1.getPlanAgentPrompt)();
14
+ // PLAN_UPDATE_PROMPT is imported from '../prompts'
15
+ class PlanAgent {
16
+ constructor(config) {
17
+ this.config = config;
18
+ this.providerResult = (0, providerFactory_1.createProvider)(config);
19
+ this.tools = (0, tools_1.getCodeAnalysisTools)();
20
+ }
21
+ /**
22
+ * Generate a new development plan using tools for context gathering
23
+ */
24
+ async generatePlan(options) {
25
+ const { repoPath, planName, summary, docsIndex, agentsIndex, referencedDocs, referencedAgents, maxSteps = 15, maxOutputTokens = 8000, callbacks } = options;
26
+ // Emit agent start event
27
+ callbacks?.onAgentStart?.({ agent: 'plan', target: planName });
28
+ const contextParts = [
29
+ `Create a development plan named "${planName}" for the repository at: ${repoPath}`,
30
+ summary ? `\nPlan summary/goal: ${summary}` : '',
31
+ '\nUse the tools to analyze the codebase and understand:',
32
+ '1. The project structure and main components',
33
+ '2. Key files and their purposes',
34
+ '3. Existing patterns and conventions',
35
+ '4. Areas that need attention',
36
+ '\nThen generate a comprehensive development plan.'
37
+ ];
38
+ if (docsIndex) {
39
+ contextParts.push('\n\nAvailable documentation (docs/README.md):', docsIndex);
40
+ }
41
+ if (agentsIndex) {
42
+ contextParts.push('\n\nAvailable agents (agents/README.md):', agentsIndex);
43
+ }
44
+ if (referencedDocs && referencedDocs.length > 0) {
45
+ const docSummary = referencedDocs.map((d) => `- ${d.path}`).join('\n');
46
+ contextParts.push('\n\nExisting documentation files:', docSummary);
47
+ }
48
+ if (referencedAgents && referencedAgents.length > 0) {
49
+ const agentSummary = referencedAgents.map((a) => `- ${a.path}`).join('\n');
50
+ contextParts.push('\n\nExisting agent playbooks:', agentSummary);
51
+ }
52
+ const userPrompt = contextParts.filter(Boolean).join('\n');
53
+ const { provider, modelId } = this.providerResult;
54
+ let stepCount = 0;
55
+ const result = await (0, ai_1.generateText)({
56
+ model: provider(modelId),
57
+ system: SYSTEM_PROMPT,
58
+ prompt: userPrompt,
59
+ tools: this.tools,
60
+ stopWhen: (0, ai_1.stepCountIs)(maxSteps),
61
+ maxOutputTokens,
62
+ onStepFinish: (step) => {
63
+ stepCount++;
64
+ callbacks?.onAgentStep?.({ agent: 'plan', step: stepCount });
65
+ for (const toolCall of step.toolCalls || []) {
66
+ callbacks?.onToolCall?.({
67
+ agent: 'plan',
68
+ toolName: toolCall.toolName,
69
+ args: 'args' in toolCall ? toolCall.args : undefined
70
+ });
71
+ const toolResult = step.toolResults?.find((r) => 'toolCallId' in r && r.toolCallId === toolCall.toolCallId);
72
+ if (toolResult && 'result' in toolResult) {
73
+ callbacks?.onToolResult?.({
74
+ agent: 'plan',
75
+ toolName: toolCall.toolName,
76
+ success: true,
77
+ summary: (0, agentEvents_1.summarizeToolResult)(toolCall.toolName, toolResult.result)
78
+ });
79
+ }
80
+ }
81
+ }
82
+ });
83
+ const toolsUsed = new Set();
84
+ for (const step of result.steps || []) {
85
+ for (const toolCall of step.toolCalls || []) {
86
+ toolsUsed.add(toolCall.toolName);
87
+ }
88
+ }
89
+ const toolsUsedArray = Array.from(toolsUsed);
90
+ const totalSteps = result.steps?.length || 1;
91
+ // Emit agent complete event
92
+ callbacks?.onAgentComplete?.({ agent: 'plan', toolsUsed: toolsUsedArray, steps: totalSteps });
93
+ return {
94
+ text: (0, contentSanitizer_1.sanitizeAIResponse)(result.text, { preserveFrontMatter: true, preserveComments: true }),
95
+ toolsUsed: toolsUsedArray,
96
+ steps: totalSteps
97
+ };
98
+ }
99
+ /**
100
+ * Update an existing plan with fresh context
101
+ */
102
+ async updatePlan(options) {
103
+ const { repoPath, planName, existingPlanContent, docsIndex, agentsIndex, referencedDocs, referencedAgents, maxSteps = 12, maxOutputTokens = 8000, callbacks, useSemanticContext = true, useLSP = false } = options;
104
+ if (!existingPlanContent) {
105
+ return this.generatePlan(options);
106
+ }
107
+ // Emit agent start event
108
+ callbacks?.onAgentStart?.({ agent: 'plan', target: planName });
109
+ // Use semantic context mode for token efficiency
110
+ if (useSemanticContext) {
111
+ return this.updatePlanWithSemanticContext(repoPath, planName, existingPlanContent, docsIndex, agentsIndex, referencedDocs, referencedAgents, maxOutputTokens, callbacks, useLSP);
112
+ }
113
+ // Tool-based mode for thorough analysis
114
+ return this.updatePlanWithTools(repoPath, planName, existingPlanContent, docsIndex, agentsIndex, referencedDocs, referencedAgents, maxSteps, maxOutputTokens, callbacks);
115
+ }
116
+ /**
117
+ * Update plan using pre-computed semantic context (more token efficient)
118
+ */
119
+ async updatePlanWithSemanticContext(repoPath, planName, existingPlanContent, docsIndex, agentsIndex, referencedDocs, referencedAgents, maxOutputTokens, callbacks, useLSP = false) {
120
+ const toolName = useLSP ? 'semanticAnalysis+LSP' : 'semanticAnalysis';
121
+ callbacks?.onToolCall?.({
122
+ agent: 'plan',
123
+ toolName,
124
+ args: { repoPath, planName, useLSP }
125
+ });
126
+ // Create context builder with LSP option
127
+ const contextBuilder = new semantic_1.SemanticContextBuilder({ useLSP });
128
+ // Pre-compute semantic context
129
+ const semanticContext = await contextBuilder.buildPlanContext(repoPath, planName);
130
+ // Cleanup LSP servers if enabled
131
+ await contextBuilder.shutdown();
132
+ callbacks?.onToolResult?.({
133
+ agent: 'plan',
134
+ toolName,
135
+ success: true,
136
+ summary: `Analyzed codebase for plan${useLSP ? ' with LSP' : ''}: ${semanticContext.length} chars of context`
137
+ });
138
+ const contextParts = [
139
+ `Update the development plan "${planName}" for repository: ${repoPath}`,
140
+ '',
141
+ semanticContext,
142
+ '',
143
+ 'Current plan content:',
144
+ '<plan>',
145
+ existingPlanContent,
146
+ '</plan>'
147
+ ];
148
+ if (docsIndex) {
149
+ contextParts.push('\n\nDocumentation index:', '<docs-index>', docsIndex, '</docs-index>');
150
+ }
151
+ if (agentsIndex) {
152
+ contextParts.push('\n\nAgent index:', '<agents-index>', agentsIndex, '</agents-index>');
153
+ }
154
+ if (referencedDocs && referencedDocs.length > 0) {
155
+ const docContent = referencedDocs
156
+ .map((d) => `<doc path="${d.path}">\n${d.content}\n</doc>`)
157
+ .join('\n\n');
158
+ contextParts.push('\n\nReferenced documentation:', docContent);
159
+ }
160
+ if (referencedAgents && referencedAgents.length > 0) {
161
+ const agentContent = referencedAgents
162
+ .map((a) => `<agent path="${a.path}">\n${a.content}\n</agent>`)
163
+ .join('\n\n');
164
+ contextParts.push('\n\nReferenced agents:', agentContent);
165
+ }
166
+ const userPrompt = contextParts.join('\n');
167
+ const { provider, modelId } = this.providerResult;
168
+ const result = await (0, ai_1.generateText)({
169
+ model: provider(modelId),
170
+ system: prompts_1.PLAN_UPDATE_PROMPT,
171
+ prompt: userPrompt,
172
+ maxOutputTokens
173
+ });
174
+ // Emit agent complete event
175
+ callbacks?.onAgentComplete?.({ agent: 'plan', toolsUsed: [toolName], steps: 1 });
176
+ return {
177
+ text: (0, contentSanitizer_1.sanitizeAIResponse)(result.text, { preserveFrontMatter: true, preserveComments: true }),
178
+ toolsUsed: [toolName],
179
+ steps: 1
180
+ };
181
+ }
182
+ /**
183
+ * Update plan using multi-step tool-based exploration (more thorough)
184
+ */
185
+ async updatePlanWithTools(repoPath, planName, existingPlanContent, docsIndex, agentsIndex, referencedDocs, referencedAgents, maxSteps, maxOutputTokens, callbacks) {
186
+ const contextParts = [
187
+ `Update the development plan "${planName}" for repository: ${repoPath}`,
188
+ '\nFirst, use tools to gather fresh context about the codebase.',
189
+ '\nCurrent plan content:',
190
+ '<plan>',
191
+ existingPlanContent,
192
+ '</plan>'
193
+ ];
194
+ if (docsIndex) {
195
+ contextParts.push('\n\nDocumentation index:', '<docs-index>', docsIndex, '</docs-index>');
196
+ }
197
+ if (agentsIndex) {
198
+ contextParts.push('\n\nAgent index:', '<agents-index>', agentsIndex, '</agents-index>');
199
+ }
200
+ if (referencedDocs && referencedDocs.length > 0) {
201
+ const docContent = referencedDocs
202
+ .map((d) => `<doc path="${d.path}">\n${d.content}\n</doc>`)
203
+ .join('\n\n');
204
+ contextParts.push('\n\nReferenced documentation:', docContent);
205
+ }
206
+ if (referencedAgents && referencedAgents.length > 0) {
207
+ const agentContent = referencedAgents
208
+ .map((a) => `<agent path="${a.path}">\n${a.content}\n</agent>`)
209
+ .join('\n\n');
210
+ contextParts.push('\n\nReferenced agents:', agentContent);
211
+ }
212
+ const userPrompt = contextParts.join('\n');
213
+ const { provider, modelId } = this.providerResult;
214
+ let stepCount = 0;
215
+ const result = await (0, ai_1.generateText)({
216
+ model: provider(modelId),
217
+ system: prompts_1.PLAN_UPDATE_PROMPT,
218
+ prompt: userPrompt,
219
+ tools: this.tools,
220
+ stopWhen: (0, ai_1.stepCountIs)(maxSteps),
221
+ maxOutputTokens,
222
+ onStepFinish: (step) => {
223
+ stepCount++;
224
+ callbacks?.onAgentStep?.({ agent: 'plan', step: stepCount });
225
+ for (const toolCall of step.toolCalls || []) {
226
+ callbacks?.onToolCall?.({
227
+ agent: 'plan',
228
+ toolName: toolCall.toolName,
229
+ args: 'args' in toolCall ? toolCall.args : undefined
230
+ });
231
+ const toolResult = step.toolResults?.find((r) => 'toolCallId' in r && r.toolCallId === toolCall.toolCallId);
232
+ if (toolResult && 'result' in toolResult) {
233
+ callbacks?.onToolResult?.({
234
+ agent: 'plan',
235
+ toolName: toolCall.toolName,
236
+ success: true,
237
+ summary: (0, agentEvents_1.summarizeToolResult)(toolCall.toolName, toolResult.result)
238
+ });
239
+ }
240
+ }
241
+ }
242
+ });
243
+ const toolsUsed = new Set();
244
+ for (const step of result.steps || []) {
245
+ for (const toolCall of step.toolCalls || []) {
246
+ toolsUsed.add(toolCall.toolName);
247
+ }
248
+ }
249
+ const toolsUsedArray = Array.from(toolsUsed);
250
+ const totalSteps = result.steps?.length || 1;
251
+ // Emit agent complete event
252
+ callbacks?.onAgentComplete?.({ agent: 'plan', toolsUsed: toolsUsedArray, steps: totalSteps });
253
+ return {
254
+ text: (0, contentSanitizer_1.sanitizeAIResponse)(result.text, { preserveFrontMatter: true, preserveComments: true }),
255
+ toolsUsed: toolsUsedArray,
256
+ steps: totalSteps
257
+ };
258
+ }
259
+ /**
260
+ * Generate a structured development plan
261
+ */
262
+ async generateStructuredPlan(options) {
263
+ const { repoPath, planName, summary, docsIndex, agentsIndex, maxSteps = 10, maxOutputTokens = 8000, callbacks } = options;
264
+ // Emit agent start event
265
+ callbacks?.onAgentStart?.({ agent: 'plan', target: planName });
266
+ const analysisPrompt = `Analyze the repository at ${repoPath} for creating a development plan "${planName}".
267
+ ${summary ? `Goal: ${summary}` : ''}
268
+
269
+ Gather information about:
270
+ 1. Project structure and key directories
271
+ 2. Main source files and their purposes
272
+ 3. Existing tests and testing patterns
273
+ 4. Configuration files
274
+ 5. Dependencies and integrations
275
+
276
+ ${docsIndex ? `\nAvailable docs:\n${docsIndex}` : ''}
277
+ ${agentsIndex ? `\nAvailable agents:\n${agentsIndex}` : ''}`;
278
+ const { provider, modelId } = this.providerResult;
279
+ let stepCount = 0;
280
+ // First gather context using tools
281
+ const analysisResult = await (0, ai_1.generateText)({
282
+ model: provider(modelId),
283
+ system: 'Analyze the codebase to understand its structure for development planning.',
284
+ prompt: analysisPrompt,
285
+ tools: this.tools,
286
+ stopWhen: (0, ai_1.stepCountIs)(maxSteps),
287
+ maxOutputTokens: Math.floor(maxOutputTokens / 2),
288
+ onStepFinish: (step) => {
289
+ stepCount++;
290
+ callbacks?.onAgentStep?.({ agent: 'plan', step: stepCount });
291
+ for (const toolCall of step.toolCalls || []) {
292
+ callbacks?.onToolCall?.({
293
+ agent: 'plan',
294
+ toolName: toolCall.toolName,
295
+ args: 'args' in toolCall ? toolCall.args : undefined
296
+ });
297
+ const toolResult = step.toolResults?.find((r) => 'toolCallId' in r && r.toolCallId === toolCall.toolCallId);
298
+ if (toolResult && 'result' in toolResult) {
299
+ callbacks?.onToolResult?.({
300
+ agent: 'plan',
301
+ toolName: toolCall.toolName,
302
+ success: true,
303
+ summary: (0, agentEvents_1.summarizeToolResult)(toolCall.toolName, toolResult.result)
304
+ });
305
+ }
306
+ }
307
+ }
308
+ });
309
+ const toolsUsed = new Set();
310
+ for (const step of analysisResult.steps || []) {
311
+ for (const toolCall of step.toolCalls || []) {
312
+ toolsUsed.add(toolCall.toolName);
313
+ }
314
+ }
315
+ // Then generate structured plan
316
+ const plan = await (0, ai_1.generateObject)({
317
+ model: provider(modelId),
318
+ schema: schemas_1.DevelopmentPlanSchema,
319
+ system: 'Generate a structured development plan based on the codebase analysis.',
320
+ prompt: `Based on this analysis:\n${analysisResult.text}\n\nCreate a structured development plan for: ${planName}${summary ? `\nGoal: ${summary}` : ''}`,
321
+ maxOutputTokens: Math.floor(maxOutputTokens / 2)
322
+ });
323
+ const toolsUsedArray = Array.from(toolsUsed);
324
+ // Emit agent complete event
325
+ callbacks?.onAgentComplete?.({ agent: 'plan', toolsUsed: toolsUsedArray, steps: stepCount });
326
+ return {
327
+ plan: plan.object,
328
+ toolsUsed: toolsUsedArray
329
+ };
330
+ }
331
+ /**
332
+ * Get the current configuration
333
+ */
334
+ getConfig() {
335
+ return {
336
+ provider: this.config.provider,
337
+ model: this.providerResult.modelId
338
+ };
339
+ }
340
+ }
341
+ exports.PlanAgent = PlanAgent;
342
+ //# sourceMappingURL=planAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planAgent.js","sourceRoot":"","sources":["../../../../src/services/ai/agents/planAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { LLMConfig } from '../../../types';
2
+ import type { AgentType as GeneratorAgentType } from '../../../generators/agents/agentTypes';
3
+ import type { AgentPlaybook } from '../schemas';
4
+ import type { AgentEventCallbacks } from '../agentEvents';
5
+ export interface PlaybookAgentOptions {
6
+ repoPath: string;
7
+ agentType: GeneratorAgentType;
8
+ existingContext?: string;
9
+ maxSteps?: number;
10
+ maxOutputTokens?: number;
11
+ callbacks?: AgentEventCallbacks;
12
+ /** Use pre-computed semantic context instead of tool-based exploration (more token efficient) */
13
+ useSemanticContext?: boolean;
14
+ /** Enable LSP for deeper semantic analysis (type info, references, implementations) */
15
+ useLSP?: boolean;
16
+ }
17
+ export interface PlaybookAgentResult {
18
+ text: string;
19
+ toolsUsed: string[];
20
+ steps: number;
21
+ }
22
+ export declare class PlaybookAgent {
23
+ private config;
24
+ private providerResult;
25
+ private tools;
26
+ constructor(config: LLMConfig);
27
+ /**
28
+ * Generate a playbook using tools for context gathering
29
+ */
30
+ generatePlaybook(options: PlaybookAgentOptions): Promise<PlaybookAgentResult>;
31
+ /**
32
+ * Generate playbook using pre-computed semantic context (more token efficient)
33
+ */
34
+ private generateWithSemanticContext;
35
+ /**
36
+ * Generate playbook using multi-step tool-based exploration (more thorough)
37
+ */
38
+ private generateWithTools;
39
+ /**
40
+ * Generate structured playbook output
41
+ */
42
+ generateStructuredPlaybook(options: PlaybookAgentOptions): Promise<{
43
+ playbook: AgentPlaybook;
44
+ toolsUsed: string[];
45
+ }>;
46
+ /**
47
+ * Get the current configuration
48
+ */
49
+ getConfig(): {
50
+ provider: string;
51
+ model: string;
52
+ };
53
+ }
54
+ //# sourceMappingURL=playbookAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbookAgent.d.ts","sourceRoot":"","sources":["../../../../src/services/ai/agents/playbookAgent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,iGAAiG;IACjG,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uFAAuF;IACvF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAsBD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,KAAK,CAAU;gBAEX,MAAM,EAAE,SAAS;IAM7B;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAenF;;OAEG;YACW,2BAA2B;IAiEzC;;OAEG;YACW,iBAAiB;IAiF/B;;OAEG;IACG,0BAA0B,CAC9B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;QACT,QAAQ,EAAE,aAAa,CAAC;QACxB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IAgFF;;OAEG;IACH,SAAS,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAMjD"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlaybookAgent = void 0;
4
+ const ai_1 = require("ai");
5
+ const providerFactory_1 = require("../providerFactory");
6
+ const tools_1 = require("../tools");
7
+ const schemas_1 = require("../schemas");
8
+ const agentEvents_1 = require("../agentEvents");
9
+ const semantic_1 = require("../../semantic");
10
+ const contentSanitizer_1 = require("../../../utils/contentSanitizer");
11
+ const prompts_1 = require("../prompts");
12
+ // Use shared system prompt from prompts module
13
+ const SYSTEM_PROMPT = (0, prompts_1.getPlaybookAgentPrompt)();
14
+ const AGENT_TYPE_FOCUS = {
15
+ 'code-reviewer': ['**/*.ts', '**/*.tsx', '.eslintrc*', 'tsconfig.json'],
16
+ 'bug-fixer': ['**/*.ts', '**/*.test.ts', '**/error*', '**/exception*'],
17
+ 'feature-developer': ['src/**/*', 'package.json', 'README.md'],
18
+ 'refactoring-specialist': ['src/**/*.ts', 'tsconfig.json', '.eslintrc*'],
19
+ 'test-writer': ['**/*.test.ts', '**/*.spec.ts', 'jest.config*', 'vitest.config*'],
20
+ 'documentation-writer': ['**/*.md', 'docs/**/*', 'README.md', 'src/**/*.ts'],
21
+ 'performance-optimizer': ['**/*.ts', 'webpack.config*', 'package.json'],
22
+ 'security-auditor': ['**/*.ts', '.env*', 'package.json', '**/auth*', '**/security*'],
23
+ 'backend-specialist': ['src/services/**/*', 'src/api/**/*', 'server/**/*'],
24
+ 'frontend-specialist': ['src/components/**/*', 'src/pages/**/*', '**/*.tsx', '**/*.css'],
25
+ 'architect-specialist': ['src/**/*', 'package.json', 'tsconfig.json', 'docs/**/*'],
26
+ 'devops-specialist': ['Dockerfile*', 'docker-compose*', '.github/**/*', 'ci/**/*'],
27
+ 'database-specialist': ['**/models/**/*', '**/migrations/**/*', '**/schema*', 'prisma/**/*'],
28
+ 'mobile-specialist': ['**/*.tsx', 'app/**/*', 'expo*', 'react-native*']
29
+ };
30
+ class PlaybookAgent {
31
+ constructor(config) {
32
+ this.config = config;
33
+ this.providerResult = (0, providerFactory_1.createProvider)(config);
34
+ this.tools = (0, tools_1.getCodeAnalysisTools)();
35
+ }
36
+ /**
37
+ * Generate a playbook using tools for context gathering
38
+ */
39
+ async generatePlaybook(options) {
40
+ const { repoPath, agentType, existingContext, maxSteps = 12, maxOutputTokens = 8000, callbacks, useSemanticContext = true, useLSP = false } = options;
41
+ // Emit agent start event
42
+ callbacks?.onAgentStart?.({ agent: 'playbook', target: agentType });
43
+ // Use semantic context mode for token efficiency
44
+ if (useSemanticContext) {
45
+ return this.generateWithSemanticContext(repoPath, agentType, existingContext, maxOutputTokens, callbacks, useLSP);
46
+ }
47
+ // Tool-based mode for thorough analysis
48
+ return this.generateWithTools(repoPath, agentType, existingContext, maxSteps, maxOutputTokens, callbacks);
49
+ }
50
+ /**
51
+ * Generate playbook using pre-computed semantic context (more token efficient)
52
+ */
53
+ async generateWithSemanticContext(repoPath, agentType, existingContext, maxOutputTokens, callbacks, useLSP = false) {
54
+ const toolName = useLSP ? 'semanticAnalysis+LSP' : 'semanticAnalysis';
55
+ callbacks?.onToolCall?.({
56
+ agent: 'playbook',
57
+ toolName,
58
+ args: { repoPath, agentType, useLSP }
59
+ });
60
+ // Create context builder with LSP option
61
+ const contextBuilder = new semantic_1.SemanticContextBuilder({ useLSP });
62
+ // Pre-compute semantic context
63
+ const semanticContext = await contextBuilder.buildPlaybookContext(repoPath, agentType);
64
+ // Cleanup LSP servers if enabled
65
+ await contextBuilder.shutdown();
66
+ callbacks?.onToolResult?.({
67
+ agent: 'playbook',
68
+ toolName,
69
+ success: true,
70
+ summary: `Analyzed codebase for ${agentType}${useLSP ? ' with LSP' : ''}: ${semanticContext.length} chars of context`
71
+ });
72
+ const userPrompt = `Generate a comprehensive playbook for a ${agentType} agent.
73
+
74
+ Repository: ${repoPath}
75
+
76
+ ${semanticContext}
77
+
78
+ ${existingContext ? `Existing context:\n${existingContext}` : ''}
79
+
80
+ Generate a detailed, actionable playbook with:
81
+ 1. Clear understanding of what files/areas the agent should focus on
82
+ 2. Specific workflows and steps for common tasks
83
+ 3. Best practices derived from the actual codebase
84
+ 4. Key files and their purposes`;
85
+ const { provider, modelId } = this.providerResult;
86
+ const result = await (0, ai_1.generateText)({
87
+ model: provider(modelId),
88
+ system: SYSTEM_PROMPT,
89
+ prompt: userPrompt,
90
+ maxOutputTokens
91
+ });
92
+ // Emit agent complete event
93
+ callbacks?.onAgentComplete?.({ agent: 'playbook', toolsUsed: [toolName], steps: 1 });
94
+ return {
95
+ text: (0, contentSanitizer_1.sanitizeAIResponse)(result.text, { preserveFrontMatter: true }),
96
+ toolsUsed: [toolName],
97
+ steps: 1
98
+ };
99
+ }
100
+ /**
101
+ * Generate playbook using multi-step tool-based exploration (more thorough)
102
+ */
103
+ async generateWithTools(repoPath, agentType, existingContext, maxSteps, maxOutputTokens, callbacks) {
104
+ const focusPatterns = AGENT_TYPE_FOCUS[agentType] || ['src/**/*'];
105
+ const userPrompt = `Generate a comprehensive playbook for a ${agentType} agent.
106
+
107
+ Repository: ${repoPath}
108
+ Focus patterns: ${focusPatterns.join(', ')}
109
+ ${existingContext ? `Existing context:\n${existingContext}` : ''}
110
+
111
+ Use the tools to analyze the codebase and identify:
112
+ - Relevant files for this agent type
113
+ - Patterns and conventions
114
+ - Testing strategies (if applicable)
115
+ - Key workflows
116
+
117
+ Then generate a detailed, actionable playbook.`;
118
+ const { provider, modelId } = this.providerResult;
119
+ let stepCount = 0;
120
+ const result = await (0, ai_1.generateText)({
121
+ model: provider(modelId),
122
+ system: SYSTEM_PROMPT,
123
+ prompt: userPrompt,
124
+ tools: this.tools,
125
+ stopWhen: (0, ai_1.stepCountIs)(maxSteps),
126
+ maxOutputTokens,
127
+ onStepFinish: (step) => {
128
+ stepCount++;
129
+ callbacks?.onAgentStep?.({ agent: 'playbook', step: stepCount });
130
+ for (const toolCall of step.toolCalls || []) {
131
+ callbacks?.onToolCall?.({
132
+ agent: 'playbook',
133
+ toolName: toolCall.toolName,
134
+ args: 'args' in toolCall ? toolCall.args : undefined
135
+ });
136
+ const toolResult = step.toolResults?.find((r) => 'toolCallId' in r && r.toolCallId === toolCall.toolCallId);
137
+ if (toolResult && 'result' in toolResult) {
138
+ callbacks?.onToolResult?.({
139
+ agent: 'playbook',
140
+ toolName: toolCall.toolName,
141
+ success: true,
142
+ summary: (0, agentEvents_1.summarizeToolResult)(toolCall.toolName, toolResult.result)
143
+ });
144
+ }
145
+ }
146
+ }
147
+ });
148
+ // Extract tool names used
149
+ const toolsUsed = new Set();
150
+ for (const step of result.steps || []) {
151
+ for (const toolCall of step.toolCalls || []) {
152
+ toolsUsed.add(toolCall.toolName);
153
+ }
154
+ }
155
+ const toolsUsedArray = Array.from(toolsUsed);
156
+ const totalSteps = result.steps?.length || 1;
157
+ // Emit agent complete event
158
+ callbacks?.onAgentComplete?.({ agent: 'playbook', toolsUsed: toolsUsedArray, steps: totalSteps });
159
+ return {
160
+ text: (0, contentSanitizer_1.sanitizeAIResponse)(result.text, { preserveFrontMatter: true }),
161
+ toolsUsed: toolsUsedArray,
162
+ steps: totalSteps
163
+ };
164
+ }
165
+ /**
166
+ * Generate structured playbook output
167
+ */
168
+ async generateStructuredPlaybook(options) {
169
+ const { repoPath, agentType, existingContext, maxSteps = 8, maxOutputTokens = 8000, callbacks } = options;
170
+ // Emit agent start event
171
+ callbacks?.onAgentStart?.({ agent: 'playbook', target: agentType });
172
+ const focusPatterns = AGENT_TYPE_FOCUS[agentType] || ['src/**/*'];
173
+ const analysisPrompt = `For a ${agentType} agent working in ${repoPath}, find:
174
+ 1. Relevant source files (focus on: ${focusPatterns.join(', ')})
175
+ 2. Test files and patterns
176
+ 3. Configuration files
177
+ 4. Documentation
178
+ ${existingContext ? `\nExisting context: ${existingContext}` : ''}`;
179
+ const { provider, modelId } = this.providerResult;
180
+ let stepCount = 0;
181
+ // First gather context using tools
182
+ const analysisResult = await (0, ai_1.generateText)({
183
+ model: provider(modelId),
184
+ system: 'Analyze the codebase for the specified agent type.',
185
+ prompt: analysisPrompt,
186
+ tools: this.tools,
187
+ stopWhen: (0, ai_1.stepCountIs)(maxSteps),
188
+ maxOutputTokens: Math.floor(maxOutputTokens / 2),
189
+ onStepFinish: (step) => {
190
+ stepCount++;
191
+ callbacks?.onAgentStep?.({ agent: 'playbook', step: stepCount });
192
+ for (const toolCall of step.toolCalls || []) {
193
+ callbacks?.onToolCall?.({
194
+ agent: 'playbook',
195
+ toolName: toolCall.toolName,
196
+ args: 'args' in toolCall ? toolCall.args : undefined
197
+ });
198
+ const toolResult = step.toolResults?.find((r) => 'toolCallId' in r && r.toolCallId === toolCall.toolCallId);
199
+ if (toolResult && 'result' in toolResult) {
200
+ callbacks?.onToolResult?.({
201
+ agent: 'playbook',
202
+ toolName: toolCall.toolName,
203
+ success: true,
204
+ summary: (0, agentEvents_1.summarizeToolResult)(toolCall.toolName, toolResult.result)
205
+ });
206
+ }
207
+ }
208
+ }
209
+ });
210
+ // Extract tool names used
211
+ const toolsUsed = new Set();
212
+ for (const step of analysisResult.steps || []) {
213
+ for (const toolCall of step.toolCalls || []) {
214
+ toolsUsed.add(toolCall.toolName);
215
+ }
216
+ }
217
+ // Then generate structured playbook
218
+ const playbook = await (0, ai_1.generateObject)({
219
+ model: provider(modelId),
220
+ schema: schemas_1.AgentPlaybookSchema,
221
+ system: 'Generate a structured agent playbook based on the analysis.',
222
+ prompt: `Analysis:\n${analysisResult.text}\n\nGenerate a structured playbook for: ${agentType}`,
223
+ maxOutputTokens: Math.floor(maxOutputTokens / 2)
224
+ });
225
+ const toolsUsedArray = Array.from(toolsUsed);
226
+ // Emit agent complete event
227
+ callbacks?.onAgentComplete?.({ agent: 'playbook', toolsUsed: toolsUsedArray, steps: stepCount });
228
+ return {
229
+ playbook: playbook.object,
230
+ toolsUsed: toolsUsedArray
231
+ };
232
+ }
233
+ /**
234
+ * Get the current configuration
235
+ */
236
+ getConfig() {
237
+ return {
238
+ provider: this.config.provider,
239
+ model: this.providerResult.modelId
240
+ };
241
+ }
242
+ }
243
+ exports.PlaybookAgent = PlaybookAgent;
244
+ //# sourceMappingURL=playbookAgent.js.map