@ai-coders/context 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. package/README.md +125 -68
  2. package/dist/commands/export.d.ts +4 -0
  3. package/dist/commands/export.d.ts.map +1 -0
  4. package/dist/commands/export.js +39 -0
  5. package/dist/commands/export.js.map +1 -0
  6. package/dist/commands/fill.d.ts +13 -0
  7. package/dist/commands/fill.d.ts.map +1 -0
  8. package/dist/commands/fill.js +65 -0
  9. package/dist/commands/fill.js.map +1 -0
  10. package/dist/commands/index.d.ts +29 -0
  11. package/dist/commands/index.d.ts.map +1 -0
  12. package/dist/commands/index.js +74 -0
  13. package/dist/commands/index.js.map +1 -0
  14. package/dist/commands/init.d.ts +12 -0
  15. package/dist/commands/init.d.ts.map +1 -0
  16. package/dist/commands/init.js +64 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/commands/mcp.d.ts +4 -0
  19. package/dist/commands/mcp.d.ts.map +1 -0
  20. package/dist/commands/mcp.js +92 -0
  21. package/dist/commands/mcp.js.map +1 -0
  22. package/dist/commands/plan.d.ts +9 -0
  23. package/dist/commands/plan.d.ts.map +1 -0
  24. package/dist/commands/plan.js +126 -0
  25. package/dist/commands/plan.js.map +1 -0
  26. package/dist/commands/report.d.ts +4 -0
  27. package/dist/commands/report.d.ts.map +1 -0
  28. package/dist/commands/report.js +36 -0
  29. package/dist/commands/report.js.map +1 -0
  30. package/dist/commands/serve.d.ts +4 -0
  31. package/dist/commands/serve.d.ts.map +1 -0
  32. package/dist/commands/serve.js +29 -0
  33. package/dist/commands/serve.js.map +1 -0
  34. package/dist/commands/skill.d.ts +4 -0
  35. package/dist/commands/skill.d.ts.map +1 -0
  36. package/dist/commands/skill.js +217 -0
  37. package/dist/commands/skill.js.map +1 -0
  38. package/dist/commands/start.d.ts +4 -0
  39. package/dist/commands/start.d.ts.map +1 -0
  40. package/dist/commands/start.js +56 -0
  41. package/dist/commands/start.js.map +1 -0
  42. package/dist/commands/sync.d.ts +9 -0
  43. package/dist/commands/sync.d.ts.map +1 -0
  44. package/dist/commands/sync.js +134 -0
  45. package/dist/commands/sync.js.map +1 -0
  46. package/dist/commands/types.d.ts +17 -0
  47. package/dist/commands/types.d.ts.map +1 -0
  48. package/dist/commands/types.js +3 -0
  49. package/dist/commands/types.js.map +1 -0
  50. package/dist/commands/update.d.ts +4 -0
  51. package/dist/commands/update.d.ts.map +1 -0
  52. package/dist/commands/update.js +111 -0
  53. package/dist/commands/update.js.map +1 -0
  54. package/dist/commands/workflow.d.ts +4 -0
  55. package/dist/commands/workflow.d.ts.map +1 -0
  56. package/dist/commands/workflow.js +171 -0
  57. package/dist/commands/workflow.js.map +1 -0
  58. package/dist/generators/agents/agentGenerator.d.ts +2 -0
  59. package/dist/generators/agents/agentGenerator.d.ts.map +1 -1
  60. package/dist/generators/agents/agentGenerator.js +46 -2
  61. package/dist/generators/agents/agentGenerator.js.map +1 -1
  62. package/dist/generators/agents/templates/index.d.ts +0 -1
  63. package/dist/generators/agents/templates/index.d.ts.map +1 -1
  64. package/dist/generators/agents/templates/index.js +1 -3
  65. package/dist/generators/agents/templates/index.js.map +1 -1
  66. package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -1
  67. package/dist/generators/agents/templates/playbookTemplate.js +11 -0
  68. package/dist/generators/agents/templates/playbookTemplate.js.map +1 -1
  69. package/dist/generators/documentation/documentationGenerator.d.ts +2 -1
  70. package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
  71. package/dist/generators/documentation/documentationGenerator.js +53 -34
  72. package/dist/generators/documentation/documentationGenerator.js.map +1 -1
  73. package/dist/generators/documentation/templates/apiReferenceTemplate.d.ts.map +1 -1
  74. package/dist/generators/documentation/templates/apiReferenceTemplate.js +11 -0
  75. package/dist/generators/documentation/templates/apiReferenceTemplate.js.map +1 -1
  76. package/dist/generators/documentation/templates/architectureTemplate.d.ts +11 -0
  77. package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -1
  78. package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -1
  79. package/dist/generators/documentation/templates/dataFlowTemplate.d.ts.map +1 -1
  80. package/dist/generators/documentation/templates/dataFlowTemplate.js +11 -0
  81. package/dist/generators/documentation/templates/dataFlowTemplate.js.map +1 -1
  82. package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts.map +1 -1
  83. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js +11 -0
  84. package/dist/generators/documentation/templates/developmentWorkflowTemplate.js.map +1 -1
  85. package/dist/generators/documentation/templates/glossaryTemplate.d.ts.map +1 -1
  86. package/dist/generators/documentation/templates/glossaryTemplate.js.map +1 -1
  87. package/dist/generators/documentation/templates/index.d.ts +0 -12
  88. package/dist/generators/documentation/templates/index.d.ts.map +1 -1
  89. package/dist/generators/documentation/templates/index.js +1 -25
  90. package/dist/generators/documentation/templates/index.js.map +1 -1
  91. package/dist/generators/documentation/templates/migrationTemplate.d.ts.map +1 -1
  92. package/dist/generators/documentation/templates/migrationTemplate.js +11 -0
  93. package/dist/generators/documentation/templates/migrationTemplate.js.map +1 -1
  94. package/dist/generators/documentation/templates/onboardingTemplate.d.ts.map +1 -1
  95. package/dist/generators/documentation/templates/onboardingTemplate.js +11 -0
  96. package/dist/generators/documentation/templates/onboardingTemplate.js.map +1 -1
  97. package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts.map +1 -1
  98. package/dist/generators/documentation/templates/projectOverviewTemplate.js +11 -0
  99. package/dist/generators/documentation/templates/projectOverviewTemplate.js.map +1 -1
  100. package/dist/generators/documentation/templates/securityTemplate.d.ts.map +1 -1
  101. package/dist/generators/documentation/templates/securityTemplate.js +11 -0
  102. package/dist/generators/documentation/templates/securityTemplate.js.map +1 -1
  103. package/dist/generators/documentation/templates/testingTemplate.d.ts.map +1 -1
  104. package/dist/generators/documentation/templates/testingTemplate.js +11 -0
  105. package/dist/generators/documentation/templates/testingTemplate.js.map +1 -1
  106. package/dist/generators/documentation/templates/toolingTemplate.d.ts.map +1 -1
  107. package/dist/generators/documentation/templates/toolingTemplate.js +11 -0
  108. package/dist/generators/documentation/templates/toolingTemplate.js.map +1 -1
  109. package/dist/generators/documentation/templates/troubleshootingTemplate.d.ts.map +1 -1
  110. package/dist/generators/documentation/templates/troubleshootingTemplate.js +11 -0
  111. package/dist/generators/documentation/templates/troubleshootingTemplate.js.map +1 -1
  112. package/dist/generators/plans/templates/planTemplate.d.ts +11 -0
  113. package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -1
  114. package/dist/generators/plans/templates/planTemplate.js.map +1 -1
  115. package/dist/generators/shared/index.d.ts +1 -0
  116. package/dist/generators/shared/index.d.ts.map +1 -1
  117. package/dist/generators/shared/index.js +16 -0
  118. package/dist/generators/shared/index.js.map +1 -1
  119. package/dist/generators/shared/scaffoldStructures.d.ts +13 -0
  120. package/dist/generators/shared/scaffoldStructures.d.ts.map +1 -0
  121. package/dist/generators/shared/scaffoldStructures.js +30 -0
  122. package/dist/generators/shared/scaffoldStructures.js.map +1 -0
  123. package/dist/generators/shared/structures/agents/definitions.d.ts +18 -0
  124. package/dist/generators/shared/structures/agents/definitions.d.ts.map +1 -0
  125. package/dist/generators/shared/structures/agents/definitions.js +22 -0
  126. package/dist/generators/shared/structures/agents/definitions.js.map +1 -0
  127. package/dist/generators/shared/structures/agents/factory.d.ts +9 -0
  128. package/dist/generators/shared/structures/agents/factory.d.ts.map +1 -0
  129. package/dist/generators/shared/structures/agents/factory.js +112 -0
  130. package/dist/generators/shared/structures/agents/factory.js.map +1 -0
  131. package/dist/generators/shared/structures/agents/index.d.ts +6 -0
  132. package/dist/generators/shared/structures/agents/index.d.ts.map +1 -0
  133. package/dist/generators/shared/structures/agents/index.js +24 -0
  134. package/dist/generators/shared/structures/agents/index.js.map +1 -0
  135. package/dist/generators/shared/structures/documentation/apiReference.d.ts +3 -0
  136. package/dist/generators/shared/structures/documentation/apiReference.d.ts.map +1 -0
  137. package/dist/generators/shared/structures/documentation/apiReference.js +100 -0
  138. package/dist/generators/shared/structures/documentation/apiReference.js.map +1 -0
  139. package/dist/generators/shared/structures/documentation/architecture.d.ts +3 -0
  140. package/dist/generators/shared/structures/documentation/architecture.d.ts.map +1 -0
  141. package/dist/generators/shared/structures/documentation/architecture.js +121 -0
  142. package/dist/generators/shared/structures/documentation/architecture.js.map +1 -0
  143. package/dist/generators/shared/structures/documentation/dataFlow.d.ts +3 -0
  144. package/dist/generators/shared/structures/documentation/dataFlow.d.ts.map +1 -0
  145. package/dist/generators/shared/structures/documentation/dataFlow.js +72 -0
  146. package/dist/generators/shared/structures/documentation/dataFlow.js.map +1 -0
  147. package/dist/generators/shared/structures/documentation/glossary.d.ts +3 -0
  148. package/dist/generators/shared/structures/documentation/glossary.d.ts.map +1 -0
  149. package/dist/generators/shared/structures/documentation/glossary.js +71 -0
  150. package/dist/generators/shared/structures/documentation/glossary.js.map +1 -0
  151. package/dist/generators/shared/structures/documentation/index.d.ts +16 -0
  152. package/dist/generators/shared/structures/documentation/index.d.ts.map +1 -0
  153. package/dist/generators/shared/structures/documentation/index.js +31 -0
  154. package/dist/generators/shared/structures/documentation/index.js.map +1 -0
  155. package/dist/generators/shared/structures/documentation/migration.d.ts +3 -0
  156. package/dist/generators/shared/structures/documentation/migration.d.ts.map +1 -0
  157. package/dist/generators/shared/structures/documentation/migration.js +113 -0
  158. package/dist/generators/shared/structures/documentation/migration.js.map +1 -0
  159. package/dist/generators/shared/structures/documentation/onboarding.d.ts +3 -0
  160. package/dist/generators/shared/structures/documentation/onboarding.d.ts.map +1 -0
  161. package/dist/generators/shared/structures/documentation/onboarding.js +99 -0
  162. package/dist/generators/shared/structures/documentation/onboarding.js.map +1 -0
  163. package/dist/generators/shared/structures/documentation/projectOverview.d.ts +3 -0
  164. package/dist/generators/shared/structures/documentation/projectOverview.d.ts.map +1 -0
  165. package/dist/generators/shared/structures/documentation/projectOverview.js +115 -0
  166. package/dist/generators/shared/structures/documentation/projectOverview.js.map +1 -0
  167. package/dist/generators/shared/structures/documentation/security.d.ts +3 -0
  168. package/dist/generators/shared/structures/documentation/security.d.ts.map +1 -0
  169. package/dist/generators/shared/structures/documentation/security.js +55 -0
  170. package/dist/generators/shared/structures/documentation/security.js.map +1 -0
  171. package/dist/generators/shared/structures/documentation/testing.d.ts +3 -0
  172. package/dist/generators/shared/structures/documentation/testing.d.ts.map +1 -0
  173. package/dist/generators/shared/structures/documentation/testing.js +57 -0
  174. package/dist/generators/shared/structures/documentation/testing.js.map +1 -0
  175. package/dist/generators/shared/structures/documentation/tooling.d.ts +3 -0
  176. package/dist/generators/shared/structures/documentation/tooling.d.ts.map +1 -0
  177. package/dist/generators/shared/structures/documentation/tooling.js +55 -0
  178. package/dist/generators/shared/structures/documentation/tooling.js.map +1 -0
  179. package/dist/generators/shared/structures/documentation/troubleshooting.d.ts +3 -0
  180. package/dist/generators/shared/structures/documentation/troubleshooting.d.ts.map +1 -0
  181. package/dist/generators/shared/structures/documentation/troubleshooting.js +91 -0
  182. package/dist/generators/shared/structures/documentation/troubleshooting.js.map +1 -0
  183. package/dist/generators/shared/structures/documentation/workflow.d.ts +3 -0
  184. package/dist/generators/shared/structures/documentation/workflow.d.ts.map +1 -0
  185. package/dist/generators/shared/structures/documentation/workflow.js +56 -0
  186. package/dist/generators/shared/structures/documentation/workflow.js.map +1 -0
  187. package/dist/generators/shared/structures/index.d.ts +15 -0
  188. package/dist/generators/shared/structures/index.d.ts.map +1 -0
  189. package/dist/generators/shared/structures/index.js +37 -0
  190. package/dist/generators/shared/structures/index.js.map +1 -0
  191. package/dist/generators/shared/structures/plans/index.d.ts +5 -0
  192. package/dist/generators/shared/structures/plans/index.d.ts.map +1 -0
  193. package/dist/generators/shared/structures/plans/index.js +9 -0
  194. package/dist/generators/shared/structures/plans/index.js.map +1 -0
  195. package/dist/generators/shared/structures/plans/planStructure.d.ts +6 -0
  196. package/dist/generators/shared/structures/plans/planStructure.d.ts.map +1 -0
  197. package/dist/generators/shared/structures/plans/planStructure.js +65 -0
  198. package/dist/generators/shared/structures/plans/planStructure.js.map +1 -0
  199. package/dist/generators/shared/structures/registry.d.ts +18 -0
  200. package/dist/generators/shared/structures/registry.d.ts.map +1 -0
  201. package/dist/generators/shared/structures/registry.js +104 -0
  202. package/dist/generators/shared/structures/registry.js.map +1 -0
  203. package/dist/generators/shared/structures/serialization.d.ts +15 -0
  204. package/dist/generators/shared/structures/serialization.d.ts.map +1 -0
  205. package/dist/generators/shared/structures/serialization.js +119 -0
  206. package/dist/generators/shared/structures/serialization.js.map +1 -0
  207. package/dist/generators/shared/structures/skills/definitions.d.ts +14 -0
  208. package/dist/generators/shared/structures/skills/definitions.d.ts.map +1 -0
  209. package/dist/generators/shared/structures/skills/definitions.js +18 -0
  210. package/dist/generators/shared/structures/skills/definitions.js.map +1 -0
  211. package/dist/generators/shared/structures/skills/factory.d.ts +9 -0
  212. package/dist/generators/shared/structures/skills/factory.d.ts.map +1 -0
  213. package/dist/generators/shared/structures/skills/factory.js +56 -0
  214. package/dist/generators/shared/structures/skills/factory.js.map +1 -0
  215. package/dist/generators/shared/structures/skills/index.d.ts +6 -0
  216. package/dist/generators/shared/structures/skills/index.d.ts.map +1 -0
  217. package/dist/generators/shared/structures/skills/index.js +20 -0
  218. package/dist/generators/shared/structures/skills/index.js.map +1 -0
  219. package/dist/generators/shared/structures/types.d.ts +59 -0
  220. package/dist/generators/shared/structures/types.d.ts.map +1 -0
  221. package/dist/generators/shared/structures/types.js +6 -0
  222. package/dist/generators/shared/structures/types.js.map +1 -0
  223. package/dist/generators/shared/structures/validation.d.ts +13 -0
  224. package/dist/generators/shared/structures/validation.d.ts.map +1 -0
  225. package/dist/generators/shared/structures/validation.js +51 -0
  226. package/dist/generators/shared/structures/validation.js.map +1 -0
  227. package/dist/generators/skills/skillGenerator.d.ts +5 -0
  228. package/dist/generators/skills/skillGenerator.d.ts.map +1 -1
  229. package/dist/generators/skills/skillGenerator.js +26 -17
  230. package/dist/generators/skills/skillGenerator.js.map +1 -1
  231. package/dist/generators/skills/templates/skillTemplate.d.ts +10 -0
  232. package/dist/generators/skills/templates/skillTemplate.d.ts.map +1 -1
  233. package/dist/generators/skills/templates/skillTemplate.js +10 -0
  234. package/dist/generators/skills/templates/skillTemplate.js.map +1 -1
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js +203 -5
  237. package/dist/index.js.map +1 -1
  238. package/dist/prompts/defaults.d.ts +5 -0
  239. package/dist/prompts/defaults.d.ts.map +1 -1
  240. package/dist/prompts/defaults.js +44 -1
  241. package/dist/prompts/defaults.js.map +1 -1
  242. package/dist/services/ai/agents/documentationAgent.d.ts +2 -0
  243. package/dist/services/ai/agents/documentationAgent.d.ts.map +1 -1
  244. package/dist/services/ai/agents/documentationAgent.js +33 -9
  245. package/dist/services/ai/agents/documentationAgent.js.map +1 -1
  246. package/dist/services/ai/agents/playbookAgent.d.ts +2 -0
  247. package/dist/services/ai/agents/playbookAgent.d.ts.map +1 -1
  248. package/dist/services/ai/agents/playbookAgent.js +44 -19
  249. package/dist/services/ai/agents/playbookAgent.js.map +1 -1
  250. package/dist/services/ai/agents/skillAgent.d.ts +2 -0
  251. package/dist/services/ai/agents/skillAgent.d.ts.map +1 -1
  252. package/dist/services/ai/agents/skillAgent.js +54 -22
  253. package/dist/services/ai/agents/skillAgent.js.map +1 -1
  254. package/dist/services/ai/schemas.d.ts +138 -9
  255. package/dist/services/ai/schemas.d.ts.map +1 -1
  256. package/dist/services/ai/schemas.js +70 -5
  257. package/dist/services/ai/schemas.js.map +1 -1
  258. package/dist/services/ai/toolRegistry.d.ts.map +1 -1
  259. package/dist/services/ai/toolRegistry.js +25 -17
  260. package/dist/services/ai/toolRegistry.js.map +1 -1
  261. package/dist/services/ai/tools/checkScaffoldingTool.d.ts.map +1 -1
  262. package/dist/services/ai/tools/checkScaffoldingTool.js +4 -1
  263. package/dist/services/ai/tools/checkScaffoldingTool.js.map +1 -1
  264. package/dist/services/ai/tools/fillScaffoldingTool.d.ts +24 -9
  265. package/dist/services/ai/tools/fillScaffoldingTool.d.ts.map +1 -1
  266. package/dist/services/ai/tools/fillScaffoldingTool.js +46 -130
  267. package/dist/services/ai/tools/fillScaffoldingTool.js.map +1 -1
  268. package/dist/services/ai/tools/getCodebaseMapTool.d.ts +1 -1
  269. package/dist/services/ai/tools/getCodebaseMapTool.d.ts.map +1 -1
  270. package/dist/services/ai/tools/getCodebaseMapTool.js +4 -1
  271. package/dist/services/ai/tools/getCodebaseMapTool.js.map +1 -1
  272. package/dist/services/ai/tools/index.d.ts +1 -1
  273. package/dist/services/ai/tools/index.d.ts.map +1 -1
  274. package/dist/services/ai/tools/index.js +3 -1
  275. package/dist/services/ai/tools/index.js.map +1 -1
  276. package/dist/services/ai/tools/initializeContextTool.d.ts +109 -7
  277. package/dist/services/ai/tools/initializeContextTool.d.ts.map +1 -1
  278. package/dist/services/ai/tools/initializeContextTool.js +282 -17
  279. package/dist/services/ai/tools/initializeContextTool.js.map +1 -1
  280. package/dist/services/ai/tools/scaffoldPlanTool.d.ts +17 -1
  281. package/dist/services/ai/tools/scaffoldPlanTool.d.ts.map +1 -1
  282. package/dist/services/ai/tools/scaffoldPlanTool.js +94 -5
  283. package/dist/services/ai/tools/scaffoldPlanTool.js.map +1 -1
  284. package/dist/services/ai/tools/toolFactory.d.ts +35 -0
  285. package/dist/services/ai/tools/toolFactory.d.ts.map +1 -0
  286. package/dist/services/ai/tools/toolFactory.js +20 -0
  287. package/dist/services/ai/tools/toolFactory.js.map +1 -0
  288. package/dist/services/export/contextExportService.d.ts +45 -0
  289. package/dist/services/export/contextExportService.d.ts.map +1 -0
  290. package/dist/services/export/contextExportService.js +161 -0
  291. package/dist/services/export/contextExportService.js.map +1 -0
  292. package/dist/services/export/exportRulesService.d.ts +15 -1
  293. package/dist/services/export/exportRulesService.d.ts.map +1 -1
  294. package/dist/services/export/exportRulesService.js +100 -36
  295. package/dist/services/export/exportRulesService.js.map +1 -1
  296. package/dist/services/export/index.d.ts +2 -0
  297. package/dist/services/export/index.d.ts.map +1 -1
  298. package/dist/services/export/index.js +3 -1
  299. package/dist/services/export/index.js.map +1 -1
  300. package/dist/services/export/skillExportService.d.ts +6 -1
  301. package/dist/services/export/skillExportService.d.ts.map +1 -1
  302. package/dist/services/export/skillExportService.js +46 -22
  303. package/dist/services/export/skillExportService.js.map +1 -1
  304. package/dist/services/fill/fillService.d.ts.map +1 -1
  305. package/dist/services/fill/fillService.js +30 -3
  306. package/dist/services/fill/fillService.js.map +1 -1
  307. package/dist/services/fill/skillFillService.d.ts.map +1 -1
  308. package/dist/services/fill/skillFillService.js +8 -1
  309. package/dist/services/fill/skillFillService.js.map +1 -1
  310. package/dist/services/import/presets.d.ts +12 -0
  311. package/dist/services/import/presets.d.ts.map +1 -1
  312. package/dist/services/import/presets.js +32 -152
  313. package/dist/services/import/presets.js.map +1 -1
  314. package/dist/services/init/initService.d.ts +1 -0
  315. package/dist/services/init/initService.d.ts.map +1 -1
  316. package/dist/services/init/initService.js +42 -9
  317. package/dist/services/init/initService.js.map +1 -1
  318. package/dist/services/mcp/actionLogger.d.ts +19 -0
  319. package/dist/services/mcp/actionLogger.d.ts.map +1 -0
  320. package/dist/services/mcp/actionLogger.js +128 -0
  321. package/dist/services/mcp/actionLogger.js.map +1 -0
  322. package/dist/services/mcp/gateway/agent.d.ts +17 -0
  323. package/dist/services/mcp/gateway/agent.d.ts.map +1 -0
  324. package/dist/services/mcp/gateway/agent.js +147 -0
  325. package/dist/services/mcp/gateway/agent.js.map +1 -0
  326. package/dist/services/mcp/gateway/context.d.ts +21 -0
  327. package/dist/services/mcp/gateway/context.d.ts.map +1 -0
  328. package/dist/services/mcp/gateway/context.js +249 -0
  329. package/dist/services/mcp/gateway/context.js.map +1 -0
  330. package/dist/services/mcp/gateway/explore.d.ts +16 -0
  331. package/dist/services/mcp/gateway/explore.d.ts.map +1 -0
  332. package/dist/services/mcp/gateway/explore.js +60 -0
  333. package/dist/services/mcp/gateway/explore.js.map +1 -0
  334. package/dist/services/mcp/gateway/index.d.ts +24 -0
  335. package/dist/services/mcp/gateway/index.d.ts.map +1 -0
  336. package/dist/services/mcp/gateway/index.js +53 -0
  337. package/dist/services/mcp/gateway/index.js.map +1 -0
  338. package/dist/services/mcp/gateway/metrics.d.ts +56 -0
  339. package/dist/services/mcp/gateway/metrics.d.ts.map +1 -0
  340. package/dist/services/mcp/gateway/metrics.js +153 -0
  341. package/dist/services/mcp/gateway/metrics.js.map +1 -0
  342. package/dist/services/mcp/gateway/plan.d.ts +18 -0
  343. package/dist/services/mcp/gateway/plan.d.ts.map +1 -0
  344. package/dist/services/mcp/gateway/plan.js +273 -0
  345. package/dist/services/mcp/gateway/plan.js.map +1 -0
  346. package/dist/services/mcp/gateway/project.d.ts +16 -0
  347. package/dist/services/mcp/gateway/project.d.ts.map +1 -0
  348. package/dist/services/mcp/gateway/project.js +149 -0
  349. package/dist/services/mcp/gateway/project.js.map +1 -0
  350. package/dist/services/mcp/gateway/projectReport.d.ts +20 -0
  351. package/dist/services/mcp/gateway/projectReport.d.ts.map +1 -0
  352. package/dist/services/mcp/gateway/projectReport.js +61 -0
  353. package/dist/services/mcp/gateway/projectReport.js.map +1 -0
  354. package/dist/services/mcp/gateway/projectSetup.d.ts +29 -0
  355. package/dist/services/mcp/gateway/projectSetup.d.ts.map +1 -0
  356. package/dist/services/mcp/gateway/projectSetup.js +141 -0
  357. package/dist/services/mcp/gateway/projectSetup.js.map +1 -0
  358. package/dist/services/mcp/gateway/response.d.ts +45 -0
  359. package/dist/services/mcp/gateway/response.d.ts.map +1 -0
  360. package/dist/services/mcp/gateway/response.js +111 -0
  361. package/dist/services/mcp/gateway/response.js.map +1 -0
  362. package/dist/services/mcp/gateway/shared.d.ts +38 -0
  363. package/dist/services/mcp/gateway/shared.d.ts.map +1 -0
  364. package/dist/services/mcp/gateway/shared.js +39 -0
  365. package/dist/services/mcp/gateway/shared.js.map +1 -0
  366. package/dist/services/mcp/gateway/skill.d.ts +17 -0
  367. package/dist/services/mcp/gateway/skill.d.ts.map +1 -0
  368. package/dist/services/mcp/gateway/skill.js +323 -0
  369. package/dist/services/mcp/gateway/skill.js.map +1 -0
  370. package/dist/services/mcp/gateway/sync.d.ts +17 -0
  371. package/dist/services/mcp/gateway/sync.d.ts.map +1 -0
  372. package/dist/services/mcp/gateway/sync.js +219 -0
  373. package/dist/services/mcp/gateway/sync.js.map +1 -0
  374. package/dist/services/mcp/gateway/types.d.ts +116 -0
  375. package/dist/services/mcp/gateway/types.d.ts.map +1 -0
  376. package/dist/services/mcp/gateway/types.js +12 -0
  377. package/dist/services/mcp/gateway/types.js.map +1 -0
  378. package/dist/services/mcp/gateway/workflow.d.ts +18 -0
  379. package/dist/services/mcp/gateway/workflow.d.ts.map +1 -0
  380. package/dist/services/mcp/gateway/workflow.js +317 -0
  381. package/dist/services/mcp/gateway/workflow.js.map +1 -0
  382. package/dist/services/mcp/gateway/workflowAdvance.d.ts +25 -0
  383. package/dist/services/mcp/gateway/workflowAdvance.d.ts.map +1 -0
  384. package/dist/services/mcp/gateway/workflowAdvance.js +133 -0
  385. package/dist/services/mcp/gateway/workflowAdvance.js.map +1 -0
  386. package/dist/services/mcp/gateway/workflowInit.d.ts +28 -0
  387. package/dist/services/mcp/gateway/workflowInit.d.ts.map +1 -0
  388. package/dist/services/mcp/gateway/workflowInit.js +213 -0
  389. package/dist/services/mcp/gateway/workflowInit.js.map +1 -0
  390. package/dist/services/mcp/gateway/workflowManage.d.ts +31 -0
  391. package/dist/services/mcp/gateway/workflowManage.d.ts.map +1 -0
  392. package/dist/services/mcp/gateway/workflowManage.js +222 -0
  393. package/dist/services/mcp/gateway/workflowManage.js.map +1 -0
  394. package/dist/services/mcp/gateway/workflowStatus.d.ts +17 -0
  395. package/dist/services/mcp/gateway/workflowStatus.d.ts.map +1 -0
  396. package/dist/services/mcp/gateway/workflowStatus.js +91 -0
  397. package/dist/services/mcp/gateway/workflowStatus.js.map +1 -0
  398. package/dist/services/mcp/gatewayTools.d.ts +15 -0
  399. package/dist/services/mcp/gatewayTools.d.ts.map +1 -0
  400. package/dist/services/mcp/gatewayTools.js +38 -0
  401. package/dist/services/mcp/gatewayTools.js.map +1 -0
  402. package/dist/services/mcp/index.d.ts +7 -0
  403. package/dist/services/mcp/index.d.ts.map +1 -1
  404. package/dist/services/mcp/index.js +22 -1
  405. package/dist/services/mcp/index.js.map +1 -1
  406. package/dist/services/mcp/mcpInstallService.d.ts +56 -0
  407. package/dist/services/mcp/mcpInstallService.d.ts.map +1 -0
  408. package/dist/services/mcp/mcpInstallService.js +549 -0
  409. package/dist/services/mcp/mcpInstallService.js.map +1 -0
  410. package/dist/services/mcp/mcpServer.d.ts +45 -19
  411. package/dist/services/mcp/mcpServer.d.ts.map +1 -1
  412. package/dist/services/mcp/mcpServer.js +637 -1696
  413. package/dist/services/mcp/mcpServer.js.map +1 -1
  414. package/dist/services/passthrough/protocol.d.ts +4 -4
  415. package/dist/services/qa/index.d.ts +9 -0
  416. package/dist/services/qa/index.d.ts.map +1 -0
  417. package/dist/services/qa/index.js +15 -0
  418. package/dist/services/qa/index.js.map +1 -0
  419. package/dist/services/qa/patternInferer.d.ts +41 -0
  420. package/dist/services/qa/patternInferer.d.ts.map +1 -0
  421. package/dist/services/qa/patternInferer.js +366 -0
  422. package/dist/services/qa/patternInferer.js.map +1 -0
  423. package/dist/services/qa/qaService.d.ts +107 -0
  424. package/dist/services/qa/qaService.d.ts.map +1 -0
  425. package/dist/services/qa/qaService.js +874 -0
  426. package/dist/services/qa/qaService.js.map +1 -0
  427. package/dist/services/qa/topicDetector.d.ts +54 -0
  428. package/dist/services/qa/topicDetector.d.ts.map +1 -0
  429. package/dist/services/qa/topicDetector.js +306 -0
  430. package/dist/services/qa/topicDetector.js.map +1 -0
  431. package/dist/services/quickSync/quickSyncService.d.ts.map +1 -1
  432. package/dist/services/quickSync/quickSyncService.js +6 -10
  433. package/dist/services/quickSync/quickSyncService.js.map +1 -1
  434. package/dist/services/reverseSync/importSkillsService.d.ts +47 -0
  435. package/dist/services/reverseSync/importSkillsService.d.ts.map +1 -0
  436. package/dist/services/reverseSync/importSkillsService.js +362 -0
  437. package/dist/services/reverseSync/importSkillsService.js.map +1 -0
  438. package/dist/services/reverseSync/index.d.ts +12 -0
  439. package/dist/services/reverseSync/index.d.ts.map +1 -0
  440. package/dist/services/reverseSync/index.js +49 -0
  441. package/dist/services/reverseSync/index.js.map +1 -0
  442. package/dist/services/reverseSync/presets.d.ts +51 -0
  443. package/dist/services/reverseSync/presets.d.ts.map +1 -0
  444. package/dist/services/reverseSync/presets.js +77 -0
  445. package/dist/services/reverseSync/presets.js.map +1 -0
  446. package/dist/services/reverseSync/reverseQuickSyncService.d.ts +37 -0
  447. package/dist/services/reverseSync/reverseQuickSyncService.d.ts.map +1 -0
  448. package/dist/services/reverseSync/reverseQuickSyncService.js +265 -0
  449. package/dist/services/reverseSync/reverseQuickSyncService.js.map +1 -0
  450. package/dist/services/reverseSync/skillsDetector.d.ts +36 -0
  451. package/dist/services/reverseSync/skillsDetector.d.ts.map +1 -0
  452. package/dist/services/reverseSync/skillsDetector.js +287 -0
  453. package/dist/services/reverseSync/skillsDetector.js.map +1 -0
  454. package/dist/services/reverseSync/toolDetector.d.ts +36 -0
  455. package/dist/services/reverseSync/toolDetector.d.ts.map +1 -0
  456. package/dist/services/reverseSync/toolDetector.js +174 -0
  457. package/dist/services/reverseSync/toolDetector.js.map +1 -0
  458. package/dist/services/reverseSync/types.d.ts +203 -0
  459. package/dist/services/reverseSync/types.d.ts.map +1 -0
  460. package/dist/services/reverseSync/types.js +9 -0
  461. package/dist/services/reverseSync/types.js.map +1 -0
  462. package/dist/services/semantic/codebaseAnalyzer.d.ts +23 -1
  463. package/dist/services/semantic/codebaseAnalyzer.d.ts.map +1 -1
  464. package/dist/services/semantic/codebaseAnalyzer.js +531 -0
  465. package/dist/services/semantic/codebaseAnalyzer.js.map +1 -1
  466. package/dist/services/semantic/contextBuilder.d.ts.map +1 -1
  467. package/dist/services/semantic/contextBuilder.js +23 -8
  468. package/dist/services/semantic/contextBuilder.js.map +1 -1
  469. package/dist/services/semantic/types.d.ts +50 -0
  470. package/dist/services/semantic/types.d.ts.map +1 -1
  471. package/dist/services/semantic/types.js.map +1 -1
  472. package/dist/services/shared/contentTypeRegistry.d.ts +66 -0
  473. package/dist/services/shared/contentTypeRegistry.d.ts.map +1 -0
  474. package/dist/services/shared/contentTypeRegistry.js +113 -0
  475. package/dist/services/shared/contentTypeRegistry.js.map +1 -0
  476. package/dist/services/shared/contextRootResolver.d.ts +57 -0
  477. package/dist/services/shared/contextRootResolver.d.ts.map +1 -0
  478. package/dist/services/shared/contextRootResolver.js +102 -0
  479. package/dist/services/shared/contextRootResolver.js.map +1 -0
  480. package/dist/services/shared/index.d.ts +4 -1
  481. package/dist/services/shared/index.d.ts.map +1 -1
  482. package/dist/services/shared/index.js +39 -1
  483. package/dist/services/shared/index.js.map +1 -1
  484. package/dist/services/shared/pathHelpers.d.ts +15 -1
  485. package/dist/services/shared/pathHelpers.d.ts.map +1 -1
  486. package/dist/services/shared/pathHelpers.js +26 -1
  487. package/dist/services/shared/pathHelpers.js.map +1 -1
  488. package/dist/services/shared/toolRegistry.d.ts +135 -0
  489. package/dist/services/shared/toolRegistry.d.ts.map +1 -0
  490. package/dist/services/shared/toolRegistry.js +515 -0
  491. package/dist/services/shared/toolRegistry.js.map +1 -0
  492. package/dist/services/stack/scaffoldFilter.d.ts +1 -1
  493. package/dist/services/sync/presets.d.ts +3 -0
  494. package/dist/services/sync/presets.d.ts.map +1 -1
  495. package/dist/services/sync/presets.js +20 -32
  496. package/dist/services/sync/presets.js.map +1 -1
  497. package/dist/services/sync/syncService.d.ts +8 -0
  498. package/dist/services/sync/syncService.d.ts.map +1 -1
  499. package/dist/services/sync/syncService.js +21 -2
  500. package/dist/services/sync/syncService.js.map +1 -1
  501. package/dist/services/sync/types.d.ts +1 -1
  502. package/dist/services/sync/types.d.ts.map +1 -1
  503. package/dist/services/tools/index.d.ts +95 -0
  504. package/dist/services/tools/index.d.ts.map +1 -0
  505. package/dist/services/tools/index.js +236 -0
  506. package/dist/services/tools/index.js.map +1 -0
  507. package/dist/services/workflow/workflowService.d.ts +57 -4
  508. package/dist/services/workflow/workflowService.d.ts.map +1 -1
  509. package/dist/services/workflow/workflowService.js +79 -6
  510. package/dist/services/workflow/workflowService.js.map +1 -1
  511. package/dist/types/scaffoldFrontmatter.d.ts +145 -0
  512. package/dist/types/scaffoldFrontmatter.d.ts.map +1 -0
  513. package/dist/types/scaffoldFrontmatter.js +172 -0
  514. package/dist/types/scaffoldFrontmatter.js.map +1 -0
  515. package/dist/utils/cliUI.d.ts +1 -1
  516. package/dist/utils/cliUI.d.ts.map +1 -1
  517. package/dist/utils/cliUI.js +4 -1
  518. package/dist/utils/cliUI.js.map +1 -1
  519. package/dist/utils/frontMatter.d.ts +48 -0
  520. package/dist/utils/frontMatter.d.ts.map +1 -1
  521. package/dist/utils/frontMatter.js +135 -0
  522. package/dist/utils/frontMatter.js.map +1 -1
  523. package/dist/utils/gitService.d.ts +26 -0
  524. package/dist/utils/gitService.d.ts.map +1 -1
  525. package/dist/utils/gitService.js +96 -0
  526. package/dist/utils/gitService.js.map +1 -1
  527. package/dist/utils/i18n.d.ts +43 -2
  528. package/dist/utils/i18n.d.ts.map +1 -1
  529. package/dist/utils/i18n.js +96 -6
  530. package/dist/utils/i18n.js.map +1 -1
  531. package/dist/utils/prompts/index.d.ts +4 -0
  532. package/dist/utils/prompts/index.d.ts.map +1 -1
  533. package/dist/utils/prompts/index.js +15 -0
  534. package/dist/utils/prompts/index.js.map +1 -1
  535. package/dist/workflow/errors.d.ts +48 -0
  536. package/dist/workflow/errors.d.ts.map +1 -0
  537. package/dist/workflow/errors.js +52 -0
  538. package/dist/workflow/errors.js.map +1 -0
  539. package/dist/workflow/gates/gateChecker.d.ts +93 -0
  540. package/dist/workflow/gates/gateChecker.d.ts.map +1 -0
  541. package/dist/workflow/gates/gateChecker.js +197 -0
  542. package/dist/workflow/gates/gateChecker.js.map +1 -0
  543. package/dist/workflow/gates/index.d.ts +7 -0
  544. package/dist/workflow/gates/index.d.ts.map +1 -0
  545. package/dist/workflow/gates/index.js +13 -0
  546. package/dist/workflow/gates/index.js.map +1 -0
  547. package/dist/workflow/index.d.ts +4 -2
  548. package/dist/workflow/index.d.ts.map +1 -1
  549. package/dist/workflow/index.js +14 -3
  550. package/dist/workflow/index.js.map +1 -1
  551. package/dist/workflow/orchestrator.d.ts +94 -5
  552. package/dist/workflow/orchestrator.d.ts.map +1 -1
  553. package/dist/workflow/orchestrator.js +300 -11
  554. package/dist/workflow/orchestrator.js.map +1 -1
  555. package/dist/workflow/plans/planLinker.d.ts +79 -3
  556. package/dist/workflow/plans/planLinker.d.ts.map +1 -1
  557. package/dist/workflow/plans/planLinker.js +522 -3
  558. package/dist/workflow/plans/planLinker.js.map +1 -1
  559. package/dist/workflow/plans/types.d.ts +64 -0
  560. package/dist/workflow/plans/types.d.ts.map +1 -1
  561. package/dist/workflow/roles.d.ts +6 -0
  562. package/dist/workflow/roles.d.ts.map +1 -1
  563. package/dist/workflow/roles.js +6 -0
  564. package/dist/workflow/roles.js.map +1 -1
  565. package/dist/workflow/scaling.d.ts +1 -0
  566. package/dist/workflow/scaling.d.ts.map +1 -1
  567. package/dist/workflow/scaling.js +8 -17
  568. package/dist/workflow/scaling.js.map +1 -1
  569. package/dist/workflow/status/statusManager.d.ts +54 -1
  570. package/dist/workflow/status/statusManager.d.ts.map +1 -1
  571. package/dist/workflow/status/statusManager.js +539 -9
  572. package/dist/workflow/status/statusManager.js.map +1 -1
  573. package/dist/workflow/status/templates.d.ts +14 -5
  574. package/dist/workflow/status/templates.d.ts.map +1 -1
  575. package/dist/workflow/status/templates.js +55 -41
  576. package/dist/workflow/status/templates.js.map +1 -1
  577. package/dist/workflow/types.d.ts +138 -2
  578. package/dist/workflow/types.d.ts.map +1 -1
  579. package/dist/workflow/types.js +0 -1
  580. package/dist/workflow/types.js.map +1 -1
  581. package/package.json +1 -1
@@ -45,6 +45,7 @@ const types_1 = require("../types");
45
45
  const phases_1 = require("../phases");
46
46
  const scaling_1 = require("../scaling");
47
47
  const templates_1 = require("./templates");
48
+ const gates_1 = require("../gates");
48
49
  /**
49
50
  * Default status file path relative to .context directory
50
51
  */
@@ -75,7 +76,10 @@ class PrevcStatusManager {
75
76
  }
76
77
  const content = await fs.readFile(this.statusPath, 'utf-8');
77
78
  // Parse YAML manually (simple format)
78
- this.cachedStatus = this.parseYaml(content);
79
+ let status = this.parseYaml(content);
80
+ // Apply migration for existing workflows
81
+ status = this.migrateStatus(status);
82
+ this.cachedStatus = status;
79
83
  return this.cachedStatus;
80
84
  }
81
85
  /**
@@ -89,7 +93,10 @@ class PrevcStatusManager {
89
93
  throw new Error('Workflow status not found. Run "workflow init" first.');
90
94
  }
91
95
  const content = fs.readFileSync(this.statusPath, 'utf-8');
92
- this.cachedStatus = this.parseYaml(content);
96
+ let status = this.parseYaml(content);
97
+ // Apply migration for existing workflows
98
+ status = this.migrateStatus(status);
99
+ this.cachedStatus = status;
93
100
  return this.cachedStatus;
94
101
  }
95
102
  /**
@@ -131,6 +138,7 @@ class PrevcStatusManager {
131
138
  }
132
139
  /**
133
140
  * Update a role's status
141
+ * @deprecated Use updateAgent instead
134
142
  */
135
143
  async updateRole(role, update) {
136
144
  const status = await this.load();
@@ -143,19 +151,63 @@ class PrevcStatusManager {
143
151
  };
144
152
  await this.save(status);
145
153
  }
154
+ /**
155
+ * Update an agent's status (replaces updateRole)
156
+ */
157
+ async updateAgent(agentName, update) {
158
+ const status = await this.load();
159
+ const now = new Date().toISOString();
160
+ // Initialize agents if not present
161
+ if (!status.agents) {
162
+ status.agents = {};
163
+ }
164
+ const existingAgent = status.agents[agentName];
165
+ // Build agent status
166
+ const agentStatus = {
167
+ status: update.status ?? existingAgent?.status ?? 'pending',
168
+ started_at: existingAgent?.started_at,
169
+ completed_at: existingAgent?.completed_at,
170
+ outputs: update.outputs ?? existingAgent?.outputs,
171
+ };
172
+ // Track timestamps based on status changes
173
+ if (update.status === 'in_progress' && !existingAgent?.started_at) {
174
+ agentStatus.started_at = now;
175
+ }
176
+ if (update.status === 'completed' && !existingAgent?.completed_at) {
177
+ agentStatus.completed_at = now;
178
+ }
179
+ status.agents[agentName] = agentStatus;
180
+ await this.save(status);
181
+ }
146
182
  /**
147
183
  * Transition to a new phase
148
184
  */
149
185
  async transitionToPhase(phase) {
150
186
  const status = await this.load();
187
+ const now = new Date().toISOString();
151
188
  // Update current phase
152
189
  status.project.current_phase = phase;
153
190
  // Mark new phase as in_progress
154
191
  status.phases[phase] = {
155
192
  ...status.phases[phase],
156
193
  status: 'in_progress',
157
- started_at: new Date().toISOString(),
194
+ started_at: now,
158
195
  };
196
+ // Add history entry
197
+ if (!status.execution) {
198
+ status.execution = {
199
+ history: [],
200
+ last_activity: now,
201
+ resume_context: '',
202
+ };
203
+ }
204
+ status.execution.history.push({
205
+ timestamp: now,
206
+ phase,
207
+ action: 'started',
208
+ });
209
+ status.execution.last_activity = now;
210
+ status.execution.resume_context = (0, templates_1.generateResumeContext)(phase, 'started');
159
211
  await this.save(status);
160
212
  }
161
213
  /**
@@ -163,15 +215,31 @@ class PrevcStatusManager {
163
215
  */
164
216
  async markPhaseComplete(phase, outputs) {
165
217
  const status = await this.load();
218
+ const now = new Date().toISOString();
166
219
  const phaseStatus = {
167
220
  ...status.phases[phase],
168
221
  status: 'completed',
169
- completed_at: new Date().toISOString(),
222
+ completed_at: now,
170
223
  };
171
224
  if (outputs) {
172
225
  phaseStatus.outputs = outputs.map((p) => ({ path: p, status: 'filled' }));
173
226
  }
174
227
  status.phases[phase] = phaseStatus;
228
+ // Add history entry
229
+ if (!status.execution) {
230
+ status.execution = {
231
+ history: [],
232
+ last_activity: now,
233
+ resume_context: '',
234
+ };
235
+ }
236
+ status.execution.history.push({
237
+ timestamp: now,
238
+ phase,
239
+ action: 'completed',
240
+ });
241
+ status.execution.last_activity = now;
242
+ status.execution.resume_context = (0, templates_1.generateResumeContext)(phase, 'completed');
175
243
  await this.save(status);
176
244
  }
177
245
  /**
@@ -221,6 +289,250 @@ class PrevcStatusManager {
221
289
  }
222
290
  return true;
223
291
  }
292
+ /**
293
+ * Set workflow settings
294
+ */
295
+ async setSettings(settings) {
296
+ const status = await this.load();
297
+ const defaults = (0, gates_1.getDefaultSettings)(status.project.scale);
298
+ const currentSettings = status.project.settings || defaults;
299
+ const newSettings = {
300
+ autonomous_mode: settings.autonomous_mode ?? currentSettings.autonomous_mode,
301
+ require_plan: settings.require_plan ?? currentSettings.require_plan,
302
+ require_approval: settings.require_approval ?? currentSettings.require_approval,
303
+ };
304
+ status.project.settings = newSettings;
305
+ await this.save(status);
306
+ return newSettings;
307
+ }
308
+ /**
309
+ * Get workflow settings (with defaults applied)
310
+ */
311
+ async getSettings() {
312
+ const status = await this.load();
313
+ const defaults = (0, gates_1.getDefaultSettings)(status.project.scale);
314
+ return status.project.settings || defaults;
315
+ }
316
+ /**
317
+ * Mark that a plan has been created/linked
318
+ */
319
+ async markPlanCreated(planSlug) {
320
+ const status = await this.load();
321
+ const now = new Date().toISOString();
322
+ if (!status.approval) {
323
+ status.approval = {
324
+ plan_created: false,
325
+ plan_approved: false,
326
+ };
327
+ }
328
+ status.approval.plan_created = true;
329
+ status.project.plan = planSlug;
330
+ // Add history entry
331
+ if (!status.execution) {
332
+ status.execution = {
333
+ history: [],
334
+ last_activity: now,
335
+ resume_context: '',
336
+ };
337
+ }
338
+ status.execution.history.push({
339
+ timestamp: now,
340
+ phase: status.project.current_phase,
341
+ action: 'plan_linked',
342
+ plan: planSlug,
343
+ });
344
+ status.execution.last_activity = now;
345
+ status.execution.resume_context = (0, templates_1.generateResumeContext)(status.project.current_phase, 'plan_linked');
346
+ await this.save(status);
347
+ }
348
+ /**
349
+ * Approve the plan
350
+ */
351
+ async approvePlan(approver, notes) {
352
+ const status = await this.load();
353
+ const now = new Date().toISOString();
354
+ if (!status.approval) {
355
+ status.approval = {
356
+ plan_created: false,
357
+ plan_approved: false,
358
+ };
359
+ }
360
+ status.approval.plan_approved = true;
361
+ status.approval.approved_by = approver;
362
+ status.approval.approved_at = now;
363
+ if (notes) {
364
+ status.approval.approval_notes = notes;
365
+ }
366
+ // Add history entry
367
+ if (!status.execution) {
368
+ status.execution = {
369
+ history: [],
370
+ last_activity: now,
371
+ resume_context: '',
372
+ };
373
+ }
374
+ status.execution.history.push({
375
+ timestamp: now,
376
+ phase: status.project.current_phase,
377
+ action: 'plan_approved',
378
+ approved_by: String(approver),
379
+ });
380
+ status.execution.last_activity = now;
381
+ status.execution.resume_context = (0, templates_1.generateResumeContext)(status.project.current_phase, 'plan_approved');
382
+ await this.save(status);
383
+ return status.approval;
384
+ }
385
+ /**
386
+ * Get approval status
387
+ */
388
+ async getApproval() {
389
+ const status = await this.load();
390
+ return status.approval;
391
+ }
392
+ /**
393
+ * Add an entry to the execution history
394
+ */
395
+ async addHistoryEntry(entry) {
396
+ const status = await this.load();
397
+ const now = new Date().toISOString();
398
+ // Ensure execution exists
399
+ if (!status.execution) {
400
+ status.execution = {
401
+ history: [],
402
+ last_activity: now,
403
+ resume_context: '',
404
+ };
405
+ }
406
+ // Add new entry
407
+ const fullEntry = {
408
+ ...entry,
409
+ timestamp: now,
410
+ };
411
+ status.execution.history.push(fullEntry);
412
+ status.execution.last_activity = now;
413
+ status.execution.resume_context = (0, templates_1.generateResumeContext)(entry.phase, entry.action);
414
+ await this.save(status);
415
+ }
416
+ /**
417
+ * Add a step-level entry to the execution history (breadcrumb trail)
418
+ */
419
+ async addStepHistoryEntry(entry) {
420
+ const status = await this.load();
421
+ const now = new Date().toISOString();
422
+ // Ensure execution exists
423
+ if (!status.execution) {
424
+ status.execution = {
425
+ history: [],
426
+ last_activity: now,
427
+ resume_context: '',
428
+ };
429
+ }
430
+ // Add new step entry
431
+ const fullEntry = {
432
+ timestamp: now,
433
+ phase: status.project.current_phase,
434
+ action: entry.action,
435
+ plan: entry.plan,
436
+ planPhase: entry.planPhase,
437
+ stepIndex: entry.stepIndex,
438
+ stepDescription: entry.stepDescription,
439
+ output: entry.output,
440
+ notes: entry.notes,
441
+ };
442
+ status.execution.history.push(fullEntry);
443
+ status.execution.last_activity = now;
444
+ status.execution.resume_context = (0, templates_1.generateResumeContext)(status.project.current_phase, entry.action, { planPhase: entry.planPhase, stepIndex: entry.stepIndex, stepDescription: entry.stepDescription });
445
+ await this.save(status);
446
+ }
447
+ /**
448
+ * Get execution history
449
+ */
450
+ async getExecutionHistory() {
451
+ const status = await this.load();
452
+ return status.execution;
453
+ }
454
+ /**
455
+ * Apply migration logic for existing workflows
456
+ * - Add default settings based on scale
457
+ * - Initialize approval tracking based on current state
458
+ * - Initialize execution history for old workflows
459
+ * - Initialize agents object for old workflows
460
+ */
461
+ migrateStatus(status) {
462
+ // Add default settings if missing
463
+ if (!status.project.settings) {
464
+ status.project.settings = (0, gates_1.getDefaultSettings)(status.project.scale);
465
+ }
466
+ // Initialize agents if missing (migration from old workflows)
467
+ if (!status.agents) {
468
+ status.agents = {};
469
+ }
470
+ // Initialize approval tracking if missing
471
+ if (!status.approval) {
472
+ const hasPlan = Boolean(status.project.plan || (status.project.plans && status.project.plans.length > 0));
473
+ const isPastReview = ['E', 'V', 'C'].includes(status.project.current_phase) ||
474
+ status.phases['R'].status === 'completed';
475
+ status.approval = {
476
+ plan_created: hasPlan,
477
+ // Auto-approve if already past R phase (grandfather clause)
478
+ plan_approved: isPastReview,
479
+ approved_by: isPastReview ? 'system-migration' : undefined,
480
+ approved_at: isPastReview ? new Date().toISOString() : undefined,
481
+ };
482
+ }
483
+ // Initialize execution history if missing (migration from old workflows)
484
+ if (!status.execution) {
485
+ const now = new Date().toISOString();
486
+ const currentPhase = status.project.current_phase;
487
+ const history = [];
488
+ // Reconstruct history from phase data
489
+ for (const phase of phases_1.PREVC_PHASE_ORDER) {
490
+ const phaseStatus = status.phases[phase];
491
+ if (phaseStatus.started_at) {
492
+ history.push({
493
+ timestamp: phaseStatus.started_at,
494
+ phase,
495
+ action: 'started',
496
+ });
497
+ }
498
+ if (phaseStatus.completed_at) {
499
+ history.push({
500
+ timestamp: phaseStatus.completed_at,
501
+ phase,
502
+ action: 'completed',
503
+ });
504
+ }
505
+ if (phaseStatus.status === 'skipped') {
506
+ history.push({
507
+ timestamp: now,
508
+ phase,
509
+ action: 'phase_skipped',
510
+ });
511
+ }
512
+ }
513
+ // Sort by timestamp
514
+ history.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
515
+ // Determine resume context based on current state
516
+ let resumeContext = (0, templates_1.generateResumeContext)(currentPhase, 'started');
517
+ if (status.approval?.plan_approved) {
518
+ resumeContext = (0, templates_1.generateResumeContext)(currentPhase, 'plan_approved');
519
+ }
520
+ else if (status.approval?.plan_created) {
521
+ resumeContext = (0, templates_1.generateResumeContext)(currentPhase, 'plan_linked');
522
+ }
523
+ status.execution = {
524
+ history: history.length > 0 ? history : [{
525
+ timestamp: status.project.started || now,
526
+ phase: currentPhase,
527
+ action: 'started',
528
+ description: 'Migrated from legacy workflow',
529
+ }],
530
+ last_activity: history.length > 0 ? history[history.length - 1].timestamp : now,
531
+ resume_context: resumeContext,
532
+ };
533
+ }
534
+ return status;
535
+ }
224
536
  /**
225
537
  * Parse YAML content to PrevcStatus object
226
538
  * Simple implementation for the specific format
@@ -242,11 +554,13 @@ class PrevcStatusManager {
242
554
  V: { status: 'pending' },
243
555
  C: { status: 'pending' },
244
556
  },
557
+ agents: {},
245
558
  roles: {},
246
559
  };
247
560
  let currentSection = '';
248
561
  let currentPhase = '';
249
562
  let currentRole = '';
563
+ let currentAgent = '';
250
564
  for (const line of lines) {
251
565
  const trimmed = line.trim();
252
566
  if (!trimmed || trimmed.startsWith('#'))
@@ -257,9 +571,21 @@ class PrevcStatusManager {
257
571
  else if (line.startsWith('phases:')) {
258
572
  currentSection = 'phases';
259
573
  }
574
+ else if (line.startsWith('agents:')) {
575
+ currentSection = 'agents';
576
+ }
260
577
  else if (line.startsWith('roles:')) {
261
578
  currentSection = 'roles';
262
579
  }
580
+ else if (line.startsWith('settings:')) {
581
+ currentSection = 'settings';
582
+ }
583
+ else if (line.startsWith('approval:')) {
584
+ currentSection = 'approval';
585
+ }
586
+ else if (line.startsWith('execution:')) {
587
+ currentSection = 'execution';
588
+ }
263
589
  else if (currentSection === 'project' && line.startsWith(' ')) {
264
590
  const [key, ...valueParts] = trimmed.split(':');
265
591
  const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
@@ -271,7 +597,7 @@ class PrevcStatusManager {
271
597
  SMALL: types_1.ProjectScale.SMALL,
272
598
  MEDIUM: types_1.ProjectScale.MEDIUM,
273
599
  LARGE: types_1.ProjectScale.LARGE,
274
- ENTERPRISE: types_1.ProjectScale.ENTERPRISE,
600
+ ENTERPRISE: types_1.ProjectScale.LARGE, // Legacy migration - map to LARGE
275
601
  };
276
602
  result.project.scale = scaleMap[value] ?? types_1.ProjectScale.MEDIUM;
277
603
  }
@@ -301,6 +627,37 @@ class PrevcStatusManager {
301
627
  }
302
628
  }
303
629
  }
630
+ else if (currentSection === 'agents') {
631
+ if (line.match(/^ [a-z-]+:/)) {
632
+ currentAgent = trimmed.replace(':', '');
633
+ result.agents[currentAgent] = { status: 'pending' };
634
+ }
635
+ else if (currentAgent && line.startsWith(' ')) {
636
+ const [key, ...valueParts] = trimmed.split(':');
637
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
638
+ const agentStatus = result.agents[currentAgent] || { status: 'pending' };
639
+ if (key === 'status') {
640
+ agentStatus.status = value;
641
+ }
642
+ if (key === 'started_at') {
643
+ agentStatus.started_at = value;
644
+ }
645
+ if (key === 'completed_at') {
646
+ agentStatus.completed_at = value;
647
+ }
648
+ // Parse outputs array (simplified - single line format: [a, b, c])
649
+ if (key === 'outputs') {
650
+ const outputsMatch = value.match(/^\[(.*)\]$/);
651
+ if (outputsMatch) {
652
+ agentStatus.outputs = outputsMatch[1]
653
+ .split(',')
654
+ .map(s => s.trim().replace(/^["']|["']$/g, ''))
655
+ .filter(s => s);
656
+ }
657
+ }
658
+ result.agents[currentAgent] = agentStatus;
659
+ }
660
+ }
304
661
  else if (currentSection === 'roles') {
305
662
  if (line.match(/^ [a-z-]+:/)) {
306
663
  currentRole = trimmed.replace(':', '');
@@ -325,6 +682,70 @@ class PrevcStatusManager {
325
682
  result.roles[currentRole] = roleStatus;
326
683
  }
327
684
  }
685
+ else if (currentSection === 'settings' && line.startsWith(' ')) {
686
+ if (!result.project.settings) {
687
+ result.project.settings = {
688
+ autonomous_mode: false,
689
+ require_plan: true,
690
+ require_approval: true,
691
+ };
692
+ }
693
+ const [key, ...valueParts] = trimmed.split(':');
694
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
695
+ if (key === 'autonomous_mode') {
696
+ result.project.settings.autonomous_mode = value === 'true';
697
+ }
698
+ if (key === 'require_plan') {
699
+ result.project.settings.require_plan = value === 'true';
700
+ }
701
+ if (key === 'require_approval') {
702
+ result.project.settings.require_approval = value === 'true';
703
+ }
704
+ }
705
+ else if (currentSection === 'approval' && line.startsWith(' ')) {
706
+ if (!result.approval) {
707
+ result.approval = {
708
+ plan_created: false,
709
+ plan_approved: false,
710
+ };
711
+ }
712
+ const [key, ...valueParts] = trimmed.split(':');
713
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
714
+ if (key === 'plan_created') {
715
+ result.approval.plan_created = value === 'true';
716
+ }
717
+ if (key === 'plan_approved') {
718
+ result.approval.plan_approved = value === 'true';
719
+ }
720
+ if (key === 'approved_by') {
721
+ result.approval.approved_by = value || undefined;
722
+ }
723
+ if (key === 'approved_at') {
724
+ result.approval.approved_at = value || undefined;
725
+ }
726
+ if (key === 'approval_notes') {
727
+ result.approval.approval_notes = value || undefined;
728
+ }
729
+ }
730
+ else if (currentSection === 'execution' && line.startsWith(' ')) {
731
+ if (!result.execution) {
732
+ result.execution = {
733
+ history: [],
734
+ last_activity: '',
735
+ resume_context: '',
736
+ };
737
+ }
738
+ const [key, ...valueParts] = trimmed.split(':');
739
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
740
+ if (key === 'last_activity') {
741
+ result.execution.last_activity = value;
742
+ }
743
+ if (key === 'resume_context') {
744
+ result.execution.resume_context = value;
745
+ }
746
+ // Note: history parsing is simplified - for complex arrays, use a YAML library
747
+ // History entries are primarily written by the system, not manually edited
748
+ }
328
749
  }
329
750
  return result;
330
751
  }
@@ -373,10 +794,44 @@ class PrevcStatusManager {
373
794
  }
374
795
  }
375
796
  lines.push('');
376
- // Roles section
377
- lines.push('roles:');
378
- for (const [role, roleStatus] of Object.entries(status.roles)) {
379
- if (roleStatus) {
797
+ // Agents section (replaces roles as primary tracking)
798
+ const agentsWithData = [];
799
+ if (status.agents) {
800
+ for (const [agentName, agentStatus] of Object.entries(status.agents)) {
801
+ if (agentStatus) {
802
+ agentsWithData.push([agentName, agentStatus]);
803
+ }
804
+ }
805
+ }
806
+ if (agentsWithData.length > 0) {
807
+ lines.push('agents:');
808
+ for (const [agentName, agentStatus] of agentsWithData) {
809
+ lines.push(` ${agentName}:`);
810
+ lines.push(` status: ${agentStatus.status}`);
811
+ if (agentStatus.started_at) {
812
+ lines.push(` started_at: "${agentStatus.started_at}"`);
813
+ }
814
+ if (agentStatus.completed_at) {
815
+ lines.push(` completed_at: "${agentStatus.completed_at}"`);
816
+ }
817
+ if (agentStatus.outputs && agentStatus.outputs.length > 0) {
818
+ lines.push(` outputs: [${agentStatus.outputs.map((o) => `"${o}"`).join(', ')}]`);
819
+ }
820
+ }
821
+ lines.push('');
822
+ }
823
+ // Roles section (legacy - kept for backward compatibility)
824
+ const rolesWithData = [];
825
+ if (status.roles) {
826
+ for (const [role, roleStatus] of Object.entries(status.roles)) {
827
+ if (roleStatus && Object.keys(roleStatus).length > 0) {
828
+ rolesWithData.push([role, roleStatus]);
829
+ }
830
+ }
831
+ }
832
+ if (rolesWithData.length > 0) {
833
+ lines.push('roles:');
834
+ for (const [role, roleStatus] of rolesWithData) {
380
835
  lines.push(` ${role}:`);
381
836
  if (roleStatus.status) {
382
837
  lines.push(` status: ${roleStatus.status}`);
@@ -394,6 +849,81 @@ class PrevcStatusManager {
394
849
  lines.push(` outputs: [${roleStatus.outputs.map((o) => `"${o}"`).join(', ')}]`);
395
850
  }
396
851
  }
852
+ lines.push('');
853
+ }
854
+ // Execution section (new - replaces roles as primary tracking)
855
+ if (status.execution && status.execution.history.length > 0) {
856
+ lines.push('execution:');
857
+ lines.push(' history:');
858
+ for (const entry of status.execution.history) {
859
+ lines.push(` - timestamp: "${entry.timestamp}"`);
860
+ lines.push(` phase: ${entry.phase}`);
861
+ lines.push(` action: ${entry.action}`);
862
+ if (entry.plan) {
863
+ lines.push(` plan: "${entry.plan}"`);
864
+ }
865
+ if (entry.approved_by) {
866
+ lines.push(` approved_by: "${entry.approved_by}"`);
867
+ }
868
+ if (entry.description) {
869
+ lines.push(` description: "${entry.description}"`);
870
+ }
871
+ // Step-level breadcrumb fields
872
+ if (entry.planPhase) {
873
+ lines.push(` planPhase: "${entry.planPhase}"`);
874
+ }
875
+ if (entry.stepIndex !== undefined) {
876
+ lines.push(` stepIndex: ${entry.stepIndex}`);
877
+ }
878
+ if (entry.stepDescription) {
879
+ lines.push(` stepDescription: "${entry.stepDescription}"`);
880
+ }
881
+ if (entry.output) {
882
+ lines.push(` output: "${entry.output}"`);
883
+ }
884
+ if (entry.notes) {
885
+ lines.push(` notes: "${entry.notes}"`);
886
+ }
887
+ }
888
+ lines.push(` last_activity: "${status.execution.last_activity}"`);
889
+ lines.push(` resume_context: "${status.execution.resume_context}"`);
890
+ lines.push('');
891
+ }
892
+ // Settings section
893
+ const defaultSettings = (0, gates_1.getDefaultSettings)(status.project.scale);
894
+ const settings = status.project.settings;
895
+ const shouldWriteSettings = settings
896
+ && (settings.autonomous_mode !== defaultSettings.autonomous_mode ||
897
+ settings.require_plan !== defaultSettings.require_plan ||
898
+ settings.require_approval !== defaultSettings.require_approval);
899
+ if (shouldWriteSettings && settings) {
900
+ lines.push('settings:');
901
+ lines.push(` autonomous_mode: ${settings.autonomous_mode}`);
902
+ lines.push(` require_plan: ${settings.require_plan}`);
903
+ lines.push(` require_approval: ${settings.require_approval}`);
904
+ lines.push('');
905
+ }
906
+ // Approval section
907
+ const approval = status.approval;
908
+ const shouldWriteApproval = approval && (approval.plan_created ||
909
+ approval.plan_approved ||
910
+ Boolean(approval.approved_by) ||
911
+ Boolean(approval.approved_at) ||
912
+ Boolean(approval.approval_notes));
913
+ if (shouldWriteApproval && approval) {
914
+ lines.push('approval:');
915
+ lines.push(` plan_created: ${approval.plan_created}`);
916
+ lines.push(` plan_approved: ${approval.plan_approved}`);
917
+ if (approval.approved_by) {
918
+ lines.push(` approved_by: "${approval.approved_by}"`);
919
+ }
920
+ if (approval.approved_at) {
921
+ lines.push(` approved_at: "${approval.approved_at}"`);
922
+ }
923
+ if (approval.approval_notes) {
924
+ lines.push(` approval_notes: "${approval.approval_notes}"`);
925
+ }
926
+ lines.push('');
397
927
  }
398
928
  return lines.join('\n') + '\n';
399
929
  }