@ai-coders/context 0.5.2 → 0.6.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 (328) hide show
  1. package/README.md +247 -12
  2. package/dist/generators/agents/agentGenerator.d.ts +3 -0
  3. package/dist/generators/agents/agentGenerator.d.ts.map +1 -1
  4. package/dist/generators/agents/agentGenerator.js +13 -7
  5. package/dist/generators/agents/agentGenerator.js.map +1 -1
  6. package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -1
  7. package/dist/generators/agents/templates/playbookTemplate.js +3 -1
  8. package/dist/generators/agents/templates/playbookTemplate.js.map +1 -1
  9. package/dist/generators/documentation/codebaseMapGenerator.d.ts +98 -0
  10. package/dist/generators/documentation/codebaseMapGenerator.d.ts.map +1 -0
  11. package/dist/generators/documentation/codebaseMapGenerator.js +247 -0
  12. package/dist/generators/documentation/codebaseMapGenerator.js.map +1 -0
  13. package/dist/generators/documentation/documentationGenerator.d.ts +2 -0
  14. package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
  15. package/dist/generators/documentation/documentationGenerator.js +20 -1
  16. package/dist/generators/documentation/documentationGenerator.js.map +1 -1
  17. package/dist/generators/documentation/index.d.ts +2 -0
  18. package/dist/generators/documentation/index.d.ts.map +1 -1
  19. package/dist/generators/documentation/index.js +3 -1
  20. package/dist/generators/documentation/index.js.map +1 -1
  21. package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -1
  22. package/dist/generators/documentation/templates/architectureTemplate.js +2 -31
  23. package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -1
  24. package/dist/generators/documentation/templates/common.d.ts +4 -1
  25. package/dist/generators/documentation/templates/common.d.ts.map +1 -1
  26. package/dist/generators/documentation/templates/common.js +4 -2
  27. package/dist/generators/documentation/templates/common.js.map +1 -1
  28. package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -1
  29. package/dist/generators/plans/templates/planTemplate.js +46 -2
  30. package/dist/generators/plans/templates/planTemplate.js.map +1 -1
  31. package/dist/generators/skills/index.d.ts +7 -0
  32. package/dist/generators/skills/index.d.ts.map +1 -0
  33. package/dist/generators/skills/index.js +15 -0
  34. package/dist/generators/skills/index.js.map +1 -0
  35. package/dist/generators/skills/skillGenerator.d.ts +53 -0
  36. package/dist/generators/skills/skillGenerator.d.ts.map +1 -0
  37. package/dist/generators/skills/skillGenerator.js +149 -0
  38. package/dist/generators/skills/skillGenerator.js.map +1 -0
  39. package/dist/generators/skills/templates/indexTemplate.d.ts +13 -0
  40. package/dist/generators/skills/templates/indexTemplate.d.ts.map +1 -0
  41. package/dist/generators/skills/templates/indexTemplate.js +102 -0
  42. package/dist/generators/skills/templates/indexTemplate.js.map +1 -0
  43. package/dist/generators/skills/templates/skillTemplate.d.ts +20 -0
  44. package/dist/generators/skills/templates/skillTemplate.d.ts.map +1 -0
  45. package/dist/generators/skills/templates/skillTemplate.js +85 -0
  46. package/dist/generators/skills/templates/skillTemplate.js.map +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1315 -43
  49. package/dist/index.js.map +1 -1
  50. package/dist/services/ai/agentEvents.d.ts +1 -1
  51. package/dist/services/ai/agentEvents.d.ts.map +1 -1
  52. package/dist/services/ai/agents/index.d.ts +2 -0
  53. package/dist/services/ai/agents/index.d.ts.map +1 -1
  54. package/dist/services/ai/agents/index.js +3 -1
  55. package/dist/services/ai/agents/index.js.map +1 -1
  56. package/dist/services/ai/agents/skillAgent.d.ts +49 -0
  57. package/dist/services/ai/agents/skillAgent.d.ts.map +1 -0
  58. package/dist/services/ai/agents/skillAgent.js +179 -0
  59. package/dist/services/ai/agents/skillAgent.js.map +1 -0
  60. package/dist/services/ai/prompts/index.d.ts +1 -1
  61. package/dist/services/ai/prompts/index.d.ts.map +1 -1
  62. package/dist/services/ai/prompts/index.js +2 -1
  63. package/dist/services/ai/prompts/index.js.map +1 -1
  64. package/dist/services/ai/prompts/sharedPrompts.d.ts +4 -0
  65. package/dist/services/ai/prompts/sharedPrompts.d.ts.map +1 -1
  66. package/dist/services/ai/prompts/sharedPrompts.js +33 -0
  67. package/dist/services/ai/prompts/sharedPrompts.js.map +1 -1
  68. package/dist/services/ai/schemas.d.ts +98 -1
  69. package/dist/services/ai/schemas.d.ts.map +1 -1
  70. package/dist/services/ai/schemas.js +61 -3
  71. package/dist/services/ai/schemas.js.map +1 -1
  72. package/dist/services/ai/toolRegistry.d.ts.map +1 -1
  73. package/dist/services/ai/toolRegistry.js +17 -0
  74. package/dist/services/ai/toolRegistry.js.map +1 -1
  75. package/dist/services/ai/tools/fillScaffoldingTool.d.ts +21 -4
  76. package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +1 -1
  77. package/dist/services/ai/tools/fillScaffoldingTool.js +17 -0
  78. package/dist/services/ai/tools/fillScaffoldingTool.js.map +1 -1
  79. package/dist/services/ai/tools/getCodebaseMapTool.d.ts +17 -0
  80. package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +1 -0
  81. package/dist/services/ai/tools/getCodebaseMapTool.js +115 -0
  82. package/dist/services/ai/tools/getCodebaseMapTool.js.map +1 -0
  83. package/dist/services/ai/tools/index.d.ts +3 -2
  84. package/dist/services/ai/tools/index.d.ts.map +1 -1
  85. package/dist/services/ai/tools/index.js +12 -3
  86. package/dist/services/ai/tools/index.js.map +1 -1
  87. package/dist/services/ai/tools/initializeContextTool.d.ts +22 -4
  88. package/dist/services/ai/tools/initializeContextTool.d.ts.map +1 -1
  89. package/dist/services/ai/tools/initializeContextTool.js +201 -16
  90. package/dist/services/ai/tools/initializeContextTool.js.map +1 -1
  91. package/dist/services/ai/tools/scaffoldPlanTool.d.ts +11 -0
  92. package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +1 -1
  93. package/dist/services/ai/tools/scaffoldPlanTool.js +79 -7
  94. package/dist/services/ai/tools/scaffoldPlanTool.js.map +1 -1
  95. package/dist/services/export/exportRulesService.d.ts +62 -0
  96. package/dist/services/export/exportRulesService.d.ts.map +1 -0
  97. package/dist/services/export/exportRulesService.js +242 -0
  98. package/dist/services/export/exportRulesService.js.map +1 -0
  99. package/dist/services/export/index.d.ts +5 -0
  100. package/dist/services/export/index.d.ts.map +1 -0
  101. package/dist/services/export/index.js +10 -0
  102. package/dist/services/export/index.js.map +1 -0
  103. package/dist/services/export/skillExportService.d.ts +64 -0
  104. package/dist/services/export/skillExportService.d.ts.map +1 -0
  105. package/dist/services/export/skillExportService.js +238 -0
  106. package/dist/services/export/skillExportService.js.map +1 -0
  107. package/dist/services/fill/skillFillService.d.ts +50 -0
  108. package/dist/services/fill/skillFillService.d.ts.map +1 -0
  109. package/dist/services/fill/skillFillService.js +254 -0
  110. package/dist/services/fill/skillFillService.js.map +1 -0
  111. package/dist/services/import/agentsDetector.d.ts +12 -0
  112. package/dist/services/import/agentsDetector.d.ts.map +1 -0
  113. package/dist/services/import/agentsDetector.js +183 -0
  114. package/dist/services/import/agentsDetector.js.map +1 -0
  115. package/dist/services/import/importAgentsService.d.ts +14 -0
  116. package/dist/services/import/importAgentsService.d.ts.map +1 -0
  117. package/dist/services/import/importAgentsService.js +195 -0
  118. package/dist/services/import/importAgentsService.js.map +1 -0
  119. package/dist/services/import/importRulesService.d.ts +17 -0
  120. package/dist/services/import/importRulesService.d.ts.map +1 -0
  121. package/dist/services/import/importRulesService.js +222 -0
  122. package/dist/services/import/importRulesService.js.map +1 -0
  123. package/dist/services/import/index.d.ts +7 -0
  124. package/dist/services/import/index.d.ts.map +1 -0
  125. package/dist/services/import/index.js +28 -0
  126. package/dist/services/import/index.js.map +1 -0
  127. package/dist/services/import/presets.d.ts +8 -0
  128. package/dist/services/import/presets.d.ts.map +1 -0
  129. package/dist/services/import/presets.js +176 -0
  130. package/dist/services/import/presets.js.map +1 -0
  131. package/dist/services/import/rulesDetector.d.ts +16 -0
  132. package/dist/services/import/rulesDetector.d.ts.map +1 -0
  133. package/dist/services/import/rulesDetector.js +278 -0
  134. package/dist/services/import/rulesDetector.js.map +1 -0
  135. package/dist/services/import/types.d.ts +72 -0
  136. package/dist/services/import/types.d.ts.map +1 -0
  137. package/dist/services/import/types.js +3 -0
  138. package/dist/services/import/types.js.map +1 -0
  139. package/dist/services/mcp/mcpServer.d.ts +24 -0
  140. package/dist/services/mcp/mcpServer.d.ts.map +1 -1
  141. package/dist/services/mcp/mcpServer.js +1651 -7
  142. package/dist/services/mcp/mcpServer.js.map +1 -1
  143. package/dist/services/quickSync/index.d.ts +3 -0
  144. package/dist/services/quickSync/index.d.ts.map +1 -0
  145. package/dist/services/quickSync/index.js +7 -0
  146. package/dist/services/quickSync/index.js.map +1 -0
  147. package/dist/services/quickSync/quickSyncService.d.ts +72 -0
  148. package/dist/services/quickSync/quickSyncService.d.ts.map +1 -0
  149. package/dist/services/quickSync/quickSyncService.js +268 -0
  150. package/dist/services/quickSync/quickSyncService.js.map +1 -0
  151. package/dist/services/report/index.d.ts +3 -0
  152. package/dist/services/report/index.d.ts.map +1 -0
  153. package/dist/services/report/index.js +6 -0
  154. package/dist/services/report/index.js.map +1 -0
  155. package/dist/services/report/reportService.d.ts +131 -0
  156. package/dist/services/report/reportService.d.ts.map +1 -0
  157. package/dist/services/report/reportService.js +372 -0
  158. package/dist/services/report/reportService.js.map +1 -0
  159. package/dist/services/semantic/contextBuilder.d.ts +8 -1
  160. package/dist/services/semantic/contextBuilder.d.ts.map +1 -1
  161. package/dist/services/semantic/contextBuilder.js +107 -20
  162. package/dist/services/semantic/contextBuilder.js.map +1 -1
  163. package/dist/services/shared/globPatterns.d.ts +48 -0
  164. package/dist/services/shared/globPatterns.d.ts.map +1 -0
  165. package/dist/services/shared/globPatterns.js +110 -0
  166. package/dist/services/shared/globPatterns.js.map +1 -0
  167. package/dist/services/shared/index.d.ts +10 -0
  168. package/dist/services/shared/index.d.ts.map +1 -0
  169. package/dist/services/shared/index.js +46 -0
  170. package/dist/services/shared/index.js.map +1 -0
  171. package/dist/services/shared/pathHelpers.d.ts +71 -0
  172. package/dist/services/shared/pathHelpers.d.ts.map +1 -0
  173. package/dist/services/shared/pathHelpers.js +162 -0
  174. package/dist/services/shared/pathHelpers.js.map +1 -0
  175. package/dist/services/shared/types.d.ts +74 -0
  176. package/dist/services/shared/types.d.ts.map +1 -0
  177. package/dist/services/shared/types.js +44 -0
  178. package/dist/services/shared/types.js.map +1 -0
  179. package/dist/services/shared/uiHelpers.d.ts +70 -0
  180. package/dist/services/shared/uiHelpers.d.ts.map +1 -0
  181. package/dist/services/shared/uiHelpers.js +131 -0
  182. package/dist/services/shared/uiHelpers.js.map +1 -0
  183. package/dist/services/stack/index.d.ts +6 -0
  184. package/dist/services/stack/index.d.ts.map +1 -0
  185. package/dist/services/stack/index.js +25 -0
  186. package/dist/services/stack/index.js.map +1 -0
  187. package/dist/services/stack/projectTypeClassifier.d.ts +59 -0
  188. package/dist/services/stack/projectTypeClassifier.d.ts.map +1 -0
  189. package/dist/services/stack/projectTypeClassifier.js +242 -0
  190. package/dist/services/stack/projectTypeClassifier.js.map +1 -0
  191. package/dist/services/stack/scaffoldFilter.d.ts +75 -0
  192. package/dist/services/stack/scaffoldFilter.d.ts.map +1 -0
  193. package/dist/services/stack/scaffoldFilter.js +222 -0
  194. package/dist/services/stack/scaffoldFilter.js.map +1 -0
  195. package/dist/services/stack/stackDetector.d.ts +43 -0
  196. package/dist/services/stack/stackDetector.d.ts.map +1 -0
  197. package/dist/services/stack/stackDetector.js +406 -0
  198. package/dist/services/stack/stackDetector.js.map +1 -0
  199. package/dist/services/start/index.d.ts +3 -0
  200. package/dist/services/start/index.d.ts.map +1 -0
  201. package/dist/services/start/index.js +6 -0
  202. package/dist/services/start/index.js.map +1 -0
  203. package/dist/services/start/startService.d.ts +64 -0
  204. package/dist/services/start/startService.d.ts.map +1 -0
  205. package/dist/services/start/startService.js +180 -0
  206. package/dist/services/start/startService.js.map +1 -0
  207. package/dist/services/sync/presets.d.ts.map +1 -1
  208. package/dist/services/sync/presets.js +16 -1
  209. package/dist/services/sync/presets.js.map +1 -1
  210. package/dist/services/sync/types.d.ts +1 -1
  211. package/dist/services/sync/types.d.ts.map +1 -1
  212. package/dist/services/workflow/autoAdvance.d.ts +38 -0
  213. package/dist/services/workflow/autoAdvance.d.ts.map +1 -0
  214. package/dist/services/workflow/autoAdvance.js +219 -0
  215. package/dist/services/workflow/autoAdvance.js.map +1 -0
  216. package/dist/services/workflow/index.d.ts +6 -0
  217. package/dist/services/workflow/index.d.ts.map +1 -0
  218. package/dist/services/workflow/index.js +11 -0
  219. package/dist/services/workflow/index.js.map +1 -0
  220. package/dist/services/workflow/workflowService.d.ts +98 -0
  221. package/dist/services/workflow/workflowService.d.ts.map +1 -0
  222. package/dist/services/workflow/workflowService.js +210 -0
  223. package/dist/services/workflow/workflowService.js.map +1 -0
  224. package/dist/utils/cliUI.d.ts +4 -0
  225. package/dist/utils/cliUI.d.ts.map +1 -1
  226. package/dist/utils/cliUI.js +31 -1
  227. package/dist/utils/cliUI.js.map +1 -1
  228. package/dist/utils/i18n.d.ts +202 -0
  229. package/dist/utils/i18n.d.ts.map +1 -1
  230. package/dist/utils/i18n.js +438 -2
  231. package/dist/utils/i18n.js.map +1 -1
  232. package/dist/utils/theme.d.ts +1 -0
  233. package/dist/utils/theme.d.ts.map +1 -1
  234. package/dist/utils/theme.js +1 -0
  235. package/dist/utils/theme.js.map +1 -1
  236. package/dist/workflow/agents/agentRegistry.d.ts +82 -0
  237. package/dist/workflow/agents/agentRegistry.d.ts.map +1 -0
  238. package/dist/workflow/agents/agentRegistry.js +205 -0
  239. package/dist/workflow/agents/agentRegistry.js.map +1 -0
  240. package/dist/workflow/agents/index.d.ts +7 -0
  241. package/dist/workflow/agents/index.d.ts.map +1 -0
  242. package/dist/workflow/agents/index.js +14 -0
  243. package/dist/workflow/agents/index.js.map +1 -0
  244. package/dist/workflow/collaboration.d.ts +110 -0
  245. package/dist/workflow/collaboration.d.ts.map +1 -0
  246. package/dist/workflow/collaboration.js +301 -0
  247. package/dist/workflow/collaboration.js.map +1 -0
  248. package/dist/workflow/index.d.ts +25 -0
  249. package/dist/workflow/index.d.ts.map +1 -0
  250. package/dist/workflow/index.js +124 -0
  251. package/dist/workflow/index.js.map +1 -0
  252. package/dist/workflow/orchestration/agentOrchestrator.d.ts +68 -0
  253. package/dist/workflow/orchestration/agentOrchestrator.d.ts.map +1 -0
  254. package/dist/workflow/orchestration/agentOrchestrator.js +280 -0
  255. package/dist/workflow/orchestration/agentOrchestrator.js.map +1 -0
  256. package/dist/workflow/orchestration/documentLinker.d.ts +100 -0
  257. package/dist/workflow/orchestration/documentLinker.d.ts.map +1 -0
  258. package/dist/workflow/orchestration/documentLinker.js +266 -0
  259. package/dist/workflow/orchestration/documentLinker.js.map +1 -0
  260. package/dist/workflow/orchestration/index.d.ts +9 -0
  261. package/dist/workflow/orchestration/index.d.ts.map +1 -0
  262. package/dist/workflow/orchestration/index.js +25 -0
  263. package/dist/workflow/orchestration/index.js.map +1 -0
  264. package/dist/workflow/orchestrator.d.ts +99 -0
  265. package/dist/workflow/orchestrator.d.ts.map +1 -0
  266. package/dist/workflow/orchestrator.js +217 -0
  267. package/dist/workflow/orchestrator.js.map +1 -0
  268. package/dist/workflow/phases.d.ts +64 -0
  269. package/dist/workflow/phases.d.ts.map +1 -0
  270. package/dist/workflow/phases.js +151 -0
  271. package/dist/workflow/phases.js.map +1 -0
  272. package/dist/workflow/plans/index.d.ts +8 -0
  273. package/dist/workflow/plans/index.d.ts.map +1 -0
  274. package/dist/workflow/plans/index.js +27 -0
  275. package/dist/workflow/plans/index.js.map +1 -0
  276. package/dist/workflow/plans/planLinker.d.ts +119 -0
  277. package/dist/workflow/plans/planLinker.d.ts.map +1 -0
  278. package/dist/workflow/plans/planLinker.js +499 -0
  279. package/dist/workflow/plans/planLinker.js.map +1 -0
  280. package/dist/workflow/plans/types.d.ts +167 -0
  281. package/dist/workflow/plans/types.d.ts.map +1 -0
  282. package/dist/workflow/plans/types.js +25 -0
  283. package/dist/workflow/plans/types.js.map +1 -0
  284. package/dist/workflow/prevcConfig.d.ts +27 -0
  285. package/dist/workflow/prevcConfig.d.ts.map +1 -0
  286. package/dist/workflow/prevcConfig.js +153 -0
  287. package/dist/workflow/prevcConfig.js.map +1 -0
  288. package/dist/workflow/roles.d.ts +44 -0
  289. package/dist/workflow/roles.d.ts.map +1 -0
  290. package/dist/workflow/roles.js +112 -0
  291. package/dist/workflow/roles.js.map +1 -0
  292. package/dist/workflow/scaling.d.ts +44 -0
  293. package/dist/workflow/scaling.d.ts.map +1 -0
  294. package/dist/workflow/scaling.js +224 -0
  295. package/dist/workflow/scaling.js.map +1 -0
  296. package/dist/workflow/skills/frontmatter.d.ts +23 -0
  297. package/dist/workflow/skills/frontmatter.d.ts.map +1 -0
  298. package/dist/workflow/skills/frontmatter.js +100 -0
  299. package/dist/workflow/skills/frontmatter.js.map +1 -0
  300. package/dist/workflow/skills/index.d.ts +10 -0
  301. package/dist/workflow/skills/index.d.ts.map +1 -0
  302. package/dist/workflow/skills/index.js +22 -0
  303. package/dist/workflow/skills/index.js.map +1 -0
  304. package/dist/workflow/skills/skillRegistry.d.ts +60 -0
  305. package/dist/workflow/skills/skillRegistry.d.ts.map +1 -0
  306. package/dist/workflow/skills/skillRegistry.js +257 -0
  307. package/dist/workflow/skills/skillRegistry.js.map +1 -0
  308. package/dist/workflow/skills/skillTemplates.d.ts +16 -0
  309. package/dist/workflow/skills/skillTemplates.d.ts.map +1 -0
  310. package/dist/workflow/skills/skillTemplates.js +610 -0
  311. package/dist/workflow/skills/skillTemplates.js.map +1 -0
  312. package/dist/workflow/skills/types.d.ts +72 -0
  313. package/dist/workflow/skills/types.d.ts.map +1 -0
  314. package/dist/workflow/skills/types.js +48 -0
  315. package/dist/workflow/skills/types.js.map +1 -0
  316. package/dist/workflow/status/statusManager.d.ts +84 -0
  317. package/dist/workflow/status/statusManager.d.ts.map +1 -0
  318. package/dist/workflow/status/statusManager.js +402 -0
  319. package/dist/workflow/status/statusManager.js.map +1 -0
  320. package/dist/workflow/status/templates.d.ts +40 -0
  321. package/dist/workflow/status/templates.d.ts.map +1 -0
  322. package/dist/workflow/status/templates.js +148 -0
  323. package/dist/workflow/status/templates.js.map +1 -0
  324. package/dist/workflow/types.d.ts +178 -0
  325. package/dist/workflow/types.d.ts.map +1 -0
  326. package/dist/workflow/types.js +25 -0
  327. package/dist/workflow/types.js.map +1 -0
  328. package/package.json +1 -1
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Plan Linker
3
+ *
4
+ * Links implementation plans to the PREVC workflow system.
5
+ * Provides bidirectional sync between plan progress and workflow phases.
6
+ */
7
+ import { PlanReference, LinkedPlan, PlanPhase, PlanDecision, WorkflowPlans } from './types';
8
+ import { PrevcPhase, StatusType } from '../types';
9
+ import { AgentMetadata } from '../agents';
10
+ /**
11
+ * Plan Linker class
12
+ *
13
+ * Responsible for:
14
+ * - Linking plans to PREVC workflow
15
+ * - Parsing plan frontmatter and content
16
+ * - Tracking plan progress
17
+ * - Recording decisions
18
+ *
19
+ * Agent discovery is delegated to AgentRegistry (SRP).
20
+ */
21
+ export declare class PlanLinker {
22
+ private readonly repoPath;
23
+ private readonly contextPath;
24
+ private readonly plansPath;
25
+ private readonly workflowPath;
26
+ private readonly agentRegistry;
27
+ constructor(repoPath: string);
28
+ /**
29
+ * Discover all available agents (built-in + custom)
30
+ * Delegates to AgentRegistry
31
+ */
32
+ discoverAgents(): Promise<Array<{
33
+ type: string;
34
+ path: string;
35
+ isCustom: boolean;
36
+ }>>;
37
+ /**
38
+ * Get agent info including custom agents
39
+ * Delegates to AgentRegistry
40
+ */
41
+ getAgentInfo(agentType: string): Promise<AgentMetadata>;
42
+ /**
43
+ * Link a plan to the current workflow
44
+ */
45
+ linkPlan(planSlug: string): Promise<PlanReference | null>;
46
+ /**
47
+ * Get all linked plans for the current workflow
48
+ */
49
+ getLinkedPlans(): Promise<WorkflowPlans>;
50
+ /**
51
+ * Get detailed plan with workflow mapping
52
+ */
53
+ getLinkedPlan(planSlug: string): Promise<LinkedPlan | null>;
54
+ /**
55
+ * Get plans for a specific PREVC phase
56
+ */
57
+ getPlansForPhase(phase: PrevcPhase): Promise<LinkedPlan[]>;
58
+ /**
59
+ * Update plan phase status and sync with workflow
60
+ */
61
+ updatePlanPhase(planSlug: string, phaseId: string, status: StatusType): Promise<boolean>;
62
+ /**
63
+ * Record a decision in the plan
64
+ */
65
+ recordDecision(planSlug: string, decision: Omit<PlanDecision, 'id' | 'decidedAt'>): Promise<PlanDecision>;
66
+ /**
67
+ * Get current phase mapping for workflow
68
+ */
69
+ getPhaseMappingForWorkflow(plan: LinkedPlan, currentPrevcPhase: PrevcPhase): PlanPhase[];
70
+ /**
71
+ * Check if plan has pending work for a PREVC phase
72
+ */
73
+ hasPendingWorkForPhase(plan: LinkedPlan, phase: PrevcPhase): boolean;
74
+ /**
75
+ * Get plan progress summary
76
+ */
77
+ getPlanProgress(planSlug: string): Promise<{
78
+ overall: number;
79
+ byPhase: Record<PrevcPhase, {
80
+ total: number;
81
+ completed: number;
82
+ percentage: number;
83
+ }>;
84
+ }>;
85
+ /**
86
+ * Parse plan markdown file to extract info
87
+ */
88
+ private parsePlanFile;
89
+ /**
90
+ * Parse frontmatter from plan content
91
+ */
92
+ private parseFrontMatter;
93
+ /**
94
+ * Parse plan file into LinkedPlan structure
95
+ */
96
+ private parsePlanToLinked;
97
+ /**
98
+ * Extract phases from plan markdown body (fallback)
99
+ */
100
+ private extractPhasesFromBody;
101
+ /**
102
+ * Extract decisions from plan content
103
+ */
104
+ private extractDecisions;
105
+ /**
106
+ * Extract agents from plan body (fallback)
107
+ */
108
+ private extractAgentsFromBody;
109
+ /**
110
+ * Extract documentation references from plan body (fallback)
111
+ */
112
+ private extractDocsFromBody;
113
+ /**
114
+ * Add plan reference to workflow tracking
115
+ */
116
+ private addPlanToWorkflow;
117
+ }
118
+ export declare function createPlanLinker(repoPath: string): PlanLinker;
119
+ //# sourceMappingURL=planLinker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planLinker.d.ts","sourceRoot":"","sources":["../../../src/workflow/plans/planLinker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAiB,aAAa,EAAuB,MAAM,WAAW,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,QAAQ,EAAE,MAAM;IAQ5B;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IASzF;;;OAGG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI7D;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAyB/D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAe9C;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiBjE;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiBhE;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,OAAO,CAAC;IAuCnB;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,CAAC,GAC/C,OAAO,CAAC,YAAY,CAAC;IA+BxB;;OAEG;IACH,0BAA0B,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,GAAG,SAAS,EAAE;IAIxF;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAKpE;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvF,CAAC;IAiCF;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+FxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4C7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,iBAAiB;CA4BhC;AAGD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAE7D"}
@@ -0,0 +1,499 @@
1
+ "use strict";
2
+ /**
3
+ * Plan Linker
4
+ *
5
+ * Links implementation plans to the PREVC workflow system.
6
+ * Provides bidirectional sync between plan progress and workflow phases.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.PlanLinker = void 0;
43
+ exports.createPlanLinker = createPlanLinker;
44
+ const path = __importStar(require("path"));
45
+ const fs = __importStar(require("fs-extra"));
46
+ const types_1 = require("./types");
47
+ const agents_1 = require("../agents");
48
+ /**
49
+ * Plan Linker class
50
+ *
51
+ * Responsible for:
52
+ * - Linking plans to PREVC workflow
53
+ * - Parsing plan frontmatter and content
54
+ * - Tracking plan progress
55
+ * - Recording decisions
56
+ *
57
+ * Agent discovery is delegated to AgentRegistry (SRP).
58
+ */
59
+ class PlanLinker {
60
+ constructor(repoPath) {
61
+ this.repoPath = repoPath;
62
+ this.contextPath = path.join(repoPath, '.context');
63
+ this.plansPath = path.join(this.contextPath, 'plans');
64
+ this.workflowPath = path.join(this.contextPath, 'workflow');
65
+ this.agentRegistry = (0, agents_1.createAgentRegistry)(repoPath);
66
+ }
67
+ /**
68
+ * Discover all available agents (built-in + custom)
69
+ * Delegates to AgentRegistry
70
+ */
71
+ async discoverAgents() {
72
+ const discovered = await this.agentRegistry.discoverAll();
73
+ return discovered.all.map(a => ({
74
+ type: a.type,
75
+ path: a.path,
76
+ isCustom: a.isCustom,
77
+ }));
78
+ }
79
+ /**
80
+ * Get agent info including custom agents
81
+ * Delegates to AgentRegistry
82
+ */
83
+ async getAgentInfo(agentType) {
84
+ return this.agentRegistry.getAgentMetadata(agentType);
85
+ }
86
+ /**
87
+ * Link a plan to the current workflow
88
+ */
89
+ async linkPlan(planSlug) {
90
+ const planPath = path.join(this.plansPath, `${planSlug}.md`);
91
+ if (!await fs.pathExists(planPath)) {
92
+ return null;
93
+ }
94
+ const content = await fs.readFile(planPath, 'utf-8');
95
+ const planInfo = this.parsePlanFile(content, planSlug);
96
+ const ref = {
97
+ slug: planSlug,
98
+ path: `plans/${planSlug}.md`,
99
+ title: planInfo.title,
100
+ summary: planInfo.summary,
101
+ linkedAt: new Date().toISOString(),
102
+ status: 'active',
103
+ };
104
+ // Update workflow plans tracking
105
+ await this.addPlanToWorkflow(ref);
106
+ return ref;
107
+ }
108
+ /**
109
+ * Get all linked plans for the current workflow
110
+ */
111
+ async getLinkedPlans() {
112
+ const plansFile = path.join(this.workflowPath, 'plans.json');
113
+ if (!await fs.pathExists(plansFile)) {
114
+ return { active: [], completed: [] };
115
+ }
116
+ const content = await fs.readFile(plansFile, 'utf-8');
117
+ try {
118
+ return JSON.parse(content) || { active: [], completed: [] };
119
+ }
120
+ catch {
121
+ return { active: [], completed: [] };
122
+ }
123
+ }
124
+ /**
125
+ * Get detailed plan with workflow mapping
126
+ */
127
+ async getLinkedPlan(planSlug) {
128
+ const plans = await this.getLinkedPlans();
129
+ const ref = [...plans.active, ...plans.completed].find(p => p.slug === planSlug);
130
+ if (!ref) {
131
+ return null;
132
+ }
133
+ const planPath = path.join(this.contextPath, ref.path);
134
+ if (!await fs.pathExists(planPath)) {
135
+ return null;
136
+ }
137
+ const content = await fs.readFile(planPath, 'utf-8');
138
+ return this.parsePlanToLinked(content, ref);
139
+ }
140
+ /**
141
+ * Get plans for a specific PREVC phase
142
+ */
143
+ async getPlansForPhase(phase) {
144
+ const plans = await this.getLinkedPlans();
145
+ const linkedPlans = [];
146
+ for (const ref of plans.active) {
147
+ const plan = await this.getLinkedPlan(ref.slug);
148
+ if (plan) {
149
+ const hasPhase = plan.phases.some(p => p.prevcPhase === phase);
150
+ if (hasPhase) {
151
+ linkedPlans.push(plan);
152
+ }
153
+ }
154
+ }
155
+ return linkedPlans;
156
+ }
157
+ /**
158
+ * Update plan phase status and sync with workflow
159
+ */
160
+ async updatePlanPhase(planSlug, phaseId, status) {
161
+ const trackingFile = path.join(this.workflowPath, 'plan-tracking', `${planSlug}.json`);
162
+ let tracking = {};
163
+ if (await fs.pathExists(trackingFile)) {
164
+ const content = await fs.readFile(trackingFile, 'utf-8');
165
+ try {
166
+ tracking = JSON.parse(content) || {};
167
+ }
168
+ catch {
169
+ tracking = {};
170
+ }
171
+ }
172
+ // Update phase tracking
173
+ if (!tracking.phases) {
174
+ tracking.phases = {};
175
+ }
176
+ tracking.phases[phaseId] = {
177
+ status,
178
+ updatedAt: new Date().toISOString(),
179
+ };
180
+ // Calculate progress
181
+ const plan = await this.getLinkedPlan(planSlug);
182
+ if (plan) {
183
+ const totalPhases = plan.phases.length;
184
+ const completedPhases = plan.phases.filter(p => tracking.phases?.[p.id]?.status === 'completed').length;
185
+ tracking.progress = totalPhases > 0 ? Math.round((completedPhases / totalPhases) * 100) : 0;
186
+ }
187
+ // Save tracking
188
+ await fs.ensureDir(path.dirname(trackingFile));
189
+ await fs.writeFile(trackingFile, JSON.stringify(tracking, null, 2), 'utf-8');
190
+ return true;
191
+ }
192
+ /**
193
+ * Record a decision in the plan
194
+ */
195
+ async recordDecision(planSlug, decision) {
196
+ const trackingFile = path.join(this.workflowPath, 'plan-tracking', `${planSlug}.json`);
197
+ let tracking = {};
198
+ if (await fs.pathExists(trackingFile)) {
199
+ const content = await fs.readFile(trackingFile, 'utf-8');
200
+ try {
201
+ tracking = JSON.parse(content) || {};
202
+ }
203
+ catch {
204
+ tracking = {};
205
+ }
206
+ }
207
+ if (!tracking.decisions) {
208
+ tracking.decisions = [];
209
+ }
210
+ const fullDecision = {
211
+ ...decision,
212
+ id: `dec-${Date.now()}`,
213
+ decidedAt: new Date().toISOString(),
214
+ };
215
+ tracking.decisions.push(fullDecision);
216
+ await fs.ensureDir(path.dirname(trackingFile));
217
+ await fs.writeFile(trackingFile, JSON.stringify(tracking, null, 2), 'utf-8');
218
+ return fullDecision;
219
+ }
220
+ /**
221
+ * Get current phase mapping for workflow
222
+ */
223
+ getPhaseMappingForWorkflow(plan, currentPrevcPhase) {
224
+ return plan.phases.filter(p => p.prevcPhase === currentPrevcPhase);
225
+ }
226
+ /**
227
+ * Check if plan has pending work for a PREVC phase
228
+ */
229
+ hasPendingWorkForPhase(plan, phase) {
230
+ const phasesInPrevc = plan.phases.filter(p => p.prevcPhase === phase);
231
+ return phasesInPrevc.some(p => p.status === 'pending' || p.status === 'in_progress');
232
+ }
233
+ /**
234
+ * Get plan progress summary
235
+ */
236
+ async getPlanProgress(planSlug) {
237
+ const plan = await this.getLinkedPlan(planSlug);
238
+ if (!plan) {
239
+ return { overall: 0, byPhase: {} };
240
+ }
241
+ const byPhase = {
242
+ P: { total: 0, completed: 0, percentage: 0 },
243
+ R: { total: 0, completed: 0, percentage: 0 },
244
+ E: { total: 0, completed: 0, percentage: 0 },
245
+ V: { total: 0, completed: 0, percentage: 0 },
246
+ C: { total: 0, completed: 0, percentage: 0 },
247
+ };
248
+ for (const phase of plan.phases) {
249
+ byPhase[phase.prevcPhase].total++;
250
+ if (phase.status === 'completed') {
251
+ byPhase[phase.prevcPhase].completed++;
252
+ }
253
+ }
254
+ // Calculate percentages
255
+ for (const key of Object.keys(byPhase)) {
256
+ const { total, completed } = byPhase[key];
257
+ byPhase[key].percentage = total > 0 ? Math.round((completed / total) * 100) : 0;
258
+ }
259
+ return {
260
+ overall: plan.progress,
261
+ byPhase,
262
+ };
263
+ }
264
+ /**
265
+ * Parse plan markdown file to extract info
266
+ */
267
+ parsePlanFile(content, slug) {
268
+ const titleMatch = content.match(/^#\s+(.+?)(?:\s+Plan)?$/m);
269
+ const summaryMatch = content.match(/^>\s*(.+)$/m);
270
+ return {
271
+ title: titleMatch?.[1] || slug,
272
+ summary: summaryMatch?.[1],
273
+ };
274
+ }
275
+ /**
276
+ * Parse frontmatter from plan content
277
+ */
278
+ parseFrontMatter(content) {
279
+ // Check if content starts with frontmatter
280
+ if (!content.startsWith('---')) {
281
+ return null;
282
+ }
283
+ const endIndex = content.indexOf('---', 3);
284
+ if (endIndex === -1) {
285
+ return null;
286
+ }
287
+ const frontMatterContent = content.slice(3, endIndex).trim();
288
+ const result = {
289
+ agents: [],
290
+ docs: [],
291
+ phases: [],
292
+ };
293
+ // Parse agents section
294
+ const agentsMatch = frontMatterContent.match(/agents:\s*\n((?:\s+-[^\n]+\n?)+)/);
295
+ if (agentsMatch) {
296
+ const agentLines = agentsMatch[1].split('\n').filter(l => l.trim());
297
+ let currentAgent = null;
298
+ for (const line of agentLines) {
299
+ const typeMatch = line.match(/type:\s*"([^"]+)"/);
300
+ const roleMatch = line.match(/role:\s*"([^"]+)"/);
301
+ if (typeMatch) {
302
+ if (currentAgent) {
303
+ result.agents.push(currentAgent);
304
+ }
305
+ currentAgent = { type: typeMatch[1] };
306
+ }
307
+ if (roleMatch && currentAgent) {
308
+ currentAgent.role = roleMatch[1];
309
+ }
310
+ }
311
+ if (currentAgent) {
312
+ result.agents.push(currentAgent);
313
+ }
314
+ }
315
+ // Parse docs section
316
+ const docsMatch = frontMatterContent.match(/docs:\s*\n((?:\s+-[^\n]+\n?)+)/);
317
+ if (docsMatch) {
318
+ const docLines = docsMatch[1].split('\n').filter(l => l.trim());
319
+ for (const line of docLines) {
320
+ const docMatch = line.match(/-\s*"([^"]+)"/);
321
+ if (docMatch) {
322
+ result.docs.push(docMatch[1]);
323
+ }
324
+ }
325
+ }
326
+ // Parse phases section
327
+ const phasesMatch = frontMatterContent.match(/phases:\s*\n((?:\s+-[^\n]+\n?)+)/);
328
+ if (phasesMatch) {
329
+ const phaseLines = phasesMatch[1].split('\n').filter(l => l.trim());
330
+ let currentPhase = null;
331
+ for (const line of phaseLines) {
332
+ const idMatch = line.match(/id:\s*"([^"]+)"/);
333
+ const nameMatch = line.match(/name:\s*"([^"]+)"/);
334
+ const prevcMatch = line.match(/prevc:\s*"([^"]+)"/);
335
+ if (idMatch) {
336
+ if (currentPhase && currentPhase.id && currentPhase.name && currentPhase.prevc) {
337
+ result.phases.push(currentPhase);
338
+ }
339
+ currentPhase = { id: idMatch[1], name: '', prevc: '' };
340
+ }
341
+ if (nameMatch && currentPhase) {
342
+ currentPhase.name = nameMatch[1];
343
+ }
344
+ if (prevcMatch && currentPhase) {
345
+ currentPhase.prevc = prevcMatch[1];
346
+ }
347
+ }
348
+ if (currentPhase && currentPhase.id && currentPhase.name && currentPhase.prevc) {
349
+ result.phases.push(currentPhase);
350
+ }
351
+ }
352
+ return result;
353
+ }
354
+ /**
355
+ * Parse plan file into LinkedPlan structure
356
+ */
357
+ parsePlanToLinked(content, ref) {
358
+ // Try frontmatter first, then fallback to body parsing
359
+ const frontMatter = this.parseFrontMatter(content);
360
+ const phases = frontMatter?.phases.length
361
+ ? frontMatter.phases.map(p => ({
362
+ id: p.id,
363
+ name: p.name,
364
+ prevcPhase: p.prevc,
365
+ steps: [],
366
+ status: 'pending',
367
+ }))
368
+ : this.extractPhasesFromBody(content);
369
+ const agents = frontMatter?.agents.length
370
+ ? frontMatter.agents.map(a => a.type)
371
+ : this.extractAgentsFromBody(content);
372
+ const docs = frontMatter?.docs.length
373
+ ? frontMatter.docs
374
+ : this.extractDocsFromBody(content);
375
+ const decisions = this.extractDecisions();
376
+ const completedPhases = phases.filter(p => p.status === 'completed').length;
377
+ const progress = phases.length > 0 ? Math.round((completedPhases / phases.length) * 100) : 0;
378
+ const currentPhase = phases.find(p => p.status === 'in_progress')?.id;
379
+ return {
380
+ ref,
381
+ phases,
382
+ decisions,
383
+ risks: [],
384
+ agents,
385
+ docs,
386
+ progress,
387
+ currentPhase,
388
+ // Include full agent lineup with roles from frontmatter
389
+ agentLineup: frontMatter?.agents || agents.map(a => ({ type: a })),
390
+ };
391
+ }
392
+ /**
393
+ * Extract phases from plan markdown body (fallback)
394
+ */
395
+ extractPhasesFromBody(content) {
396
+ const phases = [];
397
+ // Match "### Phase N — Name" or "### Phase N - Name"
398
+ const phaseRegex = /###\s+Phase\s+(\d+)\s*[—-]\s*(.+)/g;
399
+ let match;
400
+ while ((match = phaseRegex.exec(content)) !== null) {
401
+ const phaseNum = match[1];
402
+ const phaseName = match[2].trim();
403
+ const phaseId = `phase-${phaseNum}`;
404
+ // Determine PREVC mapping based on phase name
405
+ const lowerName = phaseName.toLowerCase();
406
+ let prevcPhase = 'E'; // Default to Execution
407
+ for (const [keyword, phase] of Object.entries(types_1.PLAN_PHASE_TO_PREVC)) {
408
+ if (lowerName.includes(keyword)) {
409
+ prevcPhase = phase;
410
+ break;
411
+ }
412
+ }
413
+ phases.push({
414
+ id: phaseId,
415
+ name: phaseName,
416
+ prevcPhase,
417
+ steps: [],
418
+ status: 'pending',
419
+ });
420
+ }
421
+ // If no phases found, create default structure
422
+ if (phases.length === 0) {
423
+ phases.push({ id: 'phase-1', name: 'Discovery & Alignment', prevcPhase: 'P', steps: [], status: 'pending' }, { id: 'phase-2', name: 'Implementation', prevcPhase: 'E', steps: [], status: 'pending' }, { id: 'phase-3', name: 'Validation & Handoff', prevcPhase: 'V', steps: [], status: 'pending' });
424
+ }
425
+ return phases;
426
+ }
427
+ /**
428
+ * Extract decisions from plan content
429
+ */
430
+ extractDecisions() {
431
+ // Decisions are typically recorded during execution, start empty
432
+ return [];
433
+ }
434
+ /**
435
+ * Extract agents from plan body (fallback)
436
+ */
437
+ extractAgentsFromBody(content) {
438
+ const agents = [];
439
+ // Match agent references in table rows
440
+ const agentRegex = /\[([^\]]+)\]\(\.\.\/agents\/([^)]+)\.md\)/g;
441
+ let match;
442
+ while ((match = agentRegex.exec(content)) !== null) {
443
+ const agentType = match[2];
444
+ if (!agents.includes(agentType)) {
445
+ agents.push(agentType);
446
+ }
447
+ }
448
+ return agents;
449
+ }
450
+ /**
451
+ * Extract documentation references from plan body (fallback)
452
+ */
453
+ extractDocsFromBody(content) {
454
+ const docs = [];
455
+ // Match doc references
456
+ const docRegex = /\[([^\]]+)\]\(\.\.\/docs\/([^)]+)\)/g;
457
+ let match;
458
+ while ((match = docRegex.exec(content)) !== null) {
459
+ const docPath = match[2];
460
+ if (!docs.includes(docPath)) {
461
+ docs.push(docPath);
462
+ }
463
+ }
464
+ return docs;
465
+ }
466
+ /**
467
+ * Add plan reference to workflow tracking
468
+ */
469
+ async addPlanToWorkflow(ref) {
470
+ const plansFile = path.join(this.workflowPath, 'plans.json');
471
+ let plans = { active: [], completed: [] };
472
+ if (await fs.pathExists(plansFile)) {
473
+ const content = await fs.readFile(plansFile, 'utf-8');
474
+ try {
475
+ plans = JSON.parse(content) || { active: [], completed: [] };
476
+ }
477
+ catch {
478
+ plans = { active: [], completed: [] };
479
+ }
480
+ }
481
+ // Remove if already exists
482
+ plans.active = plans.active.filter(p => p.slug !== ref.slug);
483
+ plans.completed = plans.completed.filter(p => p.slug !== ref.slug);
484
+ // Add to active
485
+ plans.active.push(ref);
486
+ // Set as primary if first plan
487
+ if (!plans.primary) {
488
+ plans.primary = ref.slug;
489
+ }
490
+ await fs.ensureDir(this.workflowPath);
491
+ await fs.writeFile(plansFile, JSON.stringify(plans, null, 2), 'utf-8');
492
+ }
493
+ }
494
+ exports.PlanLinker = PlanLinker;
495
+ // Export singleton factory
496
+ function createPlanLinker(repoPath) {
497
+ return new PlanLinker(repoPath);
498
+ }
499
+ //# sourceMappingURL=planLinker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planLinker.js","sourceRoot":"","sources":["../../../src/workflow/plans/planLinker.ts"],"names":[],"mappings":"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"}