@jaimevalasek/aioson 1.3.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/LICENSE +661 -21
  3. package/README.md +22 -3
  4. package/docs/en/squad-dashboard.md +372 -0
  5. package/docs/openclaw-bridge.md +308 -0
  6. package/docs/pt/README.md +62 -2
  7. package/docs/pt/advisor-spec.md +5 -5
  8. package/docs/pt/agentes-customizados.md +670 -0
  9. package/docs/pt/agentes.md +235 -23
  10. package/docs/pt/automacao-squads.md +407 -0
  11. package/docs/pt/cenarios.md +49 -5
  12. package/docs/pt/clientes-ai.md +62 -0
  13. package/docs/pt/comandos-cli.md +226 -17
  14. package/docs/pt/deyvin.md +115 -0
  15. package/docs/pt/genome-3.0-spec.md +11 -11
  16. package/docs/pt/inicio-rapido.md +63 -2
  17. package/docs/pt/memoria-contexto.md +255 -0
  18. package/docs/pt/output-strategy-delivery.md +655 -0
  19. package/docs/pt/profiler-system.md +17 -17
  20. package/docs/pt/runtime-observability.md +5 -1
  21. package/docs/pt/skills.md +175 -0
  22. package/docs/pt/squad-dashboard.md +373 -0
  23. package/docs/pt/{squad-genoma.md → squad-genome.md} +81 -75
  24. package/docs/testing/genome-2.0-matrix.md +5 -5
  25. package/docs/testing/genome-2.0-rollout.md +10 -10
  26. package/package.json +4 -4
  27. package/src/agents.js +21 -5
  28. package/src/backup-local.js +74 -0
  29. package/src/backup-provider.js +303 -0
  30. package/src/cli.js +276 -2
  31. package/src/commands/agents.js +22 -4
  32. package/src/commands/backup-local-cmd.js +25 -0
  33. package/src/commands/backup.js +533 -0
  34. package/src/commands/cloud.js +17 -17
  35. package/src/commands/context-pack.js +45 -0
  36. package/src/commands/implementation-plan.js +340 -0
  37. package/src/commands/learning.js +134 -0
  38. package/src/commands/live.js +1583 -0
  39. package/src/commands/runtime.js +1075 -2
  40. package/src/commands/scan-project.js +288 -24
  41. package/src/commands/setup-context.js +30 -2
  42. package/src/commands/skill.js +558 -0
  43. package/src/commands/squad-agent-create.js +788 -0
  44. package/src/commands/squad-daemon.js +209 -0
  45. package/src/commands/squad-dashboard.js +39 -0
  46. package/src/commands/squad-deploy.js +64 -0
  47. package/src/commands/squad-doctor.js +103 -1
  48. package/src/commands/squad-investigate.js +261 -0
  49. package/src/commands/squad-learning.js +209 -0
  50. package/src/commands/squad-mcp.js +270 -0
  51. package/src/commands/squad-pipeline.js +247 -1
  52. package/src/commands/squad-plan.js +329 -0
  53. package/src/commands/squad-processes.js +56 -0
  54. package/src/commands/squad-recovery.js +42 -0
  55. package/src/commands/squad-roi.js +291 -0
  56. package/src/commands/squad-score.js +250 -0
  57. package/src/commands/squad-status.js +38 -2
  58. package/src/commands/squad-validate.js +118 -1
  59. package/src/commands/squad-webhook.js +160 -0
  60. package/src/commands/squad-worker.js +191 -0
  61. package/src/commands/squad-worktrees.js +75 -0
  62. package/src/commands/test-agents.js +6 -1
  63. package/src/commands/web-map.js +70 -0
  64. package/src/commands/web-scrape.js +71 -0
  65. package/src/commands/workflow-next.js +8 -1
  66. package/src/commands/workflow-status.js +250 -0
  67. package/src/constants.js +88 -16
  68. package/src/context-memory.js +837 -0
  69. package/src/context-writer.js +47 -1
  70. package/src/delivery-runner.js +319 -0
  71. package/src/genome-files.js +1 -1
  72. package/src/genome-format.js +1 -1
  73. package/src/i18n/messages/en.js +333 -8
  74. package/src/i18n/messages/es.js +240 -6
  75. package/src/i18n/messages/fr.js +239 -5
  76. package/src/i18n/messages/pt-BR.js +330 -12
  77. package/src/installer.js +30 -2
  78. package/src/lib/genomes/compat.js +1 -1
  79. package/src/lib/webhook-server.js +328 -0
  80. package/src/mcp-connectors/registry.js +602 -0
  81. package/src/runtime-store.js +1037 -42
  82. package/src/session-handoff.js +77 -0
  83. package/src/squad/external-session.js +180 -0
  84. package/src/squad/inter-squad.js +74 -0
  85. package/src/squad/recovery-context.js +201 -0
  86. package/src/squad/worktree-manager.js +114 -0
  87. package/src/squad-daemon.js +490 -0
  88. package/src/squad-dashboard/api.js +223 -0
  89. package/src/squad-dashboard/attachment-handler.js +93 -0
  90. package/src/squad-dashboard/context-monitor.js +157 -0
  91. package/src/squad-dashboard/execution-logs.js +115 -0
  92. package/src/squad-dashboard/hunk-review.js +209 -0
  93. package/src/squad-dashboard/metrics.js +133 -0
  94. package/src/squad-dashboard/process-monitor.js +125 -0
  95. package/src/squad-dashboard/renderer.js +858 -0
  96. package/src/squad-dashboard/server.js +232 -0
  97. package/src/squad-dashboard/styles.js +525 -0
  98. package/src/squad-dashboard/token-tracker.js +99 -0
  99. package/src/web.js +284 -0
  100. package/src/worker-runner.js +339 -0
  101. package/template/.aioson/agents/analyst.md +40 -9
  102. package/template/.aioson/agents/architect.md +24 -5
  103. package/template/.aioson/agents/dev.md +254 -25
  104. package/template/.aioson/agents/deyvin.md +174 -0
  105. package/template/.aioson/agents/discovery-design-doc.md +25 -1
  106. package/template/.aioson/agents/{genoma.md → genome.md} +20 -20
  107. package/template/.aioson/agents/neo.md +152 -0
  108. package/template/.aioson/agents/orache.md +388 -0
  109. package/template/.aioson/agents/orchestrator.md +63 -2
  110. package/template/.aioson/agents/pair.md +5 -0
  111. package/template/.aioson/agents/pm.md +17 -5
  112. package/template/.aioson/agents/product.md +113 -29
  113. package/template/.aioson/agents/profiler-enricher.md +1 -1
  114. package/template/.aioson/agents/profiler-forge.md +9 -9
  115. package/template/.aioson/agents/profiler-researcher.md +1 -1
  116. package/template/.aioson/agents/qa.md +18 -5
  117. package/template/.aioson/agents/setup.md +138 -18
  118. package/template/.aioson/agents/sheldon.md +603 -0
  119. package/template/.aioson/agents/squad.md +866 -28
  120. package/template/.aioson/agents/tester.md +254 -0
  121. package/template/.aioson/agents/ux-ui.md +289 -34
  122. package/template/.aioson/config.md +181 -0
  123. package/template/.aioson/context/spec.md.template +17 -0
  124. package/template/.aioson/genomes/.gitkeep +0 -0
  125. package/template/.aioson/installed-skills/.gitkeep +0 -0
  126. package/template/.aioson/locales/en/agents/analyst.md +34 -4
  127. package/template/.aioson/locales/en/agents/architect.md +18 -0
  128. package/template/.aioson/locales/en/agents/dev.md +155 -11
  129. package/template/.aioson/locales/en/agents/deyvin.md +137 -0
  130. package/template/.aioson/locales/en/agents/{genoma.md → genome.md} +14 -14
  131. package/template/.aioson/locales/en/agents/neo.md +8 -0
  132. package/template/.aioson/locales/en/agents/orchestrator.md +62 -2
  133. package/template/.aioson/locales/en/agents/pair.md +5 -0
  134. package/template/.aioson/locales/en/agents/pm.md +7 -0
  135. package/template/.aioson/locales/en/agents/product.md +35 -17
  136. package/template/.aioson/locales/en/agents/qa.md +56 -0
  137. package/template/.aioson/locales/en/agents/setup.md +53 -6
  138. package/template/.aioson/locales/en/agents/sheldon.md +340 -0
  139. package/template/.aioson/locales/en/agents/squad.md +203 -15
  140. package/template/.aioson/locales/en/agents/ux-ui.md +383 -35
  141. package/template/.aioson/locales/es/agents/analyst.md +24 -4
  142. package/template/.aioson/locales/es/agents/architect.md +18 -0
  143. package/template/.aioson/locales/es/agents/dev.md +136 -9
  144. package/template/.aioson/locales/es/agents/deyvin.md +97 -0
  145. package/template/.aioson/locales/es/agents/{genoma.md → genome.md} +13 -13
  146. package/template/.aioson/locales/es/agents/neo.md +48 -0
  147. package/template/.aioson/locales/es/agents/orache.md +103 -0
  148. package/template/.aioson/locales/es/agents/orchestrator.md +62 -2
  149. package/template/.aioson/locales/es/agents/pair.md +5 -0
  150. package/template/.aioson/locales/es/agents/pm.md +7 -0
  151. package/template/.aioson/locales/es/agents/product.md +13 -3
  152. package/template/.aioson/locales/es/agents/qa.md +33 -0
  153. package/template/.aioson/locales/es/agents/setup.md +30 -6
  154. package/template/.aioson/locales/es/agents/sheldon.md +192 -0
  155. package/template/.aioson/locales/es/agents/squad.md +284 -15
  156. package/template/.aioson/locales/es/agents/ux-ui.md +34 -25
  157. package/template/.aioson/locales/fr/agents/analyst.md +24 -4
  158. package/template/.aioson/locales/fr/agents/architect.md +18 -0
  159. package/template/.aioson/locales/fr/agents/dev.md +136 -9
  160. package/template/.aioson/locales/fr/agents/deyvin.md +97 -0
  161. package/template/.aioson/locales/fr/agents/{genoma.md → genome.md} +7 -7
  162. package/template/.aioson/locales/fr/agents/neo.md +48 -0
  163. package/template/.aioson/locales/fr/agents/orache.md +104 -0
  164. package/template/.aioson/locales/fr/agents/orchestrator.md +62 -2
  165. package/template/.aioson/locales/fr/agents/pair.md +5 -0
  166. package/template/.aioson/locales/fr/agents/pm.md +7 -0
  167. package/template/.aioson/locales/fr/agents/product.md +13 -3
  168. package/template/.aioson/locales/fr/agents/qa.md +33 -0
  169. package/template/.aioson/locales/fr/agents/setup.md +30 -6
  170. package/template/.aioson/locales/fr/agents/sheldon.md +192 -0
  171. package/template/.aioson/locales/fr/agents/squad.md +279 -10
  172. package/template/.aioson/locales/fr/agents/ux-ui.md +34 -25
  173. package/template/.aioson/locales/pt-BR/agents/analyst.md +45 -4
  174. package/template/.aioson/locales/pt-BR/agents/architect.md +29 -0
  175. package/template/.aioson/locales/pt-BR/agents/dev.md +167 -15
  176. package/template/.aioson/locales/pt-BR/agents/deyvin.md +137 -0
  177. package/template/.aioson/locales/pt-BR/agents/{genoma.md → genome.md} +49 -49
  178. package/template/.aioson/locales/pt-BR/agents/neo.md +147 -0
  179. package/template/.aioson/locales/pt-BR/agents/orache.md +137 -0
  180. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +62 -2
  181. package/template/.aioson/locales/pt-BR/agents/pair.md +5 -0
  182. package/template/.aioson/locales/pt-BR/agents/pm.md +7 -0
  183. package/template/.aioson/locales/pt-BR/agents/product.md +43 -20
  184. package/template/.aioson/locales/pt-BR/agents/qa.md +67 -0
  185. package/template/.aioson/locales/pt-BR/agents/setup.md +53 -6
  186. package/template/.aioson/locales/pt-BR/agents/sheldon.md +192 -0
  187. package/template/.aioson/locales/pt-BR/agents/squad.md +591 -47
  188. package/template/.aioson/locales/pt-BR/agents/ux-ui.md +369 -22
  189. package/template/.aioson/my-agents/.gitkeep +0 -0
  190. package/template/.aioson/rules/.gitkeep +0 -0
  191. package/template/.aioson/rules/squad/.gitkeep +0 -0
  192. package/template/.aioson/rules/squad/README.md +50 -0
  193. package/template/.aioson/schemas/genome-meta.schema.json +1 -1
  194. package/template/.aioson/schemas/genome.schema.json +1 -1
  195. package/template/.aioson/schemas/squad-blueprint.schema.json +32 -0
  196. package/template/.aioson/schemas/squad-manifest.schema.json +434 -1
  197. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -0
  198. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -0
  199. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -0
  200. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -0
  201. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -0
  202. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -0
  203. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -0
  204. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -0
  205. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -0
  206. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -0
  207. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -0
  208. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -0
  209. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -0
  210. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -0
  211. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -0
  212. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -0
  213. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +203 -0
  214. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -0
  215. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +407 -0
  216. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +272 -0
  217. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +524 -0
  218. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +277 -0
  219. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +289 -0
  220. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +437 -0
  221. package/template/.aioson/skills/design/interface-design/SKILL.md +47 -0
  222. package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -0
  223. package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -0
  224. package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +71 -0
  225. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -0
  226. package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -0
  227. package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +62 -0
  228. package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -0
  229. package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -0
  230. package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -0
  231. package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -0
  232. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -0
  233. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -0
  234. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -0
  235. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -0
  236. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -0
  237. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -0
  238. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -0
  239. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -0
  240. package/template/.aioson/skills/design-system/SKILL.md +92 -0
  241. package/template/.aioson/skills/design-system/cognitive-core-ui.skill +0 -0
  242. package/template/.aioson/skills/design-system/components/SKILL.md +274 -0
  243. package/template/.aioson/skills/design-system/components/SKILL.md:Zone.Identifier +0 -0
  244. package/template/.aioson/skills/design-system/dashboards/SKILL.md +184 -0
  245. package/template/.aioson/skills/design-system/dashboards/SKILL.md:Zone.Identifier +0 -0
  246. package/template/.aioson/skills/design-system/foundations/SKILL.md +250 -0
  247. package/template/.aioson/skills/design-system/foundations/SKILL.md:Zone.Identifier +0 -0
  248. package/template/.aioson/skills/design-system/motion/SKILL.md +197 -0
  249. package/template/.aioson/skills/design-system/motion/SKILL.md:Zone.Identifier +0 -0
  250. package/template/.aioson/skills/design-system/patterns/SKILL.md +231 -0
  251. package/template/.aioson/skills/design-system/patterns/SKILL.md:Zone.Identifier +0 -0
  252. package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -0
  253. package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -0
  254. package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -0
  255. package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -0
  256. package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -0
  257. package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -0
  258. package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -0
  259. package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -0
  260. package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -0
  261. package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -0
  262. package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -0
  263. package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -0
  264. package/template/.aioson/skills/squad/SKILL.md +58 -0
  265. package/template/.aioson/skills/squad/domains/.gitkeep +0 -0
  266. package/template/.aioson/skills/squad/formats/.gitkeep +0 -0
  267. package/template/.aioson/skills/squad/formats/catalog.json +15 -0
  268. package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -0
  269. package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -0
  270. package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -0
  271. package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -0
  272. package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -0
  273. package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -0
  274. package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -0
  275. package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -0
  276. package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -0
  277. package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -0
  278. package/template/.aioson/skills/squad/patterns/.gitkeep +0 -0
  279. package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -0
  280. package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -0
  281. package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -0
  282. package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -0
  283. package/template/.aioson/skills/squad/references/.gitkeep +0 -0
  284. package/template/.aioson/skills/squad/references/checklist-templates.md +122 -0
  285. package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -0
  286. package/template/.aioson/skills/squad/references/workflow-templates.md +169 -0
  287. package/template/.aioson/skills/static/debugging-protocol.md +42 -0
  288. package/template/.aioson/skills/static/git-worktrees.md +36 -0
  289. package/template/.aioson/tasks/implementation-plan.md +307 -0
  290. package/template/.aioson/tasks/squad-create.md +1 -1
  291. package/template/.aioson/tasks/squad-design.md +28 -0
  292. package/template/.aioson/tasks/squad-execution-plan.md +279 -0
  293. package/template/.aioson/tasks/squad-export.md +1 -1
  294. package/template/.aioson/tasks/squad-investigate.md +44 -0
  295. package/template/.aioson/tasks/squad-learning-review.md +44 -0
  296. package/template/.aioson/tasks/squad-output-config.md +177 -0
  297. package/template/.aioson/tasks/squad-profile.md +48 -0
  298. package/template/.aioson/tasks/squad-review.md +61 -0
  299. package/template/.aioson/tasks/squad-task-decompose.md +66 -0
  300. package/template/.aioson/tasks/squad-validate.md +1 -1
  301. package/template/.claude/commands/aioson/agent/deyvin.md +5 -0
  302. package/template/.claude/commands/aioson/agent/discovery-design-doc.md +5 -0
  303. package/template/.claude/commands/aioson/agent/genome.md +5 -0
  304. package/template/.claude/commands/aioson/agent/neo.md +5 -0
  305. package/template/.claude/commands/aioson/agent/product.md +5 -0
  306. package/template/.claude/commands/aioson/agent/profiler-enricher.md +5 -0
  307. package/template/.claude/commands/aioson/agent/profiler-forge.md +5 -0
  308. package/template/.claude/commands/aioson/agent/profiler-researcher.md +5 -0
  309. package/template/.claude/commands/aioson/agent/squad.md +5 -0
  310. package/template/.claude/commands/aioson/agent/tester.md +5 -0
  311. package/template/.gemini/GEMINI.md +3 -0
  312. package/template/.gemini/commands/aios-deyvin.toml +6 -0
  313. package/template/.gemini/commands/aios-neo.toml +4 -0
  314. package/template/.gemini/commands/aios-pair.toml +6 -0
  315. package/template/.gemini/commands/aios-tester.toml +6 -0
  316. package/template/AGENTS.md +37 -6
  317. package/template/CLAUDE.md +34 -4
  318. package/template/OPENCODE.md +8 -2
  319. package/template/squad-searches/.gitkeep +0 -0
  320. package/template/.aioson/skills/static/interface-design.md +0 -372
  321. package/template/.aioson/skills/static/premium-command-center-ui.md +0 -190
  322. /package/template/.aioson/{genomas → docs}/.gitkeep +0 -0
  323. /package/template/.claude/commands/aioson/{analyst.md → agent/analyst.md} +0 -0
  324. /package/template/.claude/commands/aioson/{architect.md → agent/architect.md} +0 -0
  325. /package/template/.claude/commands/aioson/{dev.md → agent/dev.md} +0 -0
  326. /package/template/.claude/commands/aioson/{orchestrator.md → agent/orchestrator.md} +0 -0
  327. /package/template/.claude/commands/aioson/{pm.md → agent/pm.md} +0 -0
  328. /package/template/.claude/commands/aioson/{qa.md → agent/qa.md} +0 -0
  329. /package/template/.claude/commands/aioson/{setup.md → agent/setup.md} +0 -0
  330. /package/template/.claude/commands/aioson/{ux-ui.md → agent/ux-ui.md} +0 -0
package/src/cli.js CHANGED
@@ -11,6 +11,7 @@ const { runDoctorCommand } = require('./commands/doctor');
11
11
  const { runI18nAdd } = require('./commands/i18n-add');
12
12
  const { runAgentsList, runAgentPrompt } = require('./commands/agents');
13
13
  const { runContextValidate } = require('./commands/context-validate');
14
+ const { runContextPack } = require('./commands/context-pack');
14
15
  const { runSetupContext } = require('./commands/setup-context');
15
16
  const { runLocaleApply } = require('./commands/locale-apply');
16
17
  const { runSmokeTest } = require('./commands/smoke');
@@ -19,6 +20,7 @@ const { runMcpDoctor } = require('./commands/mcp-doctor');
19
20
  const { runPackageTest } = require('./commands/package-e2e');
20
21
  const { runWorkflowPlan } = require('./commands/workflow-plan');
21
22
  const { runWorkflowNext } = require('./commands/workflow-next');
23
+ const { runWorkflowStatus } = require('./commands/workflow-status');
22
24
  const { runParallelInit } = require('./commands/parallel-init');
23
25
  const { runParallelDoctor } = require('./commands/parallel-doctor');
24
26
  const { runParallelAssign } = require('./commands/parallel-assign');
@@ -30,6 +32,8 @@ const { runQaInit } = require('./commands/qa-init');
30
32
  const { runQaRun } = require('./commands/qa-run');
31
33
  const { runQaScan } = require('./commands/qa-scan');
32
34
  const { runQaReport } = require('./commands/qa-report');
35
+ const { runWebMap } = require('./commands/web-map');
36
+ const { runWebScrape } = require('./commands/web-scrape');
33
37
  const { runScanProject } = require('./commands/scan-project');
34
38
  const { runConfig } = require('./commands/config');
35
39
  const { runGenomeDoctor } = require('./commands/genome-doctor');
@@ -40,6 +44,23 @@ const { runSquadRepairGenomes } = require('./commands/squad-repair-genomes');
40
44
  const { runSquadValidate } = require('./commands/squad-validate');
41
45
  const { runSquadExport } = require('./commands/squad-export');
42
46
  const { runSquadPipeline } = require('./commands/squad-pipeline');
47
+ const { runSquadAgentCreate } = require('./commands/squad-agent-create');
48
+ const { runSquadInvestigate } = require('./commands/squad-investigate');
49
+ const { runImplementationPlan } = require('./commands/implementation-plan');
50
+ const { runSquadPlan } = require('./commands/squad-plan');
51
+ const { runSquadLearning } = require('./commands/squad-learning');
52
+ const { runLearning } = require('./commands/learning');
53
+ const { runSquadDashboard } = require('./commands/squad-dashboard');
54
+ const { runSquadWorker } = require('./commands/squad-worker');
55
+ const { runSquadDaemon } = require('./commands/squad-daemon');
56
+ const { runSquadMcp } = require('./commands/squad-mcp');
57
+ const { runSquadRoi } = require('./commands/squad-roi');
58
+ const { runSquadScore } = require('./commands/squad-score');
59
+ const { runSquadProcesses } = require('./commands/squad-processes');
60
+ const { runSquadWorktrees, runSquadMerge } = require('./commands/squad-worktrees');
61
+ const { runSquadRecovery } = require('./commands/squad-recovery');
62
+ const { runSquadDeploy } = require('./commands/squad-deploy');
63
+ const { runSquadWebhook } = require('./commands/squad-webhook');
43
64
  const {
44
65
  runRuntimeInit,
45
66
  runRuntimeIngest,
@@ -51,14 +72,43 @@ const {
51
72
  runRuntimeTaskFail,
52
73
  runRuntimeFail,
53
74
  runRuntimeStatus,
54
- runRuntimeLog
75
+ runRuntimeLog,
76
+ runAgentDone,
77
+ runAgentRecover,
78
+ runRuntimeSessionStart,
79
+ runRuntimeSessionLog,
80
+ runRuntimeSessionFinish,
81
+ runRuntimeSessionStatus,
82
+ runDeliver,
83
+ runOutputStrategyExport,
84
+ runOutputStrategyImport,
85
+ runDevlogSync,
86
+ runRuntimePrune
55
87
  } = require('./commands/runtime');
88
+ const {
89
+ runLiveStart,
90
+ runRuntimeEmit,
91
+ runLiveHandoff,
92
+ runLiveStatus,
93
+ runLiveClose,
94
+ runLiveList
95
+ } = require('./commands/live');
56
96
  const {
57
97
  runCloudImportSquad,
58
98
  runCloudImportGenome,
59
99
  runCloudPublishGenome,
60
100
  runCloudPublishSquad
61
101
  } = require('./commands/cloud');
102
+ const {
103
+ runRuntimeBackup,
104
+ runRuntimeRestore
105
+ } = require('./commands/backup');
106
+ const {
107
+ runSkillInstall,
108
+ runSkillList,
109
+ runSkillRemove
110
+ } = require('./commands/skill');
111
+ const { runBackupLocal } = require('./commands/backup-local-cmd');
62
112
 
63
113
  const JSON_SUPPORTED_COMMANDS = new Set([
64
114
  'init',
@@ -77,6 +127,8 @@ const JSON_SUPPORTED_COMMANDS = new Set([
77
127
  'doctor',
78
128
  'context:validate',
79
129
  'context-validate',
130
+ 'context:pack',
131
+ 'context-pack',
80
132
  'test:smoke',
81
133
  'test-smoke',
82
134
  'test:agents',
@@ -89,6 +141,8 @@ const JSON_SUPPORTED_COMMANDS = new Set([
89
141
  'workflow-plan',
90
142
  'workflow:next',
91
143
  'workflow-next',
144
+ 'workflow:status',
145
+ 'workflow-status',
92
146
  'agent:next',
93
147
  'agent-next',
94
148
  'parallel:init',
@@ -121,6 +175,10 @@ const JSON_SUPPORTED_COMMANDS = new Set([
121
175
  'qa-scan',
122
176
  'qa:report',
123
177
  'qa-report',
178
+ 'web:map',
179
+ 'web-map',
180
+ 'web:scrape',
181
+ 'web-scrape',
124
182
  'scan:project',
125
183
  'scan-project',
126
184
  'config',
@@ -140,6 +198,49 @@ const JSON_SUPPORTED_COMMANDS = new Set([
140
198
  'squad-export',
141
199
  'squad:pipeline',
142
200
  'squad-pipeline',
201
+ 'squad:agent-create',
202
+ 'squad-agent-create',
203
+ 'squad:investigate',
204
+ 'squad-investigate',
205
+ 'squad:dashboard',
206
+ 'squad-dashboard',
207
+ 'squad:worker',
208
+ 'squad-worker',
209
+ 'squad:daemon',
210
+ 'squad-daemon',
211
+ 'squad:mcp',
212
+ 'squad-mcp',
213
+ 'squad:mcp:call',
214
+ 'squad:roi',
215
+ 'squad-roi',
216
+ 'squad:score',
217
+ 'squad-score',
218
+ 'squad:processes',
219
+ 'squad-processes',
220
+ 'squad:worktrees',
221
+ 'squad-worktrees',
222
+ 'squad:merge',
223
+ 'squad-merge',
224
+ 'squad:recovery',
225
+ 'squad-recovery',
226
+ 'squad:deploy',
227
+ 'squad-deploy',
228
+ 'squad:webhook',
229
+ 'squad-webhook',
230
+ 'plan:show',
231
+ 'plan:status',
232
+ 'plan:checkpoint',
233
+ 'plan:stale',
234
+ 'plan:register',
235
+ 'plan',
236
+ 'squad:plan',
237
+ 'squad-plan',
238
+ 'squad:learning',
239
+ 'squad-learning',
240
+ 'learning',
241
+ 'learning:list',
242
+ 'learning:stats',
243
+ 'learning:promote',
143
244
  'runtime:init',
144
245
  'runtime-init',
145
246
  'runtime:ingest',
@@ -162,6 +263,33 @@ const JSON_SUPPORTED_COMMANDS = new Set([
162
263
  'runtime-status',
163
264
  'runtime:log',
164
265
  'runtime-log',
266
+ 'agent:done',
267
+ 'agent-done',
268
+ 'agent:recover',
269
+ 'agent-recover',
270
+ 'runtime:session:start',
271
+ 'runtime-session-start',
272
+ 'runtime:session:log',
273
+ 'runtime-session-log',
274
+ 'runtime:session:finish',
275
+ 'runtime-session-finish',
276
+ 'runtime:session:status',
277
+ 'runtime-session-status',
278
+ 'runtime:emit',
279
+ 'runtime-emit',
280
+ 'live:start',
281
+ 'live-start',
282
+ 'live:status',
283
+ 'live-status',
284
+ 'live:handoff',
285
+ 'live-handoff',
286
+ 'live:close',
287
+ 'live-close',
288
+ 'live:list',
289
+ 'live-list',
290
+ 'deliver',
291
+ 'output-strategy:export',
292
+ 'output-strategy:import',
165
293
  'cloud:import:squad',
166
294
  'cloud-import-squad',
167
295
  'cloud:import:genome',
@@ -170,6 +298,16 @@ const JSON_SUPPORTED_COMMANDS = new Set([
170
298
  'cloud-publish-squad',
171
299
  'cloud:publish:genome',
172
300
  'cloud-publish-genome',
301
+ 'runtime:backup',
302
+ 'runtime-backup',
303
+ 'runtime:restore',
304
+ 'runtime-restore',
305
+ 'skill:install',
306
+ 'skill-install',
307
+ 'skill:list',
308
+ 'skill-list',
309
+ 'skill:remove',
310
+ 'skill-remove',
173
311
  'version',
174
312
  '--version',
175
313
  '-v'
@@ -223,6 +361,7 @@ function printHelp(t, logger) {
223
361
  logHelpLine(t, logger, 'cli.help_agents');
224
362
  logHelpLine(t, logger, 'cli.help_agent_prompt');
225
363
  logHelpLine(t, logger, 'cli.help_context_validate');
364
+ logHelpLine(t, logger, 'cli.help_context_pack');
226
365
  logHelpLine(t, logger, 'cli.help_setup_context');
227
366
  logHelpLine(t, logger, 'cli.help_locale_apply');
228
367
  logHelpLine(t, logger, 'cli.help_locale_diff');
@@ -231,6 +370,7 @@ function printHelp(t, logger) {
231
370
  logHelpLine(t, logger, 'cli.help_test_package');
232
371
  logHelpLine(t, logger, 'cli.help_workflow_plan');
233
372
  logHelpLine(t, logger, 'cli.help_workflow_next');
373
+ logHelpLine(t, logger, 'cli.help_workflow_status');
234
374
  logHelpLine(t, logger, 'cli.help_parallel_init');
235
375
  logHelpLine(t, logger, 'cli.help_parallel_doctor');
236
376
  logHelpLine(t, logger, 'cli.help_parallel_assign');
@@ -242,6 +382,8 @@ function printHelp(t, logger) {
242
382
  logHelpLine(t, logger, 'cli.help_qa_run');
243
383
  logHelpLine(t, logger, 'cli.help_qa_scan');
244
384
  logHelpLine(t, logger, 'cli.help_qa_report');
385
+ logHelpLine(t, logger, 'cli.help_web_map');
386
+ logHelpLine(t, logger, 'cli.help_web_scrape');
245
387
  logHelpLine(t, logger, 'cli.help_scan_project');
246
388
  logHelpLine(t, logger, 'cli.help_config');
247
389
  logHelpLine(t, logger, 'cli.help_genome_doctor');
@@ -252,6 +394,16 @@ function printHelp(t, logger) {
252
394
  logHelpLine(t, logger, 'cli.help_squad_validate');
253
395
  logHelpLine(t, logger, 'cli.help_squad_export');
254
396
  logHelpLine(t, logger, 'cli.help_squad_pipeline');
397
+ logHelpLine(t, logger, 'cli.help_squad_agent_create');
398
+ logHelpLine(t, logger, 'cli.help_squad_investigate');
399
+ logHelpLine(t, logger, 'cli.help_squad_dashboard');
400
+ logHelpLine(t, logger, 'cli.help_squad_worker');
401
+ logHelpLine(t, logger, 'cli.help_squad_daemon');
402
+ logHelpLine(t, logger, 'cli.help_squad_mcp');
403
+ logHelpLine(t, logger, 'cli.help_squad_roi');
404
+ logHelpLine(t, logger, 'cli.help_squad_score');
405
+ logHelpLine(t, logger, 'cli.help_squad_learning');
406
+ logHelpLine(t, logger, 'cli.help_learning');
255
407
  logHelpLine(t, logger, 'cli.help_runtime_init');
256
408
  logHelpLine(t, logger, 'cli.help_runtime_ingest');
257
409
  logHelpLine(t, logger, 'cli.help_runtime_task_start');
@@ -262,6 +414,20 @@ function printHelp(t, logger) {
262
414
  logHelpLine(t, logger, 'cli.help_runtime_task_fail');
263
415
  logHelpLine(t, logger, 'cli.help_runtime_fail');
264
416
  logHelpLine(t, logger, 'cli.help_runtime_status');
417
+ logHelpLine(t, logger, 'cli.help_runtime_session_start');
418
+ logHelpLine(t, logger, 'cli.help_runtime_session_log');
419
+ logHelpLine(t, logger, 'cli.help_runtime_session_finish');
420
+ logHelpLine(t, logger, 'cli.help_runtime_session_status');
421
+ logHelpLine(t, logger, 'cli.help_runtime_emit');
422
+ logHelpLine(t, logger, 'cli.help_live_start');
423
+ logHelpLine(t, logger, 'cli.help_live_status');
424
+ logHelpLine(t, logger, 'cli.help_live_handoff');
425
+ logHelpLine(t, logger, 'cli.help_live_close');
426
+ logHelpLine(t, logger, 'cli.help_runtime_backup');
427
+ logHelpLine(t, logger, 'cli.help_runtime_restore');
428
+ logHelpLine(t, logger, 'cli.help_skill_install');
429
+ logHelpLine(t, logger, 'cli.help_skill_list');
430
+ logHelpLine(t, logger, 'cli.help_skill_remove');
265
431
  logHelpLine(t, logger, 'cli.help_cloud_import_squad');
266
432
  logHelpLine(t, logger, 'cli.help_cloud_import_genome');
267
433
  logHelpLine(t, logger, 'cli.help_cloud_publish_squad');
@@ -339,6 +505,8 @@ async function main() {
339
505
  result = await runAgentPrompt({ args, options, logger: commandLogger, t });
340
506
  } else if (command === 'context:validate' || command === 'context-validate') {
341
507
  result = await runContextValidate({ args, options, logger: commandLogger, t });
508
+ } else if (command === 'context:pack' || command === 'context-pack') {
509
+ result = await runContextPack({ args, options, logger: commandLogger, t });
342
510
  } else if (command === 'setup:context' || command === 'setup-context') {
343
511
  result = await runSetupContext({ args, options, logger: commandLogger, t });
344
512
  } else if (command === 'locale:apply' || command === 'locale-apply') {
@@ -359,7 +527,17 @@ async function main() {
359
527
  command === 'agent:next' ||
360
528
  command === 'agent-next'
361
529
  ) {
362
- result = await runWorkflowNext({ args, options, logger: commandLogger, t });
530
+ // --status flag routes to workflow:status
531
+ if (options.status) {
532
+ result = await runWorkflowStatus({ args, options, logger: commandLogger, t });
533
+ } else {
534
+ result = await runWorkflowNext({ args, options, logger: commandLogger, t });
535
+ }
536
+ } else if (
537
+ command === 'workflow:status' ||
538
+ command === 'workflow-status'
539
+ ) {
540
+ result = await runWorkflowStatus({ args, options, logger: commandLogger, t });
363
541
  } else if (
364
542
  command === 'parallel:init' ||
365
543
  command === 'parallel-init' ||
@@ -402,6 +580,10 @@ async function main() {
402
580
  result = await runQaScan({ args, options, logger: commandLogger, t });
403
581
  } else if (command === 'qa:report' || command === 'qa-report') {
404
582
  result = await runQaReport({ args, options, logger: commandLogger, t });
583
+ } else if (command === 'web:map' || command === 'web-map') {
584
+ result = await runWebMap({ args, options, logger: commandLogger, t });
585
+ } else if (command === 'web:scrape' || command === 'web-scrape') {
586
+ result = await runWebScrape({ args, options, logger: commandLogger, t });
405
587
  } else if (command === 'scan:project' || command === 'scan-project') {
406
588
  result = await runScanProject({ args, options, logger: commandLogger, t });
407
589
  } else if (command === 'config') {
@@ -422,6 +604,52 @@ async function main() {
422
604
  result = await runSquadExport({ args, options, logger: commandLogger, t });
423
605
  } else if (command === 'squad:pipeline' || command === 'squad-pipeline') {
424
606
  result = await runSquadPipeline({ args, options, logger: commandLogger, t });
607
+ } else if (command === 'squad:agent-create' || command === 'squad-agent-create') {
608
+ result = await runSquadAgentCreate({ args, options, logger: commandLogger, t });
609
+ } else if (command === 'squad:investigate' || command === 'squad-investigate') {
610
+ result = await runSquadInvestigate({ args, options, logger: commandLogger, t });
611
+ } else if (command === 'squad:dashboard' || command === 'squad-dashboard') {
612
+ result = await runSquadDashboard({ args, options, logger: commandLogger, t });
613
+ } else if (command === 'squad:worker' || command === 'squad-worker') {
614
+ const sub = options.sub || 'list';
615
+ result = await runSquadWorker({ args, options: { ...options, sub }, logger: commandLogger, t });
616
+ } else if (command === 'squad:daemon' || command === 'squad-daemon') {
617
+ const sub = options.sub || 'status';
618
+ result = await runSquadDaemon({ args, options: { ...options, sub }, logger: commandLogger, t });
619
+ } else if (command === 'squad:mcp:call') {
620
+ result = await runSquadMcp({ args, options: { ...options, sub: 'call' }, logger: commandLogger, t });
621
+ } else if (command === 'squad:mcp' || command === 'squad-mcp') {
622
+ const sub = options.sub || 'status';
623
+ result = await runSquadMcp({ args, options: { ...options, sub }, logger: commandLogger, t });
624
+ } else if (command === 'squad:roi' || command === 'squad-roi') {
625
+ const sub = options.sub || 'report';
626
+ result = await runSquadRoi({ args, options: { ...options, sub }, logger: commandLogger, t });
627
+ } else if (command === 'squad:score' || command === 'squad-score') {
628
+ result = await runSquadScore({ args, options, logger: commandLogger, translator: t });
629
+ } else if (command === 'squad:processes' || command === 'squad-processes') {
630
+ result = await runSquadProcesses({ args, options, logger: commandLogger, t });
631
+ } else if (command === 'squad:worktrees' || command === 'squad-worktrees') {
632
+ result = await runSquadWorktrees({ args, options, logger: commandLogger, t });
633
+ } else if (command === 'squad:merge' || command === 'squad-merge') {
634
+ result = await runSquadMerge({ args, options, logger: commandLogger, t });
635
+ } else if (command === 'squad:recovery' || command === 'squad-recovery') {
636
+ result = await runSquadRecovery({ args, options, logger: commandLogger, t });
637
+ } else if (command === 'squad:deploy' || command === 'squad-deploy') {
638
+ result = await runSquadDeploy({ args, options, logger: commandLogger, t });
639
+ } else if (command === 'squad:webhook' || command === 'squad-webhook') {
640
+ const sub = options.sub || 'start';
641
+ result = await runSquadWebhook({ args, options: { ...options, sub }, logger: commandLogger, t });
642
+ } else if (command === 'squad:plan' || command === 'squad-plan') {
643
+ result = await runSquadPlan({ args, options, logger: commandLogger, t });
644
+ } else if (command === 'squad:learning' || command === 'squad-learning') {
645
+ const sub = args[1] || 'list';
646
+ result = await runSquadLearning({ args, options: { ...options, sub }, logger: commandLogger, t });
647
+ } else if (command.startsWith('learning:') || command === 'learning') {
648
+ const sub = command === 'learning' ? (args[1] || 'list') : command.split(':')[1];
649
+ result = await runLearning({ args, options: { ...options, sub }, logger: commandLogger, t });
650
+ } else if (command.startsWith('plan:') || command === 'plan') {
651
+ const sub = command === 'plan' ? (args[1] || 'show') : command.split(':')[1];
652
+ result = await runImplementationPlan({ args, options: { ...options, sub }, logger: commandLogger, t });
425
653
  } else if (command === 'runtime:init' || command === 'runtime-init') {
426
654
  result = await runRuntimeInit({ args, options, logger: commandLogger, t });
427
655
  } else if (command === 'runtime:ingest' || command === 'runtime-ingest') {
@@ -444,6 +672,52 @@ async function main() {
444
672
  result = await runRuntimeStatus({ args, options, logger: commandLogger, t });
445
673
  } else if (command === 'runtime:log' || command === 'runtime-log') {
446
674
  result = await runRuntimeLog({ args, options, logger: commandLogger, t });
675
+ } else if (command === 'agent:done' || command === 'agent-done') {
676
+ result = await runAgentDone({ args, options, logger: commandLogger, t });
677
+ } else if (command === 'agent:recover' || command === 'agent-recover') {
678
+ result = await runAgentRecover({ args, options, logger: commandLogger, t });
679
+ } else if (command === 'runtime:session:start' || command === 'runtime-session-start') {
680
+ result = await runRuntimeSessionStart({ args, options, logger: commandLogger, t });
681
+ } else if (command === 'runtime:session:log' || command === 'runtime-session-log') {
682
+ result = await runRuntimeSessionLog({ args, options, logger: commandLogger, t });
683
+ } else if (command === 'runtime:session:finish' || command === 'runtime-session-finish') {
684
+ result = await runRuntimeSessionFinish({ args, options, logger: commandLogger, t });
685
+ } else if (command === 'runtime:session:status' || command === 'runtime-session-status') {
686
+ result = await runRuntimeSessionStatus({ args, options, logger: commandLogger, t });
687
+ } else if (command === 'runtime:emit' || command === 'runtime-emit') {
688
+ result = await runRuntimeEmit({ args, options, logger: commandLogger, t });
689
+ } else if (command === 'live:start' || command === 'live-start') {
690
+ result = await runLiveStart({ args, options, logger: commandLogger, t });
691
+ } else if (command === 'live:status' || command === 'live-status') {
692
+ result = await runLiveStatus({ args, options, logger: commandLogger, t });
693
+ } else if (command === 'live:handoff' || command === 'live-handoff') {
694
+ result = await runLiveHandoff({ args, options, logger: commandLogger, t });
695
+ } else if (command === 'live:close' || command === 'live-close') {
696
+ result = await runLiveClose({ args, options, logger: commandLogger, t });
697
+ } else if (command === 'live:list' || command === 'live-list') {
698
+ result = await runLiveList({ args, options, logger: commandLogger, t });
699
+ } else if (command === 'deliver') {
700
+ result = await runDeliver({ args, options, logger: commandLogger, t });
701
+ } else if (command === 'output-strategy:export') {
702
+ result = await runOutputStrategyExport({ args, options, logger: commandLogger, t });
703
+ } else if (command === 'output-strategy:import') {
704
+ result = await runOutputStrategyImport({ args, options, logger: commandLogger, t });
705
+ } else if (command === 'devlog:sync' || command === 'devlog-sync') {
706
+ result = await runDevlogSync({ args, options, logger: commandLogger, t });
707
+ } else if (command === 'runtime:prune' || command === 'runtime-prune') {
708
+ result = await runRuntimePrune({ args, options, logger: commandLogger, t });
709
+ } else if (command === 'runtime:backup' || command === 'runtime-backup') {
710
+ result = await runRuntimeBackup({ args, options, logger: commandLogger, t });
711
+ } else if (command === 'runtime:restore' || command === 'runtime-restore') {
712
+ result = await runRuntimeRestore({ args, options, logger: commandLogger, t });
713
+ } else if (command === 'backup:local' || command === 'backup-local') {
714
+ result = await runBackupLocal({ args, options, logger: commandLogger, t });
715
+ } else if (command === 'skill:install' || command === 'skill-install') {
716
+ result = await runSkillInstall({ args, options, logger: commandLogger, t });
717
+ } else if (command === 'skill:list' || command === 'skill-list') {
718
+ result = await runSkillList({ args, options, logger: commandLogger, t });
719
+ } else if (command === 'skill:remove' || command === 'skill-remove') {
720
+ result = await runSkillRemove({ args, options, logger: commandLogger, t });
447
721
  } else if (command === 'cloud:import:squad' || command === 'cloud-import-squad') {
448
722
  result = await runCloudImportSquad({ args, options, logger: commandLogger, t });
449
723
  } else if (command === 'cloud:import:genome' || command === 'cloud-import-genome') {
@@ -17,6 +17,18 @@ const {
17
17
  classifyDirectAgentRuntime
18
18
  } = require('../execution-gateway');
19
19
 
20
+ const WORKFLOW_AGENT_IDS = new Set([
21
+ 'setup',
22
+ 'product',
23
+ 'analyst',
24
+ 'architect',
25
+ 'ux-ui',
26
+ 'pm',
27
+ 'orchestrator',
28
+ 'dev',
29
+ 'qa'
30
+ ]);
31
+
20
32
  async function resolveLocaleForTarget(targetDir, options) {
21
33
  const fromOption = options.language || options.lang;
22
34
  if (fromOption) return resolveAgentLocale(fromOption);
@@ -44,7 +56,13 @@ async function runAgentsList({ args, options, logger, t }) {
44
56
  for (const agent of agents) {
45
57
  const deps = agent.dependsOn.length > 0 ? agent.dependsOn.join(', ') : t('agents.none');
46
58
  const instructionPath = await resolveExistingInstructionPath(targetDir, agent, locale);
47
- logger.log(t('agents.agent_line', { command: agent.command, id: agent.id }));
59
+ logger.log(
60
+ t('agents.agent_line', {
61
+ label: agent.displayName || agent.id,
62
+ command: agent.command,
63
+ id: agent.id
64
+ })
65
+ );
48
66
  logger.log(t('agents.path_line', { path: instructionPath }));
49
67
  logger.log(t('agents.active_path_line', { path: agent.path }));
50
68
  logger.log(t('agents.depends_line', { value: deps }));
@@ -76,10 +94,10 @@ async function runAgentPrompt({ args, options, logger, t }) {
76
94
  let instructionPath = null;
77
95
  let prompt = null;
78
96
 
79
- const context = await validateProjectContextFile(targetDir);
80
- if (context.valid) {
97
+ if (WORKFLOW_AGENT_IDS.has(requestedAgent)) {
81
98
  const loaded = await loadOrCreateState(targetDir, options);
82
- if (loaded.state.sequence.includes(requestedAgent)) {
99
+ const hasWorkflowStage = Boolean(loaded.state.current || loaded.state.next || loaded.state.sequence.length > 0);
100
+ if (hasWorkflowStage) {
83
101
  const workflowResult = await runWorkflowNext({
84
102
  args: [targetDir],
85
103
  options: {
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const path = require('node:path');
4
+ const { backupAiosonDocs } = require('../backup-local');
5
+
6
+ /**
7
+ * aioson backup:local [.]
8
+ *
9
+ * Manually backs up all .md files from .aioson/context/ and .aioson/plans/
10
+ * to ~/.aioson/backups/{project}/{timestamp}/
11
+ */
12
+ async function runBackupLocal({ args, options, logger }) {
13
+ const targetDir = path.resolve(process.cwd(), args[0] || '.');
14
+ const result = await backupAiosonDocs(targetDir);
15
+
16
+ if (result.count === 0) {
17
+ logger.log('backup:local — nothing to back up (no .md files found in .aioson/context/ or .aioson/plans/)');
18
+ return { ok: true, count: 0, backupPath: null };
19
+ }
20
+
21
+ logger.log(`backup:local — ${result.count} file(s) backed up → ${result.backupPath}`);
22
+ return { ok: true, count: result.count, backupPath: result.backupPath };
23
+ }
24
+
25
+ module.exports = { runBackupLocal };