@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
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ const fs = require('node:fs');
4
+ const path = require('node:path');
5
+ const { createCircuitBreaker } = require('../harness/circuit-breaker');
6
+
7
+ /**
8
+ * aioson harness:init — Inicializa o contrato e progresso da feature.
9
+ */
10
+ async function runHarnessInit({ args, options = {}, logger, t }) {
11
+ const targetDir = path.resolve(process.cwd(), args[0] || '.');
12
+ const slug = String(options.slug || '').trim();
13
+ const mode = String(options.mode || 'BALANCED').toUpperCase();
14
+
15
+ if (!slug) {
16
+ logger.error(t('errors.missing_slug') || 'Error: --slug is required');
17
+ return { ok: false, error: 'missing_slug' };
18
+ }
19
+
20
+ const planDir = path.join(targetDir, '.aioson', 'plans', slug);
21
+ const contractPath = path.join(planDir, 'harness-contract.json');
22
+ const progressPath = path.join(planDir, 'progress.json');
23
+
24
+ if (fs.existsSync(contractPath) || fs.existsSync(progressPath)) {
25
+ logger.log(t('harness.init_exists', { path: path.relative(targetDir, planDir) }) || `Harness already initialized in ${path.relative(targetDir, planDir)}`);
26
+ return { ok: true, skipped: true };
27
+ }
28
+
29
+ if (!fs.existsSync(planDir)) {
30
+ fs.mkdirSync(planDir, { recursive: true });
31
+ }
32
+
33
+ const contract = {
34
+ feature: slug,
35
+ contract_mode: mode,
36
+ governor: {
37
+ max_steps: 50,
38
+ error_streak_limit: 5,
39
+ cost_ceiling_tokens: null
40
+ },
41
+ criteria: [
42
+ {
43
+ id: "C1",
44
+ description: "Estrutura de arquivos e sintaxe básica",
45
+ assertion: "all files exist and parse",
46
+ binary: true
47
+ }
48
+ ]
49
+ };
50
+
51
+ const cb = createCircuitBreaker(contractPath, progressPath);
52
+ // cb.load() vai criar o progress inicial se não existir
53
+ fs.writeFileSync(contractPath, JSON.stringify(contract, null, 2), 'utf8');
54
+ await cb.load();
55
+ await cb._save(); // Garante a criação do progress.json inicial
56
+
57
+ logger.log(t('harness.init_success', { slug }) || `Harness initialized for feature: ${slug}`);
58
+ return { ok: true, slug, path: planDir };
59
+ }
60
+
61
+ /**
62
+ * aioson harness:validate — Executa validação manual e atualiza progresso.
63
+ */
64
+ async function runHarnessValidate({ args, options = {}, logger, t }) {
65
+ const targetDir = path.resolve(process.cwd(), args[0] || '.');
66
+ const slug = String(options.slug || '').trim();
67
+ const artifact = options.artifact ? String(options.artifact).trim() : null;
68
+
69
+ if (!slug) {
70
+ logger.error(t('errors.missing_slug') || 'Error: --slug is required');
71
+ return { ok: false, error: 'missing_slug' };
72
+ }
73
+
74
+ const contractPath = path.join(targetDir, '.aioson', 'plans', slug, 'harness-contract.json');
75
+ const progressPath = path.join(targetDir, '.aioson', 'plans', slug, 'progress.json');
76
+
77
+ if (!fs.existsSync(contractPath)) {
78
+ logger.error(t('harness.contract_not_found') || `Contract not found for slug: ${slug}`);
79
+ return { ok: false, error: 'contract_not_found' };
80
+ }
81
+
82
+ const cb = createCircuitBreaker(contractPath, progressPath);
83
+ await cb.load();
84
+
85
+ const { allowed, reason } = cb.check();
86
+ if (!allowed) {
87
+ logger.log(t('harness.blocked', { reason }) || `Execution paused: ${reason}`);
88
+ return { ok: false, reason };
89
+ }
90
+
91
+ logger.log(t('harness.validating', { slug }) || `Validating harness for ${slug}...`);
92
+
93
+ // NOTA: No Slice 2 faremos o upgrade do verify-gate para suportar --contract.
94
+ // Por enquanto, chamamos o verify:gate via shell (subprocesso) como planejado na arquitetura.
95
+ const { execSync } = require('node:child_process');
96
+
97
+ try {
98
+ const specPath = path.join(targetDir, '.aioson', 'context', `spec-${slug}.md`);
99
+ const cmd = `aioson verify:gate . --spec="${specPath}" --contract="${contractPath}" ${artifact ? `--artifact="${artifact}"` : ''} --json`;
100
+
101
+ const output = execSync(cmd, { cwd: targetDir, encoding: 'utf8' });
102
+ const result = JSON.parse(output);
103
+
104
+ if (result.verdict === 'PASS' || result.verdict === 'PASS_WITH_NOTES') {
105
+ await cb.recordSuccess();
106
+ logger.log(` ✓ PASS — ${slug}`);
107
+ return { ok: true, verdict: result.verdict };
108
+ } else {
109
+ const firstIssue = result.issues?.[0]?.message || result.verdict;
110
+ await cb.recordError(firstIssue);
111
+ logger.log(` ✗ ${result.verdict} — ${firstIssue}`);
112
+ return { ok: false, verdict: result.verdict, error: firstIssue };
113
+ }
114
+ } catch (err) {
115
+ await cb.recordError(err.message.slice(0, 100));
116
+ logger.error(` ✗ Error during validation: ${err.message}`);
117
+ return { ok: false, error: err.message };
118
+ }
119
+ }
120
+
121
+ module.exports = { runHarnessInit, runHarnessValidate };
@@ -15,6 +15,7 @@ const {
15
15
  } = require('../runtime-store');
16
16
 
17
17
  const CONTEXT_DIR = path.join('.aioson', 'context');
18
+ const PLANS_DIR = path.join('.aioson', 'plans');
18
19
 
19
20
  async function pathExists(targetPath) {
20
21
  try {
@@ -25,6 +26,26 @@ async function pathExists(targetPath) {
25
26
  }
26
27
  }
27
28
 
29
+ /**
30
+ * Resolve the best path for an implementation plan given a slug.
31
+ */
32
+ async function resolvePlanPath(projectDir, featureSlug) {
33
+ if (featureSlug) {
34
+ // 1. Try new structured directory: .aioson/plans/{slug}/manifest.md
35
+ const structuredPath = path.join(projectDir, PLANS_DIR, featureSlug, 'manifest.md');
36
+ if (await pathExists(structuredPath)) return structuredPath;
37
+
38
+ // 2. Try legacy flat file: .aioson/context/implementation-plan-{slug}.md
39
+ const legacyPath = path.join(projectDir, CONTEXT_DIR, `implementation-plan-${featureSlug}.md`);
40
+ if (await pathExists(legacyPath)) return legacyPath;
41
+
42
+ return structuredPath; // default to new structure even if missing
43
+ }
44
+
45
+ // No slug -> implementation-plan.md in context
46
+ return path.join(projectDir, CONTEXT_DIR, 'implementation-plan.md');
47
+ }
48
+
28
49
  /**
29
50
  * Compute a simple hash of an array of files for staleness detection.
30
51
  */
@@ -47,7 +68,10 @@ async function computeSourceHash(projectDir, filePaths) {
47
68
  */
48
69
  async function detectPlanFiles(projectDir) {
49
70
  const contextDir = path.resolve(projectDir, CONTEXT_DIR);
71
+ const plansDir = path.resolve(projectDir, PLANS_DIR);
50
72
  const plans = [];
73
+
74
+ // Scan context (legacy/simple)
51
75
  try {
52
76
  const files = await fs.readdir(contextDir);
53
77
  for (const f of files) {
@@ -55,12 +79,24 @@ async function detectPlanFiles(projectDir) {
55
79
  const slug = f === 'implementation-plan.md'
56
80
  ? null
57
81
  : f.replace('implementation-plan-', '').replace('.md', '');
58
- plans.push({ file: f, featureSlug: slug, path: path.join(CONTEXT_DIR, f) });
82
+ plans.push({ file: f, featureSlug: slug, path: path.join(CONTEXT_DIR, f), type: 'legacy' });
59
83
  }
60
84
  }
61
- } catch {
62
- // context dir may not exist
63
- }
85
+ } catch { /* ignore */ }
86
+
87
+ // Scan structured plans
88
+ try {
89
+ const entries = await fs.readdir(plansDir, { withFileTypes: true });
90
+ for (const entry of entries) {
91
+ if (entry.isDirectory()) {
92
+ const manifest = path.join(plansDir, entry.name, 'manifest.md');
93
+ if (await pathExists(manifest)) {
94
+ plans.push({ file: 'manifest.md', featureSlug: entry.name, path: path.join(PLANS_DIR, entry.name, 'manifest.md'), type: 'structured' });
95
+ }
96
+ }
97
+ }
98
+ } catch { /* ignore */ }
99
+
64
100
  return plans;
65
101
  }
66
102
 
@@ -95,13 +131,10 @@ function countPhases(content) {
95
131
  * Shows the current implementation plan.
96
132
  */
97
133
  async function handleShow(projectDir, featureSlug, { logger, t }) {
98
- const fileName = featureSlug
99
- ? `implementation-plan-${featureSlug}.md`
100
- : 'implementation-plan.md';
101
- const planPath = path.resolve(projectDir, CONTEXT_DIR, fileName);
134
+ const planPath = await resolvePlanPath(projectDir, featureSlug);
102
135
 
103
136
  if (!(await pathExists(planPath))) {
104
- logger.error(t('implementation_plan.not_found', { file: fileName }));
137
+ logger.error(t('implementation_plan.not_found', { file: path.basename(planPath) }));
105
138
  return { found: false };
106
139
  }
107
140
 
@@ -109,7 +142,7 @@ async function handleShow(projectDir, featureSlug, { logger, t }) {
109
142
  const meta = parsePlanFrontmatter(content);
110
143
  const phases = countPhases(content);
111
144
 
112
- logger.log(`Plan: ${fileName}`);
145
+ logger.log(`Plan: ${path.basename(planPath)}`);
113
146
  logger.log(`Status: ${meta.status || 'unknown'}`);
114
147
  logger.log(`Classification: ${meta.classification || 'unknown'}`);
115
148
  logger.log(`Phases: ${phases}`);
@@ -199,13 +232,10 @@ async function handleCheckpoint(projectDir, featureSlug, phaseNumber, { logger,
199
232
  * Checks if source artifacts changed after the plan was created.
200
233
  */
201
234
  async function handleStale(projectDir, featureSlug, { logger, t }) {
202
- const fileName = featureSlug
203
- ? `implementation-plan-${featureSlug}.md`
204
- : 'implementation-plan.md';
205
- const planPath = path.resolve(projectDir, CONTEXT_DIR, fileName);
235
+ const planPath = await resolvePlanPath(projectDir, featureSlug);
206
236
 
207
237
  if (!(await pathExists(planPath))) {
208
- logger.error(t('implementation_plan.not_found', { file: fileName }));
238
+ logger.error(t('implementation_plan.not_found', { file: path.basename(planPath) }));
209
239
  return { found: false, stale: false };
210
240
  }
211
241
 
@@ -248,13 +278,10 @@ async function handleStale(projectDir, featureSlug, { logger, t }) {
248
278
  * Registers an existing plan file into the runtime SQLite.
249
279
  */
250
280
  async function handleRegister(projectDir, featureSlug, { logger, t }) {
251
- const fileName = featureSlug
252
- ? `implementation-plan-${featureSlug}.md`
253
- : 'implementation-plan.md';
254
- const planPath = path.resolve(projectDir, CONTEXT_DIR, fileName);
281
+ const planPath = await resolvePlanPath(projectDir, featureSlug);
255
282
 
256
283
  if (!(await pathExists(planPath))) {
257
- logger.error(t('implementation_plan.not_found', { file: fileName }));
284
+ logger.error(t('implementation_plan.not_found', { file: path.basename(planPath) }));
258
285
  return { registered: false };
259
286
  }
260
287
 
@@ -3,7 +3,7 @@
3
3
  const fs = require('node:fs/promises');
4
4
  const path = require('node:path');
5
5
  const { installTemplate } = require('../installer');
6
- const { applyAgentLocale } = require('../locales');
6
+ const { applyAgentLocale, normalizeInteractionLanguage } = require('../locales');
7
7
  const { resolvePromptTool } = require('../prompt-tool');
8
8
  const { runInstallWizard } = require('../install-wizard');
9
9
  const { renderRevealAnimation, renderInstallSummary, renderProgress } = require('../install-animation');
@@ -73,7 +73,11 @@ async function runInit({ args, options, logger, t }) {
73
73
  const effectiveLocale = requestedLanguage || (installProfile && installProfile.locale) || null;
74
74
  let localeApply = null;
75
75
  if (effectiveLocale) {
76
- localeApply = await applyAgentLocale(targetDir, effectiveLocale, { dryRun });
76
+ localeApply = await applyAgentLocale(
77
+ targetDir,
78
+ normalizeInteractionLanguage(effectiveLocale),
79
+ { dryRun }
80
+ );
77
81
  if (dryRun) {
78
82
  logger.log(t('locale_apply.dry_run_applied', { locale: localeApply.locale }));
79
83
  } else {
@@ -3,7 +3,7 @@
3
3
  const path = require('node:path');
4
4
  const { detectFramework } = require('../detector');
5
5
  const { installTemplate, readInstallProfile } = require('../installer');
6
- const { applyAgentLocale } = require('../locales');
6
+ const { applyAgentLocale, normalizeInteractionLanguage } = require('../locales');
7
7
  const { resolvePromptTool } = require('../prompt-tool');
8
8
  const { runInstallWizard } = require('../install-wizard');
9
9
  const { renderRevealAnimation, renderInstallSummary, renderProgress } = require('../install-animation');
@@ -63,7 +63,11 @@ async function runInstall({ args, options, logger, t }) {
63
63
  const effectiveLocale = requestedLanguage || (installProfile && installProfile.locale) || null;
64
64
  let localeApply = null;
65
65
  if (effectiveLocale) {
66
- localeApply = await applyAgentLocale(targetDir, effectiveLocale, { dryRun });
66
+ localeApply = await applyAgentLocale(
67
+ targetDir,
68
+ normalizeInteractionLanguage(effectiveLocale),
69
+ { dryRun }
70
+ );
67
71
  if (dryRun) {
68
72
  logger.log(t('locale_apply.dry_run_applied', { locale: localeApply.locale }));
69
73
  } else {