@jaimevalasek/aioson 1.7.0 → 1.8.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 (383) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +153 -10
  3. package/docs/en/cli-reference.md +56 -1
  4. package/docs/en/i18n.md +18 -18
  5. package/docs/en/schemas/index.json +10 -0
  6. package/docs/en/schemas/parallel-assign.schema.json +9 -0
  7. package/docs/en/schemas/parallel-doctor.schema.json +36 -0
  8. package/docs/en/schemas/parallel-guard.schema.json +63 -0
  9. package/docs/en/schemas/parallel-merge.schema.json +84 -0
  10. package/docs/en/schemas/parallel-status.schema.json +91 -1
  11. package/docs/integrations/apps-publish-marketplace.md +94 -0
  12. package/docs/pt/README.md +9 -0
  13. package/docs/pt/agentes.md +324 -3
  14. package/docs/pt/clientes-ai.md +7 -3
  15. package/docs/pt/comandos-cli.md +160 -13
  16. package/docs/pt/compress-agents.md +304 -0
  17. package/docs/pt/design-docs-governance.md +59 -0
  18. package/docs/pt/feature-archive.md +191 -0
  19. package/docs/pt/genome-3.0-spec.md +115 -4
  20. package/docs/pt/genome-distribution.md +232 -0
  21. package/docs/pt/inicio-rapido.md +1 -0
  22. package/docs/pt/motor-hardening.md +492 -0
  23. package/docs/pt/runner-system.md +113 -0
  24. package/package.json +2 -1
  25. package/src/agent-manifests.js +66 -0
  26. package/src/agents.js +27 -7
  27. package/src/autonomy-policy.js +139 -0
  28. package/src/brain-query.js +161 -0
  29. package/src/cli.js +1377 -1099
  30. package/src/commands/agents.js +102 -7
  31. package/src/commands/artifact-validate.js +33 -4
  32. package/src/commands/auth.js +272 -0
  33. package/src/commands/brain-query.js +44 -0
  34. package/src/commands/briefing.js +344 -0
  35. package/src/commands/commit-prepare.js +547 -0
  36. package/src/commands/compress-agents.js +416 -0
  37. package/src/commands/context-health.js +4 -2
  38. package/src/commands/context-trim.js +17 -11
  39. package/src/commands/design-hybrid-options.js +3 -3
  40. package/src/commands/devlog-process.js +6 -4
  41. package/src/commands/dossier.js +423 -0
  42. package/src/commands/feature-archive.js +513 -0
  43. package/src/commands/feature-close.js +123 -18
  44. package/src/commands/gate-approve.js +198 -0
  45. package/src/commands/gate-check.js +24 -5
  46. package/src/commands/genome-doctor.js +166 -9
  47. package/src/commands/git-guard.js +170 -0
  48. package/src/commands/harness.js +121 -0
  49. package/src/commands/implementation-plan.js +47 -20
  50. package/src/commands/init.js +6 -2
  51. package/src/commands/install.js +6 -2
  52. package/src/commands/live.js +497 -56
  53. package/src/commands/locale-apply.js +9 -6
  54. package/src/commands/locale-diff.js +11 -112
  55. package/src/commands/mcp-doctor.js +2 -1
  56. package/src/commands/mcp-init.js +4 -10
  57. package/src/commands/memory.js +234 -0
  58. package/src/commands/parallel-assign.js +107 -27
  59. package/src/commands/parallel-doctor.js +416 -3
  60. package/src/commands/parallel-guard.js +241 -0
  61. package/src/commands/parallel-init.js +66 -4
  62. package/src/commands/parallel-merge.js +299 -0
  63. package/src/commands/parallel-status.js +147 -3
  64. package/src/commands/preflight.js +63 -4
  65. package/src/commands/qa-init.js +10 -5
  66. package/src/commands/revision.js +235 -0
  67. package/src/commands/scaffold-complete.js +188 -0
  68. package/src/commands/security-audit.js +275 -0
  69. package/src/commands/security-scan.js +376 -0
  70. package/src/commands/self-implement-loop.js +46 -2
  71. package/src/commands/setup-context.js +11 -10
  72. package/src/commands/squad-agent-create.js +51 -9
  73. package/src/commands/squad-investigate.js +53 -0
  74. package/src/commands/squad-plan.js +33 -1
  75. package/src/commands/squad-scaffold.js +4 -3
  76. package/src/commands/squad-score.js +71 -14
  77. package/src/commands/squad-status.js +22 -1
  78. package/src/commands/squad-validate.js +93 -2
  79. package/src/commands/store-genome.js +304 -0
  80. package/src/commands/store-skill.js +247 -0
  81. package/src/commands/store-squad.js +431 -0
  82. package/src/commands/store-system.js +392 -0
  83. package/src/commands/tool-capabilities.js +63 -0
  84. package/src/commands/update.js +3 -3
  85. package/src/commands/verify-gate.js +40 -0
  86. package/src/commands/workflow-execute.js +644 -155
  87. package/src/commands/workflow-harden.js +231 -0
  88. package/src/commands/workflow-heal.js +136 -0
  89. package/src/commands/workflow-next.js +460 -22
  90. package/src/commands/workflow-status.js +328 -138
  91. package/src/commands/workspace.js +144 -0
  92. package/src/constants.js +55 -75
  93. package/src/context-memory.js +133 -4
  94. package/src/context-writer.js +2 -1
  95. package/src/context.js +32 -2
  96. package/src/doctor.js +46 -6
  97. package/src/dossier/codemap-store.js +267 -0
  98. package/src/dossier/dossier-bootstrap.js +222 -0
  99. package/src/dossier/dossier-compact.js +159 -0
  100. package/src/dossier/lock.js +128 -0
  101. package/src/dossier/revision-store.js +313 -0
  102. package/src/dossier/schema.js +155 -0
  103. package/src/dossier/store.js +400 -0
  104. package/src/execution-gateway.js +3 -0
  105. package/src/friction-scanner.js +202 -0
  106. package/src/genome-schema.js +24 -1
  107. package/src/genomes.js +33 -0
  108. package/src/handoff-contract.js +363 -0
  109. package/src/handoff-validator.js +45 -0
  110. package/src/harness/circuit-breaker.js +135 -0
  111. package/src/i18n/messages/en.js +317 -22
  112. package/src/i18n/messages/es.js +259 -18
  113. package/src/i18n/messages/fr.js +260 -18
  114. package/src/i18n/messages/pt-BR.js +313 -22
  115. package/src/install-profile.js +0 -16
  116. package/src/installer.js +70 -6
  117. package/src/lib/git-commit-guard.js +691 -0
  118. package/src/lib/security/artifact-reader.js +167 -0
  119. package/src/lib/security/exit-codes.js +51 -0
  120. package/src/lib/security/findings-writer.js +176 -0
  121. package/src/lib/security/runtime-events.js +77 -0
  122. package/src/lib/security/secrets-regex.js +115 -0
  123. package/src/lib/store/security-scan.js +173 -0
  124. package/src/lib/terminal-checkbox.js +130 -0
  125. package/src/lib/tmux-launcher.js +163 -0
  126. package/src/lib/tool-capabilities.js +102 -0
  127. package/src/locales.js +12 -8
  128. package/src/parallel-workspace.js +756 -0
  129. package/src/parser.js +8 -1
  130. package/src/path-guard.js +47 -0
  131. package/src/preflight-engine.js +237 -26
  132. package/src/self-healing.js +142 -0
  133. package/src/session-handoff.js +111 -1
  134. package/src/squad/squad-scaffold.js +183 -19
  135. package/src/test-briefing.js +226 -0
  136. package/src/updater.js +1 -1
  137. package/src/utils.js +3 -0
  138. package/src/workflow-gates.js +185 -0
  139. package/template/.aioson/agents/analyst.md +76 -130
  140. package/template/.aioson/agents/architect.md +53 -86
  141. package/template/.aioson/agents/committer.md +161 -0
  142. package/template/.aioson/agents/copywriter.md +463 -0
  143. package/template/.aioson/agents/cypher.md +252 -0
  144. package/template/.aioson/agents/dev.md +112 -600
  145. package/template/.aioson/agents/deyvin.md +33 -235
  146. package/template/.aioson/agents/discover.md +235 -0
  147. package/template/.aioson/agents/discovery-design-doc.md +17 -252
  148. package/template/.aioson/agents/genome.md +76 -26
  149. package/template/.aioson/agents/manifests/analyst.manifest.json +26 -0
  150. package/template/.aioson/agents/manifests/architect.manifest.json +23 -0
  151. package/template/.aioson/agents/manifests/committer.manifest.json +23 -0
  152. package/template/.aioson/agents/manifests/dev.manifest.json +37 -0
  153. package/template/.aioson/agents/manifests/orchestrator.manifest.json +30 -0
  154. package/template/.aioson/agents/manifests/pentester.manifest.json +39 -0
  155. package/template/.aioson/agents/manifests/pm.manifest.json +26 -0
  156. package/template/.aioson/agents/manifests/product.manifest.json +23 -0
  157. package/template/.aioson/agents/manifests/qa.manifest.json +25 -0
  158. package/template/.aioson/agents/manifests/setup.manifest.json +20 -0
  159. package/template/.aioson/agents/manifests/ux-ui.manifest.json +24 -0
  160. package/template/.aioson/agents/neo.md +10 -8
  161. package/template/.aioson/agents/orache.md +2 -6
  162. package/template/.aioson/agents/orchestrator.md +81 -182
  163. package/template/.aioson/agents/pentester.md +235 -0
  164. package/template/.aioson/agents/pm.md +40 -104
  165. package/template/.aioson/agents/product.md +99 -344
  166. package/template/.aioson/agents/profiler-enricher.md +57 -6
  167. package/template/.aioson/agents/profiler-forge.md +17 -7
  168. package/template/.aioson/agents/profiler-researcher.md +29 -6
  169. package/template/.aioson/agents/qa.md +165 -410
  170. package/template/.aioson/agents/setup.md +52 -262
  171. package/template/.aioson/agents/sheldon.md +122 -754
  172. package/template/.aioson/agents/site-forge.md +111 -1583
  173. package/template/.aioson/agents/squad.md +139 -1820
  174. package/template/.aioson/agents/tester.md +10 -0
  175. package/template/.aioson/agents/ux-ui.md +103 -645
  176. package/template/.aioson/agents/validator.md +69 -0
  177. package/template/.aioson/brains/scripts/query.js +5 -1
  178. package/template/.aioson/config/autonomy-protocol.json +43 -0
  179. package/template/.aioson/config.md +43 -15
  180. package/template/.aioson/constitution.md +36 -33
  181. package/template/.aioson/context/design-doc.md +136 -0
  182. package/template/.aioson/context/project-map.md +57 -0
  183. package/template/.aioson/design-docs/code-reuse.md +48 -0
  184. package/template/.aioson/design-docs/componentization.md +47 -0
  185. package/template/.aioson/design-docs/file-size.md +52 -0
  186. package/template/.aioson/design-docs/folder-structure.md +51 -0
  187. package/template/.aioson/design-docs/naming.md +54 -0
  188. package/template/.aioson/docs/LAYERS.md +12 -2
  189. package/template/.aioson/docs/dev/execution-discipline.md +106 -0
  190. package/template/.aioson/docs/dev/stack-conventions.md +83 -0
  191. package/template/.aioson/docs/deyvin/continuity-recovery.md +57 -0
  192. package/template/.aioson/docs/deyvin/debugging-escalation.md +30 -0
  193. package/template/.aioson/docs/deyvin/pair-execution.md +44 -0
  194. package/template/.aioson/docs/deyvin/runtime-handoffs.md +36 -0
  195. package/template/.aioson/docs/product/conversation-playbook.md +116 -0
  196. package/template/.aioson/docs/product/prd-contract.md +107 -0
  197. package/template/.aioson/docs/product/quality-lens.md +57 -0
  198. package/template/.aioson/docs/product/research-loop.md +65 -0
  199. package/template/.aioson/docs/sheldon/enrichment-paths.md +134 -0
  200. package/template/.aioson/docs/sheldon/quality-lens.md +57 -0
  201. package/template/.aioson/docs/sheldon/research-loop.md +56 -0
  202. package/template/.aioson/docs/sheldon/web-intelligence.md +75 -0
  203. package/template/.aioson/docs/site-forge-build.md +195 -0
  204. package/template/.aioson/docs/site-forge-extraction.md +135 -0
  205. package/template/.aioson/docs/site-forge-qa.md +155 -0
  206. package/template/.aioson/docs/site-forge-recon.md +434 -0
  207. package/template/.aioson/docs/site-forge-transform.md +249 -0
  208. package/template/.aioson/docs/squad/content-output.md +91 -0
  209. package/template/.aioson/docs/squad/creation-flow.md +135 -0
  210. package/template/.aioson/docs/squad/domain-classification.md +117 -0
  211. package/template/.aioson/docs/squad/genome-bindings.md +47 -0
  212. package/template/.aioson/docs/squad/package-contract.md +234 -0
  213. package/template/.aioson/docs/squad/quality-lens.md +56 -0
  214. package/template/.aioson/docs/squad/research-loop.md +59 -0
  215. package/template/.aioson/docs/squad/session-operations.md +117 -0
  216. package/template/.aioson/docs/squad/workflow-quality.md +165 -0
  217. package/template/.aioson/docs/ux-ui/accessibility-audit.md +55 -0
  218. package/template/.aioson/docs/ux-ui/audit-mode.md +86 -0
  219. package/template/.aioson/docs/ux-ui/component-map.md +35 -0
  220. package/template/.aioson/docs/ux-ui/design-execution.md +111 -0
  221. package/template/.aioson/docs/ux-ui/design-gate.md +27 -0
  222. package/template/.aioson/docs/ux-ui/research-mode.md +39 -0
  223. package/template/.aioson/docs/ux-ui/site-delivery.md +156 -0
  224. package/template/.aioson/docs/ux-ui/token-contract.md +57 -0
  225. package/template/.aioson/genomes/copywriting.md +204 -0
  226. package/template/.aioson/genomes/copywriting.meta.json +48 -0
  227. package/template/.aioson/git-guard.json +11 -0
  228. package/template/.aioson/mcp/servers.md +0 -1
  229. package/template/.aioson/rules/agent-language-policy.md +93 -0
  230. package/template/.aioson/rules/aioson-context-boundary.md +63 -0
  231. package/template/.aioson/rules/canonical-path-contract.md +47 -0
  232. package/template/.aioson/rules/data-format-convention.md +24 -86
  233. package/template/.aioson/rules/disk-first-artifacts.md +44 -0
  234. package/template/.aioson/rules/output-brevity.md +44 -0
  235. package/template/.aioson/rules/prd-section-ownership.md +49 -0
  236. package/template/.aioson/rules/security-baseline.md +139 -0
  237. package/template/.aioson/rules/spec-level-ownership.md +61 -0
  238. package/template/.aioson/rules/squad-driver-pattern.md +81 -0
  239. package/template/.aioson/schemas/squad-blueprint.schema.json +24 -0
  240. package/template/.aioson/schemas/squad-manifest.schema.json +44 -0
  241. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +2 -0
  242. package/template/.aioson/skills/marketing/references/anti-patterns.md +254 -0
  243. package/template/.aioson/skills/marketing/references/fascinations.md +192 -0
  244. package/template/.aioson/skills/marketing/references/five-acts.md +248 -0
  245. package/template/.aioson/skills/marketing/references/market-intelligence.md +198 -0
  246. package/template/.aioson/skills/marketing/references/offer-structure.md +203 -0
  247. package/template/.aioson/skills/marketing/references/one-belief.md +149 -0
  248. package/template/.aioson/skills/marketing/references/patterns.md +218 -0
  249. package/template/.aioson/skills/marketing/references/pms-research.md +193 -0
  250. package/template/.aioson/skills/marketing/vsl-craft.md +385 -0
  251. package/template/.aioson/skills/process/aioson-spec-driven/references/pm.md +30 -0
  252. package/template/.aioson/skills/process/secure-tdd/SKILL.md +97 -0
  253. package/template/.aioson/skills/process/secure-tdd/references/nextjs.md +81 -0
  254. package/template/.aioson/skills/process/secure-tdd/references/node-express.md +91 -0
  255. package/template/.aioson/skills/process/secure-tdd/references/planned-stacks.md +33 -0
  256. package/template/.aioson/skills/static/harness-validate/SKILL.md +46 -0
  257. package/template/.aioson/skills/static/landing-page-deploy.md +192 -0
  258. package/template/.aioson/skills/static/landing-page-forge.md +730 -0
  259. package/template/.aioson/skills/static/ui-ux-modern.md +1 -0
  260. package/template/.aioson/skills/static/web-research-cache.md +3 -0
  261. package/template/.aioson/tasks/squad-create.md +56 -7
  262. package/template/.aioson/tasks/squad-design.md +80 -2
  263. package/template/.aioson/tasks/squad-investigate.md +14 -1
  264. package/template/.aioson/templates/squads/digital-marketing-agency/template.json +96 -0
  265. package/template/.claude/commands/aioson/agent/committer.md +5 -0
  266. package/template/.claude/commands/aioson/agent/copywriter.md +5 -0
  267. package/template/.claude/commands/aioson/agent/cypher.md +5 -0
  268. package/template/.claude/commands/aioson/agent/pair.md +5 -0
  269. package/template/.claude/commands/aioson/agent/validator.md +5 -0
  270. package/template/.gemini/commands/aios-analyst.toml +6 -3
  271. package/template/.gemini/commands/aios-architect.toml +7 -6
  272. package/template/.gemini/commands/aios-committer.toml +7 -0
  273. package/template/.gemini/commands/aios-copywriter.toml +7 -0
  274. package/template/.gemini/commands/aios-cypher.toml +7 -0
  275. package/template/.gemini/commands/aios-dev.toml +8 -7
  276. package/template/.gemini/commands/aios-deyvin.toml +6 -5
  277. package/template/.gemini/commands/aios-discovery-design-doc.toml +6 -3
  278. package/template/.gemini/commands/aios-genome.toml +7 -0
  279. package/template/.gemini/commands/aios-neo.toml +5 -3
  280. package/template/.gemini/commands/aios-orache.toml +7 -0
  281. package/template/.gemini/commands/aios-orchestrator.toml +8 -7
  282. package/template/.gemini/commands/aios-pair.toml +6 -5
  283. package/template/.gemini/commands/aios-pm.toml +8 -7
  284. package/template/.gemini/commands/aios-product.toml +5 -3
  285. package/template/.gemini/commands/aios-qa.toml +6 -5
  286. package/template/.gemini/commands/aios-setup.toml +5 -2
  287. package/template/.gemini/commands/aios-sheldon.toml +7 -0
  288. package/template/.gemini/commands/aios-site-forge.toml +7 -0
  289. package/template/.gemini/commands/aios-squad.toml +7 -0
  290. package/template/.gemini/commands/aios-tester.toml +6 -5
  291. package/template/.gemini/commands/aios-ux-ui.toml +8 -7
  292. package/template/.gemini/commands/aios-validator.toml +7 -0
  293. package/template/AGENTS.md +12 -1
  294. package/template/CLAUDE.md +6 -1
  295. package/template/.aioson/locales/en/agents/analyst.md +0 -244
  296. package/template/.aioson/locales/en/agents/architect.md +0 -245
  297. package/template/.aioson/locales/en/agents/dev.md +0 -397
  298. package/template/.aioson/locales/en/agents/deyvin.md +0 -137
  299. package/template/.aioson/locales/en/agents/discovery-design-doc.md +0 -27
  300. package/template/.aioson/locales/en/agents/genome.md +0 -212
  301. package/template/.aioson/locales/en/agents/neo.md +0 -8
  302. package/template/.aioson/locales/en/agents/orache.md +0 -6
  303. package/template/.aioson/locales/en/agents/orchestrator.md +0 -189
  304. package/template/.aioson/locales/en/agents/pair.md +0 -5
  305. package/template/.aioson/locales/en/agents/pm.md +0 -84
  306. package/template/.aioson/locales/en/agents/product.md +0 -378
  307. package/template/.aioson/locales/en/agents/profiler-enricher.md +0 -5
  308. package/template/.aioson/locales/en/agents/profiler-forge.md +0 -5
  309. package/template/.aioson/locales/en/agents/profiler-researcher.md +0 -5
  310. package/template/.aioson/locales/en/agents/qa.md +0 -270
  311. package/template/.aioson/locales/en/agents/setup.md +0 -421
  312. package/template/.aioson/locales/en/agents/sheldon.md +0 -455
  313. package/template/.aioson/locales/en/agents/squad.md +0 -449
  314. package/template/.aioson/locales/en/agents/tester.md +0 -6
  315. package/template/.aioson/locales/en/agents/ux-ui.md +0 -668
  316. package/template/.aioson/locales/es/agents/analyst.md +0 -225
  317. package/template/.aioson/locales/es/agents/architect.md +0 -245
  318. package/template/.aioson/locales/es/agents/dev.md +0 -370
  319. package/template/.aioson/locales/es/agents/deyvin.md +0 -99
  320. package/template/.aioson/locales/es/agents/discovery-design-doc.md +0 -21
  321. package/template/.aioson/locales/es/agents/genome.md +0 -104
  322. package/template/.aioson/locales/es/agents/neo.md +0 -50
  323. package/template/.aioson/locales/es/agents/orache.md +0 -105
  324. package/template/.aioson/locales/es/agents/orchestrator.md +0 -194
  325. package/template/.aioson/locales/es/agents/pair.md +0 -7
  326. package/template/.aioson/locales/es/agents/pm.md +0 -90
  327. package/template/.aioson/locales/es/agents/product.md +0 -372
  328. package/template/.aioson/locales/es/agents/profiler-enricher.md +0 -7
  329. package/template/.aioson/locales/es/agents/profiler-forge.md +0 -7
  330. package/template/.aioson/locales/es/agents/profiler-researcher.md +0 -7
  331. package/template/.aioson/locales/es/agents/qa.md +0 -198
  332. package/template/.aioson/locales/es/agents/setup.md +0 -405
  333. package/template/.aioson/locales/es/agents/sheldon.md +0 -309
  334. package/template/.aioson/locales/es/agents/squad.md +0 -532
  335. package/template/.aioson/locales/es/agents/tester.md +0 -9
  336. package/template/.aioson/locales/es/agents/ux-ui.md +0 -212
  337. package/template/.aioson/locales/fr/agents/analyst.md +0 -225
  338. package/template/.aioson/locales/fr/agents/architect.md +0 -245
  339. package/template/.aioson/locales/fr/agents/dev.md +0 -370
  340. package/template/.aioson/locales/fr/agents/deyvin.md +0 -99
  341. package/template/.aioson/locales/fr/agents/discovery-design-doc.md +0 -21
  342. package/template/.aioson/locales/fr/agents/genome.md +0 -104
  343. package/template/.aioson/locales/fr/agents/neo.md +0 -50
  344. package/template/.aioson/locales/fr/agents/orache.md +0 -106
  345. package/template/.aioson/locales/fr/agents/orchestrator.md +0 -194
  346. package/template/.aioson/locales/fr/agents/pair.md +0 -7
  347. package/template/.aioson/locales/fr/agents/pm.md +0 -90
  348. package/template/.aioson/locales/fr/agents/product.md +0 -372
  349. package/template/.aioson/locales/fr/agents/profiler-enricher.md +0 -7
  350. package/template/.aioson/locales/fr/agents/profiler-forge.md +0 -7
  351. package/template/.aioson/locales/fr/agents/profiler-researcher.md +0 -7
  352. package/template/.aioson/locales/fr/agents/qa.md +0 -198
  353. package/template/.aioson/locales/fr/agents/setup.md +0 -405
  354. package/template/.aioson/locales/fr/agents/sheldon.md +0 -309
  355. package/template/.aioson/locales/fr/agents/squad.md +0 -532
  356. package/template/.aioson/locales/fr/agents/tester.md +0 -9
  357. package/template/.aioson/locales/fr/agents/ux-ui.md +0 -212
  358. package/template/.aioson/locales/pt-BR/agents/analyst.md +0 -319
  359. package/template/.aioson/locales/pt-BR/agents/architect.md +0 -284
  360. package/template/.aioson/locales/pt-BR/agents/dev.md +0 -483
  361. package/template/.aioson/locales/pt-BR/agents/deyvin.md +0 -184
  362. package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +0 -198
  363. package/template/.aioson/locales/pt-BR/agents/genome.md +0 -297
  364. package/template/.aioson/locales/pt-BR/agents/neo.md +0 -208
  365. package/template/.aioson/locales/pt-BR/agents/orache.md +0 -137
  366. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +0 -324
  367. package/template/.aioson/locales/pt-BR/agents/pair.md +0 -5
  368. package/template/.aioson/locales/pt-BR/agents/pm.md +0 -182
  369. package/template/.aioson/locales/pt-BR/agents/product.md +0 -466
  370. package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +0 -5
  371. package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +0 -5
  372. package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +0 -5
  373. package/template/.aioson/locales/pt-BR/agents/qa.md +0 -300
  374. package/template/.aioson/locales/pt-BR/agents/setup.md +0 -533
  375. package/template/.aioson/locales/pt-BR/agents/sheldon.md +0 -323
  376. package/template/.aioson/locales/pt-BR/agents/squad.md +0 -1330
  377. package/template/.aioson/locales/pt-BR/agents/tester.md +0 -449
  378. package/template/.aioson/locales/pt-BR/agents/ux-ui.md +0 -669
  379. package/template/.aioson/skills/design-system/components/SKILL.md:Zone.Identifier +0 -0
  380. package/template/.aioson/skills/design-system/dashboards/SKILL.md:Zone.Identifier +0 -0
  381. package/template/.aioson/skills/design-system/foundations/SKILL.md:Zone.Identifier +0 -0
  382. package/template/.aioson/skills/design-system/motion/SKILL.md:Zone.Identifier +0 -0
  383. package/template/.aioson/skills/design-system/patterns/SKILL.md:Zone.Identifier +0 -0
@@ -4,19 +4,15 @@ const fs = require('node:fs/promises');
4
4
  const path = require('node:path');
5
5
  const { exists } = require('../utils');
6
6
  const { validateProjectContextFile } = require('../context');
7
- const { readHandoff } = require('../session-handoff');
7
+ const { readHandoff, readHandoffProtocol } = require('../session-handoff');
8
8
  const { runtimeStoreExists, openRuntimeDb, listPipelines } = require('../runtime-store');
9
+ const { readAutonomyProtocol, resolveEffectiveMode } = require('../autonomy-policy');
10
+ const { readAgentManifest, buildAgentCapabilitySummary } = require('../agent-manifests');
11
+ const { validateHandoffContract } = require('../handoff-contract');
12
+ const { loadOrCreateState } = require('./workflow-next');
9
13
 
10
14
  const STATE_RELATIVE_PATH = '.aioson/context/workflow.state.json';
11
15
 
12
- const ARTIFACT_MAP = {
13
- setup: { file: '.aioson/context/project.context.md', label: 'project.context.md' },
14
- product: { file: '.aioson/context/prd.md', label: 'prd.md' },
15
- analyst: { file: '.aioson/context/discovery.md', label: 'discovery.md' },
16
- architect: { file: '.aioson/context/architecture.md', label: 'architecture.md' },
17
- 'ux-ui': { file: '.aioson/context/ui-spec.md', label: 'ui-spec.md' }
18
- };
19
-
20
16
  async function scanSquads(targetDir) {
21
17
  const squadsDir = path.join(targetDir, '.aioson/squads');
22
18
  if (!(await exists(squadsDir))) return [];
@@ -31,15 +27,19 @@ async function scanSquads(targetDir) {
31
27
  let agentCount = 0;
32
28
  try {
33
29
  const agents = await fs.readdir(agentsDir);
34
- agentCount = agents.filter(f => f.endsWith('.md')).length;
35
- } catch { /* no agents dir */ }
30
+ agentCount = agents.filter((file) => file.endsWith('.md')).length;
31
+ } catch {
32
+ agentCount = 0;
33
+ }
36
34
 
37
35
  let status = 'active';
38
36
  try {
39
37
  const raw = await fs.readFile(manifestPath, 'utf8');
40
38
  const manifest = JSON.parse(raw);
41
39
  status = manifest.status || 'active';
42
- } catch { /* no manifest */ }
40
+ } catch {
41
+ status = 'active';
42
+ }
43
43
 
44
44
  squads.push({ slug: entry.name, agentCount, status });
45
45
  }
@@ -54,7 +54,7 @@ async function scanGenomes(targetDir) {
54
54
  if (!(await exists(genomesDir))) return 0;
55
55
  try {
56
56
  const entries = await fs.readdir(genomesDir);
57
- return entries.filter(f => f.endsWith('.md') || f.endsWith('.json')).length;
57
+ return entries.filter((file) => file.endsWith('.md') || file.endsWith('.json')).length;
58
58
  } catch {
59
59
  return 0;
60
60
  }
@@ -67,156 +67,349 @@ async function getPipelineCount(targetDir) {
67
67
  if (!handle) return { total: 0, active: 0 };
68
68
  try {
69
69
  const pipelines = listPipelines(handle.db);
70
- const active = pipelines.filter(p => p.status === 'active').length;
70
+ const active = pipelines.filter((pipeline) => pipeline.status === 'active').length;
71
71
  return { total: pipelines.length, active };
72
72
  } finally {
73
73
  handle.db.close();
74
74
  }
75
75
  }
76
76
 
77
+ function getFocusStage(state) {
78
+ if (!state || typeof state !== 'object') return null;
79
+ return state.current || state.next || null;
80
+ }
81
+
82
+ function getQueuedNextStage(state) {
83
+ if (!state || typeof state !== 'object') return null;
84
+ if (state.detour && state.detour.active) return state.detour.returnTo || null;
85
+ if (state.current && state.next && state.current !== state.next) return state.next;
86
+ return null;
87
+ }
88
+
89
+ async function buildKeyArtifacts(targetDir, state) {
90
+ const featureSlug = state && state.featureSlug ? String(state.featureSlug) : null;
91
+ const artifacts = [
92
+ {
93
+ id: 'project_context',
94
+ label: 'project.context.md',
95
+ file: '.aioson/context/project.context.md'
96
+ },
97
+ {
98
+ id: 'prd',
99
+ label: featureSlug ? `prd-${featureSlug}.md` : 'prd.md',
100
+ file: featureSlug ? `.aioson/context/prd-${featureSlug}.md` : '.aioson/context/prd.md'
101
+ },
102
+ {
103
+ id: 'analysis',
104
+ label: featureSlug ? `requirements-${featureSlug}.md` : 'discovery.md',
105
+ file: featureSlug ? `.aioson/context/requirements-${featureSlug}.md` : '.aioson/context/discovery.md'
106
+ },
107
+ {
108
+ id: 'architecture',
109
+ label: 'architecture.md',
110
+ file: '.aioson/context/architecture.md'
111
+ },
112
+ {
113
+ id: 'ui_spec',
114
+ label: 'ui-spec.md',
115
+ file: '.aioson/context/ui-spec.md'
116
+ },
117
+ {
118
+ id: 'workflow_state',
119
+ label: 'workflow.state.json',
120
+ file: STATE_RELATIVE_PATH
121
+ },
122
+ {
123
+ id: 'last_handoff',
124
+ label: 'last-handoff.json',
125
+ file: '.aioson/context/last-handoff.json'
126
+ },
127
+ {
128
+ id: 'handoff_protocol',
129
+ label: 'handoff-protocol.json',
130
+ file: '.aioson/context/handoff-protocol.json'
131
+ }
132
+ ];
133
+
134
+ if (featureSlug) {
135
+ artifacts.splice(3, 0, {
136
+ id: 'spec',
137
+ label: `spec-${featureSlug}.md`,
138
+ file: `.aioson/context/spec-${featureSlug}.md`
139
+ });
140
+ }
141
+
142
+ const withPresence = [];
143
+ for (const artifact of artifacts) {
144
+ withPresence.push({
145
+ ...artifact,
146
+ exists: await exists(path.join(targetDir, artifact.file))
147
+ });
148
+ }
149
+ return withPresence;
150
+ }
151
+
152
+ function extractPendingGates(contractCheck) {
153
+ if (!contractCheck || !Array.isArray(contractCheck.missing)) return [];
154
+ const gates = [];
155
+ for (const item of contractCheck.missing) {
156
+ const match = /^gate\s+([A-Z])/i.exec(String(item));
157
+ if (match) gates.push(match[1].toUpperCase());
158
+ }
159
+ return Array.from(new Set(gates));
160
+ }
161
+
162
+ function buildSuggestion({
163
+ contextValid,
164
+ state,
165
+ tool,
166
+ focusStage,
167
+ contractCheck
168
+ }) {
169
+ const safeTool = String(tool || 'codex').trim().toLowerCase();
170
+ if (!contextValid) {
171
+ return {
172
+ action: 'initialize_project',
173
+ agent: 'setup',
174
+ command: `aioson workflow:next . --tool=${safeTool}`,
175
+ reason: 'Project context is missing or invalid.'
176
+ };
177
+ }
178
+
179
+ if (!state || !Array.isArray(state.sequence)) {
180
+ return {
181
+ action: 'initialize_workflow',
182
+ agent: null,
183
+ command: `aioson workflow:next . --tool=${safeTool}`,
184
+ reason: 'Workflow state is not initialized yet.'
185
+ };
186
+ }
187
+
188
+ if (!focusStage) {
189
+ return {
190
+ action: 'workflow_complete',
191
+ agent: null,
192
+ command: null,
193
+ reason: 'The workflow has no pending stage.'
194
+ };
195
+ }
196
+
197
+ if (!state.current) {
198
+ return {
199
+ action: 'activate_stage',
200
+ agent: focusStage,
201
+ command: `aioson workflow:next . --tool=${safeTool}`,
202
+ reason: `Next official stage is @${focusStage}.`
203
+ };
204
+ }
205
+
206
+ if (contractCheck && Array.isArray(contractCheck.missing) && contractCheck.missing.length > 0) {
207
+ return {
208
+ action: 'continue_stage',
209
+ agent: focusStage,
210
+ command: `aioson workflow:next . --agent=${focusStage} --tool=${safeTool}`,
211
+ reason: `@${focusStage} still has pending deliverables before handoff.`,
212
+ details: [...contractCheck.missing]
213
+ };
214
+ }
215
+
216
+ const autoHealFlag = focusStage === 'dev' || focusStage === 'qa' ? ' --auto-heal' : '';
217
+ return {
218
+ action: 'complete_stage',
219
+ agent: focusStage,
220
+ command: `aioson workflow:next . --complete=${focusStage}${autoHealFlag} --tool=${safeTool}`,
221
+ reason: `@${focusStage} appears ready for the next handoff.`,
222
+ details: contractCheck && Array.isArray(contractCheck.warnings) ? [...contractCheck.warnings] : []
223
+ };
224
+ }
225
+
226
+ function timeSince(isoString) {
227
+ const now = Date.now();
228
+ const then = new Date(isoString).getTime();
229
+ const diffMs = now - then;
230
+ const minutes = Math.floor(diffMs / 60000);
231
+ if (minutes < 1) return 'just now';
232
+ if (minutes < 60) return `${minutes}m`;
233
+ const hours = Math.floor(minutes / 60);
234
+ if (hours < 24) return `${hours}h`;
235
+ const days = Math.floor(hours / 24);
236
+ return `${days}d`;
237
+ }
238
+
77
239
  async function runWorkflowStatus({ args, options, logger, t }) {
78
240
  const targetDir = path.resolve(process.cwd(), args[0] || '.');
241
+ const tool = options.tool || 'codex';
79
242
 
80
- // Read workflow state
81
- const statePath = path.join(targetDir, STATE_RELATIVE_PATH);
82
243
  let state = null;
244
+ let stateCreated = false;
83
245
  try {
84
- const raw = await fs.readFile(statePath, 'utf8');
85
- state = JSON.parse(raw);
246
+ const loaded = await loadOrCreateState(targetDir, options);
247
+ state = loaded.state;
248
+ stateCreated = loaded.created;
86
249
  } catch {
87
- // no state file
250
+ const statePath = path.join(targetDir, STATE_RELATIVE_PATH);
251
+ try {
252
+ const raw = await fs.readFile(statePath, 'utf8');
253
+ state = JSON.parse(raw);
254
+ } catch {
255
+ state = null;
256
+ }
88
257
  }
89
258
 
90
- // Read project context
91
259
  const context = await validateProjectContextFile(targetDir);
92
260
  const projectName = (context.data && context.data.project_name) || path.basename(targetDir);
93
261
  const classification = (state && state.classification)
94
262
  || (context.data && context.data.classification)
95
263
  || 'unknown';
264
+ const mode = (state && state.mode) || 'project';
265
+ const featureSlug = (state && state.featureSlug) || null;
266
+ const focusStage = getFocusStage(state);
267
+ const queuedNextStage = getQueuedNextStage(state);
96
268
 
97
- // Read last handoff
98
269
  const handoff = await readHandoff(targetDir);
99
-
100
- // Check artifacts
101
- const artifacts = {};
102
- for (const [stage, info] of Object.entries(ARTIFACT_MAP)) {
103
- const featureSlug = state && state.featureSlug;
104
- let filePath = path.join(targetDir, info.file);
105
-
106
- // Feature-scoped artifacts
107
- if (featureSlug && stage === 'product') {
108
- const featurePath = path.join(targetDir, `.aioson/context/prd-${featureSlug}.md`);
109
- if (await exists(featurePath)) {
110
- artifacts[stage] = { exists: true, label: `prd-${featureSlug}.md` };
111
- continue;
112
- }
113
- }
114
- if (featureSlug && stage === 'analyst') {
115
- const reqPath = path.join(targetDir, `.aioson/context/requirements-${featureSlug}.md`);
116
- if (await exists(reqPath)) {
117
- artifacts[stage] = { exists: true, label: `requirements-${featureSlug}.md` };
118
- continue;
119
- }
120
- }
121
-
122
- artifacts[stage] = { exists: await exists(filePath), label: info.label };
123
- }
124
-
125
- // Scan squads, genomes, pipelines
270
+ const handoffProtocol = await readHandoffProtocol(targetDir);
271
+ const artifacts = await buildKeyArtifacts(targetDir, state);
126
272
  const squads = await scanSquads(targetDir);
127
273
  const genomeCount = await scanGenomes(targetDir);
128
274
  const pipelines = await getPipelineCount(targetDir);
129
275
 
130
- // Build status output
131
- const mode = (state && state.mode) || 'project';
132
- const featureSlug = (state && state.featureSlug) || null;
276
+ let effectiveMode = null;
277
+ let capabilitySummary = '';
278
+ if (focusStage) {
279
+ const protocol = await readAutonomyProtocol(targetDir);
280
+ const manifest = await readAgentManifest(targetDir, focusStage);
281
+ effectiveMode = resolveEffectiveMode({
282
+ protocol,
283
+ tool,
284
+ agentId: focusStage,
285
+ manifest
286
+ });
287
+ capabilitySummary = buildAgentCapabilitySummary(manifest, tool);
288
+ }
133
289
 
134
- logger.log('');
135
- logger.log(`Project: ${projectName} (${classification})`);
136
- logger.log(`Mode: ${mode}${featureSlug ? ` — feature: ${featureSlug}` : ''}`);
137
- logger.log('');
138
-
139
- // Workflow sequence
140
- if (state && state.sequence) {
141
- const completed = new Set(state.completed || []);
142
- const skipped = new Set(state.skipped || []);
143
- const current = state.current || state.next;
144
-
145
- logger.log('Workflow:');
146
- for (const stage of state.sequence) {
147
- let marker;
148
- if (completed.has(stage)) marker = 'done';
149
- else if (skipped.has(stage)) marker = 'skip';
150
- else if (stage === current) marker = 'now';
151
- else marker = ' ';
152
-
153
- const icon = marker === 'done' ? '[v]'
154
- : marker === 'skip' ? '[-]'
155
- : marker === 'now' ? '[>]'
156
- : '[ ]';
157
- logger.log(` ${icon} @${stage}`);
290
+ const contractCheck = focusStage
291
+ ? await validateHandoffContract(targetDir, state, focusStage)
292
+ : { ok: true, missing: [], warnings: [] };
293
+ const pendingGates = extractPendingGates(contractCheck);
294
+ const suggestion = buildSuggestion({
295
+ contextValid: context.valid,
296
+ state,
297
+ tool,
298
+ focusStage,
299
+ contractCheck
300
+ });
301
+
302
+ if (options.suggest) {
303
+ logger.log(`Suggested next action: ${suggestion.action}${suggestion.agent ? ` (@${suggestion.agent})` : ''}`);
304
+ logger.log(`Reason: ${suggestion.reason}`);
305
+ if (suggestion.command) {
306
+ logger.log('Command:');
307
+ logger.log(` ${suggestion.command}`);
158
308
  }
159
-
160
- if (state.detour && state.detour.active) {
161
- logger.log(` Detour: @${state.detour.agent} (returns to @${state.detour.returnTo})`);
309
+ if (Array.isArray(suggestion.details) && suggestion.details.length > 0) {
310
+ logger.log('Details:');
311
+ for (const detail of suggestion.details) logger.log(` - ${detail}`);
162
312
  }
313
+ } else {
314
+ logger.log('');
315
+ logger.log(`Project: ${projectName} (${classification})`);
316
+ logger.log(`Mode: ${mode}${featureSlug ? ` — feature: ${featureSlug}` : ''}`);
317
+ logger.log(`Tool: ${String(tool).toLowerCase()}`);
318
+ if (stateCreated) logger.log('State: initialized from current artifacts');
163
319
  logger.log('');
164
- }
165
-
166
- // Artifacts
167
- logger.log('Artifacts:');
168
- for (const [stage, info] of Object.entries(artifacts)) {
169
- const icon = info.exists ? '[v]' : '[ ]';
170
- logger.log(` ${icon} ${info.label}`);
171
- }
172
- logger.log('');
173
320
 
174
- // Squads
175
- if (squads.length > 0) {
176
- logger.log(`Squads (${squads.length}):`);
177
- for (const s of squads) {
178
- logger.log(` ${s.slug} — ${s.agentCount} agents [${s.status}]`);
321
+ if (state && state.sequence) {
322
+ const completed = new Set(state.completed || []);
323
+ const skipped = new Set(state.skipped || []);
324
+ const current = getFocusStage(state);
325
+
326
+ logger.log('Workflow:');
327
+ for (const stage of state.sequence) {
328
+ let marker = 'pending';
329
+ if (completed.has(stage)) marker = 'done';
330
+ else if (skipped.has(stage)) marker = 'skip';
331
+ else if (stage === current) marker = 'now';
332
+
333
+ const icon = marker === 'done'
334
+ ? '[v]'
335
+ : marker === 'skip'
336
+ ? '[-]'
337
+ : marker === 'now'
338
+ ? '[>]'
339
+ : '[ ]';
340
+ logger.log(` ${icon} @${stage}`);
341
+ }
342
+ if (state.detour && state.detour.active) {
343
+ logger.log(` Detour: @${state.detour.agent} (returns to @${state.detour.returnTo})`);
344
+ }
345
+ logger.log('');
179
346
  }
180
- logger.log('');
181
- }
182
347
 
183
- // Genomes
184
- if (genomeCount > 0) {
185
- logger.log(`Genomes: ${genomeCount}`);
348
+ logger.log('Current Status:');
349
+ logger.log(` Active stage: ${focusStage ? `@${focusStage}` : 'none'}`);
350
+ logger.log(` Queued next: ${queuedNextStage ? `@${queuedNextStage}` : 'none'}`);
351
+ logger.log(` Autonomy mode: ${effectiveMode || 'n/a'}`);
352
+ logger.log(` Pending gate: ${pendingGates.length > 0 ? pendingGates.join(', ') : 'none'}`);
353
+ logger.log(` Handoff contract: ${contractCheck.ok ? 'ready' : 'blocked'}`);
354
+ if (capabilitySummary) logger.log(` Capabilities: ${capabilitySummary}`);
186
355
  logger.log('');
187
- }
188
356
 
189
- // Pipelines
190
- if (pipelines.total > 0) {
191
- logger.log(`Pipelines: ${pipelines.total} (${pipelines.active} active)`);
357
+ logger.log('Artifacts:');
358
+ for (const artifact of artifacts) {
359
+ const icon = artifact.exists ? '[v]' : '[ ]';
360
+ logger.log(` ${icon} ${artifact.label}`);
361
+ }
192
362
  logger.log('');
193
- }
194
363
 
195
- // Last handoff
196
- if (handoff) {
197
- logger.log('Last handoff:');
198
- if (handoff.last_agent) logger.log(` Agent: ${handoff.last_agent}`);
199
- if (handoff.what_was_done) logger.log(` Done: ${handoff.what_was_done}`);
200
- if (handoff.what_comes_next) logger.log(` Next: ${handoff.what_comes_next}`);
201
- if (handoff.session_ended_at) {
202
- const elapsed = timeSince(handoff.session_ended_at);
203
- logger.log(` When: ${elapsed} ago`);
364
+ if (pipelines.total > 0) {
365
+ logger.log(`Pipelines: ${pipelines.total} (${pipelines.active} active)`);
366
+ logger.log('');
367
+ }
368
+
369
+ if (squads.length > 0) {
370
+ logger.log(`Squads (${squads.length}):`);
371
+ for (const squad of squads) {
372
+ logger.log(` ${squad.slug} ${squad.agentCount} agents [${squad.status}]`);
373
+ }
374
+ logger.log('');
375
+ }
376
+
377
+ if (genomeCount > 0) {
378
+ logger.log(`Genomes: ${genomeCount}`);
379
+ logger.log('');
380
+ }
381
+
382
+ if (handoff) {
383
+ logger.log('Last handoff:');
384
+ if (handoff.last_agent) logger.log(` Agent: ${handoff.last_agent}`);
385
+ if (handoff.what_was_done) logger.log(` Done: ${handoff.what_was_done}`);
386
+ if (handoff.what_comes_next) logger.log(` Next: ${handoff.what_comes_next}`);
387
+ if (handoff.session_ended_at) logger.log(` When: ${timeSince(handoff.session_ended_at)} ago`);
388
+ logger.log('');
204
389
  }
205
- logger.log('');
206
- }
207
390
 
208
- // Suggestion
209
- if (state && state.sequence) {
210
- const current = state.current || state.next;
211
- if (current) {
212
- logger.log(`Suggestion: activate @${current}`);
213
- logger.log(` aioson workflow:next . --tool=claude`);
214
- } else {
215
- logger.log('Workflow is complete.');
391
+ if (handoffProtocol) {
392
+ logger.log('Handoff protocol:');
393
+ if (handoffProtocol.from && handoffProtocol.from.agent_id) {
394
+ logger.log(` From: @${handoffProtocol.from.agent_id}`);
395
+ }
396
+ if (handoffProtocol.to && handoffProtocol.to.agent_id) {
397
+ logger.log(` To: @${handoffProtocol.to.agent_id}`);
398
+ }
399
+ if (handoffProtocol.autonomy_mode) {
400
+ logger.log(` Autonomy: ${handoffProtocol.autonomy_mode}`);
401
+ }
402
+ if (handoffProtocol.validation) {
403
+ logger.log(
404
+ ` Validation: contract=${handoffProtocol.validation.handoff_contract_ok !== false ? 'ok' : 'failed'}, technical=${handoffProtocol.validation.technical_gate_ok !== false ? 'ok' : 'failed'}`
405
+ );
406
+ }
407
+ logger.log('');
216
408
  }
217
- } else if (!context.valid) {
218
- logger.log('Suggestion: run @setup to initialize the project');
219
- logger.log(' aioson workflow:next . --tool=claude');
409
+
410
+ logger.log('Suggestion:');
411
+ logger.log(` ${suggestion.reason}`);
412
+ if (suggestion.command) logger.log(` ${suggestion.command}`);
220
413
  }
221
414
 
222
415
  return {
@@ -225,26 +418,23 @@ async function runWorkflowStatus({ args, options, logger, t }) {
225
418
  classification,
226
419
  mode,
227
420
  featureSlug,
421
+ tool: String(tool).toLowerCase(),
228
422
  state,
423
+ stateCreated,
424
+ activeStage: focusStage,
425
+ queuedNextStage,
426
+ effectiveMode,
427
+ capabilitySummary,
428
+ pendingGates,
429
+ contractCheck,
229
430
  artifacts,
230
431
  squads,
231
432
  genomeCount,
232
433
  pipelines,
233
- handoff
434
+ handoff,
435
+ handoffProtocol,
436
+ suggestion
234
437
  };
235
438
  }
236
439
 
237
- function timeSince(isoString) {
238
- const now = Date.now();
239
- const then = new Date(isoString).getTime();
240
- const diffMs = now - then;
241
- const minutes = Math.floor(diffMs / 60000);
242
- if (minutes < 1) return 'just now';
243
- if (minutes < 60) return `${minutes}m`;
244
- const hours = Math.floor(minutes / 60);
245
- if (hours < 24) return `${hours}h`;
246
- const days = Math.floor(hours / 24);
247
- return `${days}d`;
248
- }
249
-
250
440
  module.exports = { runWorkflowStatus };