@tacuchi/agent-workflow-cli 4.0.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 (423) hide show
  1. package/README.md +70 -0
  2. package/dist/adapters/git-cli.d.ts +13 -0
  3. package/dist/adapters/git-cli.d.ts.map +1 -0
  4. package/dist/adapters/git-cli.js +73 -0
  5. package/dist/adapters/git-cli.js.map +1 -0
  6. package/dist/adapters/node-env.d.ts +7 -0
  7. package/dist/adapters/node-env.d.ts.map +1 -0
  8. package/dist/adapters/node-env.js +13 -0
  9. package/dist/adapters/node-env.js.map +1 -0
  10. package/dist/adapters/node-file-system.d.ts +10 -0
  11. package/dist/adapters/node-file-system.d.ts.map +1 -0
  12. package/dist/adapters/node-file-system.js +35 -0
  13. package/dist/adapters/node-file-system.js.map +1 -0
  14. package/dist/adapters/node-process.d.ts +6 -0
  15. package/dist/adapters/node-process.d.ts.map +1 -0
  16. package/dist/adapters/node-process.js +53 -0
  17. package/dist/adapters/node-process.js.map +1 -0
  18. package/dist/application/artifacts-service.d.ts +58 -0
  19. package/dist/application/artifacts-service.d.ts.map +1 -0
  20. package/dist/application/artifacts-service.js +129 -0
  21. package/dist/application/artifacts-service.js.map +1 -0
  22. package/dist/application/auto-plan.d.ts +19 -0
  23. package/dist/application/auto-plan.d.ts.map +1 -0
  24. package/dist/application/auto-plan.js +190 -0
  25. package/dist/application/auto-plan.js.map +1 -0
  26. package/dist/application/check-branch-service.d.ts +31 -0
  27. package/dist/application/check-branch-service.d.ts.map +1 -0
  28. package/dist/application/check-branch-service.js +140 -0
  29. package/dist/application/check-branch-service.js.map +1 -0
  30. package/dist/application/checkpoint-service.d.ts +77 -0
  31. package/dist/application/checkpoint-service.d.ts.map +1 -0
  32. package/dist/application/checkpoint-service.js +259 -0
  33. package/dist/application/checkpoint-service.js.map +1 -0
  34. package/dist/application/checkpoint-write-service.d.ts +42 -0
  35. package/dist/application/checkpoint-write-service.d.ts.map +1 -0
  36. package/dist/application/checkpoint-write-service.js +354 -0
  37. package/dist/application/checkpoint-write-service.js.map +1 -0
  38. package/dist/application/code-scan-service.d.ts +44 -0
  39. package/dist/application/code-scan-service.d.ts.map +1 -0
  40. package/dist/application/code-scan-service.js +211 -0
  41. package/dist/application/code-scan-service.js.map +1 -0
  42. package/dist/application/decisiones-service.d.ts +22 -0
  43. package/dist/application/decisiones-service.d.ts.map +1 -0
  44. package/dist/application/decisiones-service.js +31 -0
  45. package/dist/application/decisiones-service.js.map +1 -0
  46. package/dist/application/dependencias-service.d.ts +21 -0
  47. package/dist/application/dependencias-service.d.ts.map +1 -0
  48. package/dist/application/dependencias-service.js +31 -0
  49. package/dist/application/dependencias-service.js.map +1 -0
  50. package/dist/application/dev-bootstrap-dsn-service.d.ts +16 -0
  51. package/dist/application/dev-bootstrap-dsn-service.d.ts.map +1 -0
  52. package/dist/application/dev-bootstrap-dsn-service.js +31 -0
  53. package/dist/application/dev-bootstrap-dsn-service.js.map +1 -0
  54. package/dist/application/dev-graduate-service.d.ts +33 -0
  55. package/dist/application/dev-graduate-service.d.ts.map +1 -0
  56. package/dist/application/dev-graduate-service.js +116 -0
  57. package/dist/application/dev-graduate-service.js.map +1 -0
  58. package/dist/application/dev-only-services.d.ts +50 -0
  59. package/dist/application/dev-only-services.d.ts.map +1 -0
  60. package/dist/application/dev-only-services.js +155 -0
  61. package/dist/application/dev-only-services.js.map +1 -0
  62. package/dist/application/handoff.d.ts +19 -0
  63. package/dist/application/handoff.d.ts.map +1 -0
  64. package/dist/application/handoff.js +98 -0
  65. package/dist/application/handoff.js.map +1 -0
  66. package/dist/application/history-data-service.d.ts +26 -0
  67. package/dist/application/history-data-service.d.ts.map +1 -0
  68. package/dist/application/history-data-service.js +61 -0
  69. package/dist/application/history-data-service.js.map +1 -0
  70. package/dist/application/history-table.d.ts +16 -0
  71. package/dist/application/history-table.d.ts.map +1 -0
  72. package/dist/application/history-table.js +49 -0
  73. package/dist/application/history-table.js.map +1 -0
  74. package/dist/application/history-update-service.d.ts +24 -0
  75. package/dist/application/history-update-service.d.ts.map +1 -0
  76. package/dist/application/history-update-service.js +47 -0
  77. package/dist/application/history-update-service.js.map +1 -0
  78. package/dist/application/hook-branch-check.d.ts +22 -0
  79. package/dist/application/hook-branch-check.d.ts.map +1 -0
  80. package/dist/application/hook-branch-check.js +152 -0
  81. package/dist/application/hook-branch-check.js.map +1 -0
  82. package/dist/application/hook-sql-mutation-guard.d.ts +13 -0
  83. package/dist/application/hook-sql-mutation-guard.d.ts.map +1 -0
  84. package/dist/application/hook-sql-mutation-guard.js +119 -0
  85. package/dist/application/hook-sql-mutation-guard.js.map +1 -0
  86. package/dist/application/markdown.d.ts +4 -0
  87. package/dist/application/markdown.d.ts.map +1 -0
  88. package/dist/application/markdown.js +53 -0
  89. package/dist/application/markdown.js.map +1 -0
  90. package/dist/application/mcp-dbhub-launcher.d.ts +31 -0
  91. package/dist/application/mcp-dbhub-launcher.d.ts.map +1 -0
  92. package/dist/application/mcp-dbhub-launcher.js +84 -0
  93. package/dist/application/mcp-dbhub-launcher.js.map +1 -0
  94. package/dist/application/multiroot-service.d.ts +83 -0
  95. package/dist/application/multiroot-service.d.ts.map +1 -0
  96. package/dist/application/multiroot-service.js +440 -0
  97. package/dist/application/multiroot-service.js.map +1 -0
  98. package/dist/application/objetivo-service.d.ts +23 -0
  99. package/dist/application/objetivo-service.d.ts.map +1 -0
  100. package/dist/application/objetivo-service.js +32 -0
  101. package/dist/application/objetivo-service.js.map +1 -0
  102. package/dist/application/orchestration.d.ts +29 -0
  103. package/dist/application/orchestration.d.ts.map +1 -0
  104. package/dist/application/orchestration.js +291 -0
  105. package/dist/application/orchestration.js.map +1 -0
  106. package/dist/application/parsers/decisiones.d.ts +9 -0
  107. package/dist/application/parsers/decisiones.d.ts.map +1 -0
  108. package/dist/application/parsers/decisiones.js +55 -0
  109. package/dist/application/parsers/decisiones.js.map +1 -0
  110. package/dist/application/parsers/dependencias.d.ts +7 -0
  111. package/dist/application/parsers/dependencias.d.ts.map +1 -0
  112. package/dist/application/parsers/dependencias.js +76 -0
  113. package/dist/application/parsers/dependencias.js.map +1 -0
  114. package/dist/application/parsers/objetivo.d.ts +11 -0
  115. package/dist/application/parsers/objetivo.d.ts.map +1 -0
  116. package/dist/application/parsers/objetivo.js +73 -0
  117. package/dist/application/parsers/objetivo.js.map +1 -0
  118. package/dist/application/parsers/project-block.d.ts +35 -0
  119. package/dist/application/parsers/project-block.d.ts.map +1 -0
  120. package/dist/application/parsers/project-block.js +188 -0
  121. package/dist/application/parsers/project-block.js.map +1 -0
  122. package/dist/application/parsers/tasks.d.ts +17 -0
  123. package/dist/application/parsers/tasks.d.ts.map +1 -0
  124. package/dist/application/parsers/tasks.js +40 -0
  125. package/dist/application/parsers/tasks.js.map +1 -0
  126. package/dist/application/paths-service.d.ts +28 -0
  127. package/dist/application/paths-service.d.ts.map +1 -0
  128. package/dist/application/paths-service.js +67 -0
  129. package/dist/application/paths-service.js.map +1 -0
  130. package/dist/application/paths.d.ts +2 -0
  131. package/dist/application/paths.d.ts.map +1 -0
  132. package/dist/application/paths.js +12 -0
  133. package/dist/application/paths.js.map +1 -0
  134. package/dist/application/phase-detect-service.d.ts +28 -0
  135. package/dist/application/phase-detect-service.d.ts.map +1 -0
  136. package/dist/application/phase-detect-service.js +141 -0
  137. package/dist/application/phase-detect-service.js.map +1 -0
  138. package/dist/application/phase-next-service.d.ts +20 -0
  139. package/dist/application/phase-next-service.d.ts.map +1 -0
  140. package/dist/application/phase-next-service.js +97 -0
  141. package/dist/application/phase-next-service.js.map +1 -0
  142. package/dist/application/plugin-doctor-service.d.ts +60 -0
  143. package/dist/application/plugin-doctor-service.d.ts.map +1 -0
  144. package/dist/application/plugin-doctor-service.js +651 -0
  145. package/dist/application/plugin-doctor-service.js.map +1 -0
  146. package/dist/application/project-md-service.d.ts +13 -0
  147. package/dist/application/project-md-service.d.ts.map +1 -0
  148. package/dist/application/project-md-service.js +27 -0
  149. package/dist/application/project-md-service.js.map +1 -0
  150. package/dist/application/project-md-upsert-service.d.ts +48 -0
  151. package/dist/application/project-md-upsert-service.d.ts.map +1 -0
  152. package/dist/application/project-md-upsert-service.js +182 -0
  153. package/dist/application/project-md-upsert-service.js.map +1 -0
  154. package/dist/application/release-data-service.d.ts +81 -0
  155. package/dist/application/release-data-service.d.ts.map +1 -0
  156. package/dist/application/release-data-service.js +305 -0
  157. package/dist/application/release-data-service.js.map +1 -0
  158. package/dist/application/render/history-row.d.ts +10 -0
  159. package/dist/application/render/history-row.d.ts.map +1 -0
  160. package/dist/application/render/history-row.js +47 -0
  161. package/dist/application/render/history-row.js.map +1 -0
  162. package/dist/application/render/project-block.d.ts +17 -0
  163. package/dist/application/render/project-block.d.ts.map +1 -0
  164. package/dist/application/render/project-block.js +129 -0
  165. package/dist/application/render/project-block.js.map +1 -0
  166. package/dist/application/self/doctor-self.d.ts +27 -0
  167. package/dist/application/self/doctor-self.d.ts.map +1 -0
  168. package/dist/application/self/doctor-self.js +44 -0
  169. package/dist/application/self/doctor-self.js.map +1 -0
  170. package/dist/application/self/install-skill.d.ts +25 -0
  171. package/dist/application/self/install-skill.d.ts.map +1 -0
  172. package/dist/application/self/install-skill.js +176 -0
  173. package/dist/application/self/install-skill.js.map +1 -0
  174. package/dist/application/self/namespace-info.d.ts +8 -0
  175. package/dist/application/self/namespace-info.d.ts.map +1 -0
  176. package/dist/application/self/namespace-info.js +11 -0
  177. package/dist/application/self/namespace-info.js.map +1 -0
  178. package/dist/application/self/update-self.d.ts +10 -0
  179. package/dist/application/self/update-self.d.ts.map +1 -0
  180. package/dist/application/self/update-self.js +31 -0
  181. package/dist/application/self/update-self.js.map +1 -0
  182. package/dist/application/session-close-service.d.ts +30 -0
  183. package/dist/application/session-close-service.d.ts.map +1 -0
  184. package/dist/application/session-close-service.js +64 -0
  185. package/dist/application/session-close-service.js.map +1 -0
  186. package/dist/application/session-create-service.d.ts +40 -0
  187. package/dist/application/session-create-service.d.ts.map +1 -0
  188. package/dist/application/session-create-service.js +197 -0
  189. package/dist/application/session-create-service.js.map +1 -0
  190. package/dist/application/session-resolver.d.ts +39 -0
  191. package/dist/application/session-resolver.d.ts.map +1 -0
  192. package/dist/application/session-resolver.js +192 -0
  193. package/dist/application/session-resolver.js.map +1 -0
  194. package/dist/application/session-resume-service.d.ts +23 -0
  195. package/dist/application/session-resume-service.d.ts.map +1 -0
  196. package/dist/application/session-resume-service.js +44 -0
  197. package/dist/application/session-resume-service.js.map +1 -0
  198. package/dist/application/sessions-service.d.ts +31 -0
  199. package/dist/application/sessions-service.d.ts.map +1 -0
  200. package/dist/application/sessions-service.js +74 -0
  201. package/dist/application/sessions-service.js.map +1 -0
  202. package/dist/application/skill-index-service.d.ts +27 -0
  203. package/dist/application/skill-index-service.d.ts.map +1 -0
  204. package/dist/application/skill-index-service.js +99 -0
  205. package/dist/application/skill-index-service.js.map +1 -0
  206. package/dist/application/sources-service.d.ts +43 -0
  207. package/dist/application/sources-service.d.ts.map +1 -0
  208. package/dist/application/sources-service.js +176 -0
  209. package/dist/application/sources-service.js.map +1 -0
  210. package/dist/application/stack-detect.d.ts +7 -0
  211. package/dist/application/stack-detect.d.ts.map +1 -0
  212. package/dist/application/stack-detect.js +52 -0
  213. package/dist/application/stack-detect.js.map +1 -0
  214. package/dist/application/stack-service.d.ts +14 -0
  215. package/dist/application/stack-service.d.ts.map +1 -0
  216. package/dist/application/stack-service.js +13 -0
  217. package/dist/application/stack-service.js.map +1 -0
  218. package/dist/application/tasks-service.d.ts +27 -0
  219. package/dist/application/tasks-service.d.ts.map +1 -0
  220. package/dist/application/tasks-service.js +45 -0
  221. package/dist/application/tasks-service.js.map +1 -0
  222. package/dist/application/templates/objetivo.d.ts +3 -0
  223. package/dist/application/templates/objetivo.d.ts.map +1 -0
  224. package/dist/application/templates/objetivo.js +77 -0
  225. package/dist/application/templates/objetivo.js.map +1 -0
  226. package/dist/application/upgrade-hub-mode-service.d.ts +27 -0
  227. package/dist/application/upgrade-hub-mode-service.d.ts.map +1 -0
  228. package/dist/application/upgrade-hub-mode-service.js +114 -0
  229. package/dist/application/upgrade-hub-mode-service.js.map +1 -0
  230. package/dist/application/workspace-mode-service.d.ts +17 -0
  231. package/dist/application/workspace-mode-service.d.ts.map +1 -0
  232. package/dist/application/workspace-mode-service.js +39 -0
  233. package/dist/application/workspace-mode-service.js.map +1 -0
  234. package/dist/cli/commands/checkpoint-write.d.ts +4 -0
  235. package/dist/cli/commands/checkpoint-write.d.ts.map +1 -0
  236. package/dist/cli/commands/checkpoint-write.js +25 -0
  237. package/dist/cli/commands/checkpoint-write.js.map +1 -0
  238. package/dist/cli/commands/decisiones-list.d.ts +3 -0
  239. package/dist/cli/commands/decisiones-list.d.ts.map +1 -0
  240. package/dist/cli/commands/decisiones-list.js +17 -0
  241. package/dist/cli/commands/decisiones-list.js.map +1 -0
  242. package/dist/cli/commands/dependencias-list.d.ts +3 -0
  243. package/dist/cli/commands/dependencias-list.d.ts.map +1 -0
  244. package/dist/cli/commands/dependencias-list.js +11 -0
  245. package/dist/cli/commands/dependencias-list.js.map +1 -0
  246. package/dist/cli/commands/dev-only.d.ts +6 -0
  247. package/dist/cli/commands/dev-only.d.ts.map +1 -0
  248. package/dist/cli/commands/dev-only.js +51 -0
  249. package/dist/cli/commands/dev-only.js.map +1 -0
  250. package/dist/cli/commands/history-data.d.ts +3 -0
  251. package/dist/cli/commands/history-data.d.ts.map +1 -0
  252. package/dist/cli/commands/history-data.js +17 -0
  253. package/dist/cli/commands/history-data.js.map +1 -0
  254. package/dist/cli/commands/history-update.d.ts +3 -0
  255. package/dist/cli/commands/history-update.d.ts.map +1 -0
  256. package/dist/cli/commands/history-update.js +37 -0
  257. package/dist/cli/commands/history-update.js.map +1 -0
  258. package/dist/cli/commands/hook.d.ts +3 -0
  259. package/dist/cli/commands/hook.d.ts.map +1 -0
  260. package/dist/cli/commands/hook.js +53 -0
  261. package/dist/cli/commands/hook.js.map +1 -0
  262. package/dist/cli/commands/mcp.d.ts +3 -0
  263. package/dist/cli/commands/mcp.d.ts.map +1 -0
  264. package/dist/cli/commands/mcp.js +56 -0
  265. package/dist/cli/commands/mcp.js.map +1 -0
  266. package/dist/cli/commands/multiroot.d.ts +4 -0
  267. package/dist/cli/commands/multiroot.d.ts.map +1 -0
  268. package/dist/cli/commands/multiroot.js +50 -0
  269. package/dist/cli/commands/multiroot.js.map +1 -0
  270. package/dist/cli/commands/objetivo-data.d.ts +3 -0
  271. package/dist/cli/commands/objetivo-data.d.ts.map +1 -0
  272. package/dist/cli/commands/objetivo-data.js +11 -0
  273. package/dist/cli/commands/objetivo-data.js.map +1 -0
  274. package/dist/cli/commands/orchestration.d.ts +5 -0
  275. package/dist/cli/commands/orchestration.d.ts.map +1 -0
  276. package/dist/cli/commands/orchestration.js +84 -0
  277. package/dist/cli/commands/orchestration.js.map +1 -0
  278. package/dist/cli/commands/plugin-doctor.d.ts +3 -0
  279. package/dist/cli/commands/plugin-doctor.d.ts.map +1 -0
  280. package/dist/cli/commands/plugin-doctor.js +29 -0
  281. package/dist/cli/commands/plugin-doctor.js.map +1 -0
  282. package/dist/cli/commands/project-md-upsert.d.ts +3 -0
  283. package/dist/cli/commands/project-md-upsert.d.ts.map +1 -0
  284. package/dist/cli/commands/project-md-upsert.js +132 -0
  285. package/dist/cli/commands/project-md-upsert.js.map +1 -0
  286. package/dist/cli/commands/release-data.d.ts +3 -0
  287. package/dist/cli/commands/release-data.d.ts.map +1 -0
  288. package/dist/cli/commands/release-data.js +27 -0
  289. package/dist/cli/commands/release-data.js.map +1 -0
  290. package/dist/cli/commands/self.d.ts +3 -0
  291. package/dist/cli/commands/self.d.ts.map +1 -0
  292. package/dist/cli/commands/self.js +41 -0
  293. package/dist/cli/commands/self.js.map +1 -0
  294. package/dist/cli/commands/session-artifacts.d.ts +3 -0
  295. package/dist/cli/commands/session-artifacts.d.ts.map +1 -0
  296. package/dist/cli/commands/session-artifacts.js +17 -0
  297. package/dist/cli/commands/session-artifacts.js.map +1 -0
  298. package/dist/cli/commands/session-close.d.ts +3 -0
  299. package/dist/cli/commands/session-close.d.ts.map +1 -0
  300. package/dist/cli/commands/session-close.js +43 -0
  301. package/dist/cli/commands/session-close.js.map +1 -0
  302. package/dist/cli/commands/session-create.d.ts +3 -0
  303. package/dist/cli/commands/session-create.d.ts.map +1 -0
  304. package/dist/cli/commands/session-create.js +42 -0
  305. package/dist/cli/commands/session-create.js.map +1 -0
  306. package/dist/cli/commands/session-resume.d.ts +3 -0
  307. package/dist/cli/commands/session-resume.d.ts.map +1 -0
  308. package/dist/cli/commands/session-resume.js +11 -0
  309. package/dist/cli/commands/session-resume.js.map +1 -0
  310. package/dist/cli/commands/sessions.d.ts +4 -0
  311. package/dist/cli/commands/sessions.d.ts.map +1 -0
  312. package/dist/cli/commands/sessions.js +26 -0
  313. package/dist/cli/commands/sessions.js.map +1 -0
  314. package/dist/cli/commands/tasks-data.d.ts +3 -0
  315. package/dist/cli/commands/tasks-data.d.ts.map +1 -0
  316. package/dist/cli/commands/tasks-data.js +20 -0
  317. package/dist/cli/commands/tasks-data.js.map +1 -0
  318. package/dist/cli/commands/wave2-extras.d.ts +7 -0
  319. package/dist/cli/commands/wave2-extras.d.ts.map +1 -0
  320. package/dist/cli/commands/wave2-extras.js +87 -0
  321. package/dist/cli/commands/wave2-extras.js.map +1 -0
  322. package/dist/cli/commands/wave2-final.d.ts +8 -0
  323. package/dist/cli/commands/wave2-final.d.ts.map +1 -0
  324. package/dist/cli/commands/wave2-final.js +134 -0
  325. package/dist/cli/commands/wave2-final.js.map +1 -0
  326. package/dist/cli/commands/wave4d-simple.d.ts +6 -0
  327. package/dist/cli/commands/wave4d-simple.d.ts.map +1 -0
  328. package/dist/cli/commands/wave4d-simple.js +133 -0
  329. package/dist/cli/commands/wave4d-simple.js.map +1 -0
  330. package/dist/cli/interactive-menu.d.ts +9 -0
  331. package/dist/cli/interactive-menu.d.ts.map +1 -0
  332. package/dist/cli/interactive-menu.js +17 -0
  333. package/dist/cli/interactive-menu.js.map +1 -0
  334. package/dist/cli/main.d.ts +3 -0
  335. package/dist/cli/main.d.ts.map +1 -0
  336. package/dist/cli/main.js +208 -0
  337. package/dist/cli/main.js.map +1 -0
  338. package/dist/cli/parser.d.ts +17 -0
  339. package/dist/cli/parser.d.ts.map +1 -0
  340. package/dist/cli/parser.js +125 -0
  341. package/dist/cli/parser.js.map +1 -0
  342. package/dist/cli/registry.d.ts +15 -0
  343. package/dist/cli/registry.d.ts.map +1 -0
  344. package/dist/cli/registry.js +16 -0
  345. package/dist/cli/registry.js.map +1 -0
  346. package/dist/cli/render.d.ts +6 -0
  347. package/dist/cli/render.d.ts.map +1 -0
  348. package/dist/cli/render.js +13 -0
  349. package/dist/cli/render.js.map +1 -0
  350. package/dist/cli/types.d.ts +17 -0
  351. package/dist/cli/types.d.ts.map +1 -0
  352. package/dist/cli/types.js +2 -0
  353. package/dist/cli/types.js.map +1 -0
  354. package/dist/domain/plugin.d.ts +21 -0
  355. package/dist/domain/plugin.d.ts.map +1 -0
  356. package/dist/domain/plugin.js +2 -0
  357. package/dist/domain/plugin.js.map +1 -0
  358. package/dist/domain/project.d.ts +22 -0
  359. package/dist/domain/project.d.ts.map +1 -0
  360. package/dist/domain/project.js +2 -0
  361. package/dist/domain/project.js.map +1 -0
  362. package/dist/domain/session.d.ts +39 -0
  363. package/dist/domain/session.d.ts.map +1 -0
  364. package/dist/domain/session.js +2 -0
  365. package/dist/domain/session.js.map +1 -0
  366. package/dist/domain/types.d.ts +16 -0
  367. package/dist/domain/types.d.ts.map +1 -0
  368. package/dist/domain/types.js +2 -0
  369. package/dist/domain/types.js.map +1 -0
  370. package/dist/index.d.ts +22 -0
  371. package/dist/index.d.ts.map +1 -0
  372. package/dist/index.js +12 -0
  373. package/dist/index.js.map +1 -0
  374. package/dist/ports/env.d.ts +6 -0
  375. package/dist/ports/env.d.ts.map +1 -0
  376. package/dist/ports/env.js +2 -0
  377. package/dist/ports/env.js.map +1 -0
  378. package/dist/ports/file-system.d.ts +20 -0
  379. package/dist/ports/file-system.d.ts.map +1 -0
  380. package/dist/ports/file-system.js +2 -0
  381. package/dist/ports/file-system.js.map +1 -0
  382. package/dist/ports/git.d.ts +15 -0
  383. package/dist/ports/git.d.ts.map +1 -0
  384. package/dist/ports/git.js +2 -0
  385. package/dist/ports/git.js.map +1 -0
  386. package/dist/ports/process.d.ts +16 -0
  387. package/dist/ports/process.d.ts.map +1 -0
  388. package/dist/ports/process.js +2 -0
  389. package/dist/ports/process.js.map +1 -0
  390. package/dist/runtime/config-service.d.ts +19 -0
  391. package/dist/runtime/config-service.d.ts.map +1 -0
  392. package/dist/runtime/config-service.js +145 -0
  393. package/dist/runtime/config-service.js.map +1 -0
  394. package/dist/runtime/namespace-resolver.d.ts +18 -0
  395. package/dist/runtime/namespace-resolver.d.ts.map +1 -0
  396. package/dist/runtime/namespace-resolver.js +58 -0
  397. package/dist/runtime/namespace-resolver.js.map +1 -0
  398. package/dist/runtime/namespace.d.ts +7 -0
  399. package/dist/runtime/namespace.d.ts.map +1 -0
  400. package/dist/runtime/namespace.js +12 -0
  401. package/dist/runtime/namespace.js.map +1 -0
  402. package/dist/runtime/types.d.ts +43 -0
  403. package/dist/runtime/types.d.ts.map +1 -0
  404. package/dist/runtime/types.js +8 -0
  405. package/dist/runtime/types.js.map +1 -0
  406. package/package.json +57 -0
  407. package/skills/agent-workflow/LICENSE +21 -0
  408. package/skills/agent-workflow/MANUAL-FUNCIONAL.md +298 -0
  409. package/skills/agent-workflow/MANUAL-TECNICO.md +271 -0
  410. package/skills/agent-workflow/README.md +74 -0
  411. package/skills/agent-workflow/SKILL.md +111 -0
  412. package/skills/agent-workflow/docs/TEST-PLAN.md +163 -0
  413. package/skills/agent-workflow/references/checkpoint.md +59 -0
  414. package/skills/agent-workflow/references/dev-only.md +50 -0
  415. package/skills/agent-workflow/references/doctor.md +61 -0
  416. package/skills/agent-workflow/references/history.md +40 -0
  417. package/skills/agent-workflow/references/hooks.md +35 -0
  418. package/skills/agent-workflow/references/mcp.md +31 -0
  419. package/skills/agent-workflow/references/objetivo-tasks.md +64 -0
  420. package/skills/agent-workflow/references/orchestration.md +86 -0
  421. package/skills/agent-workflow/references/self.md +68 -0
  422. package/skills/agent-workflow/references/session-mgmt.md +109 -0
  423. package/skills/agent-workflow/references/sources.md +102 -0
@@ -0,0 +1,25 @@
1
+ import type { ParsedArgs } from "../../cli/parser.js";
2
+ import type { CliContext } from "../../cli/types.js";
3
+ import type { CommandResult } from "../../domain/types.js";
4
+ export declare const SKILL_DIR_NAME = "agent-workflow";
5
+ export declare const BUNDLED_SKILL_REL_PATH = "skills/agent-workflow";
6
+ export interface SelfInstallSkillData {
7
+ status: "installed" | "dry-run";
8
+ source: string;
9
+ source_kind: "path" | "bundled";
10
+ dest: string;
11
+ files_copied?: number;
12
+ overwrote_existing?: boolean;
13
+ }
14
+ export declare function selfInstallSkill(args: ParsedArgs, ctx: CliContext, resolveBundled?: () => Promise<string | null>): Promise<CommandResult<SelfInstallSkillData>>;
15
+ /**
16
+ * Resolve the bundled skill path by walking up from this module's directory
17
+ * until a `skills/agent-workflow/SKILL.md` is found. Returns the directory
18
+ * containing SKILL.md, or null if no candidate is reachable.
19
+ *
20
+ * Works in both dist (`dist/application/self/install-skill.js`) and dev
21
+ * (`src/application/self/install-skill.ts` via a runner) layouts because the
22
+ * walk-up looks for the marker file rather than a fixed depth.
23
+ */
24
+ export declare function resolveBundledSkillPath(): Promise<string | null>;
25
+ //# sourceMappingURL=install-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-skill.d.ts","sourceRoot":"","sources":["../../../src/application/self/install-skill.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,0BAA6B,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,cAAc,GAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAA2B,GACrE,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAuH9C;AAiCD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBtE"}
@@ -0,0 +1,176 @@
1
+ import { cp, readFile, rm, stat } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ export const SKILL_DIR_NAME = "agent-workflow";
5
+ export const BUNDLED_SKILL_REL_PATH = `skills/${SKILL_DIR_NAME}`;
6
+ export async function selfInstallSkill(args, ctx, resolveBundled = resolveBundledSkillPath) {
7
+ const force = args.flags.has("--force");
8
+ const dryRun = args.flags.has("--dry-run");
9
+ const fromArg = args.values.get("from");
10
+ const dest = join(ctx.env.homeDir(), ".claude", "skills", SKILL_DIR_NAME);
11
+ let sourceArg;
12
+ let sourceKind;
13
+ if (fromArg !== undefined) {
14
+ if (looksLikeRemoteUrl(fromArg)) {
15
+ return {
16
+ ok: false,
17
+ error: {
18
+ code: "INVALID_SOURCE",
19
+ message: "--from must be a local filesystem path. Remote URLs are no longer supported — the skill is bundled inside the CLI tarball. Drop --from to install the bundled skill, or pass a local checkout path.",
20
+ },
21
+ exitCode: 1,
22
+ };
23
+ }
24
+ sourceArg = fromArg;
25
+ sourceKind = "path";
26
+ }
27
+ else {
28
+ const bundled = await resolveBundled();
29
+ if (bundled === null) {
30
+ return {
31
+ ok: false,
32
+ error: {
33
+ code: "BUNDLED_NOT_FOUND",
34
+ message: `Bundled skill not found relative to the CLI install. This usually means you are running from a dev checkout without a build, or the tarball is missing 'skills/'. Use --from <local-path> to override.`,
35
+ },
36
+ exitCode: 1,
37
+ };
38
+ }
39
+ sourceArg = bundled;
40
+ sourceKind = "bundled";
41
+ }
42
+ const destExists = await ctx.fs.exists(dest);
43
+ if (destExists && !force && !dryRun) {
44
+ return {
45
+ ok: false,
46
+ error: {
47
+ code: "DEST_EXISTS",
48
+ message: `Destination ${dest} already exists. Use --force to overwrite or --dry-run to preview.`,
49
+ },
50
+ exitCode: 1,
51
+ };
52
+ }
53
+ if (dryRun) {
54
+ return {
55
+ ok: true,
56
+ data: {
57
+ status: "dry-run",
58
+ source: sourceArg,
59
+ source_kind: sourceKind,
60
+ dest,
61
+ overwrote_existing: destExists,
62
+ },
63
+ exitCode: 0,
64
+ };
65
+ }
66
+ const sourceExists = await ctx.fs.exists(sourceArg);
67
+ if (!sourceExists) {
68
+ return {
69
+ ok: false,
70
+ error: {
71
+ code: "SOURCE_NOT_FOUND",
72
+ message: `Source path '${sourceArg}' does not exist.`,
73
+ },
74
+ exitCode: 1,
75
+ };
76
+ }
77
+ const stagingDir = sourceArg;
78
+ const skillPath = join(stagingDir, "SKILL.md");
79
+ if (!(await ctx.fs.exists(skillPath))) {
80
+ return {
81
+ ok: false,
82
+ error: {
83
+ code: "INVALID_SKILL_REPO",
84
+ message: `Source missing SKILL.md at ${skillPath}.`,
85
+ },
86
+ exitCode: 1,
87
+ };
88
+ }
89
+ const skillContent = await readFile(skillPath, "utf8");
90
+ if (!hasValidFrontmatter(skillContent)) {
91
+ return {
92
+ ok: false,
93
+ error: {
94
+ code: "INVALID_SKILL_FRONTMATTER",
95
+ message: "SKILL.md frontmatter must include 'name' and 'description'.",
96
+ },
97
+ exitCode: 1,
98
+ };
99
+ }
100
+ if (destExists && force) {
101
+ await rm(dest, { recursive: true, force: true });
102
+ }
103
+ const filesCopied = await copyTree(stagingDir, dest);
104
+ return {
105
+ ok: true,
106
+ data: {
107
+ status: "installed",
108
+ source: sourceArg,
109
+ source_kind: sourceKind,
110
+ dest,
111
+ files_copied: filesCopied,
112
+ overwrote_existing: destExists,
113
+ },
114
+ exitCode: 0,
115
+ };
116
+ }
117
+ /**
118
+ * Reject `--from` values that look like a remote URL up front so users get a
119
+ * clear error instead of a confusing "path does not exist". The skill is
120
+ * bundled-only since v3.0.2 — the standalone repo `Tacuchi/agent-workflow-manager`
121
+ * is no longer maintained.
122
+ */
123
+ function looksLikeRemoteUrl(value) {
124
+ return /^(https?:\/\/|git@|ssh:\/\/|git:\/\/)/.test(value);
125
+ }
126
+ function hasValidFrontmatter(content) {
127
+ const match = content.match(/^---\s*\n([\s\S]*?)\n---/);
128
+ if (!match)
129
+ return false;
130
+ const block = match[1] ?? "";
131
+ return /^name:\s*\S/m.test(block) && /^description:\s*\S/m.test(block);
132
+ }
133
+ async function copyTree(src, dest) {
134
+ let count = 0;
135
+ await cp(src, dest, {
136
+ recursive: true,
137
+ filter: (source) => {
138
+ const rel = source.slice(src.length);
139
+ if (rel.startsWith("/.git") || rel === "/.git")
140
+ return false;
141
+ count += 1;
142
+ return true;
143
+ },
144
+ });
145
+ return count;
146
+ }
147
+ /**
148
+ * Resolve the bundled skill path by walking up from this module's directory
149
+ * until a `skills/agent-workflow/SKILL.md` is found. Returns the directory
150
+ * containing SKILL.md, or null if no candidate is reachable.
151
+ *
152
+ * Works in both dist (`dist/application/self/install-skill.js`) and dev
153
+ * (`src/application/self/install-skill.ts` via a runner) layouts because the
154
+ * walk-up looks for the marker file rather than a fixed depth.
155
+ */
156
+ export async function resolveBundledSkillPath() {
157
+ const here = dirname(fileURLToPath(import.meta.url));
158
+ let current = here;
159
+ for (let i = 0; i < 8; i += 1) {
160
+ const candidate = join(current, BUNDLED_SKILL_REL_PATH);
161
+ const skillFile = join(candidate, "SKILL.md");
162
+ try {
163
+ await stat(skillFile);
164
+ return candidate;
165
+ }
166
+ catch {
167
+ // not here, walk up
168
+ }
169
+ const parent = dirname(current);
170
+ if (parent === current)
171
+ break;
172
+ current = parent;
173
+ }
174
+ return null;
175
+ }
176
+ //# sourceMappingURL=install-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../../../src/application/self/install-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CliContext } from "../../cli/types.js";
2
+ import type { CommandResult } from "../../domain/types.js";
3
+ export interface SelfNamespaceData {
4
+ namespace: string;
5
+ source: string;
6
+ }
7
+ export declare function selfNamespace(ctx: CliContext): Promise<CommandResult<SelfNamespaceData>>;
8
+ //# sourceMappingURL=namespace-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-info.d.ts","sourceRoot":"","sources":["../../../src/application/self/namespace-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAS9F"}
@@ -0,0 +1,11 @@
1
+ export async function selfNamespace(ctx) {
2
+ return {
3
+ ok: true,
4
+ data: {
5
+ namespace: ctx.namespace.namespace,
6
+ source: ctx.namespace.source,
7
+ },
8
+ exitCode: 0,
9
+ };
10
+ }
11
+ //# sourceMappingURL=namespace-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-info.js","sourceRoot":"","sources":["../../../src/application/self/namespace-info.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe;IACjD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE;YACJ,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS;YAClC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM;SAC7B;QACD,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CliContext } from "../../cli/types.js";
2
+ import type { CommandResult } from "../../domain/types.js";
3
+ export interface SelfUpdateData {
4
+ command: string;
5
+ exit_code: number;
6
+ stdout: string;
7
+ stderr: string;
8
+ }
9
+ export declare function selfUpdate(ctx: CliContext): Promise<CommandResult<SelfUpdateData>>;
10
+ //# sourceMappingURL=update-self.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-self.d.ts","sourceRoot":"","sources":["../../../src/application/self/update-self.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CA8BxF"}
@@ -0,0 +1,31 @@
1
+ export async function selfUpdate(ctx) {
2
+ // Optional TTY confirm
3
+ if (process.stdout.isTTY === true) {
4
+ const { confirm } = await import("@inquirer/prompts");
5
+ const ok = await confirm({
6
+ message: `Run \`npm install -g ${ctx.runtime.packageName}@latest\`?`,
7
+ default: true,
8
+ });
9
+ if (!ok) {
10
+ return {
11
+ ok: true,
12
+ data: { command: "(cancelled)", exit_code: 0, stdout: "", stderr: "" },
13
+ exitCode: 0,
14
+ };
15
+ }
16
+ }
17
+ const args = ["install", "-g", `${ctx.runtime.packageName}@latest`];
18
+ const result = await ctx.process.run("npm", args, {});
19
+ const code = result.code;
20
+ return {
21
+ ok: result.code === 0,
22
+ data: {
23
+ command: `npm ${args.join(" ")}`,
24
+ exit_code: result.code,
25
+ stdout: result.stdout,
26
+ stderr: result.stderr,
27
+ },
28
+ exitCode: code === 0 || code === 1 || code === 2 ? code : 1,
29
+ };
30
+ }
31
+ //# sourceMappingURL=update-self.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-self.js","sourceRoot":"","sources":["../../../src/application/self/update-self.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe;IAC9C,uBAAuB;IACvB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;YACvB,OAAO,EAAE,wBAAwB,GAAG,CAAC,OAAO,CAAC,WAAW,YAAY;YACpE,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBACtE,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,SAAS,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAgB,CAAC;IACrC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC;QACrB,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAChC,SAAS,EAAE,MAAM,CAAC,IAAI;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB;QACD,QAAQ,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { EnvPort } from "../ports/env.js";
2
+ import type { FileSystemPort } from "../ports/file-system.js";
3
+ import { type UpsertAction } from "./history-table.js";
4
+ import type { PathsService } from "./paths-service.js";
5
+ import { type ProjectMdUpsertOutput } from "./project-md-upsert-service.js";
6
+ export interface SessionCloseInput {
7
+ code?: string;
8
+ graduatedDecisions?: string;
9
+ graduatedPlan?: string;
10
+ graduatedScripts?: string;
11
+ graduatedDesign?: string;
12
+ graduatedRfc?: string;
13
+ refs?: string;
14
+ }
15
+ export interface SessionCloseOutput {
16
+ code: string;
17
+ folder: string;
18
+ history_action: UpsertAction;
19
+ refs: string;
20
+ qtc_project_updated: boolean;
21
+ }
22
+ export interface SessionCloseFullOutput {
23
+ projectMd: ProjectMdUpsertOutput;
24
+ sessionClose: SessionCloseOutput;
25
+ }
26
+ export interface SessionCloseError {
27
+ error: string;
28
+ }
29
+ export declare function runSessionClose(fs: FileSystemPort, env: EnvPort, paths: PathsService, input: SessionCloseInput): Promise<SessionCloseFullOutput | SessionCloseError>;
30
+ //# sourceMappingURL=session-close-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-close-service.d.ts","sourceRoot":"","sources":["../../src/application/session-close-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,gCAAgC,CAAC;AAIxC,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,YAAY,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,qBAAqB,CAAC;IACjC,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAUD,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,sBAAsB,GAAG,iBAAiB,CAAC,CAwDrD"}
@@ -0,0 +1,64 @@
1
+ import { buildRow, upsertRow } from "./history-table.js";
2
+ import { runProjectMdUpsertWrite, } from "./project-md-upsert-service.js";
3
+ import { renderRefs } from "./render/history-row.js";
4
+ import { resolveSession } from "./session-resolver.js";
5
+ const FLAG_TO_TAG = {
6
+ graduatedDecisions: "dec",
7
+ graduatedPlan: "plan",
8
+ graduatedScripts: "scripts",
9
+ graduatedDesign: "design",
10
+ graduatedRfc: "rfc",
11
+ };
12
+ export async function runSessionClose(fs, env, paths, input) {
13
+ if (!input.code)
14
+ return { error: "--code es obligatorio" };
15
+ const session = await resolveSession(fs, env, paths, input.code, true);
16
+ if (!session)
17
+ return { error: `Sesión no encontrada: ${input.code}` };
18
+ const refsParts = [];
19
+ for (const [key, tag] of Object.entries(FLAG_TO_TAG)) {
20
+ const value = input[key];
21
+ if (value !== undefined && value.trim().length > 0) {
22
+ refsParts.push(`${tag}:${value.trim()}`);
23
+ }
24
+ }
25
+ if (input.refs && input.refs.trim().length > 0) {
26
+ refsParts.push(input.refs.trim());
27
+ }
28
+ const refsCombined = refsParts.length > 0 ? refsParts.join(",") : null;
29
+ const refsRendered = refsCombined ? renderRefs(refsCombined) : "—";
30
+ const date = session.date ?? formatToday();
31
+ const summary = session.summary ?? "";
32
+ const action = await upsertRow(fs, paths.cwdHistoryFile(), session.code ?? input.code, (hasFlow) => buildRow({
33
+ code: session.code ?? input.code ?? "",
34
+ flow: session.flow ?? null,
35
+ sesionName: session.name,
36
+ date,
37
+ state: "closed",
38
+ summary,
39
+ refs: refsRendered,
40
+ hasFlow,
41
+ }));
42
+ const projectMd = await runProjectMdUpsertWrite(fs, env, paths, {
43
+ op: "remove-session",
44
+ sessionFolder: session.folder,
45
+ });
46
+ if ("error" in projectMd) {
47
+ return { error: projectMd.error };
48
+ }
49
+ return {
50
+ projectMd,
51
+ sessionClose: {
52
+ code: session.code ?? input.code ?? "",
53
+ folder: session.folder,
54
+ history_action: action,
55
+ refs: refsRendered,
56
+ qtc_project_updated: true,
57
+ },
58
+ };
59
+ }
60
+ function formatToday() {
61
+ const d = new Date();
62
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
63
+ }
64
+ //# sourceMappingURL=session-close-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-close-service.js","sourceRoot":"","sources":["../../src/application/session-close-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { EnvPort } from "../ports/env.js";
2
+ import type { FileSystemPort } from "../ports/file-system.js";
3
+ import type { PathsService } from "./paths-service.js";
4
+ import { type ProjectMdUpsertOutput } from "./project-md-upsert-service.js";
5
+ export interface SessionCreateInput {
6
+ flow?: string;
7
+ name?: string;
8
+ objetivo?: string;
9
+ branchesRaw?: string;
10
+ origenRaw?: string;
11
+ tipo?: string;
12
+ modalidad?: string;
13
+ }
14
+ export interface SessionCreateRecordOutput {
15
+ code: string;
16
+ folder: string;
17
+ path: string;
18
+ phase: string | null;
19
+ branches: string[];
20
+ objective_path: string;
21
+ history_updated: boolean;
22
+ origen: {
23
+ flow: string;
24
+ code: string;
25
+ folder: string;
26
+ } | null;
27
+ flow: string;
28
+ tipo?: string;
29
+ modalidad?: string;
30
+ }
31
+ export interface SessionCreateFullOutput {
32
+ projectMd: ProjectMdUpsertOutput;
33
+ sessionCreate: SessionCreateRecordOutput;
34
+ }
35
+ export interface SessionCreateError {
36
+ error: string;
37
+ expected?: string[];
38
+ }
39
+ export declare function runSessionCreate(fs: FileSystemPort, env: EnvPort, paths: PathsService, input: SessionCreateInput): Promise<SessionCreateFullOutput | SessionCreateError>;
40
+ //# sourceMappingURL=session-create-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-create-service.d.ts","sourceRoot":"","sources":["../../src/application/session-create-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,gCAAgC,CAAC;AASxC,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,qBAAqB,CAAC;IACjC,aAAa,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,uBAAuB,GAAG,kBAAkB,CAAC,CAyBvD"}
@@ -0,0 +1,197 @@
1
+ import { join } from "node:path";
2
+ import { renderOrigenBlock, resolveOrigen } from "./handoff.js";
3
+ import { buildRow, upsertRow } from "./history-table.js";
4
+ import { runProjectMdUpsertWrite, } from "./project-md-upsert-service.js";
5
+ import { renderRefs } from "./render/history-row.js";
6
+ import { getObjetivoTemplate, renderTemplate } from "./templates/objetivo.js";
7
+ const VALID_TIPOS_DESIGN = ["proyecto", "sistema"];
8
+ const VALID_MODALIDADES_ANALYZE = ["tecnica", "datos", "incidente"];
9
+ export async function runSessionCreate(fs, env, paths, input) {
10
+ const validated = validateInput(input);
11
+ if ("error" in validated)
12
+ return validated;
13
+ const { flow } = validated;
14
+ const origen = await resolveOrigenIfPresent(fs, env, paths, input.origenRaw);
15
+ if (origen && "error" in origen)
16
+ return origen;
17
+ const folderInfo = await prepareSessionFolder(fs, paths, flow, input.name ?? "");
18
+ if ("error" in folderInfo)
19
+ return folderInfo;
20
+ await writeObjetivo(fs, folderInfo, flow, input, origen);
21
+ await writeHistoryRow(fs, paths, folderInfo.code, flow, input, origen);
22
+ const projectMd = await registerInProjectBlock(fs, env, paths, folderInfo.folder, input.branchesRaw);
23
+ if ("error" in projectMd)
24
+ return { error: projectMd.error };
25
+ const branches = parseBranches(input.branchesRaw);
26
+ const recordOutput = composeRecord(folderInfo, flow, input, branches, origen);
27
+ return { projectMd, sessionCreate: recordOutput };
28
+ }
29
+ function validateInput(input) {
30
+ const flow = input.flow?.trim();
31
+ if (!flow) {
32
+ return {
33
+ error: "flow no resuelto. Pasá --flow <dev|design|analyze> o invocá el comando desde un plugin de flow (qtc-dev/design/analyze).",
34
+ expected: ["dev", "design", "analyze"],
35
+ };
36
+ }
37
+ if (flow !== "dev" && flow !== "design" && flow !== "analyze") {
38
+ return { error: `flow inválido '${flow}'; esperado dev|design|analyze` };
39
+ }
40
+ const flowGuard = validateFlowSpecifics(flow, input);
41
+ if (flowGuard)
42
+ return flowGuard;
43
+ if (!input.name)
44
+ return { error: "--name es obligatorio (slug-kebab)" };
45
+ if (!input.objetivo)
46
+ return { error: "--objetivo es obligatorio" };
47
+ return { flow };
48
+ }
49
+ async function resolveOrigenIfPresent(fs, env, paths, origenRaw) {
50
+ if (!origenRaw)
51
+ return null;
52
+ const resolved = await resolveOrigen(fs, env, paths, origenRaw);
53
+ if ("error" in resolved) {
54
+ return { error: `--from inválido: ${resolved.error}` };
55
+ }
56
+ return resolved;
57
+ }
58
+ async function prepareSessionFolder(fs, paths, flow, name) {
59
+ const qtcDir = paths.cwdSessionsDir();
60
+ await fs.mkdirp(qtcDir);
61
+ const code = await nextCode(fs, qtcDir);
62
+ const folder = `session${code}-${flow}-${name}`;
63
+ const sessionPath = join(qtcDir, folder);
64
+ if (await fs.exists(sessionPath)) {
65
+ return { error: `Ya existe ${sessionPath}` };
66
+ }
67
+ await fs.mkdirp(sessionPath);
68
+ return { code, folder, sessionPath, qtcDir };
69
+ }
70
+ async function nextCode(fs, qtcDir) {
71
+ const entries = await fs.list(qtcDir);
72
+ const numbers = entries
73
+ .filter((e) => e.type === "dir")
74
+ .map((e) => e.name.match(/^session(\d{3})-/))
75
+ .filter((m) => m !== null && m[1] !== undefined)
76
+ .map((m) => Number.parseInt(m[1] ?? "0", 10));
77
+ const nextNum = numbers.length > 0 ? Math.max(...numbers) + 1 : 1;
78
+ return String(nextNum).padStart(3, "0");
79
+ }
80
+ async function writeObjetivo(fs, folderInfo, flow, input, origen) {
81
+ const template = getObjetivoTemplate(flow);
82
+ const values = {
83
+ folder: folderInfo.folder,
84
+ objetivo: input.objetivo ?? "",
85
+ origen_block: renderOrigenBlock(origen),
86
+ };
87
+ if (flow === "design" && input.tipo)
88
+ values.tipo = input.tipo;
89
+ if (flow === "analyze" && input.modalidad)
90
+ values.modalidad = input.modalidad;
91
+ await fs.writeText(join(folderInfo.sessionPath, "OBJETIVO.md"), renderTemplate(template, values));
92
+ }
93
+ async function writeHistoryRow(fs, paths, code, flow, input, origen) {
94
+ const today = formatToday();
95
+ const objetivo = input.objetivo ?? "";
96
+ const summary = objetivo.length <= 100 ? objetivo : `${objetivo.slice(0, 97)}...`;
97
+ const refsParts = [];
98
+ if (origen)
99
+ refsParts.push(`origen:${origen.flow}-${origen.code}`);
100
+ const initialRefs = refsParts.length > 0 ? renderRefs(refsParts.join(",")) : "—";
101
+ await upsertRow(fs, paths.cwdHistoryFile(), code, (hasFlow) => buildRow({
102
+ code,
103
+ flow,
104
+ sesionName: input.name ?? "",
105
+ date: today,
106
+ state: "active",
107
+ summary,
108
+ refs: initialRefs,
109
+ hasFlow,
110
+ }));
111
+ }
112
+ async function registerInProjectBlock(fs, env, paths, folder, branchesRaw) {
113
+ const branches = parseBranches(branchesRaw);
114
+ const projectInput = {
115
+ op: "add-session",
116
+ sessionFolder: folder,
117
+ phase: "planning",
118
+ };
119
+ if (branches.length > 0)
120
+ projectInput.branches = branches;
121
+ return runProjectMdUpsertWrite(fs, env, paths, projectInput);
122
+ }
123
+ function composeRecord(folderInfo, flow, input, branches, origen) {
124
+ return {
125
+ code: folderInfo.code,
126
+ folder: folderInfo.folder,
127
+ path: folderInfo.sessionPath,
128
+ phase: "planning",
129
+ branches,
130
+ objective_path: join(folderInfo.sessionPath, "OBJETIVO.md"),
131
+ history_updated: true,
132
+ origen: origen ? { flow: origen.flow, code: origen.code, folder: origen.folder } : null,
133
+ ...(flow === "design" && input.tipo ? { tipo: input.tipo } : {}),
134
+ ...(flow === "analyze" && input.modalidad ? { modalidad: input.modalidad } : {}),
135
+ flow,
136
+ };
137
+ }
138
+ function validateFlowSpecifics(flow, input) {
139
+ if (flow === "design")
140
+ return validateDesignArgs(input);
141
+ if (flow === "analyze")
142
+ return validateAnalyzeArgs(input);
143
+ return validateDevArgs(input);
144
+ }
145
+ function validateDesignArgs(input) {
146
+ if (!input.tipo) {
147
+ return {
148
+ error: "--tipo es obligatorio para flow=design",
149
+ expected: [...VALID_TIPOS_DESIGN],
150
+ };
151
+ }
152
+ if (!VALID_TIPOS_DESIGN.includes(input.tipo)) {
153
+ return { error: `--tipo inválido: '${input.tipo}'`, expected: [...VALID_TIPOS_DESIGN] };
154
+ }
155
+ if (input.modalidad)
156
+ return { error: "--modalidad sólo aplica a flow=analyze" };
157
+ return null;
158
+ }
159
+ function validateAnalyzeArgs(input) {
160
+ if (!input.modalidad) {
161
+ return {
162
+ error: "--modalidad es obligatorio para flow=analyze",
163
+ expected: [...VALID_MODALIDADES_ANALYZE],
164
+ };
165
+ }
166
+ if (!VALID_MODALIDADES_ANALYZE.includes(input.modalidad)) {
167
+ return {
168
+ error: `--modalidad inválido: '${input.modalidad}'`,
169
+ expected: [...VALID_MODALIDADES_ANALYZE],
170
+ };
171
+ }
172
+ if (input.tipo)
173
+ return { error: "--tipo sólo aplica a flow=design" };
174
+ return null;
175
+ }
176
+ function validateDevArgs(input) {
177
+ if (input.tipo) {
178
+ return { error: "--tipo sólo aplica a flow=design (flow actual: 'dev')" };
179
+ }
180
+ if (input.modalidad) {
181
+ return { error: "--modalidad sólo aplica a flow=analyze (flow actual: 'dev')" };
182
+ }
183
+ return null;
184
+ }
185
+ function parseBranches(raw) {
186
+ if (!raw)
187
+ return [];
188
+ return raw
189
+ .split(",")
190
+ .map((b) => b.trim())
191
+ .filter((b) => b.length > 0);
192
+ }
193
+ function formatToday() {
194
+ const d = new Date();
195
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
196
+ }
197
+ //# sourceMappingURL=session-create-service.js.map