@tacuchi/agent-workflow-cli 11.0.0 → 12.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 (447) hide show
  1. package/README.md +51 -95
  2. package/dist/application/artifacts-service.d.ts +3 -12
  3. package/dist/application/artifacts-service.d.ts.map +1 -1
  4. package/dist/application/artifacts-service.js +18 -19
  5. package/dist/application/artifacts-service.js.map +1 -1
  6. package/dist/application/branch-resolver.d.ts +16 -0
  7. package/dist/application/branch-resolver.d.ts.map +1 -0
  8. package/dist/application/branch-resolver.js +24 -0
  9. package/dist/application/branch-resolver.js.map +1 -0
  10. package/dist/application/check-branch-service.d.ts +0 -2
  11. package/dist/application/check-branch-service.d.ts.map +1 -1
  12. package/dist/application/check-branch-service.js +5 -40
  13. package/dist/application/check-branch-service.js.map +1 -1
  14. package/dist/application/checkpoint/markdown.d.ts.map +1 -1
  15. package/dist/application/checkpoint/markdown.js +1 -16
  16. package/dist/application/checkpoint/markdown.js.map +1 -1
  17. package/dist/application/checkpoint/state-reader.d.ts +1 -3
  18. package/dist/application/checkpoint/state-reader.d.ts.map +1 -1
  19. package/dist/application/checkpoint/state-reader.js +10 -31
  20. package/dist/application/checkpoint/state-reader.js.map +1 -1
  21. package/dist/application/checkpoint-service.d.ts +12 -14
  22. package/dist/application/checkpoint-service.d.ts.map +1 -1
  23. package/dist/application/checkpoint-service.js +36 -61
  24. package/dist/application/checkpoint-service.js.map +1 -1
  25. package/dist/application/checkpoint-write-service.d.ts +0 -2
  26. package/dist/application/checkpoint-write-service.d.ts.map +1 -1
  27. package/dist/application/checkpoint-write-service.js +5 -6
  28. package/dist/application/checkpoint-write-service.js.map +1 -1
  29. package/dist/application/history-update-service.js +3 -1
  30. package/dist/application/history-update-service.js.map +1 -1
  31. package/dist/application/hook-branch-check.d.ts.map +1 -1
  32. package/dist/application/hook-branch-check.js +5 -34
  33. package/dist/application/hook-branch-check.js.map +1 -1
  34. package/dist/application/hook-git-commit-advisor.d.ts.map +1 -1
  35. package/dist/application/hook-git-commit-advisor.js +18 -23
  36. package/dist/application/hook-git-commit-advisor.js.map +1 -1
  37. package/dist/application/markdown.d.ts.map +1 -1
  38. package/dist/application/markdown.js +0 -4
  39. package/dist/application/markdown.js.map +1 -1
  40. package/dist/application/parsers/project-block.d.ts +0 -8
  41. package/dist/application/parsers/project-block.d.ts.map +1 -1
  42. package/dist/application/parsers/project-block.js +13 -52
  43. package/dist/application/parsers/project-block.js.map +1 -1
  44. package/dist/application/paths-service.d.ts +7 -8
  45. package/dist/application/paths-service.d.ts.map +1 -1
  46. package/dist/application/paths-service.js +12 -8
  47. package/dist/application/paths-service.js.map +1 -1
  48. package/dist/application/project-md-upsert-service.d.ts +3 -11
  49. package/dist/application/project-md-upsert-service.d.ts.map +1 -1
  50. package/dist/application/project-md-upsert-service.js +6 -56
  51. package/dist/application/project-md-upsert-service.js.map +1 -1
  52. package/dist/application/project-tab-data.d.ts +20 -34
  53. package/dist/application/project-tab-data.d.ts.map +1 -1
  54. package/dist/application/project-tab-data.js +41 -101
  55. package/dist/application/project-tab-data.js.map +1 -1
  56. package/dist/application/release-data/artifacts.d.ts +0 -2
  57. package/dist/application/release-data/artifacts.d.ts.map +1 -1
  58. package/dist/application/release-data/artifacts.js +22 -12
  59. package/dist/application/release-data/artifacts.js.map +1 -1
  60. package/dist/application/release-data/sessions.d.ts +0 -2
  61. package/dist/application/release-data/sessions.d.ts.map +1 -1
  62. package/dist/application/release-data/sessions.js +36 -27
  63. package/dist/application/release-data/sessions.js.map +1 -1
  64. package/dist/application/release-data-service.d.ts +0 -3
  65. package/dist/application/release-data-service.d.ts.map +1 -1
  66. package/dist/application/release-data-service.js +3 -21
  67. package/dist/application/release-data-service.js.map +1 -1
  68. package/dist/application/render/history-row.d.ts +1 -9
  69. package/dist/application/render/history-row.d.ts.map +1 -1
  70. package/dist/application/render/history-row.js +3 -20
  71. package/dist/application/render/history-row.js.map +1 -1
  72. package/dist/application/render/project-block.d.ts +1 -3
  73. package/dist/application/render/project-block.d.ts.map +1 -1
  74. package/dist/application/render/project-block.js +4 -27
  75. package/dist/application/render/project-block.js.map +1 -1
  76. package/dist/application/self/doctor-self.d.ts.map +1 -1
  77. package/dist/application/self/doctor-self.js +15 -8
  78. package/dist/application/self/doctor-self.js.map +1 -1
  79. package/dist/application/self/install-hooks.d.ts +1 -1
  80. package/dist/application/self/install-hooks.d.ts.map +1 -1
  81. package/dist/application/self/install-hooks.js +3 -2
  82. package/dist/application/self/install-hooks.js.map +1 -1
  83. package/dist/application/self/install-skill.d.ts +9 -3
  84. package/dist/application/self/install-skill.d.ts.map +1 -1
  85. package/dist/application/self/install-skill.js +16 -16
  86. package/dist/application/self/install-skill.js.map +1 -1
  87. package/dist/application/self/uninstall-skill.js +14 -12
  88. package/dist/application/self/uninstall-skill.js.map +1 -1
  89. package/dist/application/self/uninstall.js +14 -12
  90. package/dist/application/self/uninstall.js.map +1 -1
  91. package/dist/application/session-artifacts.d.ts +7 -6
  92. package/dist/application/session-artifacts.d.ts.map +1 -1
  93. package/dist/application/session-artifacts.js +10 -15
  94. package/dist/application/session-artifacts.js.map +1 -1
  95. package/dist/application/session-close-service.d.ts +5 -22
  96. package/dist/application/session-close-service.d.ts.map +1 -1
  97. package/dist/application/session-close-service.js +20 -143
  98. package/dist/application/session-close-service.js.map +1 -1
  99. package/dist/application/session-create-service.d.ts +9 -29
  100. package/dist/application/session-create-service.d.ts.map +1 -1
  101. package/dist/application/session-create-service.js +44 -288
  102. package/dist/application/session-create-service.js.map +1 -1
  103. package/dist/application/session-resolver.d.ts +4 -25
  104. package/dist/application/session-resolver.d.ts.map +1 -1
  105. package/dist/application/session-resolver.js +33 -149
  106. package/dist/application/session-resolver.js.map +1 -1
  107. package/dist/application/session-resume-service.d.ts +3 -4
  108. package/dist/application/session-resume-service.d.ts.map +1 -1
  109. package/dist/application/session-resume-service.js +8 -26
  110. package/dist/application/session-resume-service.js.map +1 -1
  111. package/dist/application/sessions-service.d.ts +2 -3
  112. package/dist/application/sessions-service.d.ts.map +1 -1
  113. package/dist/application/sessions-service.js +9 -26
  114. package/dist/application/sessions-service.js.map +1 -1
  115. package/dist/application/skill-index-service.d.ts +0 -2
  116. package/dist/application/skill-index-service.d.ts.map +1 -1
  117. package/dist/application/skill-index-service.js +0 -1
  118. package/dist/application/skill-index-service.js.map +1 -1
  119. package/dist/application/skills-resolver-service.d.ts +22 -0
  120. package/dist/application/skills-resolver-service.d.ts.map +1 -0
  121. package/dist/application/skills-resolver-service.js +71 -0
  122. package/dist/application/skills-resolver-service.js.map +1 -0
  123. package/dist/application/sources-service.d.ts +0 -5
  124. package/dist/application/sources-service.d.ts.map +1 -1
  125. package/dist/application/sources-service.js +5 -44
  126. package/dist/application/sources-service.js.map +1 -1
  127. package/dist/application/templates/session.d.ts +24 -0
  128. package/dist/application/templates/session.d.ts.map +1 -0
  129. package/dist/application/templates/session.js +46 -0
  130. package/dist/application/templates/session.js.map +1 -0
  131. package/dist/application/upgrade-hub-mode-service.d.ts.map +1 -1
  132. package/dist/application/upgrade-hub-mode-service.js +0 -1
  133. package/dist/application/upgrade-hub-mode-service.js.map +1 -1
  134. package/dist/application/workspace-init-service.d.ts +60 -0
  135. package/dist/application/workspace-init-service.d.ts.map +1 -0
  136. package/dist/application/workspace-init-service.js +227 -0
  137. package/dist/application/workspace-init-service.js.map +1 -0
  138. package/dist/cli/commands/check-branch.d.ts.map +1 -1
  139. package/dist/cli/commands/check-branch.js +0 -3
  140. package/dist/cli/commands/check-branch.js.map +1 -1
  141. package/dist/cli/commands/plugin-doctor.d.ts.map +1 -1
  142. package/dist/cli/commands/plugin-doctor.js +0 -3
  143. package/dist/cli/commands/plugin-doctor.js.map +1 -1
  144. package/dist/cli/commands/project-md-upsert.d.ts.map +1 -1
  145. package/dist/cli/commands/project-md-upsert.js +5 -31
  146. package/dist/cli/commands/project-md-upsert.js.map +1 -1
  147. package/dist/cli/commands/session-close.d.ts.map +1 -1
  148. package/dist/cli/commands/session-close.js +1 -33
  149. package/dist/cli/commands/session-close.js.map +1 -1
  150. package/dist/cli/commands/session-create.d.ts.map +1 -1
  151. package/dist/cli/commands/session-create.js +5 -21
  152. package/dist/cli/commands/session-create.js.map +1 -1
  153. package/dist/cli/commands/session-resume.js +1 -1
  154. package/dist/cli/commands/session-resume.js.map +1 -1
  155. package/dist/cli/commands/set-working-branch.d.ts +3 -0
  156. package/dist/cli/commands/set-working-branch.d.ts.map +1 -0
  157. package/dist/cli/commands/set-working-branch.js +34 -0
  158. package/dist/cli/commands/set-working-branch.js.map +1 -0
  159. package/dist/cli/commands/skill-index.d.ts.map +1 -1
  160. package/dist/cli/commands/skill-index.js +0 -3
  161. package/dist/cli/commands/skill-index.js.map +1 -1
  162. package/dist/cli/commands/skills.d.ts +3 -0
  163. package/dist/cli/commands/skills.d.ts.map +1 -0
  164. package/dist/cli/commands/skills.js +10 -0
  165. package/dist/cli/commands/skills.js.map +1 -0
  166. package/dist/cli/commands/sources.d.ts.map +1 -1
  167. package/dist/cli/commands/sources.js +0 -3
  168. package/dist/cli/commands/sources.js.map +1 -1
  169. package/dist/cli/commands/workspace-init.d.ts +3 -0
  170. package/dist/cli/commands/workspace-init.d.ts.map +1 -0
  171. package/dist/cli/commands/workspace-init.js +69 -0
  172. package/dist/cli/commands/workspace-init.js.map +1 -0
  173. package/dist/cli/help-groups.d.ts.map +1 -1
  174. package/dist/cli/help-groups.js +8 -19
  175. package/dist/cli/help-groups.js.map +1 -1
  176. package/dist/cli/interactive-menu.d.ts +1 -1
  177. package/dist/cli/interactive-menu.d.ts.map +1 -1
  178. package/dist/cli/main.js +29 -37
  179. package/dist/cli/main.js.map +1 -1
  180. package/dist/cli/parser.d.ts +0 -2
  181. package/dist/cli/parser.d.ts.map +1 -1
  182. package/dist/cli/parser.js +1 -13
  183. package/dist/cli/parser.js.map +1 -1
  184. package/dist/cli/tui/app.js +3 -38
  185. package/dist/cli/tui/app.js.map +1 -1
  186. package/dist/cli/tui/components/hub-init-alias.js +1 -1
  187. package/dist/cli/tui/components/hub-init-alias.js.map +1 -1
  188. package/dist/cli/tui/components/hub-init-form.d.ts.map +1 -1
  189. package/dist/cli/tui/components/hub-init-form.js +13 -12
  190. package/dist/cli/tui/components/hub-init-form.js.map +1 -1
  191. package/dist/cli/tui/components/workspace-init-alias.d.ts +5 -0
  192. package/dist/cli/tui/components/workspace-init-alias.d.ts.map +1 -0
  193. package/dist/cli/tui/components/workspace-init-alias.js +19 -0
  194. package/dist/cli/tui/components/workspace-init-alias.js.map +1 -0
  195. package/dist/cli/tui/components/workspace-init-form.d.ts +13 -0
  196. package/dist/cli/tui/components/workspace-init-form.d.ts.map +1 -0
  197. package/dist/cli/tui/components/workspace-init-form.js +87 -0
  198. package/dist/cli/tui/components/workspace-init-form.js.map +1 -0
  199. package/dist/cli/tui/data/activity.d.ts +1 -1
  200. package/dist/cli/tui/data/activity.d.ts.map +1 -1
  201. package/dist/cli/tui/data/activity.js +2 -2
  202. package/dist/cli/tui/data/activity.js.map +1 -1
  203. package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
  204. package/dist/cli/tui/data/workflow-content.js +67 -87
  205. package/dist/cli/tui/data/workflow-content.js.map +1 -1
  206. package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
  207. package/dist/cli/tui/tabs/project-tab.js +23 -97
  208. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  209. package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
  210. package/dist/cli/tui/tabs/skills-tab.js +7 -7
  211. package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
  212. package/dist/cli/tui/tabs/workflow-tab.d.ts +1 -3
  213. package/dist/cli/tui/tabs/workflow-tab.d.ts.map +1 -1
  214. package/dist/cli/tui/tabs/workflow-tab.js +2 -2
  215. package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
  216. package/dist/cli/types.d.ts +3 -0
  217. package/dist/cli/types.d.ts.map +1 -1
  218. package/dist/domain/plugin.d.ts +2 -12
  219. package/dist/domain/plugin.d.ts.map +1 -1
  220. package/dist/domain/project.d.ts +0 -9
  221. package/dist/domain/project.d.ts.map +1 -1
  222. package/dist/domain/session.d.ts +7 -24
  223. package/dist/domain/session.d.ts.map +1 -1
  224. package/dist/domain/skills.d.ts +22 -0
  225. package/dist/domain/skills.d.ts.map +1 -0
  226. package/dist/domain/skills.js +37 -0
  227. package/dist/domain/skills.js.map +1 -0
  228. package/dist/domain/types.d.ts +6 -2
  229. package/dist/domain/types.d.ts.map +1 -1
  230. package/dist/index.d.ts +4 -4
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js.map +1 -1
  233. package/dist/runtime/config-service.js +1 -1
  234. package/dist/runtime/config-service.js.map +1 -1
  235. package/dist/runtime/types.d.ts +0 -1
  236. package/dist/runtime/types.d.ts.map +1 -1
  237. package/dist/runtime/types.js.map +1 -1
  238. package/package.json +12 -3
  239. package/skills/w/README.md +65 -0
  240. package/skills/w/SKILL.md +153 -0
  241. package/skills/w/artifacts/README.md +60 -0
  242. package/skills/w/artifacts/artifacts-core/BACKLOG.md +12 -0
  243. package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +22 -0
  244. package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +39 -0
  245. package/skills/w/artifacts/artifacts-core/SESSION.md +27 -0
  246. package/skills/w/artifacts/artifacts-core/TASKS.md +18 -0
  247. package/skills/w/artifacts/artifacts-dev/DECISION.md +11 -0
  248. package/skills/w/artifacts/artifacts-dev/TECHNICAL-NOTE.md +81 -0
  249. package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +48 -0
  250. package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +20 -0
  251. package/skills/w/commands/README.md +116 -0
  252. package/skills/w/commands/export-diagrams.md +35 -0
  253. package/skills/w/commands/export-manuals.md +35 -0
  254. package/skills/w/commands/export-reports.md +35 -0
  255. package/skills/w/commands/export-scripts.md +35 -0
  256. package/skills/w/commands/plan-exec.md +46 -0
  257. package/skills/w/commands/plan-new.md +44 -0
  258. package/skills/w/commands/quick.md +39 -0
  259. package/skills/w/commands/spec-new.md +63 -0
  260. package/skills/w/commands/spec-refine.md +41 -0
  261. package/skills/w/commands/workspace-init.md +39 -0
  262. package/skills/w/exports/README.md +88 -0
  263. package/skills/w/exports/export-diagrams/SKILL.md +125 -0
  264. package/skills/w/exports/export-manuals/SKILL.md +127 -0
  265. package/skills/w/exports/export-reports/SKILL.md +115 -0
  266. package/skills/w/exports/export-scripts/SKILL.md +135 -0
  267. package/skills/w/hooks/README.md +15 -0
  268. package/skills/{agent-workflow → w}/hooks/hooks.template.json +2 -2
  269. package/skills/w/loops/README.md +118 -0
  270. package/skills/w/loops/plan-exec-loop/SKILL.md +161 -0
  271. package/skills/w/loops/plan-new-loop/SKILL.md +97 -0
  272. package/skills/w/loops/quick-loop/SKILL.md +102 -0
  273. package/skills/w/loops/spec-refine-loop/SKILL.md +222 -0
  274. package/skills/w/roles/README.md +154 -0
  275. package/skills/w/roles/coding-standards/SKILL.md +82 -0
  276. package/skills/w/roles/diagrams/SKILL.md +248 -0
  277. package/skills/w/roles/git/SKILL.md +98 -0
  278. package/skills/w/roles/research/SKILL.md +181 -0
  279. package/skills/w/roles/sql/SKILL.md +137 -0
  280. package/skills/w/roles/testing/SKILL.md +180 -0
  281. package/skills/w/roles/tools/SKILL.md +148 -0
  282. package/skills/w/roles/ui-spec/SKILL.md +136 -0
  283. package/skills/w/roles/writing/SKILL.md +90 -0
  284. package/skills/agent-workflow/LICENSE +0 -661
  285. package/skills/agent-workflow/MANUAL-FUNCIONAL.md +0 -298
  286. package/skills/agent-workflow/MANUAL-TECNICO.md +0 -271
  287. package/skills/agent-workflow/README.md +0 -74
  288. package/skills/agent-workflow/SKILL.md +0 -112
  289. package/skills/agent-workflow/commands/README.md +0 -26
  290. package/skills/agent-workflow/commands/compact.md +0 -24
  291. package/skills/agent-workflow/commands/doctor.md +0 -100
  292. package/skills/agent-workflow/commands/export-arq.md +0 -77
  293. package/skills/agent-workflow/commands/export-conclusions.md +0 -78
  294. package/skills/agent-workflow/commands/export-plan.md +0 -74
  295. package/skills/agent-workflow/commands/export-qa-note.md +0 -30
  296. package/skills/agent-workflow/commands/export-report.md +0 -78
  297. package/skills/agent-workflow/commands/export-requirement.md +0 -30
  298. package/skills/agent-workflow/commands/export-scripts.md +0 -82
  299. package/skills/agent-workflow/commands/export-tech-manuals.md +0 -75
  300. package/skills/agent-workflow/commands/export-tech-note.md +0 -30
  301. package/skills/agent-workflow/commands/hub-init.md +0 -58
  302. package/skills/agent-workflow/commands/migrate.md +0 -56
  303. package/skills/agent-workflow/commands/patch.md +0 -49
  304. package/skills/agent-workflow/commands/project-init.md +0 -60
  305. package/skills/agent-workflow/commands/resume.md +0 -22
  306. package/skills/agent-workflow/commands/rules.md +0 -41
  307. package/skills/agent-workflow/commands/session.md +0 -35
  308. package/skills/agent-workflow/docs/TEST-PLAN.md +0 -163
  309. package/skills/agent-workflow/doctrine/README.md +0 -15
  310. package/skills/agent-workflow/doctrine/compact/SKILL.md +0 -145
  311. package/skills/agent-workflow/doctrine/doctor/SKILL.md +0 -86
  312. package/skills/agent-workflow/doctrine/hub-init/SKILL.md +0 -77
  313. package/skills/agent-workflow/doctrine/hub-init/references/multiroot-manual.md +0 -51
  314. package/skills/agent-workflow/doctrine/implement/SKILL.md +0 -290
  315. package/skills/agent-workflow/doctrine/implement/references/branch-verification.md +0 -16
  316. package/skills/agent-workflow/doctrine/implement/references/design-md-template.md +0 -108
  317. package/skills/agent-workflow/doctrine/implement/references/rollback-guide.md +0 -83
  318. package/skills/agent-workflow/doctrine/migrate/SKILL.md +0 -281
  319. package/skills/agent-workflow/doctrine/project-init/SKILL.md +0 -100
  320. package/skills/agent-workflow/doctrine/refactor/SKILL.md +0 -208
  321. package/skills/agent-workflow/doctrine/refactor/references/refactor-md-template.md +0 -108
  322. package/skills/agent-workflow/doctrine/refactor/references/strangler-checklist.md +0 -116
  323. package/skills/agent-workflow/doctrine/resume/SKILL.md +0 -199
  324. package/skills/agent-workflow/doctrine/rules/SKILL.md +0 -250
  325. package/skills/agent-workflow/doctrine/session/SKILL.md +0 -470
  326. package/skills/agent-workflow/doctrine/session/references/auto-plan-rules.md +0 -63
  327. package/skills/agent-workflow/doctrine/session/references/backlog-template.md +0 -95
  328. package/skills/agent-workflow/doctrine/session/references/branch-verification.md +0 -198
  329. package/skills/agent-workflow/doctrine/session/references/commits-policy.md +0 -111
  330. package/skills/agent-workflow/doctrine/session/references/communication-style.md +0 -50
  331. package/skills/agent-workflow/doctrine/session/references/graduacion-routing.md +0 -88
  332. package/skills/agent-workflow/doctrine/session/references/lifecycle-deep.md +0 -160
  333. package/skills/agent-workflow/doctrine/session/references/prompts/C1-specialty-selection.md +0 -11
  334. package/skills/agent-workflow/doctrine/session/references/prompts/C2-cost-guard.md +0 -14
  335. package/skills/agent-workflow/doctrine/session/references/prompts/M1-closure-commit-prompt.md +0 -104
  336. package/skills/agent-workflow/doctrine/session/references/prompts/M10-next-step.md +0 -17
  337. package/skills/agent-workflow/doctrine/session/references/prompts/M11-context.md +0 -16
  338. package/skills/agent-workflow/doctrine/session/references/prompts/M13-closure-cleanup.md +0 -61
  339. package/skills/agent-workflow/doctrine/session/references/prompts/M2-branch-caso-A.md +0 -14
  340. package/skills/agent-workflow/doctrine/session/references/prompts/M3-branch-caso-C.md +0 -33
  341. package/skills/agent-workflow/doctrine/session/references/prompts/M4-cross-source-hard-gate.md +0 -33
  342. package/skills/agent-workflow/doctrine/session/references/prompts/M5-modality-analyze.md +0 -15
  343. package/skills/agent-workflow/doctrine/session/references/prompts/M6-phase-gate.md +0 -31
  344. package/skills/agent-workflow/doctrine/session/references/prompts/M7-refactor-legacy-detected.md +0 -28
  345. package/skills/agent-workflow/doctrine/session/references/prompts/M8-refactor-cleanup.md +0 -16
  346. package/skills/agent-workflow/doctrine/session/references/prompts/M9-contract-review.md +0 -39
  347. package/skills/agent-workflow/doctrine/session/references/prompts/S1-type-design.md +0 -15
  348. package/skills/agent-workflow/doctrine/session/references/prompts/S2-topic-change-detection.md +0 -14
  349. package/skills/agent-workflow/doctrine/session/references/prompts/S3-flow-detection.md +0 -28
  350. package/skills/agent-workflow/doctrine/session/references/prompts/S4-resume.md +0 -27
  351. package/skills/agent-workflow/doctrine/session/references/prompts/S5-post-compact.md +0 -17
  352. package/skills/agent-workflow/doctrine/session/references/prompts/S6-scope.md +0 -16
  353. package/skills/agent-workflow/doctrine/session/references/prompts/S7-design-review.md +0 -37
  354. package/skills/agent-workflow/doctrine/session/references/prompts-catalog.md +0 -213
  355. package/skills/agent-workflow/doctrine/session/references/sandbox-readonly-rules.md +0 -82
  356. package/skills/agent-workflow/doctrine/session/references/specialty-decision-tree.md +0 -56
  357. package/skills/agent-workflow/doctrine/session/references/topic-change-rules.md +0 -67
  358. package/skills/agent-workflow/exports/README.md +0 -15
  359. package/skills/agent-workflow/exports/export-arq/SKILL.md +0 -229
  360. package/skills/agent-workflow/exports/export-arq/references/lexico-tecnico.md +0 -94
  361. package/skills/agent-workflow/exports/export-arq/references/template-c4.md +0 -293
  362. package/skills/agent-workflow/exports/export-arq/references/template-plantuml.puml +0 -77
  363. package/skills/agent-workflow/exports/export-arq/references/template-structurizr.dsl +0 -72
  364. package/skills/agent-workflow/exports/export-arq/references/validations.md +0 -231
  365. package/skills/agent-workflow/exports/export-conclusions/SKILL.md +0 -169
  366. package/skills/agent-workflow/exports/export-conclusions/references/dedup-rules.md +0 -154
  367. package/skills/agent-workflow/exports/export-conclusions/references/template-conclusions.md +0 -158
  368. package/skills/agent-workflow/exports/export-plan/SKILL.md +0 -225
  369. package/skills/agent-workflow/exports/export-plan/references/state-transitions.md +0 -141
  370. package/skills/agent-workflow/exports/export-plan/references/template-plan.md +0 -132
  371. package/skills/agent-workflow/exports/export-qa-note/SKILL.md +0 -31
  372. package/skills/agent-workflow/exports/export-report/SKILL.md +0 -262
  373. package/skills/agent-workflow/exports/export-report/references/lexico.md +0 -174
  374. package/skills/agent-workflow/exports/export-report/references/template-a.md +0 -95
  375. package/skills/agent-workflow/exports/export-report/references/template-b.md +0 -221
  376. package/skills/agent-workflow/exports/export-report/references/template-c.md +0 -180
  377. package/skills/agent-workflow/exports/export-report/references/validations.md +0 -255
  378. package/skills/agent-workflow/exports/export-requirement/SKILL.md +0 -31
  379. package/skills/agent-workflow/exports/export-scripts/SKILL.md +0 -211
  380. package/skills/agent-workflow/exports/export-scripts/references/code-scan-recommendations.md +0 -83
  381. package/skills/agent-workflow/exports/export-scripts/references/deprecation-plan.md +0 -80
  382. package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +0 -47
  383. package/skills/agent-workflow/exports/export-scripts/references/manifest-template.md +0 -265
  384. package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +0 -49
  385. package/skills/agent-workflow/exports/export-scripts/references/theme-handling.md +0 -141
  386. package/skills/agent-workflow/exports/export-scripts/references/validations.md +0 -69
  387. package/skills/agent-workflow/exports/export-tech-manuals/SKILL.md +0 -214
  388. package/skills/agent-workflow/exports/export-tech-manuals/references/lexico-tecnico.md +0 -97
  389. package/skills/agent-workflow/exports/export-tech-manuals/references/template-index.md +0 -123
  390. package/skills/agent-workflow/exports/export-tech-manuals/references/template-manual.md +0 -143
  391. package/skills/agent-workflow/exports/export-tech-manuals/references/validations.md +0 -211
  392. package/skills/agent-workflow/exports/export-tech-note/SKILL.md +0 -31
  393. package/skills/agent-workflow/hooks/README.md +0 -15
  394. package/skills/agent-workflow/references/README.md +0 -12
  395. package/skills/agent-workflow/references/checkpoint.md +0 -59
  396. package/skills/agent-workflow/references/dev-only.md +0 -50
  397. package/skills/agent-workflow/references/doctor.md +0 -61
  398. package/skills/agent-workflow/references/history.md +0 -40
  399. package/skills/agent-workflow/references/hooks.md +0 -35
  400. package/skills/agent-workflow/references/legacy-anchors.md +0 -50
  401. package/skills/agent-workflow/references/mcp.md +0 -34
  402. package/skills/agent-workflow/references/objetivo-tasks.md +0 -64
  403. package/skills/agent-workflow/references/orchestration.md +0 -86
  404. package/skills/agent-workflow/references/profile-parametrization.md +0 -88
  405. package/skills/agent-workflow/references/self.md +0 -68
  406. package/skills/agent-workflow/references/session-mgmt.md +0 -109
  407. package/skills/agent-workflow/references/sources.md +0 -102
  408. package/skills/agent-workflow/specialties/README.md +0 -14
  409. package/skills/agent-workflow/specialties/analyze-conclude/SKILL.md +0 -175
  410. package/skills/agent-workflow/specialties/analyze-conclude/references/incident-classification.md +0 -61
  411. package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md +0 -148
  412. package/skills/agent-workflow/specialties/analyze-investigate/references/cost-guard.md +0 -85
  413. package/skills/agent-workflow/specialties/analyze-synthesize/SKILL.md +0 -127
  414. package/skills/agent-workflow/specialties/design-brief/SKILL.md +0 -90
  415. package/skills/agent-workflow/specialties/design-deliver/SKILL.md +0 -121
  416. package/skills/agent-workflow/specialties/design-develop/SKILL.md +0 -115
  417. package/skills/agent-workflow/specialties/design-discover/SKILL.md +0 -103
  418. package/skills/agent-workflow/standards/README.md +0 -12
  419. package/skills/agent-workflow/standards/coding-standards/SKILL.md +0 -102
  420. package/skills/agent-workflow/standards/coding-standards/references/angular-typescript.md +0 -266
  421. package/skills/agent-workflow/standards/coding-standards/references/database-conventions.md +0 -170
  422. package/skills/agent-workflow/standards/coding-standards/references/fe-be-integration.md +0 -300
  423. package/skills/agent-workflow/standards/coding-standards/references/frontend-structure.md +0 -182
  424. package/skills/agent-workflow/standards/coding-standards/references/java-spring.md +0 -244
  425. package/skills/agent-workflow/standards/coding-standards/references/project-structure.md +0 -197
  426. package/skills/agent-workflow/standards/frontend-design/SKILL.md +0 -62
  427. package/skills/agent-workflow/standards/frontend-design/references/feedback-toasts-patterns.md +0 -249
  428. package/skills/agent-workflow/standards/frontend-design/references/form-patterns.md +0 -278
  429. package/skills/agent-workflow/standards/frontend-design/references/list-patterns.md +0 -256
  430. package/skills/agent-workflow/standards/frontend-design/references/modal-patterns.md +0 -220
  431. package/skills/agent-workflow/standards/frontend-design/references/navigation-patterns.md +0 -224
  432. package/skills/agent-workflow/standards/redaccion-simple/SKILL.md +0 -128
  433. package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +0 -158
  434. package/skills/agent-workflow/standards/sql-rollback-generator/references/irreversible-checklist.md +0 -161
  435. package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md +0 -133
  436. package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md +0 -257
  437. package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +0 -243
  438. package/skills/agent-workflow/standards/sql-script-organizer/references/bundle-readme-template.md +0 -82
  439. package/skills/agent-workflow/standards/sql-script-organizer/references/categorization-rules.md +0 -122
  440. package/skills/agent-workflow/standards/sql-script-organizer/references/consolidation-cross-session.md +0 -125
  441. package/skills/agent-workflow/standards/sql-script-organizer/references/scripts-sql-format.md +0 -140
  442. package/skills/agent-workflow/standards/testing-strategy/SKILL.md +0 -113
  443. package/skills/agent-workflow/standards/testing-strategy/references/test-levels.md +0 -255
  444. package/skills/agent-workflow/workflows/README.md +0 -12
  445. package/skills/agent-workflow/workflows/analyze-workflow/SKILL.md +0 -84
  446. package/skills/agent-workflow/workflows/design-workflow/SKILL.md +0 -79
  447. package/skills/agent-workflow/workflows/dev-workflow/SKILL.md +0 -172
@@ -1,158 +1,35 @@
1
- import { resolveFromPlan, transitionPlanState } from "./from-plan.js";
2
- import { buildRow, upsertRow } from "./history-table.js";
3
- import { withCwdLock } from "./lock-service.js";
4
- import { runProjectMdUpsertWrite, } from "./project-md-upsert-service.js";
5
- import { renderRefs } from "./render/history-row.js";
6
- import { findArtifact } from "./session-artifacts.js";
7
- import { resolveSession } from "./session-resolver.js";
8
- const FLAG_TO_TAG = {
9
- graduatedDecisions: "dec",
10
- graduatedPlan: "plan",
11
- graduatedScripts: "scripts",
12
- graduatedDesign: "especificacion",
13
- graduatedPropuesta: "propuesta",
14
- graduatedConclusions: "conclusion",
15
- graduatedManuales: "manual",
16
- graduatedEspecificaciones: "especificacion",
17
- graduatedRelease: "release",
18
- };
19
- const NNN_SLUG_RE = /^\d{3}-[a-z0-9-]+$/i;
20
- const TAGS_REQUIRING_NNN = new Set([
21
- "dec",
22
- "conclusion",
23
- "manual",
24
- "especificacion",
25
- "release",
26
- "scripts",
27
- ]);
1
+ import { join } from "node:path";
2
+ import { canonicalArtifactPath } from "./session-artifacts.js";
3
+ import { CLOSED_MARKER, resolveSession } from "./session-resolver.js";
28
4
  export async function runSessionClose(fs, env, paths, input) {
29
5
  if (!input.code)
30
6
  return { error: "--code es obligatorio" };
31
7
  const session = await resolveSession(fs, env, paths, input.code, true);
32
8
  if (!session)
33
9
  return { error: `Sesión no encontrada: ${input.code}` };
34
- const validation = validateGraduationSlugs(input);
35
- if (validation)
36
- return validation;
37
- const refsRendered = buildCloseRefs(input);
38
- const actionResult = await markHistoryClosed(fs, paths, session, input, refsRendered);
39
- if (typeof actionResult === "object")
40
- return actionResult;
41
- const projectMd = await runProjectMdUpsertWrite(fs, env, paths, {
42
- op: "remove-session",
43
- sessionFolder: session.folder,
44
- });
45
- if ("error" in projectMd) {
46
- return { error: projectMd.error };
47
- }
48
- const planTransition = await maybeTransitionOriginPlan(fs, env, paths, session);
10
+ // Persist the durable artifacts in the session folder (they survive close).
11
+ const checkpointPath = canonicalArtifactPath(session.path, "checkpoint");
12
+ const backlogPath = canonicalArtifactPath(session.path, "backlog");
13
+ await ensureFile(fs, checkpointPath, "# CHECKPOINT\n");
14
+ await ensureFile(fs, backlogPath, "# BACKLOG\n");
15
+ // Mark the session closed via the folder-local sentinel file.
16
+ // Sessions are internal/light: closing no longer touches the project block.
17
+ await fs.writeText(join(session.path, CLOSED_MARKER), "");
49
18
  const sessionClose = {
50
19
  code: session.code ?? input.code ?? "",
51
20
  folder: session.folder,
52
- history_action: actionResult,
53
- refs: refsRendered,
54
- aw_project_updated: true,
21
+ closed: true,
22
+ checkpoint_path: checkpointPath,
23
+ backlog_path: backlogPath,
55
24
  };
56
- if (planTransition)
57
- sessionClose.plan_transition = planTransition;
58
- return { projectMd, sessionClose };
59
- }
60
- function validateGraduationSlugs(input) {
61
- if (input.allowLooseSlugs)
62
- return null;
63
- for (const [key, tag] of Object.entries(FLAG_TO_TAG)) {
64
- if (!TAGS_REQUIRING_NNN.has(tag))
65
- continue;
66
- const raw = input[key];
67
- if (raw === undefined)
68
- continue;
69
- const value = raw.trim();
70
- if (value.length === 0)
71
- continue;
72
- if (!NNN_SLUG_RE.test(value)) {
73
- return {
74
- error: `--${kebabFromCamel(key)} requiere slug con prefijo NNN- (recibido '${value}'). Pasá el valor exacto que devolvió 'agent-workflow graduate' (campo 'next_number-slug'), o usá --allow-loose-slugs si sabés lo que hacés.`,
75
- };
76
- }
77
- }
78
- return null;
79
- }
80
- function kebabFromCamel(name) {
81
- return name
82
- .replace(/([A-Z])/g, "-$1")
83
- .toLowerCase()
84
- .replace(/^-/, "");
85
- }
86
- function buildCloseRefs(input) {
87
- const refsParts = collectCloseRefs(input);
88
- const refsCombined = refsParts.length > 0 ? refsParts.join(",") : null;
89
- return refsCombined ? renderRefs(refsCombined) : "—";
90
- }
91
- function collectCloseRefs(input) {
92
- const refsParts = [];
93
- for (const [key, tag] of Object.entries(FLAG_TO_TAG)) {
94
- const value = input[key];
95
- if (value !== undefined && value.trim().length > 0) {
96
- refsParts.push(`${tag}:${value.trim()}`);
97
- }
98
- }
99
25
  if (input.refs && input.refs.trim().length > 0) {
100
- refsParts.push(input.refs.trim());
101
- }
102
- return refsParts;
103
- }
104
- async function maybeTransitionOriginPlan(fs, env, paths, session) {
105
- const planRelpath = await readOriginPlan(fs, session.path);
106
- if (planRelpath === null)
107
- return null;
108
- const cwd = env.cwd();
109
- const resolved = await resolveFromPlan(fs, paths, cwd, planRelpath);
110
- if ("code" in resolved) {
111
- return null;
112
- }
113
- if (resolved.frontmatter.state !== "active") {
114
- return null;
115
- }
116
- const code = session.code ?? "";
117
- const trigger = `session-close ${code}`;
118
- const result = await transitionPlanState(fs, resolved, "done", trigger);
119
- if (!result.wrote)
120
- return null;
121
- return { plan: resolved.filename, from: result.from, to: "done" };
122
- }
123
- async function readOriginPlan(fs, sessionPath) {
124
- const objectivePath = await findArtifact(sessionPath, "objective", fs);
125
- if (!objectivePath)
126
- return null;
127
- const text = await fs.readText(objectivePath);
128
- const headingMatch = text.match(/^##\s+Origin\s+\(plan\)\s*\n+([\s\S]*?)(?:\n##\s|$)/m);
129
- if (!headingMatch || !headingMatch[1])
130
- return null;
131
- const body = headingMatch[1];
132
- const refMatch = body.match(/Derivado del plan\s+`([^`]+)`/);
133
- if (!refMatch || !refMatch[1])
134
- return null;
135
- return refMatch[1].trim();
136
- }
137
- async function markHistoryClosed(fs, paths, session, input, refsRendered) {
138
- const codeNorm = session.code ?? input.code ?? "";
139
- const upsertResult = await withCwdLock(fs, paths, () => upsertRow(fs, paths.cwdHistoryFile(), codeNorm, (hasFlow) => buildRow({
140
- code: codeNorm,
141
- flow: session.flow ?? null,
142
- sesionName: session.name,
143
- date: session.date ?? formatToday(),
144
- state: "closed",
145
- summary: session.summary ?? "",
146
- refs: refsRendered,
147
- hasFlow,
148
- })));
149
- if (upsertResult && typeof upsertResult === "object" && "error" in upsertResult) {
150
- return { error: upsertResult.error };
26
+ sessionClose.refs = input.refs.trim();
151
27
  }
152
- return upsertResult;
28
+ return { sessionClose };
153
29
  }
154
- function formatToday() {
155
- const d = new Date();
156
- return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
30
+ async function ensureFile(fs, path, defaultContent) {
31
+ if (await fs.exists(path))
32
+ return;
33
+ await fs.writeText(path, defaultContent);
157
34
  }
158
35
  //# sourceMappingURL=session-close-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-close-service.js","sourceRoot":"","sources":["../../src/application/session-close-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-close-service.js","sourceRoot":"","sources":["../../src/application/session-close-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAyBtE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,KAAwB;IAExB,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAEtE,4EAA4E;IAC5E,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,UAAU,CAAC,EAAE,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACvD,MAAM,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAEjD,8DAA8D;IAC9D,4EAA4E;IAC5E,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAuB;QACvC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,IAAI;QACZ,eAAe,EAAE,cAAc;QAC/B,YAAY,EAAE,WAAW;KAC1B,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAkB,EAAE,IAAY,EAAE,cAAsB;IAChF,IAAI,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO;IAClC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,43 +1,23 @@
1
+ import type { SessionType } from "../domain/types.js";
1
2
  import type { EnvPort } from "../ports/env.js";
2
3
  import type { FileSystemPort } from "../ports/file-system.js";
3
4
  import type { PathsService } from "./paths-service.js";
4
- import { type ProjectMdUpsertOutput } from "./project-md-upsert-service.js";
5
5
  export interface SessionCreateInput {
6
- flow?: string;
6
+ type?: string;
7
7
  name?: string;
8
8
  objetivo?: string;
9
- branchesRaw?: string;
10
- origenRaw?: string;
11
- tipo?: string;
12
- modalidad?: string;
13
- fromPlanRaw?: string;
14
- lite?: boolean;
9
+ /** Optional plain origin string (who/where the session was created from). */
10
+ originRaw?: string;
15
11
  }
16
12
  export interface SessionCreateRecordOutput {
17
- code: string;
13
+ type: SessionType;
14
+ name: string;
18
15
  folder: string;
19
16
  path: string;
20
- phase: string | null;
21
- branches: string[];
22
- objective_path: string;
23
- history_updated: boolean;
24
- origen: {
25
- flow: string;
26
- code: string;
27
- folder: string;
28
- } | null;
29
- flow: string;
30
- tipo?: string;
31
- modalidad?: string;
32
- kind?: string;
33
- plan_transition?: {
34
- plan: string;
35
- from: string;
36
- to: string;
37
- };
17
+ session_path: string;
18
+ origin?: string;
38
19
  }
39
20
  export interface SessionCreateFullOutput {
40
- projectMd: ProjectMdUpsertOutput;
41
21
  sessionCreate: SessionCreateRecordOutput;
42
22
  }
43
23
  export interface SessionCreateError {
@@ -45,5 +25,5 @@ export interface SessionCreateError {
45
25
  expected?: string[];
46
26
  code?: string;
47
27
  }
48
- export declare function runSessionCreate(fs: FileSystemPort, env: EnvPort, paths: PathsService, input: SessionCreateInput): Promise<SessionCreateFullOutput | SessionCreateError>;
28
+ export declare function runSessionCreate(fs: FileSystemPort, _env: EnvPort, paths: PathsService, input: SessionCreateInput): Promise<SessionCreateFullOutput | SessionCreateError>;
49
29
  //# sourceMappingURL=session-create-service.d.ts.map
@@ -1 +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;AAK9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,gCAAgC,CAAC;AAyCxC,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;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;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;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;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;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;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,CA2DvD"}
1
+ {"version":3,"file":"session-create-service.d.ts","sourceRoot":"","sources":["../../src/application/session-create-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,uBAAuB,GAAG,kBAAkB,CAAC,CA+BvD"}
@@ -1,311 +1,67 @@
1
1
  import { join } from "node:path";
2
- import { resolveFromPlan, transitionPlanState } from "./from-plan.js";
3
- import { renderOrigenBlock, resolveOrigen } from "./handoff.js";
4
- import { buildRow, upsertRow } from "./history-table.js";
5
- import { withCwdLock } from "./lock-service.js";
6
- import { runProjectMdUpsertWrite, } from "./project-md-upsert-service.js";
7
- import { renderRefs } from "./render/history-row.js";
8
2
  import { canonicalArtifactPath } from "./session-artifacts.js";
9
- import { VALID_DEV_TYPES, fallbackLogMessage, inferType, isValidDevType, } from "./session/infer-type.js";
10
- import { getObjetivoTemplate, renderTemplate } from "./templates/objetivo.js";
11
- const TIPO_ALIASES = {
12
- proyecto: "project",
13
- project: "project",
14
- sistema: "system",
15
- system: "system",
16
- };
17
- const VALID_TIPOS_DESIGN = ["project", "system"];
18
- const TIPO_LEGACY_ACCEPTED = ["proyecto", "sistema"];
19
- const MODALIDAD_ALIASES = {
20
- tecnica: "technical",
21
- technical: "technical",
22
- datos: "data",
23
- data: "data",
24
- incidente: "incident",
25
- incident: "incident",
26
- };
27
- const VALID_MODALIDADES_ANALYZE = ["technical", "data", "incident"];
28
- const MODALIDAD_LEGACY_ACCEPTED = ["tecnica", "datos", "incidente"];
29
- function normalizeTipo(raw) {
30
- return TIPO_ALIASES[raw.trim().toLowerCase()] ?? raw;
31
- }
32
- function normalizeModalidad(raw) {
33
- return MODALIDAD_ALIASES[raw.trim().toLowerCase()] ?? raw;
34
- }
35
- export async function runSessionCreate(fs, env, paths, input) {
36
- let plan = null;
37
- let effectiveInput = input;
38
- if (input.fromPlanRaw !== undefined) {
39
- const resolved = await resolveFromPlan(fs, paths, env.cwd(), input.fromPlanRaw);
40
- if ("code" in resolved) {
41
- return { error: resolved.message, code: resolved.code };
42
- }
43
- plan = resolved;
44
- if ((effectiveInput.objetivo === undefined || effectiveInput.objetivo.trim().length === 0) &&
45
- plan.resumen !== null) {
46
- effectiveInput = { ...effectiveInput, objetivo: plan.resumen };
47
- }
48
- }
49
- const validated = validateInput(effectiveInput);
3
+ import { renderSessionMarkdown } from "./templates/session.js";
4
+ const VALID_TYPES = ["research", "refine", "exec", "quick"];
5
+ export async function runSessionCreate(fs, _env, paths, input) {
6
+ const validated = validateInput(input);
50
7
  if ("error" in validated)
51
8
  return validated;
52
- const { flow } = validated;
53
- const origen = await resolveOrigenIfPresent(fs, env, paths, effectiveInput.origenRaw);
54
- if (origen && "error" in origen)
55
- return origen;
56
- const folderInfo = await prepareSessionFolder(fs, paths, flow, effectiveInput.name ?? "");
9
+ const { type, name, objetivo } = validated;
10
+ const folderInfo = await prepareSessionFolder(fs, paths, name);
57
11
  if ("error" in folderInfo)
58
12
  return folderInfo;
59
- await writeObjetivo(fs, folderInfo, flow, effectiveInput, origen);
60
- if (plan !== null) {
61
- await appendPlanOriginToObjective(fs, folderInfo.sessionPath, plan);
62
- }
63
- const historyResult = await withCwdLock(fs, paths, () => writeHistoryRow(fs, paths, folderInfo.code, flow, effectiveInput, origen));
64
- if (historyResult && typeof historyResult === "object" && "error" in historyResult) {
65
- return { error: historyResult.error };
66
- }
67
- const projectMd = await registerInProjectBlock(fs, env, paths, folderInfo.folder, effectiveInput.branchesRaw);
68
- if ("error" in projectMd)
69
- return { error: projectMd.error };
70
- const branches = parseBranches(effectiveInput.branchesRaw);
71
- const recordOutput = composeRecord(folderInfo, flow, effectiveInput, branches, origen);
72
- if (plan !== null && plan.frontmatter.state === "draft") {
73
- await transitionPlanState(fs, plan, "active", `session-create ${folderInfo.code}`);
74
- recordOutput.plan_transition = { plan: plan.filename, from: "draft", to: "active" };
75
- }
76
- else if (plan !== null) {
77
- recordOutput.plan_transition = {
78
- plan: plan.filename,
79
- from: plan.frontmatter.state,
80
- to: plan.frontmatter.state,
81
- };
82
- }
83
- return { projectMd, sessionCreate: recordOutput };
84
- }
85
- async function appendPlanOriginToObjective(fs, sessionPath, plan) {
86
- const objectivePath = `${sessionPath}/OBJECTIVE.md`;
87
- if (!(await fs.exists(objectivePath)))
88
- return;
89
- const text = await fs.readText(objectivePath);
90
- const note = `\n## Origin (plan)\n\nDerivado del plan \`${plan.relpath}\` (sessions: ${plan.frontmatter.sessions.join(", ")}).\n`;
91
- const next = text.endsWith("\n") ? `${text}${note}` : `${text}\n${note}`;
92
- await fs.writeText(objectivePath, next);
13
+ const sessionPath = folderInfo.sessionPath;
14
+ const origin = input.originRaw?.trim();
15
+ const sessionFilePath = canonicalArtifactPath(sessionPath, "session");
16
+ await fs.writeText(sessionFilePath, renderSessionMarkdown({
17
+ name,
18
+ type,
19
+ objetivo,
20
+ ...(origin && origin.length > 0 ? { origin } : {}),
21
+ }));
22
+ const record = {
23
+ type,
24
+ name,
25
+ folder: folderInfo.folder,
26
+ path: sessionPath,
27
+ session_path: sessionFilePath,
28
+ };
29
+ if (origin && origin.length > 0)
30
+ record.origin = origin;
31
+ return { sessionCreate: record };
93
32
  }
94
33
  function validateInput(input) {
95
- const flow = input.flow?.trim();
96
- if (!flow) {
34
+ const type = input.type?.trim().toLowerCase();
35
+ if (!type) {
97
36
  return {
98
- error: "flow no resuelto. Pasá --flow <dev|design|analyze> o invocá el comando desde un plugin de flow.",
99
- expected: ["dev", "design", "analyze"],
37
+ error: "--type es obligatorio (research|refine|exec|quick)",
38
+ expected: [...VALID_TYPES],
100
39
  };
101
40
  }
102
- if (flow !== "dev" && flow !== "design" && flow !== "analyze") {
103
- return { error: `flow inválido '${flow}'; esperado dev|design|analyze` };
104
- }
105
- if (input.lite && flow !== "dev") {
106
- return { error: "--lite sólo aplica a flow=dev" };
41
+ if (!VALID_TYPES.includes(type)) {
42
+ return {
43
+ error: `--type inválido '${type}'; esperado research|refine|exec|quick`,
44
+ expected: [...VALID_TYPES],
45
+ };
107
46
  }
108
- const flowGuard = validateFlowSpecifics(flow, input);
109
- if (flowGuard)
110
- return flowGuard;
111
- if (!input.name)
112
- return { error: "--name es obligatorio (slug-kebab)" };
113
- if (!input.objetivo)
47
+ const name = input.name?.trim();
48
+ if (!name)
49
+ return { error: "--name es obligatorio" };
50
+ const objetivo = input.objetivo?.trim();
51
+ if (!objetivo)
114
52
  return { error: "--objetivo es obligatorio" };
115
- return { flow };
116
- }
117
- async function resolveOrigenIfPresent(fs, env, paths, origenRaw) {
118
- if (!origenRaw)
119
- return null;
120
- const resolved = await resolveOrigen(fs, env, paths, origenRaw);
121
- if ("error" in resolved) {
122
- return { error: `--from inválido: ${resolved.error}` };
123
- }
124
- return resolved;
53
+ return { type: type, name, objetivo };
125
54
  }
126
- async function prepareSessionFolder(fs, paths, flow, name) {
55
+ async function prepareSessionFolder(fs, paths, name) {
127
56
  const sessionsDir = paths.cwdSessionsDir();
128
57
  await fs.mkdirp(sessionsDir);
129
- const code = await nextCode(fs, sessionsDir);
130
- const folder = `session${code}-${flow}-${name}`;
58
+ // Folder is the --name verbatim (locked decision): no numeric NNN, no type suffix.
59
+ const folder = name;
131
60
  const sessionPath = join(sessionsDir, folder);
132
61
  if (await fs.exists(sessionPath)) {
133
62
  return { error: `Ya existe ${sessionPath}` };
134
63
  }
135
64
  await fs.mkdirp(sessionPath);
136
- return { code, folder, sessionPath, sessionsDir };
137
- }
138
- async function nextCode(fs, sessionsDir) {
139
- const entries = await fs.list(sessionsDir);
140
- const numbers = entries
141
- .filter((e) => e.type === "dir")
142
- .map((e) => e.name.match(/^session(\d{3})-/))
143
- .filter((m) => m !== null && m[1] !== undefined)
144
- .map((m) => Number.parseInt(m[1] ?? "0", 10));
145
- const nextNum = numbers.length > 0 ? Math.max(...numbers) + 1 : 1;
146
- return String(nextNum).padStart(3, "0");
147
- }
148
- async function writeObjetivo(fs, folderInfo, flow, input, origen) {
149
- const template = getObjetivoTemplate(flow, input.lite ?? false);
150
- const values = {
151
- folder: folderInfo.folder,
152
- objetivo: input.objetivo ?? "",
153
- origen_block: renderOrigenBlock(origen),
154
- };
155
- if (flow === "design" && input.tipo)
156
- values.tipo = input.tipo;
157
- if (flow === "dev" && input.tipo)
158
- values.tipo = input.tipo;
159
- if (flow === "analyze" && input.modalidad)
160
- values.modalidad = input.modalidad;
161
- await fs.writeText(canonicalArtifactPath(folderInfo.sessionPath, "objective"), renderTemplate(template, values));
162
- }
163
- async function writeHistoryRow(fs, paths, code, flow, input, origen) {
164
- const today = formatToday();
165
- const objetivo = input.objetivo ?? "";
166
- const summary = objetivo.length <= 100 ? objetivo : `${objetivo.slice(0, 97)}...`;
167
- const refsParts = [];
168
- if (origen)
169
- refsParts.push(`origen:${origen.flow}-${origen.code}`);
170
- if (input.lite)
171
- refsParts.push("kind:patch");
172
- const initialRefs = refsParts.length > 0 ? renderRefs(refsParts.join(",")) : "—";
173
- await upsertRow(fs, paths.cwdHistoryFile(), code, (hasFlow) => buildRow({
174
- code,
175
- flow,
176
- sesionName: input.name ?? "",
177
- date: today,
178
- state: "active",
179
- summary,
180
- refs: initialRefs,
181
- hasFlow,
182
- }));
183
- }
184
- async function registerInProjectBlock(fs, env, paths, folder, branchesRaw) {
185
- const branches = parseBranches(branchesRaw);
186
- const projectInput = {
187
- op: "add-session",
188
- sessionFolder: folder,
189
- phase: "planning",
190
- };
191
- if (branches.length > 0)
192
- projectInput.branches = branches;
193
- return runProjectMdUpsertWrite(fs, env, paths, projectInput);
194
- }
195
- function composeRecord(folderInfo, flow, input, branches, origen) {
196
- return {
197
- code: folderInfo.code,
198
- folder: folderInfo.folder,
199
- path: folderInfo.sessionPath,
200
- phase: "planning",
201
- branches,
202
- objective_path: canonicalArtifactPath(folderInfo.sessionPath, "objective"),
203
- history_updated: true,
204
- origen: origen ? { flow: origen.flow, code: origen.code, folder: origen.folder } : null,
205
- ...(flow === "design" && input.tipo ? { tipo: input.tipo } : {}),
206
- ...(flow === "dev" && input.tipo ? { tipo: input.tipo } : {}),
207
- ...(flow === "analyze" && input.modalidad ? { modalidad: input.modalidad } : {}),
208
- ...(input.lite ? { kind: "patch" } : {}),
209
- flow,
210
- };
211
- }
212
- function validateFlowSpecifics(flow, input) {
213
- if (flow === "design")
214
- return validateDesignArgs(input);
215
- if (flow === "analyze")
216
- return validateAnalyzeArgs(input);
217
- return validateDevArgs(input);
218
- }
219
- function validateDesignArgs(input) {
220
- if (!input.tipo) {
221
- return {
222
- error: "--type es obligatorio para flow=design",
223
- expected: [...VALID_TIPOS_DESIGN],
224
- };
225
- }
226
- const normalized = normalizeTipo(input.tipo);
227
- if (!VALID_TIPOS_DESIGN.includes(normalized)) {
228
- return {
229
- error: `--type inválido: '${input.tipo}'`,
230
- expected: [...VALID_TIPOS_DESIGN, ...TIPO_LEGACY_ACCEPTED],
231
- };
232
- }
233
- input.tipo = normalized;
234
- if (input.modalidad)
235
- return { error: "--modality sólo aplica a flow=analyze" };
236
- return null;
237
- }
238
- function validateAnalyzeArgs(input) {
239
- if (!input.modalidad) {
240
- return {
241
- error: "--modality es obligatorio para flow=analyze",
242
- expected: [...VALID_MODALIDADES_ANALYZE],
243
- };
244
- }
245
- const normalized = normalizeModalidad(input.modalidad);
246
- if (!VALID_MODALIDADES_ANALYZE.includes(normalized)) {
247
- return {
248
- error: `--modality inválido: '${input.modalidad}'`,
249
- expected: [...VALID_MODALIDADES_ANALYZE, ...MODALIDAD_LEGACY_ACCEPTED],
250
- };
251
- }
252
- input.modalidad = normalized;
253
- if (input.tipo)
254
- return { error: "--type sólo aplica a flow=design" };
255
- return null;
256
- }
257
- function validateDevArgs(input) {
258
- // flow=dev v2.8+: acepta `--type <feature|refactor|bugfix|chore>`. Si no se pasa,
259
- // se infiere por heurística desde `--objetivo` con fallback a `feature` (Mit-A+C
260
- // de session050). Capa 1 (template inyecta) + Capa 2 (heurística) + Capa 3 (default-on
261
- // en lectura) garantizan que `## Type` nunca esté ausente.
262
- if (input.modalidad) {
263
- return { error: "--modality sólo aplica a flow=analyze (flow actual: 'dev')" };
264
- }
265
- if (input.tipo) {
266
- const candidate = input.tipo.trim().toLowerCase();
267
- if (!isValidDevType(candidate)) {
268
- return {
269
- error: `--type inválido para flow=dev: '${input.tipo}'`,
270
- expected: [...VALID_DEV_TYPES],
271
- };
272
- }
273
- // Modo lite (micro-lifecycle flat): solo admite bugfix|chore. feature/refactor
274
- // requieren la sesión completa (phased + DESIGN/S7) — usar upgrade in-place si crece.
275
- if (input.lite && candidate !== "bugfix" && candidate !== "chore") {
276
- return {
277
- error: `--lite no admite --type '${candidate}'; el micro-lifecycle es flat. Usá bugfix|chore u omití --lite.`,
278
- expected: ["bugfix", "chore"],
279
- };
280
- }
281
- input.tipo = candidate;
282
- return null;
283
- }
284
- // Sin --type → inferir desde --objetivo (Mit-C).
285
- const inferred = inferType(input.objetivo ?? "");
286
- // Modo lite: restringir a bugfix|chore. Si la heurística no da chore, usar bugfix
287
- // (una tarea pequeña no es feature/refactor; si crece, el upgrade in-place la promueve).
288
- if (input.lite) {
289
- input.tipo = inferred.type === "chore" ? "chore" : "bugfix";
290
- return null;
291
- }
292
- input.tipo = inferred.type;
293
- if (inferred.confidence === "fallback") {
294
- // Log canónico (Mit-C fallback). Va a stderr para no contaminar el JSON de stdout.
295
- console.error(fallbackLogMessage(inferred.type));
296
- }
297
- return null;
298
- }
299
- function parseBranches(raw) {
300
- if (!raw)
301
- return [];
302
- return raw
303
- .split(",")
304
- .map((b) => b.trim())
305
- .filter((b) => b.length > 0);
306
- }
307
- function formatToday() {
308
- const d = new Date();
309
- return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
65
+ return { folder, sessionPath, sessionsDir };
310
66
  }
311
67
  //# sourceMappingURL=session-create-service.js.map