@jaimevalasek/aioson 1.7.2 → 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 (362) hide show
  1. package/CHANGELOG.md +35 -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 +42 -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/cypher.md +252 -0
  143. package/template/.aioson/agents/dev.md +112 -628
  144. package/template/.aioson/agents/deyvin.md +33 -236
  145. package/template/.aioson/agents/discover.md +235 -0
  146. package/template/.aioson/agents/discovery-design-doc.md +17 -252
  147. package/template/.aioson/agents/genome.md +76 -26
  148. package/template/.aioson/agents/manifests/analyst.manifest.json +26 -0
  149. package/template/.aioson/agents/manifests/architect.manifest.json +23 -0
  150. package/template/.aioson/agents/manifests/committer.manifest.json +23 -0
  151. package/template/.aioson/agents/manifests/dev.manifest.json +37 -0
  152. package/template/.aioson/agents/manifests/orchestrator.manifest.json +30 -0
  153. package/template/.aioson/agents/manifests/pentester.manifest.json +39 -0
  154. package/template/.aioson/agents/manifests/pm.manifest.json +26 -0
  155. package/template/.aioson/agents/manifests/product.manifest.json +23 -0
  156. package/template/.aioson/agents/manifests/qa.manifest.json +25 -0
  157. package/template/.aioson/agents/manifests/setup.manifest.json +20 -0
  158. package/template/.aioson/agents/manifests/ux-ui.manifest.json +24 -0
  159. package/template/.aioson/agents/neo.md +5 -7
  160. package/template/.aioson/agents/orache.md +2 -6
  161. package/template/.aioson/agents/orchestrator.md +81 -182
  162. package/template/.aioson/agents/pentester.md +235 -0
  163. package/template/.aioson/agents/pm.md +40 -104
  164. package/template/.aioson/agents/product.md +99 -344
  165. package/template/.aioson/agents/profiler-enricher.md +57 -6
  166. package/template/.aioson/agents/profiler-forge.md +17 -7
  167. package/template/.aioson/agents/profiler-researcher.md +29 -6
  168. package/template/.aioson/agents/qa.md +168 -514
  169. package/template/.aioson/agents/setup.md +52 -278
  170. package/template/.aioson/agents/sheldon.md +122 -754
  171. package/template/.aioson/agents/site-forge.md +111 -1583
  172. package/template/.aioson/agents/squad.md +139 -2010
  173. package/template/.aioson/agents/tester.md +10 -0
  174. package/template/.aioson/agents/ux-ui.md +104 -812
  175. package/template/.aioson/agents/validator.md +69 -0
  176. package/template/.aioson/brains/scripts/query.js +5 -1
  177. package/template/.aioson/config/autonomy-protocol.json +43 -0
  178. package/template/.aioson/config.md +43 -15
  179. package/template/.aioson/constitution.md +36 -33
  180. package/template/.aioson/context/design-doc.md +136 -0
  181. package/template/.aioson/context/project-map.md +57 -0
  182. package/template/.aioson/design-docs/code-reuse.md +48 -0
  183. package/template/.aioson/design-docs/componentization.md +47 -0
  184. package/template/.aioson/design-docs/file-size.md +52 -0
  185. package/template/.aioson/design-docs/folder-structure.md +51 -0
  186. package/template/.aioson/design-docs/naming.md +54 -0
  187. package/template/.aioson/docs/LAYERS.md +12 -2
  188. package/template/.aioson/docs/dev/execution-discipline.md +106 -0
  189. package/template/.aioson/docs/dev/stack-conventions.md +83 -0
  190. package/template/.aioson/docs/deyvin/continuity-recovery.md +57 -0
  191. package/template/.aioson/docs/deyvin/debugging-escalation.md +30 -0
  192. package/template/.aioson/docs/deyvin/pair-execution.md +44 -0
  193. package/template/.aioson/docs/deyvin/runtime-handoffs.md +36 -0
  194. package/template/.aioson/docs/product/conversation-playbook.md +116 -0
  195. package/template/.aioson/docs/product/prd-contract.md +107 -0
  196. package/template/.aioson/docs/product/quality-lens.md +57 -0
  197. package/template/.aioson/docs/product/research-loop.md +65 -0
  198. package/template/.aioson/docs/sheldon/enrichment-paths.md +134 -0
  199. package/template/.aioson/docs/sheldon/quality-lens.md +57 -0
  200. package/template/.aioson/docs/sheldon/research-loop.md +56 -0
  201. package/template/.aioson/docs/sheldon/web-intelligence.md +75 -0
  202. package/template/.aioson/docs/site-forge-build.md +195 -0
  203. package/template/.aioson/docs/site-forge-extraction.md +135 -0
  204. package/template/.aioson/docs/site-forge-qa.md +155 -0
  205. package/template/.aioson/docs/site-forge-recon.md +434 -0
  206. package/template/.aioson/docs/site-forge-transform.md +249 -0
  207. package/template/.aioson/docs/squad/content-output.md +91 -0
  208. package/template/.aioson/docs/squad/creation-flow.md +135 -0
  209. package/template/.aioson/docs/squad/domain-classification.md +117 -0
  210. package/template/.aioson/docs/squad/genome-bindings.md +47 -0
  211. package/template/.aioson/docs/squad/package-contract.md +234 -0
  212. package/template/.aioson/docs/squad/quality-lens.md +56 -0
  213. package/template/.aioson/docs/squad/research-loop.md +59 -0
  214. package/template/.aioson/docs/squad/session-operations.md +117 -0
  215. package/template/.aioson/docs/squad/workflow-quality.md +165 -0
  216. package/template/.aioson/docs/ux-ui/accessibility-audit.md +55 -0
  217. package/template/.aioson/docs/ux-ui/audit-mode.md +86 -0
  218. package/template/.aioson/docs/ux-ui/component-map.md +35 -0
  219. package/template/.aioson/docs/ux-ui/design-execution.md +111 -0
  220. package/template/.aioson/docs/ux-ui/design-gate.md +27 -0
  221. package/template/.aioson/docs/ux-ui/research-mode.md +39 -0
  222. package/template/.aioson/docs/ux-ui/site-delivery.md +156 -0
  223. package/template/.aioson/docs/ux-ui/token-contract.md +57 -0
  224. package/template/.aioson/genomes/copywriting.meta.json +48 -0
  225. package/template/.aioson/git-guard.json +11 -0
  226. package/template/.aioson/mcp/servers.md +0 -1
  227. package/template/.aioson/rules/agent-language-policy.md +93 -0
  228. package/template/.aioson/rules/aioson-context-boundary.md +63 -0
  229. package/template/.aioson/rules/canonical-path-contract.md +47 -0
  230. package/template/.aioson/rules/data-format-convention.md +24 -86
  231. package/template/.aioson/rules/disk-first-artifacts.md +44 -0
  232. package/template/.aioson/rules/output-brevity.md +44 -0
  233. package/template/.aioson/rules/prd-section-ownership.md +49 -0
  234. package/template/.aioson/rules/security-baseline.md +139 -0
  235. package/template/.aioson/rules/spec-level-ownership.md +61 -0
  236. package/template/.aioson/rules/squad-driver-pattern.md +81 -0
  237. package/template/.aioson/schemas/squad-blueprint.schema.json +24 -0
  238. package/template/.aioson/schemas/squad-manifest.schema.json +44 -0
  239. package/template/.aioson/skills/process/aioson-spec-driven/references/pm.md +30 -0
  240. package/template/.aioson/skills/process/secure-tdd/SKILL.md +97 -0
  241. package/template/.aioson/skills/process/secure-tdd/references/nextjs.md +81 -0
  242. package/template/.aioson/skills/process/secure-tdd/references/node-express.md +91 -0
  243. package/template/.aioson/skills/process/secure-tdd/references/planned-stacks.md +33 -0
  244. package/template/.aioson/skills/static/harness-validate/SKILL.md +46 -0
  245. package/template/.aioson/skills/static/web-research-cache.md +3 -0
  246. package/template/.aioson/tasks/squad-create.md +35 -8
  247. package/template/.aioson/tasks/squad-design.md +50 -2
  248. package/template/.aioson/tasks/squad-investigate.md +14 -1
  249. package/template/.claude/commands/aioson/agent/committer.md +5 -0
  250. package/template/.claude/commands/aioson/agent/copywriter.md +5 -0
  251. package/template/.claude/commands/aioson/agent/cypher.md +5 -0
  252. package/template/.claude/commands/aioson/agent/pair.md +5 -0
  253. package/template/.claude/commands/aioson/agent/validator.md +5 -0
  254. package/template/.gemini/commands/aios-analyst.toml +6 -3
  255. package/template/.gemini/commands/aios-architect.toml +7 -6
  256. package/template/.gemini/commands/aios-committer.toml +7 -0
  257. package/template/.gemini/commands/aios-copywriter.toml +7 -0
  258. package/template/.gemini/commands/aios-cypher.toml +7 -0
  259. package/template/.gemini/commands/aios-dev.toml +8 -7
  260. package/template/.gemini/commands/aios-deyvin.toml +6 -5
  261. package/template/.gemini/commands/aios-discovery-design-doc.toml +6 -3
  262. package/template/.gemini/commands/aios-genome.toml +7 -0
  263. package/template/.gemini/commands/aios-neo.toml +5 -3
  264. package/template/.gemini/commands/aios-orache.toml +7 -0
  265. package/template/.gemini/commands/aios-orchestrator.toml +8 -7
  266. package/template/.gemini/commands/aios-pair.toml +6 -5
  267. package/template/.gemini/commands/aios-pm.toml +8 -7
  268. package/template/.gemini/commands/aios-product.toml +5 -3
  269. package/template/.gemini/commands/aios-qa.toml +6 -5
  270. package/template/.gemini/commands/aios-setup.toml +5 -2
  271. package/template/.gemini/commands/aios-sheldon.toml +7 -0
  272. package/template/.gemini/commands/aios-site-forge.toml +7 -0
  273. package/template/.gemini/commands/aios-squad.toml +7 -0
  274. package/template/.gemini/commands/aios-tester.toml +6 -5
  275. package/template/.gemini/commands/aios-ux-ui.toml +8 -7
  276. package/template/.gemini/commands/aios-validator.toml +7 -0
  277. package/template/AGENTS.md +12 -1
  278. package/template/CLAUDE.md +5 -1
  279. package/template/.aioson/locales/en/agents/analyst.md +0 -244
  280. package/template/.aioson/locales/en/agents/architect.md +0 -245
  281. package/template/.aioson/locales/en/agents/dev.md +0 -397
  282. package/template/.aioson/locales/en/agents/deyvin.md +0 -137
  283. package/template/.aioson/locales/en/agents/discovery-design-doc.md +0 -27
  284. package/template/.aioson/locales/en/agents/genome.md +0 -212
  285. package/template/.aioson/locales/en/agents/neo.md +0 -8
  286. package/template/.aioson/locales/en/agents/orache.md +0 -6
  287. package/template/.aioson/locales/en/agents/orchestrator.md +0 -189
  288. package/template/.aioson/locales/en/agents/pair.md +0 -5
  289. package/template/.aioson/locales/en/agents/pm.md +0 -84
  290. package/template/.aioson/locales/en/agents/product.md +0 -378
  291. package/template/.aioson/locales/en/agents/profiler-enricher.md +0 -5
  292. package/template/.aioson/locales/en/agents/profiler-forge.md +0 -5
  293. package/template/.aioson/locales/en/agents/profiler-researcher.md +0 -5
  294. package/template/.aioson/locales/en/agents/qa.md +0 -270
  295. package/template/.aioson/locales/en/agents/setup.md +0 -421
  296. package/template/.aioson/locales/en/agents/sheldon.md +0 -455
  297. package/template/.aioson/locales/en/agents/squad.md +0 -449
  298. package/template/.aioson/locales/en/agents/tester.md +0 -6
  299. package/template/.aioson/locales/en/agents/ux-ui.md +0 -668
  300. package/template/.aioson/locales/es/agents/analyst.md +0 -225
  301. package/template/.aioson/locales/es/agents/architect.md +0 -245
  302. package/template/.aioson/locales/es/agents/dev.md +0 -370
  303. package/template/.aioson/locales/es/agents/deyvin.md +0 -99
  304. package/template/.aioson/locales/es/agents/discovery-design-doc.md +0 -21
  305. package/template/.aioson/locales/es/agents/genome.md +0 -104
  306. package/template/.aioson/locales/es/agents/neo.md +0 -50
  307. package/template/.aioson/locales/es/agents/orache.md +0 -105
  308. package/template/.aioson/locales/es/agents/orchestrator.md +0 -194
  309. package/template/.aioson/locales/es/agents/pair.md +0 -7
  310. package/template/.aioson/locales/es/agents/pm.md +0 -90
  311. package/template/.aioson/locales/es/agents/product.md +0 -372
  312. package/template/.aioson/locales/es/agents/profiler-enricher.md +0 -7
  313. package/template/.aioson/locales/es/agents/profiler-forge.md +0 -7
  314. package/template/.aioson/locales/es/agents/profiler-researcher.md +0 -7
  315. package/template/.aioson/locales/es/agents/qa.md +0 -198
  316. package/template/.aioson/locales/es/agents/setup.md +0 -405
  317. package/template/.aioson/locales/es/agents/sheldon.md +0 -309
  318. package/template/.aioson/locales/es/agents/squad.md +0 -532
  319. package/template/.aioson/locales/es/agents/tester.md +0 -9
  320. package/template/.aioson/locales/es/agents/ux-ui.md +0 -212
  321. package/template/.aioson/locales/fr/agents/analyst.md +0 -225
  322. package/template/.aioson/locales/fr/agents/architect.md +0 -245
  323. package/template/.aioson/locales/fr/agents/dev.md +0 -370
  324. package/template/.aioson/locales/fr/agents/deyvin.md +0 -99
  325. package/template/.aioson/locales/fr/agents/discovery-design-doc.md +0 -21
  326. package/template/.aioson/locales/fr/agents/genome.md +0 -104
  327. package/template/.aioson/locales/fr/agents/neo.md +0 -50
  328. package/template/.aioson/locales/fr/agents/orache.md +0 -106
  329. package/template/.aioson/locales/fr/agents/orchestrator.md +0 -194
  330. package/template/.aioson/locales/fr/agents/pair.md +0 -7
  331. package/template/.aioson/locales/fr/agents/pm.md +0 -90
  332. package/template/.aioson/locales/fr/agents/product.md +0 -372
  333. package/template/.aioson/locales/fr/agents/profiler-enricher.md +0 -7
  334. package/template/.aioson/locales/fr/agents/profiler-forge.md +0 -7
  335. package/template/.aioson/locales/fr/agents/profiler-researcher.md +0 -7
  336. package/template/.aioson/locales/fr/agents/qa.md +0 -198
  337. package/template/.aioson/locales/fr/agents/setup.md +0 -405
  338. package/template/.aioson/locales/fr/agents/sheldon.md +0 -309
  339. package/template/.aioson/locales/fr/agents/squad.md +0 -532
  340. package/template/.aioson/locales/fr/agents/tester.md +0 -9
  341. package/template/.aioson/locales/fr/agents/ux-ui.md +0 -212
  342. package/template/.aioson/locales/pt-BR/agents/analyst.md +0 -319
  343. package/template/.aioson/locales/pt-BR/agents/architect.md +0 -284
  344. package/template/.aioson/locales/pt-BR/agents/dev.md +0 -483
  345. package/template/.aioson/locales/pt-BR/agents/deyvin.md +0 -184
  346. package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +0 -198
  347. package/template/.aioson/locales/pt-BR/agents/genome.md +0 -297
  348. package/template/.aioson/locales/pt-BR/agents/neo.md +0 -208
  349. package/template/.aioson/locales/pt-BR/agents/orache.md +0 -137
  350. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +0 -324
  351. package/template/.aioson/locales/pt-BR/agents/pair.md +0 -5
  352. package/template/.aioson/locales/pt-BR/agents/pm.md +0 -182
  353. package/template/.aioson/locales/pt-BR/agents/product.md +0 -466
  354. package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +0 -5
  355. package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +0 -5
  356. package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +0 -5
  357. package/template/.aioson/locales/pt-BR/agents/qa.md +0 -300
  358. package/template/.aioson/locales/pt-BR/agents/setup.md +0 -533
  359. package/template/.aioson/locales/pt-BR/agents/sheldon.md +0 -323
  360. package/template/.aioson/locales/pt-BR/agents/squad.md +0 -1330
  361. package/template/.aioson/locales/pt-BR/agents/tester.md +0 -449
  362. package/template/.aioson/locales/pt-BR/agents/ux-ui.md +0 -669
@@ -0,0 +1,492 @@
1
+ # Hardening do Motor AIOSON
2
+
3
+ > Documentação das melhorias de robustez introduzidas no motor de orquestração do AIOSON a partir da v1.7.3+
4
+
5
+ ## Índice
6
+
7
+ 1. [O que mudou?](#o-que-mudou)
8
+ 2. [Gates técnicos obrigatórios](#gates-técnicos-obrigatórios)
9
+ 3. [Guardrails de Git no @committer](#guardrails-de-git-no-committer)
10
+ 4. [Test briefing automático para @qa](#test-briefing-automático-para-qa)
11
+ 5. [Contratos de handoff verificados por máquina](#contratos-de-handoff-verificados-por-máquina)
12
+ 6. [Resolução canônica de caminhos](#resolução-canônica-de-caminhos)
13
+ 7. [Auto-cura (self-healing)](#auto-cura-self-healing)
14
+ 8. [Hardening autônomo de fricção](#hardening-autônomo-de-fricção)
15
+ 9. [Comandos novos e atualizados](#comandos-novos-e-atualizados)
16
+ 10. [Exemplos práticos](#exemplos-práticos)
17
+
18
+ ---
19
+
20
+ ## O que mudou?
21
+
22
+ O motor do AIOSON agora endurece o pipeline de agentes com **7 camadas de proteção** que reduzem os problemas mais comuns encontrados em sessões intensivas:
23
+
24
+ 1. **Código quebrado passando adiante** → gate de compilação/teste após `@dev`
25
+ 2. **Acidentes de git** → verificação obrigatória antes de `@committer`
26
+ 3. **Testes falhando por textos de UI errados** → briefing de teste injetado no `@qa`
27
+ 4. **Handoffs incompletos** → validação de contrato por máquina entre estágios
28
+ 5. **Arquivos no lugar errado** → mapa de caminhos canônicos (`project-map.md`)
29
+ 6. **Loops manuais de debug** → auto-cura com retry e prompt corretivo
30
+ 7. **Mesmos erros se repetindo** → scanner de fricção e fixes preventivos
31
+
32
+ ---
33
+
34
+ ## Gates técnicos obrigatórios
35
+
36
+ ### Quando são ativados
37
+
38
+ Sempre que você executa `aioson workflow:next . --complete` para finalizar o estágio `@dev` ou antes de ativar `@qa`.
39
+
40
+ ### O que o motor verifica
41
+
42
+ O motor detecta a stack do projeto e roda os verificadores mínimos:
43
+
44
+ | Stack | Comando executado |
45
+ |---|---|
46
+ | TypeScript | `npx tsc --noEmit` |
47
+ | Rust | `cargo check` (e `cargo test` quando disponível) |
48
+ | Node.js | `npm test` (ou `npm run test:unit` / `npm run test:ci`) |
49
+ | Python | `pytest` |
50
+
51
+ ### Comportamento
52
+
53
+ - Se **todos os checks passarem**: o workflow avança normalmente.
54
+ - Se **algum check falhar**: o workflow é **bloqueado** com a mensagem `[Technical Gate BLOCKED]` e o stderr completo do erro.
55
+
56
+ ### Exemplo
57
+
58
+ ```bash
59
+ # Dev terminou de implementar
60
+ $ aioson workflow:next . --complete=dev
61
+
62
+ [Technical Gate BLOCKED]
63
+ Stage: @dev
64
+ Reasons:
65
+ - TypeScript compilation failed
66
+
67
+ === Command output ===
68
+
69
+ [TypeScript compilation] npx tsc --noEmit
70
+ src/components/Button.tsx:12:15 - error TS2322: Type 'string' is not assignable to type 'number'.
71
+
72
+ Fix the errors above before completing this stage.
73
+ Use --force to override (not recommended).
74
+ ```
75
+
76
+ ### Forçar passagem (não recomendado)
77
+
78
+ Se você tiver certeza de que o erro é falso-positivo:
79
+
80
+ ```bash
81
+ aioson workflow:next . --complete=dev --force
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Guardrails de Git no @committer
87
+
88
+ ### Quando são ativados
89
+
90
+ Antes de ativar `@committer`, o motor inspeciona o stage do git.
91
+
92
+ ### Regras
93
+
94
+ 1. **Se não houver arquivos no stage**: bloqueio imediato.
95
+ 2. **Se houver arquivos proibidos** (`node_modules/`, `dist/`, `.next/`, `*.db`, secrets): bloqueio imediato.
96
+
97
+ ### O que fazer quando bloqueia
98
+
99
+ ```bash
100
+ # Caso 1: nada no stage
101
+ $ aioson commit:prepare .
102
+ # (seleciona os arquivos na UI de checkbox)
103
+
104
+ # Caso 2: arquivos proibidos no stage
105
+ $ aioson git:guard .
106
+ # (mostra o que está errado)
107
+ $ git restore --staged -- node_modules/
108
+ $ aioson commit:prepare .
109
+ ```
110
+
111
+ ### Exemplo de fluxo correto
112
+
113
+ ```bash
114
+ # Sempre rode commit:prepare antes de ativar @committer
115
+ aioson commit:prepare .
116
+ # -> guard passa, diff é coletado, commit-prep.json gerado
117
+ # -> agora sim ative @committer
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Test briefing automático para @qa
123
+
124
+ ### O que é
125
+
126
+ Toda vez que `@qa` ou `@tester` são ativados via `workflow:next`, o motor injeta automaticamente no prompt um **test briefing** construído a partir do projeto atual.
127
+
128
+ ### Conteúdo do briefing
129
+
130
+ - **Mock helpers compartilhados** encontrados (`tests/helpers/mocks.ts`, `__mocks__/`, etc.)
131
+ - **Arquivos de teste recentes** para usar como template de padrões
132
+ - **Padrões comuns de mock** (ex: `vi.mock(...)`, `vi.fn(...)`)
133
+ - **Strings de UI extraídas** dos componentes recentemente modificados
134
+ - **Convenções de teste** do projeto
135
+
136
+ ### Por que isso importa
137
+
138
+ Reduz os erros clássicos:
139
+ - `"Confirmar"` vs `"Vincular"` em assertions
140
+ - Mock ordering bugs
141
+ - `getByText` quando deveria ser `getByRole`
142
+
143
+ ### Exemplo de como aparece para o agente
144
+
145
+ ```markdown
146
+ ## Auto-generated Test Context (motor do AIOSON)
147
+
148
+ ### Shared mock helpers found
149
+ - tests/helpers/mocks.ts
150
+
151
+ ### UI text strings from recent components
152
+ **src/components/LoginButton.tsx:**
153
+ - "Entrar"
154
+ - "Esqueci minha senha"
155
+
156
+ ### Testing conventions
157
+ - Verify exact UI text strings against component source before using them in assertions.
158
+ - Use `getByRole` over `getByText` when possible.
159
+ ```
160
+
161
+ ---
162
+
163
+ ## Contratos de handoff verificados por máquina
164
+
165
+ ### O que é
166
+
167
+ Cada agente tem um **contrato de saída** que define:
168
+ 1. Quais artefatos ele deve produzir
169
+ 2. Quais gates devem estar aprovados
170
+ 3. Quais arquivos de contexto devem ser atualizados
171
+
172
+ Antes de qualquer transição de estágio, o motor valida esse contrato.
173
+
174
+ ### Exemplo: @analyst → @architect
175
+
176
+ Para `@analyst` finalizar, o motor verifica:
177
+ - `requirements-{slug}.md` existe?
178
+ - `spec-{slug}.md` existe?
179
+ - Gate A (requirements) está `approved`?
180
+
181
+ Se faltar algo, o erro é:
182
+
183
+ ```
184
+ [Handoff Contract BLOCKED]
185
+ Stage: @analyst
186
+ Missing deliverables:
187
+ - gate A not approved (gate_requirements_not_approved)
188
+
189
+ Complete these items before finishing the stage.
190
+ ```
191
+
192
+ ### Tabela de contratos por agente
193
+
194
+ | Agente | Artefatos obrigatórios | Gates |
195
+ |---|---|---|
196
+ | `@setup` | `project.context.md` | — |
197
+ | `@product` | `prd.md` ou `prd-{slug}.md` | — |
198
+ | `@analyst` | `requirements-{slug}.md`, `spec-{slug}.md` | A |
199
+ | `@architect` | `architecture.md` | B |
200
+ | `@ux-ui` | `ui-spec.md` | B |
201
+ | `@pm` | `implementation-plan-{slug}.md` | — |
202
+ | `@dev` | — (código) | C |
203
+ | `@qa` | — (testes/relatório) | D |
204
+
205
+ ---
206
+
207
+ ## Resolução canônica de caminhos
208
+
209
+ ### O problema
210
+
211
+ Agentes frequentemente criavam arquivos no lugar errado:
212
+ - `docs/` sendo interpretado como `.aioson/docs/`
213
+ - Bootstrap files indo para a raiz em vez de `.aioson/context/bootstrap/`
214
+
215
+ ### A solução
216
+
217
+ O arquivo `.aioson/context/project-map.md` define os **caminhos canônicos** do projeto.
218
+
219
+ Ele é carregado automaticamente nos prompts de agentes de implementação (`@dev`, `@architect`, `@ux-ui`, `@qa`, `@tester`, `@committer`).
220
+
221
+ ### Exemplo de project-map.md
222
+
223
+ ```markdown
224
+ ---
225
+ agents: [dev, architect, ux-ui, qa, tester, committer]
226
+ ---
227
+
228
+ # Canonical Project Map
229
+
230
+ | Intent | Canonical path | Notes |
231
+ |---|---|---|
232
+ | `docs/` (root) | `docs/` | NOT `.aioson/docs/` |
233
+ | `.aioson/context/` | `.aioson/context/` | Framework artifacts only |
234
+ ```
235
+
236
+ ### Regras que o motor impõe
237
+
238
+ - `docs/` = raiz `docs/`, nunca `.aioson/docs/`
239
+ - Confirmar path ambíguo com o usuário antes de criar
240
+ - Nunca sobrescrever `.gitignore` ou logs existentes sem pedido explícito
241
+
242
+ ---
243
+
244
+ ## Auto-cura (self-healing)
245
+
246
+ ### Conceito
247
+
248
+ Quando um gate técnico ou contrato falha, em vez de apenas bloquear e esperar você reescrever o prompt, o motor pode **reativar o próprio agente com o erro como contexto corretivo**.
249
+
250
+ ### Modo manual: `workflow:heal`
251
+
252
+ ```bash
253
+ # Reativa @dev com o último erro injetado no prompt
254
+ aioson workflow:heal . --stage=dev
255
+ ```
256
+
257
+ O que acontece:
258
+ 1. Motor lê o último erro gravado
259
+ 2. Verifica se ainda há retry disponível (máx 3)
260
+ 3. Reconstrói o prompt do `@dev` com uma seção `Self-Healing Context`
261
+ 4. O agente recebe instruções explícitas: "corrija apenas este erro, rode o verificador, depois finalize"
262
+
263
+ ### Modo automático: `--auto-heal`
264
+
265
+ ```bash
266
+ # Ao completar dev, se houver erro técnico, o motor reativa @dev sozinho
267
+ aioson workflow:next . --complete=dev --auto-heal
268
+ ```
269
+
270
+ Comportamento:
271
+ - Falha detectada → loga erro → incrementa retry counter
272
+ - Prompt de healing gerado → agente reativado automaticamente
273
+ - Se o agente corrigir e o próximo `--complete` passar → contador é resetado
274
+ - Se esgotar 3 tentativas → escala para você
275
+
276
+ ### Exemplo de prompt de healing
277
+
278
+ ```markdown
279
+ ## 🩹 Self-Healing Context (auto-injected by AIOSON motor)
280
+
281
+ > This is retry attempt 1 of 3 for stage @dev.
282
+
283
+ ### Error that caused the previous failure
284
+ ```
285
+ [Technical Gate BLOCKED] TypeScript compilation failed
286
+ src/index.ts:3:10 - error TS2345...
287
+ ```
288
+
289
+ ### Your task now
290
+ 1. Read the error above carefully.
291
+ 2. Identify the root cause in the codebase.
292
+ 3. Apply the minimal fix needed.
293
+ 4. Re-run the verification command to confirm the fix.
294
+ 5. Only then finish the stage.
295
+ ```
296
+
297
+ ---
298
+
299
+ ## Hardening autônomo de fricção
300
+
301
+ ### Comando
302
+
303
+ ```bash
304
+ # Analisa erros recorrentes e propõe/aplica fixes preventivos
305
+ aioson workflow:harden .
306
+
307
+ # Apenas preview, sem aplicar nada
308
+ aioson workflow:harden . --dry-run
309
+ ```
310
+
311
+ ### O que ele faz
312
+
313
+ 1. Lê `.aioson/context/workflow.errors.jsonl`
314
+ 2. Classifica os erros em padrões recorrentes
315
+ 3. Gera recomendações com prioridade
316
+ 4. Aplica **auto-fixes** quando seguro:
317
+ - Atualiza `.gitignore` com `node_modules/`, `dist/`, `.next/`, `*.db`
318
+ - Instala pre-commit hook do `git:guard`
319
+ - Cria stub de `tests/helpers/mocks.ts`
320
+
321
+ ### Exemplo de saída
322
+
323
+ ```
324
+ Codebase Hardening — ACTIVE
325
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
326
+ Errors scanned: 12
327
+ Patterns found: 3
328
+ Auto-fixes applied: 2
329
+
330
+ Top patterns:
331
+ - Git staging accidents: 4
332
+ - TypeScript compilation errors: 3
333
+ - Mock ordering / test helper issues: 2
334
+
335
+ Report: .aioson/context/hardening-report.md
336
+ ```
337
+
338
+ ### Padrões detectados
339
+
340
+ | Padrão | Ação sugerida |
341
+ |---|---|
342
+ | TypeScript compile | Adicionar `tsc --noEmit` aos checks pré-commit |
343
+ | Rust compile | Adicionar `cargo check` ao pipeline |
344
+ | JSX structure | Adicionar ESLint plugin react/jsx |
345
+ | Mock ordering | Criar mock factory compartilhada |
346
+ | UI text mismatch | Reforçar test briefing e `getByRole` |
347
+ | Git staging | `.gitignore` + pre-commit hook |
348
+ | Path misunderstanding | Manter `project-map.md` atualizado |
349
+ | Handoff contract | Revisar prompts de gate-setting |
350
+
351
+ ---
352
+
353
+ ## Live sessions com tmux
354
+
355
+ A partir da v1.7.3+, `live:start` suporta **tmux** para sessões persistentes no terminal:
356
+
357
+ ```bash
358
+ # Iniciar sessão viva com tmux (padrão quando tmux está disponível)
359
+ aioson live:start . --tool=codex --agent=dev --plan=plan.md
360
+
361
+ # O launcher detecta tmux automaticamente e cria uma sessão nomeada
362
+ # Use --no-tmux para forçar modo inline
363
+ aioson live:start . --tool=codex --agent=dev --no-tmux
364
+ ```
365
+
366
+ O tmux launcher (`src/lib/tmux-launcher.js`) gerencia:
367
+ - Verificação de disponibilidade do tmux
368
+ - Criação de sessão com nome baseado no projeto e agente
369
+ - Anexação automática ou em pane separada
370
+ - Status compacto em ANSI colorido para painéis pequenos
371
+
372
+ **Por que tmux?**
373
+ - Sessão persiste mesmo se o terminal original fechar
374
+ - Permite acompanhar `live:status` em pane paralelo
375
+ - Facilita handoffs sem perder o contexto do terminal
376
+
377
+ ## Comandos novos e atualizados
378
+
379
+ ### Novos comandos
380
+
381
+ | Comando | Descrição |
382
+ |---|---|
383
+ | `aioson workflow:heal . --stage=dev` | Reativa um agente com contexto corretivo |
384
+ | `aioson workflow:harden .` | Analisa fricções e aplica hardening |
385
+
386
+ ### Flags novas
387
+
388
+ | Flag | Comando | Efeito |
389
+ |---|---|---|
390
+ | `--auto-heal` | `workflow:next` | Ativa auto-cura automática em gate failures |
391
+ | `--force` | `workflow:next --complete` | Ignora gates técnicos (não recomendado) |
392
+
393
+ ### Comandos existentes que ganharam comportamento
394
+
395
+ | Comando | Novo comportamento |
396
+ |---|---|
397
+ | `workflow:next . --complete` | Agora roda gates técnicos e contratos antes de liberar |
398
+ | `workflow:next . --agent=committer` | Agora verifica git stage antes de ativar |
399
+ | `workflow:next . --agent=qa` | Agora injeta test briefing no prompt |
400
+
401
+ ---
402
+
403
+ ## Exemplos práticos
404
+
405
+ ### Exemplo 1: Fluxo normal com gate técnico
406
+
407
+ ```bash
408
+ # 1. Dev está implementando
409
+ aioson workflow:next . --agent=dev
410
+
411
+ # 2. Dev diz que terminou
412
+ aioson workflow:next . --complete=dev
413
+ # -> Motor roda tsc --noEmit
414
+ # -> Se passar, avança para @qa
415
+ # -> Se falhar, exibe o erro completo
416
+ ```
417
+
418
+ ### Exemplo 2: Auto-cura em ação
419
+
420
+ ```bash
421
+ # Dev terminou, mas código quebrou
422
+ aioson workflow:next . --complete=dev --auto-heal
423
+
424
+ # -> Motor detecta erro de TS
425
+ # -> Reativa @dev automaticamente com erro no prompt
426
+ # -> Você (ou o agente) corrige
427
+ # -> Roda de novo:
428
+ aioson workflow:next . --complete=dev
429
+ # -> Agora passa e vai para @qa
430
+ ```
431
+
432
+ ### Exemplo 3: Preparando commit seguro
433
+
434
+ ```bash
435
+ # Sempre rode antes de @committer
436
+ aioson commit:prepare .
437
+
438
+ # Verifica stage, roda git:guard, coleta diff
439
+ # Se passar:
440
+ aioson workflow:next . --agent=committer
441
+ # -> committer recebe commit-prep.json pronto
442
+ ```
443
+
444
+ ### Exemplo 4: QA com briefing injetado
445
+
446
+ ```bash
447
+ # Motor detecta que @qa será ativado
448
+ aioson workflow:next . --agent=qa
449
+
450
+ # -> Prompt do qa inclui automaticamente:
451
+ # - mock helpers do projeto
452
+ # - strings de UI dos componentes recentes
453
+ # - padrões de teste encontrados
454
+ ```
455
+
456
+ ### Exemplo 5: Hardening semanal preventivo
457
+
458
+ ```bash
459
+ # Rode uma vez por semana
460
+ aioson workflow:harden .
461
+
462
+ # Verifica se há padrões de erro recorrentes
463
+ # Aplica fixes automáticos quando seguro
464
+ ```
465
+
466
+ ### Exemplo 6: Reativando dev após falha manual
467
+
468
+ ```bash
469
+ # Se você corrigiu o erro fora do agente:
470
+ aioson workflow:heal . --stage=dev
471
+
472
+ # Reativa @dev com o último erro logado
473
+ # O agente verifica se está green e finaliza
474
+ ```
475
+
476
+ ---
477
+
478
+ ## Dicas de produtividade
479
+
480
+ 1. **Use `--auto-heal` em sessões longas** — ele economiza re-prompts mecânicos
481
+ 2. **Não use `--force` no gate técnico** — a menos que o erro seja realmente um falso-positivo do ambiente
482
+ 3. **Mantenha `project-map.md` atualizado** — especialmente se sua estrutura de pastas for não-padrão
483
+ 4. **Rode `workflow:harden` periodicamente** — mesmo sem erros, ele valida a saúde preventiva
484
+ 5. **Sempre use `commit:prepare`** — antes de `@committer` para aproveitar o guard e o diff coletado
485
+
486
+ ---
487
+
488
+ ## Referências
489
+
490
+ - [Comandos CLI](./comandos-cli.md) — referência completa de comandos
491
+ - [Guia de Agentes](./agentes.md) — quando usar cada agente
492
+ - [Cenários de Uso](./cenarios.md) — exemplos por porte de projeto
@@ -0,0 +1,113 @@
1
+ # Runner System
2
+
3
+ > Subsistema de execução persistente para tarefas fora do loop principal de sessão. Introduzido na v1.7.0+.
4
+
5
+ ## Quando usar
6
+
7
+ O runner é útil quando você precisa:
8
+ - Executar tarefas em **background** sem bloquear a sessão atual
9
+ - Processar **filas de trabalho** com prioridade
10
+ - Manter um **daemon 24/7** para workers automáticos
11
+ - Executar planos de implementação por **fase** de forma independente
12
+
13
+ ## Comandos
14
+
15
+ | Comando | O que faz |
16
+ |---|---|
17
+ | `runner:run` | Executa uma tarefa ou worker diretamente |
18
+ | `runner:queue` | Enfileira tarefas com prioridade e agente designado |
19
+ | `runner:plan` | Gera ou inspeciona planos de execução do runner |
20
+ | `runner:daemon` | Inicia, para ou monitora o daemon de background |
21
+ | `runner:queue:from-plan` | Extrai fases de um plano `.md` e enfileira automaticamente |
22
+
23
+ ## Ciclo de vida básico
24
+
25
+ ### 1. Inicializar o runtime
26
+
27
+ O runner depende do banco SQLite de runtime:
28
+
29
+ ```bash
30
+ aioson runtime:init .
31
+ ```
32
+
33
+ ### 2. Enfileirar tarefas manualmente
34
+
35
+ ```bash
36
+ aioson runner:queue . \
37
+ --task="implementar-checkout" \
38
+ --agent=dev \
39
+ --priority=1 \
40
+ --input='{"feature":"checkout","phase":1}'
41
+ ```
42
+
43
+ ### 3. Executar uma tarefa diretamente
44
+
45
+ ```bash
46
+ aioson runner:run . --task="implementar-checkout"
47
+ ```
48
+
49
+ ### 4. Usar um plano como fonte
50
+
51
+ ```bash
52
+ # Gerar plano a partir de uma feature
53
+ aioson runner:plan . --feature=checkout --generate
54
+
55
+ # Enfileirar todas as fases do plano
56
+ aioson runner:queue:from-plan . --feature=checkout --agent=dev
57
+ ```
58
+
59
+ ### 5. Daemon para execução contínua
60
+
61
+ ```bash
62
+ # Iniciar daemon
63
+ aioson runner:daemon . --sub=start
64
+
65
+ # Ver status
66
+ aioson runner:daemon . --sub=status
67
+
68
+ # Parar
69
+ aioson runner:daemon . --sub=stop
70
+ ```
71
+
72
+ ## Estrutura interna
73
+
74
+ O runner é composto por 4 módulos principais em `src/runner/`:
75
+
76
+ | Módulo | Responsabilidade |
77
+ |---|---|
78
+ | `queue-store.js` | Persistência da fila no SQLite |
79
+ | `plan-importer.js` | Parsing de planos Markdown em tarefas enfileiráveis |
80
+ | `cascade.js` | Lógica de execução sequencial/paralela e retry |
81
+ | `cli-launcher.js` | Interface entre CLI e o motor do runner |
82
+
83
+ ## Integração com squads
84
+
85
+ Squads podem usar o runner para executar workers não-LLM em background:
86
+
87
+ ```bash
88
+ # Enfileirar worker de uma squad
89
+ aioson runner:queue . \
90
+ --squad=marketing \
91
+ --worker=gerar-post \
92
+ --input='{"tema":"IA no marketing"}'
93
+ ```
94
+
95
+ ## Diferença entre runner e squad:daemon
96
+
97
+ | | Runner | Squad Daemon |
98
+ |---|---|---|
99
+ | **Escopo** | Tarefas genéricas do projeto | Workers específicos de uma squad |
100
+ | **Trigger** | Manual, plano ou fila | Cron, webhook ou evento |
101
+ | **Persistência** | SQLite do runtime | SQLite do runtime + bus JSONL |
102
+ | **Uso típico** | Execução por fase de plano | Workers 24/7 (WhatsApp, notificações) |
103
+
104
+ ## Troubleshooting
105
+
106
+ **Erro: "Runtime not initialized"**
107
+ → Rode `aioson runtime:init .` antes de qualquer comando do runner.
108
+
109
+ **Erro: "No tasks in queue"**
110
+ → Verifique se as tarefas foram enfileiradas corretamente com `runner:queue` ou `runner:queue:from-plan`.
111
+
112
+ **Daemon não inicia**
113
+ → Verifique permissões de escrita no diretório do projeto e se a porta padrão está livre.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaimevalasek/aioson",
3
- "version": "1.7.2",
3
+ "version": "1.8.0",
4
4
  "description": "AI operating framework for hyper-personalized software.",
5
5
  "keywords": [
6
6
  "ai",
@@ -42,6 +42,7 @@
42
42
  "test:genome-2.0:block-a": "node scripts/smoke/genome-2.0-smoke.js && npm run test:genome && npm test && npm run lint",
43
43
  "test:genome-2.0:rollout": "node scripts/testing/genome-2.0-rollout.js",
44
44
  "lint": "node --check src/*.js src/commands/*.js src/i18n/*.js src/i18n/messages/*.js bin/*.js",
45
+ "sync:agents": "rsync -av --progress --exclude='config.md' --exclude='runtime/' --exclude='backups/' --exclude='mcp/servers.local.json' template/ ./",
45
46
  "ci": "npm run lint && npm test"
46
47
  },
47
48
  "dependencies": {
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ const fs = require('node:fs/promises');
4
+ const path = require('node:path');
5
+ const { exists } = require('./utils');
6
+
7
+ const MANIFESTS_RELATIVE_DIR = '.aioson/agents/manifests';
8
+
9
+ async function readAgentManifest(targetDir, agentId) {
10
+ const safeAgentId = String(agentId || '').trim().toLowerCase();
11
+ if (!safeAgentId) return null;
12
+
13
+ const manifestPath = path.join(targetDir, MANIFESTS_RELATIVE_DIR, `${safeAgentId}.manifest.json`);
14
+ if (!(await exists(manifestPath))) return null;
15
+
16
+ try {
17
+ const raw = await fs.readFile(manifestPath, 'utf8');
18
+ return JSON.parse(raw);
19
+ } catch {
20
+ return null;
21
+ }
22
+ }
23
+
24
+ async function resolveAgentCapabilities(targetDir, agentId) {
25
+ const manifest = await readAgentManifest(targetDir, agentId);
26
+ return Array.isArray(manifest && manifest.capabilities) ? manifest.capabilities : [];
27
+ }
28
+
29
+ function supportsTool(manifest, tool) {
30
+ if (!manifest || !Array.isArray(manifest.supported_tools) || manifest.supported_tools.length === 0) {
31
+ return true;
32
+ }
33
+ const safeTool = String(tool || 'codex').trim().toLowerCase();
34
+ return manifest.supported_tools.map((item) => String(item).trim().toLowerCase()).includes(safeTool);
35
+ }
36
+
37
+ function canAgentPerform(manifest, capabilityId) {
38
+ if (!manifest || !Array.isArray(manifest.capabilities)) return false;
39
+ return manifest.capabilities.some((capability) => capability.id === capabilityId);
40
+ }
41
+
42
+ function buildAgentCapabilitySummary(manifest, tool) {
43
+ if (!manifest || !Array.isArray(manifest.capabilities) || manifest.capabilities.length === 0) {
44
+ return '';
45
+ }
46
+
47
+ const listed = manifest.capabilities
48
+ .slice(0, 4)
49
+ .map((capability) => `${capability.id} (${capability.category})`)
50
+ .join(', ');
51
+
52
+ const supportNote = supportsTool(manifest, tool)
53
+ ? ''
54
+ : ` Current tool "${String(tool || 'codex').toLowerCase()}" is not declared in the manifest.`;
55
+
56
+ return `Declared capabilities: ${listed}.${supportNote}`;
57
+ }
58
+
59
+ module.exports = {
60
+ MANIFESTS_RELATIVE_DIR,
61
+ readAgentManifest,
62
+ resolveAgentCapabilities,
63
+ supportsTool,
64
+ canAgentPerform,
65
+ buildAgentCapabilitySummary
66
+ };