sinapse-ai 1.16.0 → 1.19.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 (354) hide show
  1. package/.claude/hooks/doc-first-gate.cjs +156 -0
  2. package/.claude/hooks/enforce-story-gate.cjs +6 -2
  3. package/.claude/rules/documentation-first.md +6 -0
  4. package/.claude/rules/hook-governance.md +1 -0
  5. package/.sinapse-ai/constitution.md +3 -3
  6. package/.sinapse-ai/core/atlas/atlas-data.js +278 -0
  7. package/.sinapse-ai/core/atlas/flows-pt.js +253 -0
  8. package/.sinapse-ai/core/atlas/flows.js +266 -0
  9. package/.sinapse-ai/core/atlas/index.js +62 -0
  10. package/.sinapse-ai/core/atlas/render-html.js +216 -0
  11. package/.sinapse-ai/core/atlas/render-markdown.js +313 -0
  12. package/.sinapse-ai/core/atlas/render-research-card.js +164 -0
  13. package/.sinapse-ai/core/code-intel/registry-syncer.js +5 -3
  14. package/.sinapse-ai/core/doctor/checks/agent-memory.js +7 -5
  15. package/.sinapse-ai/core/doctor/checks/claude-md.js +13 -0
  16. package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +1 -0
  17. package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +11 -0
  18. package/.sinapse-ai/core/doctor/checks/settings-json.js +16 -2
  19. package/.sinapse-ai/core/doctor/index.js +27 -0
  20. package/.sinapse-ai/core/execution/build-orchestrator.js +192 -8
  21. package/.sinapse-ai/core/external-executors/delegate-cli.js +6 -2
  22. package/.sinapse-ai/core/health-check/checks/project/constitution-consistency.js +2 -1
  23. package/.sinapse-ai/core/ideation/ideation-engine.js +10 -8
  24. package/.sinapse-ai/core/mcp/config-migrator.js +8 -5
  25. package/.sinapse-ai/core/mcp/global-config-manager.js +4 -1
  26. package/.sinapse-ai/core/mcp/symlink-manager.js +6 -3
  27. package/.sinapse-ai/core/orchestration/brownfield-handler.js +5 -4
  28. package/.sinapse-ai/core/orchestration/build-command.js +136 -0
  29. package/.sinapse-ai/core/orchestration/doc-first-resolver.js +322 -0
  30. package/.sinapse-ai/core/orchestration/executors/epic-4-executor.js +3 -0
  31. package/.sinapse-ai/core/orchestration/gate-evaluator.js +58 -9
  32. package/.sinapse-ai/core/orchestration/route-command.js +97 -0
  33. package/.sinapse-ai/core/orchestration/session-state.js +19 -2
  34. package/.sinapse-ai/core/orchestration/terminal-spawner.js +24 -1
  35. package/.sinapse-ai/core/orchestration/workflow-executor.js +102 -3
  36. package/.sinapse-ai/core/quality-gates/focus-area-recommender.js +15 -11
  37. package/.sinapse-ai/core/registry/build-registry.js +3 -2
  38. package/.sinapse-ai/core/synapse/scripts/generate-constitution.js +1 -0
  39. package/.sinapse-ai/core/synapse/utils/atomic-write.js +34 -9
  40. package/.sinapse-ai/core-config.yaml +5 -1
  41. package/.sinapse-ai/data/capability-detection.js +3 -3
  42. package/.sinapse-ai/data/entity-registry.yaml +288 -90
  43. package/.sinapse-ai/data/mcp-discipline.js +1 -1
  44. package/.sinapse-ai/data/mcp-tool-examples.yaml +8 -8
  45. package/.sinapse-ai/data/tok2-validation.js +1 -1
  46. package/.sinapse-ai/data/tool-registry.yaml +4 -3
  47. package/.sinapse-ai/development/agents/snps-orqx.md +14 -5
  48. package/.sinapse-ai/development/scripts/migrate-task-to-v2.js +1 -1
  49. package/.sinapse-ai/development/scripts/validate-task-v2.js +67 -4
  50. package/.sinapse-ai/development/tasks/advanced-elicitation.md +3 -3
  51. package/.sinapse-ai/development/tasks/analyst-facilitate-brainstorming.md +3 -3
  52. package/.sinapse-ai/development/tasks/analyze-framework.md +1 -8
  53. package/.sinapse-ai/development/tasks/analyze-performance.md +1 -8
  54. package/.sinapse-ai/development/tasks/apply-qa-fixes.md +3 -3
  55. package/.sinapse-ai/development/tasks/architect-analyze-impact.md +3 -3
  56. package/.sinapse-ai/development/tasks/audit-codebase.md +1 -8
  57. package/.sinapse-ai/development/tasks/audit-tailwind-config.md +1 -4
  58. package/.sinapse-ai/development/tasks/audit-utilities.md +1 -8
  59. package/.sinapse-ai/development/tasks/bootstrap-shadcn-library.md +3 -3
  60. package/.sinapse-ai/development/tasks/brownfield-create-epic.md +3 -3
  61. package/.sinapse-ai/development/tasks/brownfield-create-story.md +3 -3
  62. package/.sinapse-ai/development/tasks/build-component.md +2 -5
  63. package/.sinapse-ai/development/tasks/calculate-roi.md +3 -3
  64. package/.sinapse-ai/development/tasks/ci-cd-configuration.md +1 -1
  65. package/.sinapse-ai/development/tasks/cleanup-utilities.md +3 -3
  66. package/.sinapse-ai/development/tasks/collaborative-edit.md +3 -3
  67. package/.sinapse-ai/development/tasks/compose-molecule.md +2 -5
  68. package/.sinapse-ai/development/tasks/consolidate-patterns.md +3 -3
  69. package/.sinapse-ai/development/tasks/correct-course.md +3 -3
  70. package/.sinapse-ai/development/tasks/create-brownfield-story.md +2 -5
  71. package/.sinapse-ai/development/tasks/create-deep-research-prompt.md +2 -5
  72. package/.sinapse-ai/development/tasks/create-doc.md +3 -6
  73. package/.sinapse-ai/development/tasks/create-next-story.md +4 -8
  74. package/.sinapse-ai/development/tasks/create-suite.md +2 -5
  75. package/.sinapse-ai/development/tasks/create-task.md +2 -5
  76. package/.sinapse-ai/development/tasks/create-workflow.md +2 -5
  77. package/.sinapse-ai/development/tasks/db-analyze-hotpaths.md +1 -8
  78. package/.sinapse-ai/development/tasks/db-apply-migration.md +1 -8
  79. package/.sinapse-ai/development/tasks/db-bootstrap.md +1 -8
  80. package/.sinapse-ai/development/tasks/db-domain-modeling.md +1 -8
  81. package/.sinapse-ai/development/tasks/db-dry-run.md +1 -8
  82. package/.sinapse-ai/development/tasks/db-env-check.md +1 -8
  83. package/.sinapse-ai/development/tasks/db-explain.md +1 -8
  84. package/.sinapse-ai/development/tasks/db-impersonate.md +1 -8
  85. package/.sinapse-ai/development/tasks/db-load-csv.md +1 -8
  86. package/.sinapse-ai/development/tasks/db-policy-apply.md +1 -8
  87. package/.sinapse-ai/development/tasks/db-rls-audit.md +1 -8
  88. package/.sinapse-ai/development/tasks/db-rollback.md +1 -8
  89. package/.sinapse-ai/development/tasks/db-run-sql.md +1 -8
  90. package/.sinapse-ai/development/tasks/db-schema-audit.md +1 -8
  91. package/.sinapse-ai/development/tasks/db-seed.md +1 -8
  92. package/.sinapse-ai/development/tasks/db-smoke-test.md +1 -8
  93. package/.sinapse-ai/development/tasks/db-snapshot.md +1 -8
  94. package/.sinapse-ai/development/tasks/db-squad-integration.md +1 -8
  95. package/.sinapse-ai/development/tasks/db-supabase-setup.md +1 -8
  96. package/.sinapse-ai/development/tasks/db-verify-order.md +1 -8
  97. package/.sinapse-ai/development/tasks/deprecate-component.md +3 -3
  98. package/.sinapse-ai/development/tasks/dev-apply-qa-fixes.md +3 -3
  99. package/.sinapse-ai/development/tasks/dev-backlog-debt.md +3 -3
  100. package/.sinapse-ai/development/tasks/dev-develop-story.md +1 -1
  101. package/.sinapse-ai/development/tasks/dev-improve-code-quality.md +3 -3
  102. package/.sinapse-ai/development/tasks/dev-optimize-performance.md +3 -3
  103. package/.sinapse-ai/development/tasks/dev-suggest-refactoring.md +3 -3
  104. package/.sinapse-ai/development/tasks/dev-validate-next-story.md +3 -3
  105. package/.sinapse-ai/development/tasks/document-project.md +3 -3
  106. package/.sinapse-ai/development/tasks/environment-bootstrap.md +0 -4
  107. package/.sinapse-ai/development/tasks/execute-checklist.md +3 -3
  108. package/.sinapse-ai/development/tasks/export-design-tokens-dtcg.md +3 -3
  109. package/.sinapse-ai/development/tasks/extend-pattern.md +1 -8
  110. package/.sinapse-ai/development/tasks/extract-tokens.md +3 -3
  111. package/.sinapse-ai/development/tasks/facilitate-brainstorming-session.md +1 -1
  112. package/.sinapse-ai/development/tasks/generate-ai-frontend-prompt.md +2 -5
  113. package/.sinapse-ai/development/tasks/generate-documentation.md +2 -5
  114. package/.sinapse-ai/development/tasks/generate-migration-strategy.md +2 -5
  115. package/.sinapse-ai/development/tasks/generate-shock-report.md +2 -5
  116. package/.sinapse-ai/development/tasks/github-devops-github-pr-automation.md +3 -3
  117. package/.sinapse-ai/development/tasks/github-devops-repository-cleanup.md +3 -3
  118. package/.sinapse-ai/development/tasks/github-devops-version-management.md +3 -3
  119. package/.sinapse-ai/development/tasks/improve-self.md +1 -16
  120. package/.sinapse-ai/development/tasks/index-docs.md +1 -4
  121. package/.sinapse-ai/development/tasks/init-project-status.md +1 -7
  122. package/.sinapse-ai/development/tasks/integrate-squad.md +3 -3
  123. package/.sinapse-ai/development/tasks/kb-mode-interaction.md +3 -3
  124. package/.sinapse-ai/development/tasks/learn-patterns.md +3 -3
  125. package/.sinapse-ai/development/tasks/modify-agent.md +1 -8
  126. package/.sinapse-ai/development/tasks/modify-task.md +1 -8
  127. package/.sinapse-ai/development/tasks/modify-workflow.md +1 -8
  128. package/.sinapse-ai/development/tasks/po-backlog-add.md +3 -3
  129. package/.sinapse-ai/development/tasks/po-manage-story-backlog.md +3 -3
  130. package/.sinapse-ai/development/tasks/po-pull-story-from-clickup.md +3 -3
  131. package/.sinapse-ai/development/tasks/po-pull-story.md +3 -3
  132. package/.sinapse-ai/development/tasks/po-stories-index.md +3 -3
  133. package/.sinapse-ai/development/tasks/po-sync-story-to-clickup.md +3 -3
  134. package/.sinapse-ai/development/tasks/po-sync-story.md +3 -3
  135. package/.sinapse-ai/development/tasks/pr-automation.md +1 -1
  136. package/.sinapse-ai/development/tasks/propose-modification.md +3 -3
  137. package/.sinapse-ai/development/tasks/qa-backlog-add-followup.md +1 -8
  138. package/.sinapse-ai/development/tasks/qa-create-fix-request.md +1 -4
  139. package/.sinapse-ai/development/tasks/qa-gate.md +1 -8
  140. package/.sinapse-ai/development/tasks/qa-generate-tests.md +1 -8
  141. package/.sinapse-ai/development/tasks/qa-nfr-assess.md +1 -8
  142. package/.sinapse-ai/development/tasks/qa-review-proposal.md +1 -8
  143. package/.sinapse-ai/development/tasks/qa-review-story.md +1 -8
  144. package/.sinapse-ai/development/tasks/qa-risk-profile.md +1 -8
  145. package/.sinapse-ai/development/tasks/qa-run-tests.md +1 -8
  146. package/.sinapse-ai/development/tasks/qa-test-design.md +1 -8
  147. package/.sinapse-ai/development/tasks/qa-trace-requirements.md +1 -8
  148. package/.sinapse-ai/development/tasks/release-management.md +1 -1
  149. package/.sinapse-ai/development/tasks/security-audit.md +1 -4
  150. package/.sinapse-ai/development/tasks/security-scan.md +1 -4
  151. package/.sinapse-ai/development/tasks/setup-database.md +2 -11
  152. package/.sinapse-ai/development/tasks/setup-design-system.md +2 -11
  153. package/.sinapse-ai/development/tasks/shard-doc.md +3 -3
  154. package/.sinapse-ai/development/tasks/sm-create-next-story.md +3 -3
  155. package/.sinapse-ai/development/tasks/spec-gather-requirements.md +11 -0
  156. package/.sinapse-ai/development/tasks/sync-documentation.md +1 -6
  157. package/.sinapse-ai/development/tasks/tailwind-upgrade.md +3 -3
  158. package/.sinapse-ai/development/tasks/test-as-user.md +3 -3
  159. package/.sinapse-ai/development/tasks/undo-last.md +2 -5
  160. package/.sinapse-ai/development/tasks/update-manifest.md +1 -8
  161. package/.sinapse-ai/development/tasks/ux-create-wireframe.md +1 -1
  162. package/.sinapse-ai/development/tasks/ux-ds-scan-artifact.md +3 -3
  163. package/.sinapse-ai/development/tasks/ux-user-research.md +3 -3
  164. package/.sinapse-ai/development/tasks/validate-next-story.md +1 -8
  165. package/.sinapse-ai/development/templates/approval-table.md +106 -0
  166. package/.sinapse-ai/development/templates/chrome-brain/scripts/chrome-ensure.cjs +1 -1
  167. package/.sinapse-ai/development/workflows/spec-pipeline.yaml +1 -0
  168. package/.sinapse-ai/git-hooks/post-commit +0 -0
  169. package/.sinapse-ai/git-hooks/pre-commit +0 -0
  170. package/.sinapse-ai/git-hooks/pre-push +0 -0
  171. package/.sinapse-ai/infrastructure/scripts/changelog-generator.js +5 -1
  172. package/.sinapse-ai/infrastructure/scripts/pattern-extractor.js +11 -2
  173. package/.sinapse-ai/infrastructure/scripts/test-utilities.js +34 -13
  174. package/.sinapse-ai/infrastructure/scripts/usage-analytics.js +9 -5
  175. package/.sinapse-ai/infrastructure/scripts/validate-claude-integration.js +10 -2
  176. package/.sinapse-ai/install-manifest.yaml +364 -320
  177. package/.sinapse-ai/lib/build.json +1 -0
  178. package/.sinapse-ai/product/templates/personalized-task-template-v2.md +4 -2
  179. package/.sinapse-ai/product/templates/prd-tmpl.yaml +6 -2
  180. package/.sinapse-ai/product/templates/statusline/statusline-script.js +7 -3
  181. package/CHANGELOG.md +85 -7
  182. package/README.en.md +5 -5
  183. package/README.md +5 -5
  184. package/bin/cli.js +1 -1
  185. package/bin/commands/install.js +288 -114
  186. package/bin/commands/local.js +11 -0
  187. package/bin/lib/command-generator.js +31 -2
  188. package/bin/sinapse.js +121 -0
  189. package/docs/README.md +1 -1
  190. package/docs/agent-reference-guide.md +1 -1
  191. package/docs/community/README-community-snippet-core.md +1 -1
  192. package/docs/community/README-community-snippet-mcp.md +1 -1
  193. package/docs/community/README-community-snippet-squads.md +1 -1
  194. package/docs/examples/quickstart-recording.md +1 -1
  195. package/docs/framework/README.md +1 -1
  196. package/docs/framework/architecture-overview.md +1 -0
  197. package/docs/framework/atlas/OPERATING-ATLAS.md +537 -0
  198. package/docs/framework/atlas/README.md +34 -0
  199. package/docs/framework/atlas/atlas-data.json +2810 -0
  200. package/docs/framework/atlas/atlas.html +392 -0
  201. package/docs/framework/coding-standards.md +1 -1
  202. package/docs/framework/core-architecture.md +1 -1
  203. package/docs/framework/guiding-principles.md +1 -1
  204. package/docs/framework/source-tree.md +1 -1
  205. package/docs/framework/tech-stack.md +1 -1
  206. package/docs/framework/versioning-and-releases.md +1 -1
  207. package/docs/getting-started.md +1 -1
  208. package/docs/guides/agent-reference.md +1 -1
  209. package/docs/guides/agent-selection-guide.md +1 -1
  210. package/docs/guides/api-reference.md +1 -1
  211. package/docs/guides/contextual-greeting-system-guide.md +1 -1
  212. package/docs/guides/contributing-squads.md +1 -1
  213. package/docs/guides/development-setup.md +1 -1
  214. package/docs/guides/git-workflow-guide.md +1 -1
  215. package/docs/guides/installation-troubleshooting.md +1 -1
  216. package/docs/guides/llm-routing.md +1 -1
  217. package/docs/guides/mcp-global-setup.md +1 -1
  218. package/docs/guides/meta-agent-commands.md +1 -1
  219. package/docs/guides/project-status-feature.md +1 -1
  220. package/docs/guides/quality-dashboard.md +1 -1
  221. package/docs/guides/quality-gates.md +1 -1
  222. package/docs/guides/security-hardening.md +1 -1
  223. package/docs/guides/service-discovery.md +19 -22
  224. package/docs/guides/squad-examples/README.md +1 -1
  225. package/docs/guides/squad-migration.md +1 -1
  226. package/docs/guides/squads-guide.md +1 -1
  227. package/docs/guides/squads-overview.md +10 -13
  228. package/docs/guides/template-engine-v2.md +1 -1
  229. package/docs/guides/testing-guide.md +1 -1
  230. package/docs/guides/user-guide.md +30 -26
  231. package/docs/installation/README.md +3 -3
  232. package/docs/installation/faq.md +1 -1
  233. package/docs/installation/linux.md +2 -2
  234. package/docs/installation/macos.md +1 -1
  235. package/docs/installation/npx-install.md +1 -1
  236. package/docs/installation/troubleshooting.md +1 -1
  237. package/docs/installation/uninstallation.md +1 -1
  238. package/docs/installation/v4-quick-start.md +1 -1
  239. package/docs/installation/windows.md +2 -2
  240. package/docs/pt/CHANGELOG.md +1 -1
  241. package/docs/pt/DOCUMENTATION-ROADMAP.md +1 -1
  242. package/docs/pt/ENVIRONMENT.md +1 -1
  243. package/docs/pt/FEATURE_PROCESS.md +2 -2
  244. package/docs/pt/GUIDING-PRINCIPLES.md +2 -2
  245. package/docs/pt/agent-reference-guide.md +3 -3
  246. package/docs/pt/architecture/ARCHITECTURE-INDEX.md +2 -2
  247. package/docs/pt/architecture/ade-architecture.md +1 -1
  248. package/docs/pt/architecture/agent-config-audit.md +1 -1
  249. package/docs/pt/architecture/agent-responsibility-matrix.md +1 -1
  250. package/docs/pt/architecture/agent-tool-integration-guide.md +1 -1
  251. package/docs/pt/architecture/ci-cd.md +1 -1
  252. package/docs/pt/architecture/coding-standards.md +1 -1
  253. package/docs/pt/architecture/contribution-workflow-research.md +1 -1
  254. package/docs/pt/architecture/dashboard-architecture.md +1 -1
  255. package/docs/pt/architecture/dashboard-realtime.md +1 -1
  256. package/docs/pt/architecture/hcs-check-specifications.md +1 -1
  257. package/docs/pt/architecture/hcs-execution-modes.md +1 -1
  258. package/docs/pt/architecture/hcs-self-healing-spec.md +1 -1
  259. package/docs/pt/architecture/high-level-architecture.md +1 -1
  260. package/docs/pt/architecture/introduction.md +1 -1
  261. package/docs/pt/architecture/mcp-api-keys-management.md +3 -3
  262. package/docs/pt/architecture/mcp-system-diagrams.md +1 -1
  263. package/docs/pt/architecture/module-system.md +4 -4
  264. package/docs/pt/architecture/multi-repo-strategy.md +2 -2
  265. package/docs/pt/architecture/source-tree.md +1 -1
  266. package/docs/pt/architecture/squad-improvement-analysis.md +1 -1
  267. package/docs/pt/architecture/squad-improvement-recommended-approach.md +1 -1
  268. package/docs/pt/architecture/tech-stack.md +1 -1
  269. package/docs/pt/architecture/utility-integration-guide.md +1 -1
  270. package/docs/pt/code-of-conduct.md +1 -1
  271. package/docs/pt/community/README-community-snippet-core.md +1 -1
  272. package/docs/pt/community/README-community-snippet-mcp.md +2 -2
  273. package/docs/pt/contributing.md +7 -7
  274. package/docs/pt/core-architecture.md +1 -1
  275. package/docs/pt/docker-mcp-setup.md +1 -1
  276. package/docs/pt/framework/README.md +1 -1
  277. package/docs/pt/framework/coding-standards.md +1 -1
  278. package/docs/pt/framework/source-tree.md +1 -1
  279. package/docs/pt/framework/tech-stack.md +1 -1
  280. package/docs/pt/getting-started.md +1 -1
  281. package/docs/pt/git-workflow-guide.md +1 -1
  282. package/docs/pt/guides/README.md +3 -3
  283. package/docs/pt/guides/agent-selection-guide.md +2 -2
  284. package/docs/pt/guides/api-reference.md +1 -1
  285. package/docs/pt/guides/contextual-greeting-system-guide.md +1 -1
  286. package/docs/pt/guides/contributing-squads.md +1 -1
  287. package/docs/pt/guides/development-setup.md +1 -1
  288. package/docs/pt/guides/installation-troubleshooting.md +1 -1
  289. package/docs/pt/guides/llm-routing.md +1 -1
  290. package/docs/pt/guides/mcp/desktop-commander.md +1 -1
  291. package/docs/pt/guides/mcp/docker-gateway-tutorial.md +1 -1
  292. package/docs/pt/guides/mcp-global-setup.md +1 -1
  293. package/docs/pt/guides/project-status-feature.md +1 -1
  294. package/docs/pt/guides/quality-dashboard.md +1 -1
  295. package/docs/pt/guides/quality-gates.md +1 -1
  296. package/docs/pt/guides/security-hardening.md +2 -2
  297. package/docs/pt/guides/service-discovery.md +19 -22
  298. package/docs/pt/guides/squad-examples/README.md +1 -1
  299. package/docs/pt/guides/squad-migration.md +1 -1
  300. package/docs/pt/guides/squads-guide.md +1 -1
  301. package/docs/pt/guides/squads-overview.md +11 -13
  302. package/docs/pt/guides/template-engine-v2.md +1 -1
  303. package/docs/pt/guides/testing-guide.md +3 -3
  304. package/docs/pt/guides/user-guide.md +30 -26
  305. package/docs/pt/guides/workflows-guide.md +1 -1
  306. package/docs/pt/how-to-contribute-with-pull-requests.md +1 -1
  307. package/docs/pt/ide-integration.md +2 -2
  308. package/docs/pt/installation/README.md +1 -1
  309. package/docs/pt/installation/faq.md +1 -1
  310. package/docs/pt/installation/linux.md +1 -1
  311. package/docs/pt/installation/macos.md +1 -1
  312. package/docs/pt/installation/troubleshooting.md +1 -1
  313. package/docs/pt/installation/v4-quick-start.md +1 -1
  314. package/docs/pt/installation/windows.md +1 -1
  315. package/docs/pt/meta-agent-commands.md +1 -1
  316. package/docs/pt/migration-guide.md +1 -1
  317. package/docs/pt/npx-install.md +1 -1
  318. package/docs/pt/performance-tuning-guide.md +1 -1
  319. package/docs/pt/platforms/claude-code.md +2 -2
  320. package/docs/pt/roadmap.md +2 -2
  321. package/docs/pt/security-best-practices.md +2 -2
  322. package/docs/pt/security.md +1 -1
  323. package/docs/pt/sinapse-nomenclature-specification.md +1 -1
  324. package/docs/pt/troubleshooting.md +1 -1
  325. package/docs/pt/uninstallation.md +1 -1
  326. package/docs/pt/versioning-and-releases.md +1 -1
  327. package/docs/security/overview.md +1 -1
  328. package/docs/security/security-best-practices.md +2 -2
  329. package/docs/sinapse-workflows/README.md +1 -1
  330. package/package.json +2 -1
  331. package/packages/installer/package.json +1 -0
  332. package/packages/installer/src/wizard/feedback.js +18 -2
  333. package/packages/installer/src/wizard/i18n.js +78 -0
  334. package/packages/installer/src/wizard/ide-config-generator.js +14 -9
  335. package/packages/installer/src/wizard/index.js +16 -16
  336. package/packages/installer/src/wizard/validation/report-generator.js +22 -21
  337. package/packages/installer/src/wizard/validation/troubleshooting-system.js +19 -13
  338. package/scripts/gen-agent-badges.js +1 -1
  339. package/scripts/install-chrome-brain.sh +2 -2
  340. package/scripts/package-synapse.js +14 -5
  341. package/scripts/prepare-hooks.js +19 -0
  342. package/scripts/validate-agent-codenames.js +174 -0
  343. package/scripts/validate-all.js +1 -0
  344. package/scripts/validate-no-personal-leaks.js +24 -9
  345. package/sinapse/agents/sinapse-orqx.md +5 -5
  346. package/sinapse/agents/snps-orqx.md +5 -5
  347. package/squads/squad-brand/agents/brand-creative-engineer.md +5 -5
  348. package/squads/squad-brand/squad.yaml +6 -6
  349. package/squads/squad-content/agents/content-engineer.md +7 -7
  350. package/squads/squad-content/squad.yaml +5 -5
  351. package/squads/squad-copy/knowledge-base/consequence-headline-patterns.md +2 -2
  352. package/squads/squad-courses/agents/production-director.md +5 -5
  353. package/squads/squad-courses/squad.yaml +1 -1
  354. package/docs/guides/hooks-two-layers.md +0 -66
@@ -51,6 +51,45 @@ const TRANSLATIONS = {
51
51
  installingDeps: 'Installing dependencies...',
52
52
  configuringEnv: 'Configuring environment...',
53
53
  validating: 'Validating installation...',
54
+ installingGlobalAgents: 'Installing global agent definitions...',
55
+ skippingGlobalAgentsCodex: 'Skipping global Claude agents (Codex-only install)',
56
+ ideSyncDriftWarning: 'IDE sync out of date — run: sinapse doctor --fix',
57
+ entityRegistrySkippedNoDeps:
58
+ 'Core dependencies (.sinapse-ai) not found — skipping entity registry setup',
59
+ generatingBoundaryRules: 'Generating boundary rules...',
60
+ copyingSkills: 'Copying skills...',
61
+ copyingExtraCommands: 'Copying extra commands...',
62
+ runningIdeSync: 'Running IDE sync...',
63
+ runningCodexSync: 'Running Codex local-first sync...',
64
+ bootstrappingEntityRegistry: 'Setting up entity registry...',
65
+ installingLlmRouting: 'Installing LLM routing commands...',
66
+ dependencyInstallation: 'Dependency installation...',
67
+
68
+ // Validation report (AF-20260629 — i18n migration)
69
+ reportTitle: 'Installation Validation Report',
70
+ reportIdeConfig: 'IDE Configuration',
71
+ reportEnvConfig: 'Environment Configuration',
72
+ reportCoreConfig: 'Core Configuration',
73
+ reportMcpConfig: 'MCP Configuration',
74
+ reportMcpInstallation: 'MCP Installation',
75
+ reportMcpHealthy: 'healthy',
76
+ reportMcpWarnings: 'warnings',
77
+ reportMcpFailed: 'failed',
78
+ reportMcpsNotInstalled: 'MCPs not installed (skipped)',
79
+ reportDependencies: 'Dependencies',
80
+ reportChecksPassed: '{passed}/{total} checks passed',
81
+ reportWarnings: 'Warnings ({count}):',
82
+ reportErrors: 'Errors ({count}):',
83
+ reportSolution: 'Solution: {solution}',
84
+ reportNextSteps: 'Next Steps:',
85
+ reportNextStep1: '1. Review the errors above',
86
+ reportNextStep2: '2. Fix the critical issues',
87
+ reportNextStep3: '3. Re-run the installation: npx sinapse-ai@latest install',
88
+ reportOverallStatus: 'Overall Status',
89
+ reportAllPassed: 'All checks passed!',
90
+ reportPartialSuccess: 'PARTIAL SUCCESS ({count} issue(s) to review)',
91
+ reportFailedStatus: 'FAILED ({count} error(s))',
92
+ reportUnknownStatus: 'UNKNOWN',
54
93
 
55
94
  // Status
56
95
  success: 'Success',
@@ -134,6 +173,45 @@ const TRANSLATIONS = {
134
173
  installingDeps: 'Instalando dependências...',
135
174
  configuringEnv: 'Configurando ambiente...',
136
175
  validating: 'Validando instalação...',
176
+ installingGlobalAgents: 'Instalando definições globais de agentes...',
177
+ skippingGlobalAgentsCodex: 'Pulando agentes globais do Claude (instalação somente Codex)',
178
+ ideSyncDriftWarning: 'Sincronização de IDE desatualizada — rode: sinapse doctor --fix',
179
+ entityRegistrySkippedNoDeps:
180
+ 'Dependências do núcleo (.sinapse-ai) não encontradas — pulando o registro de entidades',
181
+ generatingBoundaryRules: 'Gerando regras de proteção...',
182
+ copyingSkills: 'Copiando skills...',
183
+ copyingExtraCommands: 'Copiando comandos extras...',
184
+ runningIdeSync: 'Sincronizando IDEs...',
185
+ runningCodexSync: 'Sincronizando Codex (local-first)...',
186
+ bootstrappingEntityRegistry: 'Preparando o registro de entidades...',
187
+ installingLlmRouting: 'Instalando comandos de roteamento de LLM...',
188
+ dependencyInstallation: 'Instalação de dependências...',
189
+
190
+ // Validation report (AF-20260629 — i18n migration)
191
+ reportTitle: 'Relatório de Validação da Instalação',
192
+ reportIdeConfig: 'Configuração de IDE',
193
+ reportEnvConfig: 'Configuração de Ambiente',
194
+ reportCoreConfig: 'Configuração do Núcleo',
195
+ reportMcpConfig: 'Configuração de MCP',
196
+ reportMcpInstallation: 'Instalação de MCP',
197
+ reportMcpHealthy: 'saudáveis',
198
+ reportMcpWarnings: 'avisos',
199
+ reportMcpFailed: 'falharam',
200
+ reportMcpsNotInstalled: 'MCPs não instalados (pulado)',
201
+ reportDependencies: 'Dependências',
202
+ reportChecksPassed: '{passed}/{total} verificações OK',
203
+ reportWarnings: 'Avisos ({count}):',
204
+ reportErrors: 'Erros ({count}):',
205
+ reportSolution: 'Solução: {solution}',
206
+ reportNextSteps: 'Próximos Passos:',
207
+ reportNextStep1: '1. Revise os erros acima',
208
+ reportNextStep2: '2. Corrija os problemas críticos',
209
+ reportNextStep3: '3. Rode a instalação novamente: npx sinapse-ai@latest install',
210
+ reportOverallStatus: 'Status Geral',
211
+ reportAllPassed: 'Todas as verificações passaram!',
212
+ reportPartialSuccess: 'SUCESSO PARCIAL ({count} ponto(s) a revisar)',
213
+ reportFailedStatus: 'FALHOU ({count} erro(s))',
214
+ reportUnknownStatus: 'DESCONHECIDO',
137
215
 
138
216
  // Status
139
217
  success: 'Sucesso',
@@ -11,7 +11,10 @@ const fs = require('fs-extra');
11
11
  const path = require('path');
12
12
  const yaml = require('js-yaml');
13
13
  const ora = require('ora');
14
- const { spawnSync } = require('child_process');
14
+ // cross-spawn resolves gemini's Windows .cmd/.ps1 shim WITHOUT a shell and
15
+ // escapes argv properly (CVE-2024-27980), so a path with spaces in extensionDir
16
+ // stays intact — shell:true would split it and break the link silently.
17
+ const crossSpawn = require('cross-spawn');
15
18
  const { getIDEConfig } = require('../config/ide-configs');
16
19
  const { validateProjectName } = require('./validators');
17
20
  const { getMergeStrategy, hasMergeStrategy } = require('../merger/index.js');
@@ -539,6 +542,7 @@ async function copyClaudeHooksFolder(projectRoot) {
539
542
  'enforce-architecture-first.cjs',
540
543
  'enforce-delegation.cjs',
541
544
  'enforce-story-gate.cjs',
545
+ 'doc-first-gate.cjs',
542
546
  'enforce-framework-boundary.cjs',
543
547
  'secret-scanning.cjs',
544
548
  'write-path-validation.cjs',
@@ -603,6 +607,11 @@ const HOOK_EVENT_MAP = {
603
607
  matcher: 'Write|Edit',
604
608
  timeout: 5,
605
609
  },
610
+ 'doc-first-gate.cjs': {
611
+ event: 'PreToolUse',
612
+ matcher: 'Write|Edit',
613
+ timeout: 5,
614
+ },
606
615
  // Boundary L1-L4 — protects untouchable framework core when
607
616
  // boundary.frameworkProtection=true (read dynamically from core-config.yaml).
608
617
  'enforce-framework-boundary.cjs': {
@@ -931,19 +940,17 @@ async function linkGeminiExtension(projectRoot) {
931
940
 
932
941
  // On Windows, `gemini` is a .cmd/.ps1 shim — spawnSync without a shell throws
933
942
  // EINVAL. Run through the shell on win32 so the shim resolves.
934
- const versionCheck = spawnSync('gemini', ['--version'], {
943
+ const versionCheck = crossSpawn.sync('gemini', ['--version'], {
935
944
  encoding: 'utf8',
936
- shell: process.platform === 'win32',
937
945
  });
938
946
  if (versionCheck.status !== 0) {
939
947
  return { status: 'skipped', reason: 'gemini-cli-not-available' };
940
948
  }
941
949
 
942
- let linkResult = spawnSync('gemini', ['extensions', 'link', extensionDir, '--consent'], {
950
+ let linkResult = crossSpawn.sync('gemini', ['extensions', 'link', extensionDir, '--consent'], {
943
951
  cwd: projectRoot,
944
952
  encoding: 'utf8',
945
953
  timeout: 30000,
946
- shell: process.platform === 'win32',
947
954
  });
948
955
 
949
956
  if (linkResult.status === 0) {
@@ -954,22 +961,20 @@ async function linkGeminiExtension(projectRoot) {
954
961
 
955
962
  // When already installed, perform idempotent relink.
956
963
  if (output.includes('already installed')) {
957
- const uninstall = spawnSync('gemini', ['extensions', 'uninstall', 'sinapse'], {
964
+ const uninstall = crossSpawn.sync('gemini', ['extensions', 'uninstall', 'sinapse'], {
958
965
  cwd: projectRoot,
959
966
  encoding: 'utf8',
960
967
  timeout: 30000,
961
- shell: process.platform === 'win32',
962
968
  });
963
969
 
964
970
  if (uninstall.status !== 0) {
965
971
  return { status: 'skipped', reason: 'uninstall-failed' };
966
972
  }
967
973
 
968
- linkResult = spawnSync('gemini', ['extensions', 'link', extensionDir, '--consent'], {
974
+ linkResult = crossSpawn.sync('gemini', ['extensions', 'link', extensionDir, '--consent'], {
969
975
  cwd: projectRoot,
970
976
  encoding: 'utf8',
971
977
  timeout: 30000,
972
- shell: process.platform === 'win32',
973
978
  });
974
979
 
975
980
  if (linkResult.status === 0) {
@@ -503,7 +503,7 @@ async function runWizard(options = {}) {
503
503
  }
504
504
 
505
505
  // Story 1.4: Install SINAPSE core framework (agents, tasks, workflows, templates)
506
- console.log('\n📦 Installing SINAPSE core framework...');
506
+ console.log('\n📦 ' + t('installingCore'));
507
507
  let sinapseCoreResult = null;
508
508
  try {
509
509
  sinapseCoreResult = await installSinapseCore({
@@ -530,7 +530,7 @@ async function runWizard(options = {}) {
530
530
  // Install global orqx agent definitions to ~/.claude/agents/ (only for Claude Code)
531
531
  const selectedLLM = answers.selectedLLM || 'claude-code';
532
532
  if (selectedLLM === 'claude-code' || selectedLLM === 'both') {
533
- console.log('\n🤖 Installing global agent definitions...');
533
+ console.log('\n🤖 ' + t('installingGlobalAgents'));
534
534
  try {
535
535
  const globalAgentsResult = await installGlobalAgents();
536
536
  if (globalAgentsResult.success) {
@@ -546,7 +546,7 @@ async function runWizard(options = {}) {
546
546
  answers.globalAgentsInstalled = 0;
547
547
  }
548
548
  } else {
549
- console.log('\n🤖 Skipping global Claude agents (Codex-only install)');
549
+ console.log('\n🤖 ' + t('skippingGlobalAgentsCodex'));
550
550
  answers.globalAgentsInstalled = 0;
551
551
  }
552
552
 
@@ -681,7 +681,7 @@ async function runWizard(options = {}) {
681
681
  }
682
682
 
683
683
  // Story INS-4.3: Wire settings.json boundary generator after .sinapse-ai/ copy
684
- console.log('\n🔒 Generating boundary rules...');
684
+ console.log('\n🔒 ' + t('generatingBoundaryRules'));
685
685
  try {
686
686
  const settingsGenerator = require('../../../../.sinapse-ai/infrastructure/scripts/generate-settings-json');
687
687
  settingsGenerator.generate(process.cwd());
@@ -697,7 +697,7 @@ async function runWizard(options = {}) {
697
697
  }
698
698
 
699
699
  // Story INS-4.3: Copy skills (Gap #11)
700
- console.log('\n📚 Copying skills...');
700
+ console.log('\n📚 ' + t('copyingSkills'));
701
701
  try {
702
702
  const skillsResult = await copySkillFiles(process.cwd());
703
703
  if (skillsResult.skipped) {
@@ -713,7 +713,7 @@ async function runWizard(options = {}) {
713
713
  }
714
714
 
715
715
  // Story INS-4.3: Copy extra commands (Gap #12)
716
- console.log('\n📋 Copying extra commands...');
716
+ console.log('\n📋 ' + t('copyingExtraCommands'));
717
717
  try {
718
718
  const commandsResult = await copyExtraCommandFiles(process.cwd());
719
719
  if (commandsResult.skipped) {
@@ -729,7 +729,7 @@ async function runWizard(options = {}) {
729
729
  }
730
730
 
731
731
  // Story INS-4.5: IDE Sync — transform agents/skills/commands for each configured IDE
732
- console.log('\n🔄 Running IDE sync...');
732
+ console.log('\n🔄 ' + t('runningIdeSync'));
733
733
  const targetProjectRoot = process.cwd();
734
734
  const savedCwd = process.cwd();
735
735
  try {
@@ -750,7 +750,7 @@ async function runWizard(options = {}) {
750
750
  console.log = _origLog;
751
751
  }
752
752
  if (answers.ideSyncValidation === 'drift') {
753
- console.warn('⚠️ IDE sync validation: drift detected — run \'sinapse doctor --fix\' post-install');
753
+ console.warn('⚠️ ' + t('ideSyncDriftWarning'));
754
754
  }
755
755
  } catch (syncError) {
756
756
  console.warn(`⚠️ IDE sync failed: ${syncError.message} — run 'sinapse doctor --fix' post-install`);
@@ -765,7 +765,7 @@ async function runWizard(options = {}) {
765
765
  // source (the static .codex payload — scripts/tasks/JSONs — was already
766
766
  // copied by installSinapseCore when Codex was selected). Codex installs only.
767
767
  if (selectedLLM === 'codex' || selectedLLM === 'both') {
768
- console.log('\n🔄 Running Codex local-first sync...');
768
+ console.log('\n🔄 ' + t('runningCodexSync'));
769
769
  const savedCwdCodex = process.cwd();
770
770
  try {
771
771
  const { syncCodexLocalFirst } = require('../../../../.sinapse-ai/infrastructure/scripts/sync-codex-local-first');
@@ -786,14 +786,14 @@ async function runWizard(options = {}) {
786
786
  // Story INS-4.12: Fix module resolution + bootstrap timing
787
787
  // Bootstrap runs AFTER .sinapse-ai deps are installed (sinapse-ai-installer.js:324-345)
788
788
  // NODE_PATH ensures spawned scripts can resolve packages from .sinapse-ai/node_modules/
789
- console.log('\n📇 Bootstrapping entity registry...');
789
+ console.log('\n📇 ' + t('bootstrappingEntityRegistry'));
790
790
  try {
791
791
  const registryScript = path.join(process.cwd(), '.sinapse-ai', 'development', 'scripts', 'populate-entity-registry.js');
792
792
  if (fse.existsSync(registryScript)) {
793
793
  // INS-4.12 AC3: Guard — skip bootstrap if .sinapse-ai deps are not installed
794
794
  const sinapseCoreNodeModules = path.join(process.cwd(), '.sinapse-ai', 'node_modules');
795
795
  if (!fse.existsSync(sinapseCoreNodeModules)) {
796
- console.warn('⚠️ .sinapse-ai/node_modules/ not found — skipping entity registry bootstrap');
796
+ console.warn('⚠️ ' + t('entityRegistrySkippedNoDeps'));
797
797
  console.warn(' Run: cd .sinapse-ai && npm install --production');
798
798
  answers.entityRegistryStatus = 'skipped-no-deps';
799
799
  } else {
@@ -834,7 +834,7 @@ async function runWizard(options = {}) {
834
834
  }
835
835
 
836
836
  // Story 1.6: Environment Configuration
837
- console.log('\n📝 Configuring environment...');
837
+ console.log('\n📝 ' + t('configuringEnv'));
838
838
 
839
839
  try {
840
840
  const envResult = await configureEnvironment({
@@ -901,7 +901,7 @@ async function runWizard(options = {}) {
901
901
 
902
902
  if (!packageJsonExists) {
903
903
  // Greenfield project - no package.json, skip dependency installation
904
- console.log('\n📦 Dependency installation...');
904
+ console.log('\n📦 ' + t('dependencyInstallation'));
905
905
  console.log(' ℹ️ No package.json found (greenfield project)');
906
906
  console.log(' 💡 Dependencies will be installed when you add a package.json');
907
907
  answers.depsInstalled = true; // Mark as success since there's nothing to install
@@ -909,7 +909,7 @@ async function runWizard(options = {}) {
909
909
  answers.packageManager = detectPackageManager();
910
910
  } else {
911
911
  // Brownfield project or existing project - has package.json
912
- console.log('\n📦 Installing dependencies...');
912
+ console.log('\n📦 ' + t('installingDeps'));
913
913
 
914
914
  // Auto-detect package manager (no longer asked as question)
915
915
  const detectedPM = detectPackageManager();
@@ -1015,7 +1015,7 @@ async function runWizard(options = {}) {
1015
1015
  // }
1016
1016
 
1017
1017
  // Story 6.7: LLM Routing Installation
1018
- console.log('\nInstalling LLM Routing commands...');
1018
+ console.log('\n' + t('installingLlmRouting'));
1019
1019
  try {
1020
1020
  // Check if already installed
1021
1021
  if (isLLMRoutingInstalled()) {
@@ -1052,7 +1052,7 @@ async function runWizard(options = {}) {
1052
1052
  answers.proInstalled = false;
1053
1053
 
1054
1054
  // Story 1.8: Installation Validation
1055
- console.log('\n🔍 Validating installation...\n');
1055
+ console.log('\n🔍 ' + t('validating') + '\n');
1056
1056
 
1057
1057
  try {
1058
1058
  const validation = await validateInstallation(
@@ -6,6 +6,7 @@
6
6
  */
7
7
 
8
8
  const chalk = require('chalk');
9
+ const { t, tf } = require('../i18n');
9
10
 
10
11
  /**
11
12
  * Generate formatted validation report
@@ -19,18 +20,18 @@ async function generateReport(validationResults) {
19
20
  // Header
20
21
  lines.push('');
21
22
  lines.push(chalk.bold.cyan('═══════════════════════════════════════════════'));
22
- lines.push(chalk.bold.cyan('🔍 Installation Validation Report'));
23
+ lines.push(chalk.bold.cyan('🔍 ' + t('reportTitle')));
23
24
  lines.push(chalk.bold.cyan('═══════════════════════════════════════════════'));
24
25
  lines.push('');
25
26
 
26
27
  // File Structure Section
27
28
  if (validationResults.components.files) {
28
29
  const fileResults = validationResults.components.files;
29
- lines.push(formatComponentSection('IDE Configuration', fileResults, 'IDE Config'));
30
- lines.push(formatComponentSection('Environment Configuration', fileResults, 'Environment'));
31
- lines.push(formatComponentSection('Core Configuration', fileResults, 'Core Config'));
30
+ lines.push(formatComponentSection(t('reportIdeConfig'), fileResults, 'IDE Config'));
31
+ lines.push(formatComponentSection(t('reportEnvConfig'), fileResults, 'Environment'));
32
+ lines.push(formatComponentSection(t('reportCoreConfig'), fileResults, 'Core Config'));
32
33
  if (fileResults.checks.some((c) => c.component === 'MCP Config')) {
33
- lines.push(formatComponentSection('MCP Configuration', fileResults, 'MCP Config'));
34
+ lines.push(formatComponentSection(t('reportMcpConfig'), fileResults, 'MCP Config'));
34
35
  }
35
36
  }
36
37
 
@@ -56,11 +57,11 @@ async function generateReport(validationResults) {
56
57
  );
57
58
  if (importantWarnings.length > 0) {
58
59
  lines.push('');
59
- lines.push(chalk.bold.yellow(`⚠️ Warnings (${importantWarnings.length}):`));
60
+ lines.push(chalk.bold.yellow('⚠️ ' + tf('reportWarnings', { count: importantWarnings.length })));
60
61
  importantWarnings.forEach((warning) => {
61
62
  lines.push(chalk.yellow(` - ${warning.message}`));
62
63
  if (warning.solution) {
63
- lines.push(chalk.dim(` Solution: ${warning.solution}`));
64
+ lines.push(chalk.dim(' ' + tf('reportSolution', { solution: warning.solution })));
64
65
  }
65
66
  });
66
67
  }
@@ -68,11 +69,11 @@ async function generateReport(validationResults) {
68
69
  // Errors Section
69
70
  if (validationResults.errors.length > 0) {
70
71
  lines.push('');
71
- lines.push(chalk.bold.red(`❌ Errors (${validationResults.errors.length}):`));
72
+ lines.push(chalk.bold.red('❌ ' + tf('reportErrors', { count: validationResults.errors.length })));
72
73
  validationResults.errors.forEach((error) => {
73
74
  lines.push(chalk.red(` - ${error.message}`));
74
75
  if (error.solution) {
75
- lines.push(chalk.dim(` Solution: ${error.solution}`));
76
+ lines.push(chalk.dim(' ' + tf('reportSolution', { solution: error.solution })));
76
77
  }
77
78
  });
78
79
  }
@@ -83,10 +84,10 @@ async function generateReport(validationResults) {
83
84
  validationResults.overallStatus === 'failed'
84
85
  ) {
85
86
  lines.push('');
86
- lines.push(chalk.bold.red('❌ Next Steps:'));
87
- lines.push(chalk.red(' 1. Review errors above'));
88
- lines.push(chalk.red(' 2. Fix critical issues'));
89
- lines.push(chalk.red(' 3. Re-run installation: npx @caioimori/sinapse@latest init'));
87
+ lines.push(chalk.bold.red('❌ ' + t('reportNextSteps')));
88
+ lines.push(chalk.red(' ' + t('reportNextStep1')));
89
+ lines.push(chalk.red(' ' + t('reportNextStep2')));
90
+ lines.push(chalk.red(' ' + t('reportNextStep3')));
90
91
  }
91
92
  // Success cases show completion message in showCompletion()
92
93
 
@@ -109,7 +110,7 @@ function formatComponentSection(title, componentResults, componentName) {
109
110
  const allSuccess = passed === total;
110
111
  const icon = allSuccess ? chalk.green('✅') : chalk.yellow('⚠️');
111
112
 
112
- const lines = [`${icon} ${chalk.bold(title)}: ${passed}/${total} checks passed`];
113
+ const lines = [`${icon} ${chalk.bold(title)}: ${tf('reportChecksPassed', { passed, total })}`];
113
114
 
114
115
  // Only show individual checks if there are failures
115
116
  if (!allSuccess) {
@@ -134,7 +135,7 @@ function formatMCPSection(mcpResults) {
134
135
  const healthChecks = mcpResults.healthChecks;
135
136
 
136
137
  if (!healthChecks || healthChecks.length === 0) {
137
- return chalk.dim(' MCPs not installed (skipped)\n');
138
+ return chalk.dim(' ' + t('reportMcpsNotInstalled') + '\n');
138
139
  }
139
140
 
140
141
  const totalMCPs = healthChecks.length;
@@ -150,7 +151,7 @@ function formatMCPSection(mcpResults) {
150
151
  : chalk.red('❌');
151
152
 
152
153
  const lines = [
153
- `${icon} ${chalk.bold('MCP Installation')} (${healthyMCPs}/${totalMCPs} healthy${warningMCPs > 0 ? `, ${warningMCPs} warnings` : ''}${failedMCPs > 0 ? `, ${failedMCPs} failed` : ''})`,
154
+ `${icon} ${chalk.bold(t('reportMcpInstallation'))} (${healthyMCPs}/${totalMCPs} ${t('reportMcpHealthy')}${warningMCPs > 0 ? `, ${warningMCPs} ${t('reportMcpWarnings')}` : ''}${failedMCPs > 0 ? `, ${failedMCPs} ${t('reportMcpFailed')}` : ''})`,
154
155
  ];
155
156
 
156
157
  healthChecks.forEach((health) => {
@@ -198,7 +199,7 @@ function formatDependenciesSection(depsResults) {
198
199
  );
199
200
  const icon = allSuccess ? chalk.green('✅') : chalk.yellow('⚠️');
200
201
 
201
- const lines = [`${icon} ${chalk.bold('Dependencies')}`];
202
+ const lines = [`${icon} ${chalk.bold(t('reportDependencies'))}`];
202
203
 
203
204
  depsResults.checks.forEach((check) => {
204
205
  let statusIcon, statusText;
@@ -237,20 +238,20 @@ function formatOverallStatus(validationResults) {
237
238
  case 'success':
238
239
  case 'warning':
239
240
  // Treat warnings as success - they're just informational
240
- return chalk.bold.green('Overall Status: ✅ All checks passed!');
241
+ return chalk.bold.green(`${t('reportOverallStatus')}: ✅ ${t('reportAllPassed')}`);
241
242
 
242
243
  case 'partial':
243
244
  return chalk.bold.yellow(
244
- `Overall Status: ⚠️ PARTIAL SUCCESS (${errorCount} issue${errorCount !== 1 ? 's' : ''} to review)`,
245
+ `${t('reportOverallStatus')}: ⚠️ ${tf('reportPartialSuccess', { count: errorCount })}`,
245
246
  );
246
247
 
247
248
  case 'failed':
248
249
  return chalk.bold.red(
249
- `Overall Status: ❌ FAILED (${errorCount} error${errorCount !== 1 ? 's' : ''})`,
250
+ `${t('reportOverallStatus')}: ❌ ${tf('reportFailedStatus', { count: errorCount })}`,
250
251
  );
251
252
 
252
253
  default:
253
- return chalk.bold.gray('Overall Status: ❓ UNKNOWN');
254
+ return chalk.bold.gray(`${t('reportOverallStatus')}: ❓ ${t('reportUnknownStatus')}`);
254
255
  }
255
256
  }
256
257
 
@@ -8,6 +8,12 @@
8
8
  const chalk = require('chalk');
9
9
  const inquirer = require('inquirer');
10
10
 
11
+ // Canonical repo + docs locations. The legacy `docs.SinapseAI.com` domain never
12
+ // existed; every help link points at real, shipped docs in the GitHub repo
13
+ // (see package.json "bugs"/"repository").
14
+ const REPO_URL = 'https://github.com/caioimori/sinapse-ai';
15
+ const DOCS_BASE = `${REPO_URL}/blob/main/docs`;
16
+
11
17
  /**
12
18
  * Troubleshooting database
13
19
  * Maps error codes to detailed troubleshooting information
@@ -21,11 +27,11 @@ const TROUBLESHOOTING_DATABASE = {
21
27
  '.env accidentally deleted',
22
28
  ],
23
29
  solutions: [
24
- 'Re-run wizard: npx @caioimori/sinapse@latest init',
30
+ 'Re-run wizard: npx sinapse-ai@latest install',
25
31
  'Manually create .env from template: cp .env.example .env',
26
32
  'Check file permissions in project directory',
27
33
  ],
28
- docs: 'https://docs.SinapseAI.com/installation/environment',
34
+ docs: `${DOCS_BASE}/installation/troubleshooting.md`,
29
35
  priority: 'critical',
30
36
  },
31
37
 
@@ -37,11 +43,11 @@ const TROUBLESHOOTING_DATABASE = {
37
43
  'File creation failed',
38
44
  ],
39
45
  solutions: [
40
- 'Re-run wizard: npx @caioimori/sinapse@latest init',
46
+ 'Re-run wizard: npx sinapse-ai@latest install',
41
47
  'Check .sinapse-ai directory exists',
42
48
  'Manually create from template',
43
49
  ],
44
- docs: 'https://docs.SinapseAI.com/configuration/core-config',
50
+ docs: `${DOCS_BASE}/troubleshooting.md`,
45
51
  priority: 'high',
46
52
  },
47
53
 
@@ -60,7 +66,7 @@ const TROUBLESHOOTING_DATABASE = {
60
66
  'Check MCP service status',
61
67
  'Verify npx can access package: npx -y [package-name] --version',
62
68
  ],
63
- docs: 'https://docs.SinapseAI.com/mcps/troubleshooting',
69
+ docs: `${DOCS_BASE}/troubleshooting.md`,
64
70
  priority: 'medium',
65
71
  },
66
72
 
@@ -79,7 +85,7 @@ const TROUBLESHOOTING_DATABASE = {
79
85
  'Configure API keys in .env',
80
86
  'Delete .mcp.json and reinstall',
81
87
  ],
82
- docs: 'https://docs.SinapseAI.com/mcps/troubleshooting',
88
+ docs: `${DOCS_BASE}/troubleshooting.md`,
83
89
  priority: 'high',
84
90
  },
85
91
 
@@ -95,7 +101,7 @@ const TROUBLESHOOTING_DATABASE = {
95
101
  'Copy from template: .env, node_modules, *.key, *.pem',
96
102
  'Initialize git if needed: git init',
97
103
  ],
98
- docs: 'https://docs.SinapseAI.com/security/gitignore',
104
+ docs: `${DOCS_BASE}/security/security-best-practices.md`,
99
105
  priority: 'high',
100
106
  },
101
107
 
@@ -114,7 +120,7 @@ const TROUBLESHOOTING_DATABASE = {
114
120
  'Try different package manager: yarn or pnpm',
115
121
  'Check disk space: df -h (Unix) or dir (Windows)',
116
122
  ],
117
- docs: 'https://docs.SinapseAI.com/installation/dependencies',
123
+ docs: `${DOCS_BASE}/installation/troubleshooting.md`,
118
124
  priority: 'critical',
119
125
  },
120
126
 
@@ -131,7 +137,7 @@ const TROUBLESHOOTING_DATABASE = {
131
137
  'Reinstall: npm install',
132
138
  'Try clean install: npm ci',
133
139
  ],
134
- docs: 'https://docs.SinapseAI.com/installation/dependencies',
140
+ docs: `${DOCS_BASE}/installation/troubleshooting.md`,
135
141
  priority: 'high',
136
142
  },
137
143
 
@@ -161,7 +167,7 @@ const TROUBLESHOOTING_DATABASE = {
161
167
  'Run: chmod 600 .env',
162
168
  'Verify: ls -la .env',
163
169
  ],
164
- docs: 'https://docs.SinapseAI.com/security/file-permissions',
170
+ docs: `${DOCS_BASE}/security/security-best-practices.md`,
165
171
  priority: 'medium',
166
172
  },
167
173
  };
@@ -244,15 +250,15 @@ async function offerTroubleshooting(errors) {
244
250
  if (openDocs) {
245
251
  console.log('');
246
252
  console.log(chalk.green('📚 Documentation:'));
247
- console.log(chalk.green(' https://docs.SinapseAI.com/troubleshooting'));
253
+ console.log(chalk.green(` ${DOCS_BASE}/troubleshooting.md`));
248
254
  console.log('');
249
255
  }
250
256
 
251
257
  // Offer support contact
252
258
  console.log('');
253
259
  console.log(chalk.bold('💬 Need Help?'));
254
- console.log(chalk.dim(' - GitHub Issues: https://github.com/caioimori/sinapse/issues'));
255
- console.log(chalk.dim(' - Documentation: https://docs.SinapseAI.com'));
260
+ console.log(chalk.dim(` - GitHub Issues: ${REPO_URL}/issues`));
261
+ console.log(chalk.dim(` - Documentation: ${DOCS_BASE}/troubleshooting.md`));
256
262
  console.log('');
257
263
  }
258
264
 
@@ -71,7 +71,7 @@ for (const line of fs.readFileSync(MANIFEST, 'utf8').split('\n')) {
71
71
  }
72
72
 
73
73
  let squadDirs = [];
74
- try { squadDirs = fs.readdirSync(SQUADS_DIR).filter((d) => fs.statSync(path.join(SQUADS_DIR, d)).isDirectory()); } catch {}
74
+ try { squadDirs = fs.readdirSync(SQUADS_DIR).filter((d) => fs.statSync(path.join(SQUADS_DIR, d)).isDirectory()); } catch { /* SQUADS_DIR absent — no squads to badge */ }
75
75
  for (const squad of squadDirs) {
76
76
  const dir = path.join(SQUADS_DIR, squad, 'agents');
77
77
  let files = [];
@@ -504,8 +504,8 @@ Nao precisa rodar `chrome-debug` manualmente.
504
504
  3. Testar em nova aba → comparar com original → iterar
505
505
 
506
506
  **Casos validados:**
507
- - itsoffbrand.com hero (orb WebGL, parallax, blend-mode) — 15min
508
- - sinapse.club face 3D (Three.js r183, WaltHead.obj, bloom) — 20min
507
+ - Hero com orb WebGL (parallax, blend-mode) — ~15min
508
+ - Cena 3D facial (Three.js, modelo .obj, bloom) — ~20min
509
509
 
510
510
  ### Animacoes 3D via AI
511
511
 
@@ -150,11 +150,20 @@ function main() {
150
150
  if (fs.existsSync(zipPath)) fs.unlinkSync(zipPath);
151
151
 
152
152
  try {
153
- // Use PowerShell Compress-Archive on Windows
154
- execFileSync('powershell', [
155
- '-Command',
156
- `Compress-Archive -Path '${OUT_DIR}\\*' -DestinationPath '${zipPath}' -Force`,
157
- ], { stdio: 'inherit' });
153
+ if (process.platform === 'win32') {
154
+ // PowerShell Compress-Archive on Windows
155
+ execFileSync('powershell', [
156
+ '-Command',
157
+ `Compress-Archive -Path '${OUT_DIR}${path.sep}*' -DestinationPath '${zipPath}' -Force`,
158
+ ], { stdio: 'inherit' });
159
+ } else {
160
+ // `zip` is standard on macOS and most Linux; the surrounding catch degrades
161
+ // gracefully (keeps the unzipped dir) if it is not installed.
162
+ execFileSync('zip', ['-r', '-q', zipPath, path.basename(OUT_DIR)], {
163
+ cwd: path.dirname(OUT_DIR),
164
+ stdio: 'inherit',
165
+ });
166
+ }
158
167
  console.log(`\nZIP created: ${ZIP_NAME}`);
159
168
  console.log(`Size: ${(fs.statSync(zipPath).size / 1024).toFixed(1)} KB`);
160
169
  } catch (err) {
@@ -56,3 +56,22 @@ const managedReady = fs.existsSync(path.join(projectRoot, managedDir, 'pre-commi
56
56
  if (inGitWorkTree && managedReady) {
57
57
  runDirect('git', ['config', 'core.hooksPath', managedDir]);
58
58
  }
59
+
60
+ // 3. On Unix, ensure the managed hook entrypoints are executable. Git SILENTLY
61
+ // ignores hooks that lack the +x bit, so without this the SINAPSE guards
62
+ // (secret scan, SQL guard, protected-files) would not run on macOS/Linux —
63
+ // they would only fire on Windows (which ignores the bit entirely). The
64
+ // tracked git mode is already 100755, but a Windows-side `npm pack` or a
65
+ // permissive checkout can drop it; this makes the executable bit deterministic.
66
+ if (managedReady && !onWindows) {
67
+ for (const hook of ['pre-commit', 'pre-push', 'post-commit']) {
68
+ const hookPath = path.join(projectRoot, managedDir, hook);
69
+ try {
70
+ if (fs.existsSync(hookPath)) {
71
+ fs.chmodSync(hookPath, 0o755);
72
+ }
73
+ } catch {
74
+ // best-effort — never break `npm install` over a chmod
75
+ }
76
+ }
77
+ }