sinapse-ai 9.3.0 → 9.5.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 (432) hide show
  1. package/.claude/CLAUDE.md +60 -341
  2. package/.claude/hooks/enforce-architecture-first.py +197 -197
  3. package/.claude/hooks/enforce-git-push-authority.sh +25 -4
  4. package/.claude/hooks/mind-clone-governance.py +193 -193
  5. package/.claude/hooks/read-protection.py +152 -152
  6. package/.claude/hooks/sql-governance.py +183 -183
  7. package/.claude/hooks/verify-packages.cjs +83 -0
  8. package/.claude/hooks/write-path-validation.py +195 -195
  9. package/.claude/rules/agent-authority.md +6 -0
  10. package/.claude/rules/agent-handoff.md +5 -0
  11. package/.claude/rules/cross-squad-routing.md +5 -0
  12. package/.claude/rules/hook-governance.md +7 -0
  13. package/.claude/rules/mandatory-delegation.md +24 -0
  14. package/.claude/rules/mcp-usage.md +3 -1
  15. package/.claude/rules/project-intelligence.md +63 -0
  16. package/.claude/rules/response-format.md +4 -0
  17. package/.claude/rules/safe-collaboration.md +14 -2
  18. package/.claude/rules/security-data-protection.md +27 -0
  19. package/.claude/rules/squad-awareness.md +96 -68
  20. package/.claude/rules/token-economy.md +148 -0
  21. package/.claude/rules/tool-examples.md +6 -0
  22. package/.claude/rules/workflow-execution.md +7 -0
  23. package/.codex/agents/analyst.md +342 -71
  24. package/.codex/agents/architect.md +533 -68
  25. package/.codex/agents/data-engineer.md +530 -106
  26. package/.codex/agents/developer.md +657 -0
  27. package/.codex/agents/devops.md +639 -69
  28. package/.codex/agents/product-lead.md +362 -0
  29. package/.codex/agents/project-lead.md +405 -0
  30. package/.codex/agents/quality-gate.md +538 -0
  31. package/.codex/agents/sinapse-orqx.md +9 -7
  32. package/.codex/agents/sprint-lead.md +315 -0
  33. package/.codex/agents/squad-creator.md +402 -0
  34. package/.codex/agents/ux-design-expert.md +523 -0
  35. package/.codex/delegation-matrix.json +756 -44
  36. package/.codex/handoff-packet.schema.json +30 -6
  37. package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
  38. package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
  39. package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
  40. package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
  41. package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
  42. package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
  43. package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
  44. package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
  45. package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
  46. package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
  47. package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
  48. package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
  49. package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
  50. package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
  51. package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
  52. package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
  53. package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
  54. package/.sinapse-ai/core/doctor/index.js +157 -50
  55. package/.sinapse-ai/core/ids/registry-updater.js +6 -1
  56. package/.sinapse-ai/core/logger/index.js +319 -0
  57. package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
  58. package/.sinapse-ai/core/telemetry/index.js +247 -0
  59. package/.sinapse-ai/data/entity-registry.yaml +1060 -808
  60. package/.sinapse-ai/development/agents/analyst.md +90 -0
  61. package/.sinapse-ai/development/agents/architect.md +78 -0
  62. package/.sinapse-ai/development/agents/data-engineer.md +38 -0
  63. package/.sinapse-ai/development/agents/developer.md +97 -0
  64. package/.sinapse-ai/development/agents/devops.md +121 -0
  65. package/.sinapse-ai/development/agents/product-lead.md +27 -0
  66. package/.sinapse-ai/development/agents/project-lead.md +28 -0
  67. package/.sinapse-ai/development/agents/quality-gate.md +89 -0
  68. package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
  69. package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
  70. package/.sinapse-ai/development/agents/squad-creator.md +58 -0
  71. package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
  72. package/.sinapse-ai/development/checklists/agent-quality-gate.md +27 -0
  73. package/.sinapse-ai/development/checklists/brownfield-compatibility-checklist.md +20 -0
  74. package/.sinapse-ai/development/checklists/code-review-checklist.md +106 -0
  75. package/.sinapse-ai/development/checklists/issue-triage-checklist.md +9 -0
  76. package/.sinapse-ai/development/checklists/memory-audit-checklist.md +16 -0
  77. package/.sinapse-ai/development/checklists/pr-quality-checklist.md +72 -0
  78. package/.sinapse-ai/development/checklists/security-deployment-checklist.md +54 -0
  79. package/.sinapse-ai/development/checklists/self-critique-checklist.md +19 -1
  80. package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
  81. package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
  82. package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
  83. package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
  84. package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
  85. package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
  86. package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
  87. package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
  88. package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
  89. package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
  90. package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
  91. package/.sinapse-ai/development/skills/debug.md +57 -0
  92. package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
  93. package/.sinapse-ai/development/skills/fast-review.md +69 -0
  94. package/.sinapse-ai/development/skills/model-router.md +92 -0
  95. package/.sinapse-ai/development/skills/research-synthesis.md +77 -0
  96. package/.sinapse-ai/development/skills/security-scan.md +73 -0
  97. package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
  98. package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
  99. package/.sinapse-ai/development/skills/verify.md +53 -0
  100. package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
  101. package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
  102. package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
  103. package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
  104. package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
  105. package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
  106. package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
  107. package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
  108. package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
  109. package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
  110. package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
  111. package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
  112. package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
  113. package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
  114. package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
  115. package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
  116. package/.sinapse-ai/development/templates/squad/agent-template.md +17 -4
  117. package/.sinapse-ai/development/templates/squad/checklist-template.md +13 -5
  118. package/.sinapse-ai/development/templates/squad/task-template.md +7 -0
  119. package/.sinapse-ai/development/templates/squad/workflow-template.yaml +7 -0
  120. package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
  121. package/.sinapse-ai/development/workflows/fast-track.yaml +87 -0
  122. package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
  123. package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
  124. package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
  125. package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
  126. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
  127. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
  128. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
  129. package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
  130. package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
  131. package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
  132. package/.sinapse-ai/infrastructure/scripts/validate-codex-delegation.js +3 -1
  133. package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
  134. package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
  135. package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
  136. package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
  137. package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
  138. package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
  139. package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
  140. package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
  141. package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
  142. package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
  143. package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
  144. package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
  145. package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
  146. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
  147. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
  148. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
  149. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
  150. package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
  151. package/.sinapse-ai/install-manifest.yaml +333 -162
  152. package/.sinapse-ai/local-config.yaml.template +65 -65
  153. package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
  154. package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
  155. package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
  156. package/.sinapse-ai/monitor/hooks/notification.py +30 -30
  157. package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
  158. package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
  159. package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
  160. package/.sinapse-ai/monitor/hooks/stop.py +30 -30
  161. package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
  162. package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
  163. package/.sinapse-ai/product/templates/adr.hbs +126 -126
  164. package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
  165. package/.sinapse-ai/product/templates/epic.hbs +213 -213
  166. package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
  167. package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
  168. package/.sinapse-ai/product/templates/prd.hbs +202 -202
  169. package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
  170. package/.sinapse-ai/product/templates/story.hbs +264 -264
  171. package/.sinapse-ai/product/templates/task.hbs +171 -171
  172. package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
  173. package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
  174. package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
  175. package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
  176. package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
  177. package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
  178. package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
  179. package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
  180. package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
  181. package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
  182. package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
  183. package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
  184. package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
  185. package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
  186. package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
  187. package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
  188. package/LICENSE +34 -34
  189. package/README.en.md +167 -20
  190. package/README.md +190 -22
  191. package/bin/cli.js +510 -196
  192. package/bin/postinstall.js +564 -0
  193. package/bin/sinapse-cli +283 -283
  194. package/bin/sinapse-graph.js +9 -0
  195. package/bin/sinapse-init.js +36 -4
  196. package/bin/sinapse-minimal.js +20 -9
  197. package/bin/sinapse.js +202 -122
  198. package/bin/utils/deprecation-warning.js +46 -0
  199. package/bin/utils/pre-push-safety.js +14 -0
  200. package/docs/TELEMETRY.md +131 -0
  201. package/docs/chrome-brain-upgrade-plan.md +624 -0
  202. package/docs/codex-integration-process.md +22 -0
  203. package/docs/codex-parity-program.md +27 -0
  204. package/docs/framework/orqx-plan.md +1 -1
  205. package/docs/ide-integration.md +36 -0
  206. package/docs/installation/chrome-brain.md +17 -7
  207. package/docs/mega-upgrade-orchestration-plan.md +71 -0
  208. package/docs/pt/contributing.md +20 -0
  209. package/docs/research-synthesis-for-upgrade.md +511 -0
  210. package/docs/security-audit-report.md +306 -0
  211. package/package.json +20 -8
  212. package/packages/installer/src/config/configure-environment.js +19 -44
  213. package/packages/installer/src/detection/detect-project-type.js +181 -63
  214. package/packages/installer/src/installer/manifest-signature.js +32 -17
  215. package/packages/installer/src/wizard/i18n.js +12 -0
  216. package/packages/installer/src/wizard/ide-config-generator.js +8 -39
  217. package/packages/installer/src/wizard/index.js +119 -14
  218. package/packages/installer/src/wizard/questions.js +2 -3
  219. package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
  220. package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
  221. package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
  222. package/packages/sinapse-install/bin/edmcp.js +0 -0
  223. package/packages/sinapse-install/bin/sinapse-install.js +0 -0
  224. package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
  225. package/scripts/check-markdown-links.py +353 -353
  226. package/scripts/coverage-report-summary.js +169 -0
  227. package/scripts/generate-install-manifest.js +6 -2
  228. package/scripts/release-readiness.js +169 -0
  229. package/scripts/test-install-matrix-local.sh +153 -0
  230. package/scripts/validate-install-docs.js +394 -0
  231. package/scripts/validate-no-external-refs.js +376 -0
  232. package/scripts/validate-squad-orqx.js +302 -0
  233. package/scripts/validate-story-meta.js +263 -0
  234. package/squads/claude-code-mastery/CHANGELOG.md +1 -1
  235. package/squads/claude-code-mastery/README.md +2 -2
  236. package/squads/claude-code-mastery/knowledge-base/claude-code-internals-reference.md +927 -0
  237. package/squads/claude-code-mastery/squad.yaml +1 -1
  238. package/squads/squad-artdir/README.md +90 -0
  239. package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
  240. package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
  241. package/squads/squad-artdir/agents/color-psychologist.md +166 -0
  242. package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
  243. package/squads/squad-artdir/agents/design-system-architect.md +100 -0
  244. package/squads/squad-artdir/agents/ia-architect.md +169 -0
  245. package/squads/squad-artdir/agents/interaction-designer.md +162 -0
  246. package/squads/squad-artdir/agents/layout-engineer.md +163 -0
  247. package/squads/squad-artdir/agents/motion-architect.md +185 -0
  248. package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
  249. package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
  250. package/squads/squad-artdir/agents/product-surface-director.md +86 -0
  251. package/squads/squad-artdir/agents/type-systemist.md +138 -0
  252. package/squads/squad-artdir/agents/visual-strategist.md +127 -0
  253. package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
  254. package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
  255. package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
  256. package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
  257. package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
  258. package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
  259. package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
  260. package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
  261. package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
  262. package/squads/squad-artdir/package.json +20 -0
  263. package/squads/squad-artdir/squad.yaml +271 -0
  264. package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
  265. package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
  266. package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
  267. package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
  268. package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
  269. package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
  270. package/squads/squad-artdir/tasks/design-color-system.md +81 -0
  271. package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
  272. package/squads/squad-artdir/tasks/design-token-system.md +58 -0
  273. package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
  274. package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
  275. package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
  276. package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
  277. package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
  278. package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
  279. package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
  280. package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
  281. package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
  282. package/squads/squad-brand/knowledge-base/archetype-brand-mapping.md +12 -1
  283. package/squads/squad-brand/knowledge-base/brand-activism-cultural-branding.md +216 -0
  284. package/squads/squad-brand/knowledge-base/brand-audit-criteria.md +58 -0
  285. package/squads/squad-brand/knowledge-base/brand-digital-strategy.md +188 -0
  286. package/squads/squad-brand/knowledge-base/brand-legal-ip.md +222 -0
  287. package/squads/squad-brand/knowledge-base/brand-naming-framework.md +163 -0
  288. package/squads/squad-brand/knowledge-base/branding-master-reference.md +1001 -0
  289. package/squads/squad-brand/knowledge-base/color-psychology.md +25 -12
  290. package/squads/squad-brand/knowledge-base/employer-personal-branding.md +206 -0
  291. package/squads/squad-brand/knowledge-base/routing-catalog.md +34 -0
  292. package/squads/squad-brand/knowledge-base/sonic-branding-principles.md +6 -1
  293. package/squads/squad-brand/knowledge-base/typography-personality.md +34 -0
  294. package/squads/squad-brand/squad.yaml +20 -6
  295. package/squads/squad-claude/knowledge-base/context-window-optimization.md +334 -0
  296. package/squads/squad-claude/knowledge-base/knowledge-architecture-reference.md +403 -0
  297. package/squads/squad-claude/knowledge-base/memory-systems-reference.md +412 -0
  298. package/squads/squad-claude/knowledge-base/obsidian-claude-integration.md +423 -0
  299. package/squads/squad-claude/knowledge-base/retrieval-augmented-generation.md +320 -0
  300. package/squads/squad-claude/knowledge-base/skill-creation-patterns.md +380 -0
  301. package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +411 -0
  302. package/squads/squad-cloning/knowledge-base/clone-quality-assurance.md +211 -0
  303. package/squads/squad-cloning/knowledge-base/confidence-scoring.md +51 -0
  304. package/squads/squad-cloning/knowledge-base/cross-squad-deployment.md +47 -0
  305. package/squads/squad-cloning/knowledge-base/ethical-guidelines.md +237 -0
  306. package/squads/squad-cloning/knowledge-base/knowledge-graph-for-clones.md +295 -0
  307. package/squads/squad-cloning/knowledge-base/memory-architecture-for-clones.md +229 -0
  308. package/squads/squad-cloning/knowledge-base/multi-agent-deployment-patterns.md +320 -0
  309. package/squads/squad-cloning/knowledge-base/skill-standard-for-clones.md +262 -0
  310. package/squads/squad-cloning/knowledge-base/sop-extraction-guide.md +243 -0
  311. package/squads/squad-commercial/knowledge-base/account-based-selling.md +206 -0
  312. package/squads/squad-commercial/knowledge-base/ai-as-competitive-infrastructure.md +14 -0
  313. package/squads/squad-commercial/knowledge-base/ai-in-sales.md +199 -0
  314. package/squads/squad-commercial/knowledge-base/brazilian-sales-context.md +195 -0
  315. package/squads/squad-commercial/knowledge-base/customer-success-operations.md +83 -2
  316. package/squads/squad-commercial/knowledge-base/prospecting-pipeline-generation.md +69 -0
  317. package/squads/squad-commercial/knowledge-base/sales-enablement-playbook.md +260 -0
  318. package/squads/squad-commercial/knowledge-base/sales-methodology-comparison.md +185 -0
  319. package/squads/squad-commercial/knowledge-base/sales-revenue-master-reference.md +1123 -0
  320. package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
  321. package/squads/squad-content/knowledge-base/brazilian-content-context.md +176 -0
  322. package/squads/squad-content/knowledge-base/competitor-analysis-methods.md +40 -1
  323. package/squads/squad-content/knowledge-base/content-architecture-taxonomy.md +206 -0
  324. package/squads/squad-content/knowledge-base/content-formats-encyclopedia.md +58 -1
  325. package/squads/squad-content/knowledge-base/content-references-bibliography.md +130 -0
  326. package/squads/squad-content/knowledge-base/content-strategy-master-reference.md +1097 -0
  327. package/squads/squad-content/knowledge-base/content-tech-stack.md +150 -0
  328. package/squads/squad-content/knowledge-base/copywriting-formulas-library.md +188 -0
  329. package/squads/squad-content/knowledge-base/email-newsletter-strategy.md +161 -0
  330. package/squads/squad-content/knowledge-base/platform-algorithm-intelligence.md +86 -1
  331. package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
  332. package/squads/squad-content/knowledge-base/social-algorithms-master-reference.md +1007 -0
  333. package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
  334. package/squads/squad-content/knowledge-base/video-audio-content-playbook.md +218 -0
  335. package/squads/squad-content/squad.yaml +187 -27
  336. package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
  337. package/squads/squad-copy/knowledge-base/ai-copy-production.md +254 -0
  338. package/squads/squad-copy/knowledge-base/brazilian-copywriting-context.md +242 -0
  339. package/squads/squad-copy/knowledge-base/email-copywriting-system.md +299 -0
  340. package/squads/squad-copy/knowledge-base/landing-page-copy-architecture.md +267 -0
  341. package/squads/squad-copy/knowledge-base/power-words-catalog.md +205 -0
  342. package/squads/squad-copy/knowledge-base/seo-copywriting.md +255 -0
  343. package/squads/squad-copy/knowledge-base/video-script-copywriting.md +239 -0
  344. package/squads/squad-copy/squad.yaml +19 -4
  345. package/squads/squad-council/knowledge-base/brand-strategy-models.md +193 -0
  346. package/squads/squad-council/knowledge-base/growth-strategy-models.md +267 -0
  347. package/squads/squad-council/knowledge-base/innovation-disruption-frameworks.md +193 -0
  348. package/squads/squad-council/knowledge-base/market-analysis-frameworks.md +240 -0
  349. package/squads/squad-council/knowledge-base/organizational-leadership-models.md +212 -0
  350. package/squads/squad-council/knowledge-base/sales-strategy-models.md +215 -0
  351. package/squads/squad-courses/knowledge-base/course-launch-strategy.md +251 -0
  352. package/squads/squad-courses/knowledge-base/domain-advocacia-curriculum.md +385 -0
  353. package/squads/squad-courses/knowledge-base/domain-contabilidade-curriculum.md +266 -0
  354. package/squads/squad-courses/knowledge-base/platform-comparison.md +68 -0
  355. package/squads/squad-courses/knowledge-base/video-production-guide.md +70 -0
  356. package/squads/squad-cybersecurity/knowledge-base/cloud-security-reference.md +363 -0
  357. package/squads/squad-cybersecurity/knowledge-base/compliance-frameworks.md +273 -0
  358. package/squads/squad-cybersecurity/knowledge-base/database-security.md +438 -0
  359. package/squads/squad-cybersecurity/knowledge-base/incident-response-playbook.md +420 -0
  360. package/squads/squad-cybersecurity/knowledge-base/network-security-reference.md +477 -0
  361. package/squads/squad-cybersecurity/knowledge-base/penetration-testing-methodology.md +350 -0
  362. package/squads/squad-cybersecurity/knowledge-base/vulnerability-management.md +349 -0
  363. package/squads/squad-design/knowledge-base/brazilian-design-context.md +223 -0
  364. package/squads/squad-design/knowledge-base/component-api-patterns.md +208 -4
  365. package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
  366. package/squads/squad-design/knowledge-base/design-system-master-reference.md +1302 -0
  367. package/squads/squad-design/knowledge-base/design-systems-frameworks.md +91 -1
  368. package/squads/squad-design/knowledge-base/responsive-modern-css.md +96 -4
  369. package/squads/squad-design/knowledge-base/wcag-aria-reference.md +117 -5
  370. package/squads/squad-design/knowledge-base/web-performance-reference.md +127 -4
  371. package/squads/squad-design/squad.yaml +19 -4
  372. package/squads/squad-finance/knowledge-base/brazilian-taxation.md +263 -0
  373. package/squads/squad-finance/knowledge-base/contabilidade-master-reference.md +998 -0
  374. package/squads/squad-finance/knowledge-base/finance-master-reference.md +946 -0
  375. package/squads/squad-finance/knowledge-base/financial-reporting-analysis.md +316 -0
  376. package/squads/squad-finance/knowledge-base/fintech-brazilian-context.md +242 -0
  377. package/squads/squad-finance/knowledge-base/fpa-planning-frameworks.md +286 -0
  378. package/squads/squad-finance/knowledge-base/ma-and-transactions.md +285 -0
  379. package/squads/squad-finance/knowledge-base/risk-management.md +233 -0
  380. package/squads/squad-finance/knowledge-base/startups-venture-capital.md +337 -0
  381. package/squads/squad-growth/knowledge-base/ai-growth-playbook.md +216 -0
  382. package/squads/squad-growth/knowledge-base/attribution-models.md +78 -0
  383. package/squads/squad-growth/knowledge-base/brazilian-growth-context.md +208 -0
  384. package/squads/squad-growth/knowledge-base/community-led-growth.md +175 -0
  385. package/squads/squad-growth/knowledge-base/content-marketing-flywheel.md +190 -0
  386. package/squads/squad-growth/knowledge-base/email-lifecycle-framework.md +192 -0
  387. package/squads/squad-growth/knowledge-base/growth-frameworks-catalog.md +82 -0
  388. package/squads/squad-growth/knowledge-base/growth-master-reference.md +1168 -0
  389. package/squads/squad-growth/knowledge-base/routing-catalog.md +53 -11
  390. package/squads/squad-paidmedia/knowledge-base/audiences-segmentation-deep.md +285 -0
  391. package/squads/squad-paidmedia/knowledge-base/creative-strategy-deep.md +294 -0
  392. package/squads/squad-paidmedia/knowledge-base/google-ads-account-architecture.md +87 -0
  393. package/squads/squad-paidmedia/knowledge-base/meta-ads-campaign-architecture.md +76 -0
  394. package/squads/squad-paidmedia/knowledge-base/paid-media-metrics-reference.md +117 -0
  395. package/squads/squad-paidmedia/knowledge-base/paid-traffic-master-reference.md +1308 -0
  396. package/squads/squad-paidmedia/knowledge-base/routing-catalog.md +95 -18
  397. package/squads/squad-paidmedia/knowledge-base/traffic-masters-frameworks.md +71 -0
  398. package/squads/squad-product/knowledge-base/brazilian-product-context.md +284 -0
  399. package/squads/squad-product/knowledge-base/discovery-methodology-playbook.md +141 -0
  400. package/squads/squad-product/knowledge-base/pm-frameworks-reference.md +125 -9
  401. package/squads/squad-product/knowledge-base/product-analytics-formulas.md +72 -0
  402. package/squads/squad-product/knowledge-base/product-led-growth-reference.md +155 -13
  403. package/squads/squad-product/knowledge-base/product-market-fit-framework.md +222 -0
  404. package/squads/squad-product/knowledge-base/routing-catalog.md +32 -0
  405. package/squads/squad-research/knowledge-base/agentic-second-brain-reference.md +591 -0
  406. package/squads/squad-research/knowledge-base/ai-augmented-research.md +212 -0
  407. package/squads/squad-research/knowledge-base/brazilian-market-research-sources.md +197 -0
  408. package/squads/squad-research/knowledge-base/community-platforms-reference.md +786 -0
  409. package/squads/squad-research/knowledge-base/community-research-methods.md +194 -0
  410. package/squads/squad-research/knowledge-base/mixed-methods-research-design.md +168 -0
  411. package/squads/squad-research/knowledge-base/network-effects-analysis.md +192 -0
  412. package/squads/squad-research/knowledge-base/qualitative-research-deep-methods.md +202 -0
  413. package/squads/squad-research/knowledge-base/quantitative-research-methods.md +208 -0
  414. package/squads/squad-research/knowledge-base/research-frameworks-encyclopedia.md +40 -0
  415. package/squads/squad-research/knowledge-base/research-synthesis-frameworks.md +223 -0
  416. package/squads/squad-storytelling/knowledge-base/brand-mythology-framework.md +236 -0
  417. package/squads/squad-storytelling/knowledge-base/brazilian-storytelling-context.md +237 -0
  418. package/squads/squad-storytelling/knowledge-base/data-storytelling.md +232 -0
  419. package/squads/squad-storytelling/knowledge-base/improv-storytelling.md +226 -0
  420. package/squads/squad-storytelling/knowledge-base/persuasion-narrative-techniques.md +269 -0
  421. package/squads/squad-storytelling/knowledge-base/social-movement-narratives.md +191 -0
  422. package/squads/squad-storytelling/knowledge-base/video-storytelling.md +252 -0
  423. package/.sinapse-ai/core/registry/service-registry.json +0 -6346
  424. package/.sinapse-ai/data/registry-update-log.jsonl +0 -1307
  425. package/.sinapse-ai/manifests/agents.csv +0 -29
  426. package/.sinapse-ai/manifests/tasks.csv +0 -204
  427. package/.sinapse-ai/manifests/workers.csv +0 -196
  428. package/squads/claude-code-mastery/data/swarm-orchestration-patterns.yaml +0 -378
  429. package/squads/squad-animations/knowledge-base/framer-motion-complete-reference.md +0 -710
  430. package/squads/squad-animations/knowledge-base/web-animations-api-view-transitions.md +0 -478
  431. package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
  432. package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
package/bin/sinapse.js CHANGED
@@ -10,6 +10,14 @@ const path = require('path');
10
10
  const fs = require('fs');
11
11
  const os = require('os');
12
12
  const { execSync } = require('child_process');
13
+ const { emitDeprecationWarning } = require('./utils/deprecation-warning');
14
+
15
+ // Story A.2 — unified logger. Levels: error/warn/info/debug.
16
+ // Flags: --verbose, --debug, --quiet, --json. Default level: warn.
17
+ // sinapse.js does NOT render the ASCII header itself (cli.js owns it), so it
18
+ // only imports getLogger. shouldShowHeader / markFirstRunDone stay in cli.js.
19
+ const { getLogger } = require('../.sinapse-ai/core/logger');
20
+ const logger = getLogger();
13
21
 
14
22
  // Read package.json for version
15
23
  const packageJsonPath = path.join(__dirname, '..', 'package.json');
@@ -29,7 +37,7 @@ async function runWizard(options = {}) {
29
37
  const legacyScript = path.join(__dirname, 'sinapse-init.js');
30
38
  if (fs.existsSync(legacyScript)) {
31
39
  if (!options.quiet) {
32
- console.log('⚠️ Using legacy wizard (src/wizard not found)');
40
+ logger.always('⚠️ Using legacy wizard (src/wizard not found)');
33
41
  }
34
42
  // Legacy wizard doesn't support options, pass via env vars
35
43
  process.env.SINAPSE_INSTALL_FORCE = options.force ? '1' : '';
@@ -38,8 +46,8 @@ async function runWizard(options = {}) {
38
46
  require(legacyScript);
39
47
  return;
40
48
  }
41
- console.error('❌ Initialization wizard not found');
42
- console.error('Please ensure SINAPSE-FullStack is installed correctly.');
49
+ logger.error('❌ Initialization wizard not found');
50
+ logger.error('Please ensure SINAPSE-FullStack is installed correctly.');
43
51
  process.exit(1);
44
52
  }
45
53
 
@@ -48,14 +56,14 @@ async function runWizard(options = {}) {
48
56
  const { runWizard: executeWizard } = require(wizardPath);
49
57
  await executeWizard(options);
50
58
  } catch (error) {
51
- console.error('❌ Wizard error:', error.message);
59
+ logger.error('❌ Wizard error:', error.message);
52
60
  process.exit(1);
53
61
  }
54
62
  }
55
63
 
56
64
  // Helper: Show help
57
65
  function showHelp() {
58
- console.log(`
66
+ logger.always(`
59
67
  SINAPSE-FullStack v${packageJson.version}
60
68
  AI-Orchestrated System for Full Stack Development
61
69
 
@@ -69,6 +77,9 @@ USAGE:
69
77
  sinapse validate # Validate installation integrity
70
78
  sinapse info # Show system info
71
79
  sinapse doctor # Run diagnostics
80
+ sinapse telemetry status # Show telemetry state (disabled by default)
81
+ sinapse telemetry enable # Opt in to anonymized telemetry
82
+ sinapse telemetry disable # Opt out of telemetry
72
83
  sinapse qa run # Run quality gate pipeline
73
84
  sinapse qa run --layer=1 # Run specific layer
74
85
  sinapse qa status # Show gate status
@@ -131,13 +142,13 @@ async function showVersion() {
131
142
 
132
143
  if (!isDetailed) {
133
144
  // Simple version output (backwards compatible)
134
- console.log(packageJson.version);
145
+ logger.always(packageJson.version);
135
146
  return;
136
147
  }
137
148
 
138
149
  // Detailed version output (Story 7.2: Version Tracking)
139
- console.log(`SINAPSE-FullStack v${packageJson.version}`);
140
- console.log('Package: sinapse-ai');
150
+ logger.always(`SINAPSE-FullStack v${packageJson.version}`);
151
+ logger.always('Package: sinapse-ai');
141
152
 
142
153
  // Check for local installation
143
154
  const localVersionPath = path.join(process.cwd(), '.sinapse-ai', 'version.json');
@@ -145,61 +156,61 @@ async function showVersion() {
145
156
  if (fs.existsSync(localVersionPath)) {
146
157
  try {
147
158
  const versionInfo = JSON.parse(fs.readFileSync(localVersionPath, 'utf8'));
148
- console.log('\n📦 Local Installation:');
149
- console.log(` Version: ${versionInfo.version}`);
150
- console.log(` Mode: ${versionInfo.mode || 'unknown'}`);
159
+ logger.always('\n📦 Local Installation:');
160
+ logger.always(` Version: ${versionInfo.version}`);
161
+ logger.always(` Mode: ${versionInfo.mode || 'unknown'}`);
151
162
 
152
163
  if (versionInfo.installedAt) {
153
164
  const installedDate = new Date(versionInfo.installedAt);
154
- console.log(` Installed: ${installedDate.toLocaleDateString()}`);
165
+ logger.always(` Installed: ${installedDate.toLocaleDateString()}`);
155
166
  }
156
167
 
157
168
  if (versionInfo.updatedAt) {
158
169
  const updatedDate = new Date(versionInfo.updatedAt);
159
- console.log(` Updated: ${updatedDate.toLocaleDateString()}`);
170
+ logger.always(` Updated: ${updatedDate.toLocaleDateString()}`);
160
171
  }
161
172
 
162
173
  if (versionInfo.fileHashes) {
163
174
  const fileCount = Object.keys(versionInfo.fileHashes).length;
164
- console.log(` Files: ${fileCount} tracked`);
175
+ logger.always(` Files: ${fileCount} tracked`);
165
176
  }
166
177
 
167
178
  if (versionInfo.customized && versionInfo.customized.length > 0) {
168
- console.log(` Customized: ${versionInfo.customized.length} files`);
179
+ logger.always(` Customized: ${versionInfo.customized.length} files`);
169
180
  }
170
181
 
171
182
  // Version comparison
172
183
  if (versionInfo.version !== packageJson.version) {
173
- console.log('\n⚠️ Version mismatch!');
174
- console.log(` Local: ${versionInfo.version}`);
175
- console.log(` Latest: ${packageJson.version}`);
176
- console.log(' Run \'npx sinapse-ai update\' to update.');
184
+ logger.always('\n⚠️ Version mismatch!');
185
+ logger.always(` Local: ${versionInfo.version}`);
186
+ logger.always(` Latest: ${packageJson.version}`);
187
+ logger.always(' Run \'npx sinapse-ai update\' to update.');
177
188
  } else {
178
- console.log('\n✅ Up to date');
189
+ logger.always('\n✅ Up to date');
179
190
  }
180
191
  } catch (error) {
181
- console.log(`\n⚠️ Could not read version.json: ${error.message}`);
192
+ logger.always(`\n⚠️ Could not read version.json: ${error.message}`);
182
193
  }
183
194
  } else {
184
- console.log('\n📭 No local installation found');
185
- console.log(' Run \'npx sinapse-ai install\' to install SINAPSE in this project.');
195
+ logger.always('\n📭 No local installation found');
196
+ logger.always(' Run \'npx sinapse-ai install\' to install SINAPSE in this project.');
186
197
  }
187
198
  }
188
199
 
189
200
  // Helper: Show system info
190
201
  function showInfo() {
191
- console.log('📊 SINAPSE-FullStack System Information\n');
192
- console.log(`Version: ${packageJson.version}`);
193
- console.log(`Platform: ${process.platform}`);
194
- console.log(`Node.js: ${process.version}`);
195
- console.log(`Architecture: ${process.arch}`);
196
- console.log(`Working Directory: ${process.cwd()}`);
197
- console.log(`Install Location: ${path.join(__dirname, '..')}`);
202
+ logger.always('📊 SINAPSE-FullStack System Information\n');
203
+ logger.always(`Version: ${packageJson.version}`);
204
+ logger.always(`Platform: ${process.platform}`);
205
+ logger.always(`Node.js: ${process.version}`);
206
+ logger.always(`Architecture: ${process.arch}`);
207
+ logger.always(`Working Directory: ${process.cwd()}`);
208
+ logger.always(`Install Location: ${path.join(__dirname, '..')}`);
198
209
 
199
210
  // Check if .sinapse-ai exists
200
211
  const sinapseCoreDir = path.join(__dirname, '..', '.sinapse-ai');
201
212
  if (fs.existsSync(sinapseCoreDir)) {
202
- console.log('\n✓ SINAPSE Core installed');
213
+ logger.always('\n✓ SINAPSE Core installed');
203
214
 
204
215
  // Count components
205
216
  const countFiles = (dir) => {
@@ -213,19 +224,19 @@ function showInfo() {
213
224
  const devDir = path.join(sinapseCoreDir, 'development');
214
225
  const componentBase = fs.existsSync(devDir) ? devDir : sinapseCoreDir;
215
226
 
216
- console.log(` - Agents: ${countFiles(path.join(componentBase, 'agents'))}`);
217
- console.log(` - Tasks: ${countFiles(path.join(componentBase, 'tasks'))}`);
218
- console.log(` - Templates: ${countFiles(path.join(componentBase, 'templates'))}`);
219
- console.log(` - Workflows: ${countFiles(path.join(componentBase, 'workflows'))}`);
227
+ logger.always(` - Agents: ${countFiles(path.join(componentBase, 'agents'))}`);
228
+ logger.always(` - Tasks: ${countFiles(path.join(componentBase, 'tasks'))}`);
229
+ logger.always(` - Templates: ${countFiles(path.join(componentBase, 'templates'))}`);
230
+ logger.always(` - Workflows: ${countFiles(path.join(componentBase, 'workflows'))}`);
220
231
 
221
232
  } else {
222
- console.log('\n⚠️ SINAPSE Core not found');
233
+ logger.always('\n⚠️ SINAPSE Core not found');
223
234
  }
224
235
 
225
236
  // Check SINAPSE Pro status (Task 5.1)
226
237
  const proDir = path.join(__dirname, '..', 'pro');
227
238
  if (fs.existsSync(proDir)) {
228
- console.log('\n✓ SINAPSE Pro installed');
239
+ logger.always('\n✓ SINAPSE Pro installed');
229
240
 
230
241
  try {
231
242
  const { featureGate } = require(path.join(proDir, 'license', 'feature-gate'));
@@ -239,14 +250,14 @@ function showInfo() {
239
250
  'Not Activated': '➖',
240
251
  };
241
252
 
242
- console.log(` - License: ${stateEmoji[state] || ''} ${state}`);
253
+ logger.always(` - License: ${stateEmoji[state] || ''} ${state}`);
243
254
 
244
255
  if (info && info.features) {
245
256
  const availableCount = featureGate.listAvailable().length;
246
- console.log(` - Features: ${availableCount} available`);
257
+ logger.always(` - Features: ${availableCount} available`);
247
258
  }
248
259
  } catch {
249
- console.log(' - License: Unable to check status');
260
+ logger.always(' - License: Unable to check status');
250
261
  }
251
262
  }
252
263
  }
@@ -264,7 +275,7 @@ async function runValidate() {
264
275
  await validateCmd.parseAsync(['node', 'sinapse', ...validateArgs]);
265
276
  } catch (_error) {
266
277
  // Fallback: Run quick validation inline
267
- console.log('Running installation validation...\n');
278
+ logger.always('Running installation validation...\n');
268
279
 
269
280
  try {
270
281
  const validatorPath = path.join(
@@ -282,7 +293,7 @@ async function runValidate() {
282
293
  const validator = new PostInstallValidator(projectRoot, path.join(__dirname, '..'));
283
294
  const report = await validator.validate();
284
295
 
285
- console.log(formatReport(report, { colors: true }));
296
+ logger.always(formatReport(report, { colors: true }));
286
297
 
287
298
  if (
288
299
  report.status === 'failed' ||
@@ -292,9 +303,9 @@ async function runValidate() {
292
303
  process.exit(1);
293
304
  }
294
305
  } catch (validatorError) {
295
- console.error(`❌ Validation error: ${validatorError.message}`);
306
+ logger.error(`❌ Validation error: ${validatorError.message}`);
296
307
  if (args.includes('--verbose') || args.includes('-v')) {
297
- console.error(validatorError.stack);
308
+ logger.error(validatorError.stack);
298
309
  }
299
310
  process.exit(2);
300
311
  }
@@ -313,8 +324,8 @@ async function runUpdate() {
313
324
  const updaterPath = path.join(__dirname, '..', 'packages', 'installer', 'src', 'updater', 'index.js');
314
325
 
315
326
  if (!fs.existsSync(updaterPath)) {
316
- console.error('❌ Updater module not found');
317
- console.error('Please ensure SINAPSE-FullStack is installed correctly.');
327
+ logger.error('❌ Updater module not found');
328
+ logger.error('Please ensure SINAPSE-FullStack is installed correctly.');
318
329
  process.exit(1);
319
330
  }
320
331
 
@@ -327,44 +338,45 @@ async function runUpdate() {
327
338
 
328
339
  if (isCheck) {
329
340
  // Check only mode
330
- console.log('🔍 Checking for updates...\n');
341
+ logger.always('🔍 Checking for updates...\n');
331
342
  const result = await updater.checkForUpdates();
332
- console.log(formatCheckResult(result, { colors: true }));
343
+ logger.always(formatCheckResult(result, { colors: true }));
333
344
 
334
345
  if (result.status === 'check_failed') {
335
346
  process.exit(1);
336
347
  }
337
348
  } else {
338
349
  // Update mode
339
- console.log('🔄 SINAPSE Update\n');
350
+ logger.always('🔄 SINAPSE Update\n');
340
351
 
341
352
  const result = await updater.update({
342
353
  dryRun: isDryRun,
343
354
  onProgress: (phase, message) => {
344
355
  if (isVerbose) {
345
- console.log(`[${phase}] ${message}`);
356
+ logger.always(`[${phase}] ${message}`);
346
357
  }
347
358
  },
348
359
  });
349
360
 
350
- console.log(formatUpdateResult(result, { colors: true }));
361
+ logger.always(formatUpdateResult(result, { colors: true }));
351
362
 
352
363
  if (!result.success && result.error !== 'Already up to date') {
353
364
  process.exit(1);
354
365
  }
355
366
  }
356
367
  } catch (error) {
357
- console.error(`❌ Update error: ${error.message}`);
368
+ logger.error(`❌ Update error: ${error.message}`);
358
369
  if (args.includes('--verbose') || args.includes('-v')) {
359
- console.error(error.stack);
370
+ logger.error(error.stack);
360
371
  }
361
372
  process.exit(1);
362
373
  }
363
374
  }
364
375
 
365
- // Helper: Run doctor diagnostics (v2.0 — delegates to modular doctor)
376
+ // Helper: Run doctor diagnostics (v2.1 — delegates to modular doctor)
377
+ // Story A.3: exit code mapping is now 0 PASS | 1 WARN only | 2 FAIL | 3 internal error.
366
378
  async function runDoctor(options = {}) {
367
- const { runDoctorChecks } = require(path.join(__dirname, '..', '.sinapse-ai', 'core', 'doctor'));
379
+ const { runDoctorChecks, resolveExitCode } = require(path.join(__dirname, '..', '.sinapse-ai', 'core', 'doctor'));
368
380
 
369
381
  const result = await runDoctorChecks({
370
382
  fix: options.fix || false,
@@ -375,11 +387,14 @@ async function runDoctor(options = {}) {
375
387
  projectRoot: process.cwd(),
376
388
  });
377
389
 
378
- console.log(result.formatted);
390
+ logger.always(result.formatted);
379
391
 
380
- // Exit with code 1 if any FAIL results
381
- if (result.data && result.data.summary && result.data.summary.fail > 0) {
382
- process.exit(1);
392
+ const code = typeof resolveExitCode === 'function'
393
+ ? resolveExitCode(result)
394
+ : (result && result.data && result.data.summary && result.data.summary.fail > 0 ? 2 : 0);
395
+
396
+ if (code !== 0) {
397
+ process.exit(code);
383
398
  }
384
399
  }
385
400
 
@@ -428,7 +443,7 @@ function cleanGitignore(gitignorePath) {
428
443
 
429
444
  // Helper: Show uninstall help
430
445
  function showUninstallHelp() {
431
- console.log(`
446
+ logger.always(`
432
447
  Usage: npx sinapse-ai uninstall [options]
433
448
 
434
449
  Remove SINAPSE from the current project.
@@ -503,17 +518,17 @@ function runBrand() {
503
518
  const patchPath = path.join(__dirname, '..', 'scripts', 'sinapse-patch.js');
504
519
 
505
520
  if (!fs.existsSync(patchPath)) {
506
- console.error('❌ Patch script not found at:', patchPath);
507
- console.error('Please ensure SINAPSE-FullStack is installed correctly.');
521
+ logger.error('❌ Patch script not found at:', patchPath);
522
+ logger.error('Please ensure SINAPSE-FullStack is installed correctly.');
508
523
  process.exit(1);
509
524
  }
510
525
 
511
- console.log('◆ Applying SINAPSE branding to Claude Code...\n');
526
+ logger.always('◆ Applying SINAPSE branding to Claude Code...\n');
512
527
 
513
528
  try {
514
529
  execSync(`node "${patchPath}"`, { stdio: 'inherit' });
515
530
  } catch (error) {
516
- console.error('❌ Branding patch failed:', error.message);
531
+ logger.error('❌ Branding patch failed:', error.message);
517
532
  process.exit(1);
518
533
  }
519
534
  }
@@ -523,8 +538,8 @@ function launchSinapse(extraArgs) {
523
538
  // 1. Check if Claude Code is installed
524
539
  const cliPath = findClaudeCliPath();
525
540
  if (!cliPath) {
526
- console.error('❌ Claude Code not found. Install it first:');
527
- console.error(' npm install -g @anthropic-ai/claude-code');
541
+ logger.error('❌ Claude Code not found. Install it first:');
542
+ logger.error(' npm install -g @anthropic-ai/claude-code');
528
543
  process.exit(1);
529
544
  }
530
545
 
@@ -532,12 +547,12 @@ function launchSinapse(extraArgs) {
532
547
  if (!isBrandingApplied()) {
533
548
  const patchPath = path.join(__dirname, '..', 'scripts', 'sinapse-patch.js');
534
549
  if (fs.existsSync(patchPath)) {
535
- console.log('◆ First run — applying SINAPSE branding...\n');
550
+ logger.always('◆ First run — applying SINAPSE branding...\n');
536
551
  try {
537
552
  execSync(`node "${patchPath}"`, { stdio: 'inherit' });
538
- console.log('');
553
+ logger.always('');
539
554
  } catch {
540
- console.error('⚠️ Branding patch failed, launching without branding...\n');
555
+ logger.error('⚠️ Branding patch failed, launching without branding...\n');
541
556
  }
542
557
  }
543
558
  }
@@ -576,7 +591,7 @@ function launchSinapse(extraArgs) {
576
591
 
577
592
  // Helper: Show doctor help
578
593
  function showDoctorHelp() {
579
- console.log(`
594
+ logger.always(`
580
595
  Usage: npx sinapse-ai doctor [options]
581
596
 
582
597
  Run health checks on your SINAPSE installation.
@@ -639,7 +654,7 @@ async function runUninstall(options = {}) {
639
654
  );
640
655
 
641
656
  if (existingItems.length === 0) {
642
- console.log('ℹ️ No SINAPSE installation found in this directory.');
657
+ logger.always('ℹ️ No SINAPSE installation found in this directory.');
643
658
  return;
644
659
  }
645
660
 
@@ -683,27 +698,27 @@ async function runUninstall(options = {}) {
683
698
 
684
699
  // Show what will be removed
685
700
  if (!quiet) {
686
- console.log('\n📋 Items to be removed:\n');
701
+ logger.always('\n📋 Items to be removed:\n');
687
702
  for (const item of itemSizes) {
688
703
  const sizeStr = item.size > 0 ? ` (${formatBytes(item.size)})` : '';
689
- console.log(` • ${item.path}/${sizeStr} - ${item.description}`);
704
+ logger.always(` • ${item.path}/${sizeStr} - ${item.description}`);
690
705
  }
691
- console.log(`\n Total: ${formatBytes(totalSize)}`);
706
+ logger.always(`\n Total: ${formatBytes(totalSize)}`);
692
707
 
693
708
  // Check for .gitignore cleanup
694
709
  const gitignorePath = path.join(cwd, '.gitignore');
695
710
  if (fs.existsSync(gitignorePath)) {
696
711
  const content = fs.readFileSync(gitignorePath, 'utf8');
697
712
  if (content.includes('# SINAPSE') || content.includes('# Added by SINAPSE')) {
698
- console.log(' • .gitignore SINAPSE entries will be cleaned');
713
+ logger.always(' • .gitignore SINAPSE entries will be cleaned');
699
714
  }
700
715
  }
701
- console.log('');
716
+ logger.always('');
702
717
  }
703
718
 
704
719
  // Dry run - stop here
705
720
  if (dryRun) {
706
- console.log('🔍 Dry run - no changes made.');
721
+ logger.always('🔍 Dry run - no changes made.');
707
722
  return;
708
723
  }
709
724
 
@@ -721,21 +736,21 @@ async function runUninstall(options = {}) {
721
736
  rl.close();
722
737
 
723
738
  if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
724
- console.log('❌ Uninstall cancelled.');
739
+ logger.always('❌ Uninstall cancelled.');
725
740
  process.exit(1);
726
741
  }
727
742
  }
728
743
 
729
744
  // Perform removal
730
- if (!quiet) console.log('\n🗑️ Removing SINAPSE components...\n');
745
+ if (!quiet) logger.always('\n🗑️ Removing SINAPSE components...\n');
731
746
 
732
747
  for (const item of existingItems) {
733
748
  const itemPath = path.join(cwd, item.path);
734
749
  try {
735
750
  fs.rmSync(itemPath, { recursive: true, force: true });
736
- if (!quiet) console.log(` ✓ Removed ${item.path}/`);
751
+ if (!quiet) logger.always(` ✓ Removed ${item.path}/`);
737
752
  } catch (error) {
738
- console.error(` ✗ Failed to remove ${item.path}: ${error.message}`);
753
+ logger.error(` ✗ Failed to remove ${item.path}: ${error.message}`);
739
754
  }
740
755
  }
741
756
 
@@ -749,10 +764,10 @@ async function runUninstall(options = {}) {
749
764
  const sinapseAgents = globalFiles.filter((f) => f.endsWith(orqxSuffix));
750
765
  for (const file of sinapseAgents) {
751
766
  fs.rmSync(path.join(globalAgentsDir, file), { force: true });
752
- if (!quiet) console.log(` ✓ Removed global agent: ~/.claude/agents/${file}`);
767
+ if (!quiet) logger.always(` ✓ Removed global agent: ~/.claude/agents/${file}`);
753
768
  }
754
769
  } catch (error) {
755
- if (!quiet) console.warn(` ⚠ Could not clean global agents: ${error.message}`);
770
+ if (!quiet) logger.warn(` ⚠ Could not clean global agents: ${error.message}`);
756
771
  }
757
772
  }
758
773
 
@@ -760,40 +775,42 @@ async function runUninstall(options = {}) {
760
775
  const gitignorePath = path.join(cwd, '.gitignore');
761
776
  const gitignoreResult = cleanGitignore(gitignorePath);
762
777
  if (gitignoreResult.removed && !quiet) {
763
- console.log(` ✓ Cleaned ${gitignoreResult.lines} SINAPSE entries from .gitignore`);
778
+ logger.always(` ✓ Cleaned ${gitignoreResult.lines} SINAPSE entries from .gitignore`);
764
779
  }
765
780
 
766
781
  // Summary
767
782
  if (!quiet) {
768
- console.log('\n✅ SINAPSE has been uninstalled.');
783
+ logger.always('\n✅ SINAPSE has been uninstalled.');
769
784
  if (keepData) {
770
- console.log(' Your project data in .sinapse/ has been preserved.');
785
+ logger.always(' Your project data in .sinapse/ has been preserved.');
771
786
  }
772
- console.log('\n To reinstall: npx sinapse-ai install');
787
+ logger.always('\n To reinstall: npx sinapse-ai install');
773
788
  }
774
789
  }
775
790
 
776
791
  // Helper: Show install help
777
792
  function showInstallHelp() {
778
- console.log(`
793
+ logger.always(`
779
794
  Usage: npx sinapse-ai install [options]
780
795
 
781
796
  Install SINAPSE in the current directory.
782
797
 
783
798
  Options:
784
- --force Overwrite existing SINAPSE installation
799
+ --force Overwrite existing SINAPSE installation (destructive, opt-in)
785
800
  --quiet Minimal output (no banner, no prompts) - ideal for CI/CD
786
801
  --dry-run Simulate installation without modifying files
787
- --merge Auto-merge existing config files (brownfield mode)
788
- --no-merge Disable merge option, use legacy overwrite behavior
789
802
  -h, --help Show this help message
790
803
 
791
- Smart Merge (Brownfield):
804
+ Safe Merge (Always On):
792
805
  When installing in a project with existing config files (.env, CLAUDE.md),
793
- SINAPSE can merge new settings while preserving your customizations.
806
+ SINAPSE ALWAYS merges your customizations are never overwritten.
794
807
 
795
808
  - .env files: Adds new variables, preserves existing values
796
809
  - CLAUDE.md: Updates SINAPSE sections, keeps your custom rules
810
+ - Unknown file types: Backed up automatically before any change
811
+
812
+ This behavior is non-negotiable and replaces the old --merge / --no-merge
813
+ flags (which are accepted as no-ops for backward compatibility).
797
814
 
798
815
  Exit Codes:
799
816
  0 Installation successful
@@ -806,9 +823,6 @@ Examples:
806
823
  # Force reinstall without prompts
807
824
  npx sinapse-ai install --force
808
825
 
809
- # Brownfield: merge configs automatically
810
- npx sinapse-ai install --merge
811
-
812
826
  # Silent install for CI/CD
813
827
  npx sinapse-ai install --quiet --force
814
828
 
@@ -820,7 +834,7 @@ Examples:
820
834
  // Helper: Create new project
821
835
  // Helper: Show init help
822
836
  function showInitHelp() {
823
- console.log(`
837
+ logger.always(`
824
838
  Usage: npx sinapse-ai init <project-name> [options]
825
839
 
826
840
  Create a new SINAPSE project with the specified name.
@@ -865,8 +879,8 @@ async function initProject() {
865
879
  if (templateIndex !== -1) {
866
880
  template = initArgs[templateIndex + 1];
867
881
  if (!template || template.startsWith('-')) {
868
- console.error('❌ --template requires a template name');
869
- console.error('Available templates: default, minimal, enterprise');
882
+ logger.error('❌ --template requires a template name');
883
+ logger.error('Available templates: default, minimal, enterprise');
870
884
  process.exit(1);
871
885
  }
872
886
  }
@@ -874,8 +888,8 @@ async function initProject() {
874
888
  // Validate template
875
889
  const validTemplates = ['default', 'minimal', 'enterprise'];
876
890
  if (!validTemplates.includes(template)) {
877
- console.error(`❌ Unknown template: ${template}`);
878
- console.error(`Available templates: ${validTemplates.join(', ')}`);
891
+ logger.error(`❌ Unknown template: ${template}`);
892
+ logger.error(`Available templates: ${validTemplates.join(', ')}`);
879
893
  process.exit(1);
880
894
  }
881
895
 
@@ -889,9 +903,9 @@ async function initProject() {
889
903
  });
890
904
 
891
905
  if (!projectName) {
892
- console.error('❌ Project name is required');
893
- console.log('\nUsage: npx sinapse-ai init <project-name> [options]');
894
- console.log('Run with --help for more information.');
906
+ logger.error('❌ Project name is required');
907
+ logger.always('\nUsage: npx sinapse-ai init <project-name> [options]');
908
+ logger.always('Run with --help for more information.');
895
909
  process.exit(1);
896
910
  }
897
911
 
@@ -904,28 +918,28 @@ async function initProject() {
904
918
  if (fs.existsSync(targetPath) && !isCurrentDir) {
905
919
  const contents = fs.readdirSync(targetPath).filter((f) => !f.startsWith('.'));
906
920
  if (contents.length > 0 && !isForce) {
907
- console.error(`❌ Directory already exists and is not empty: ${projectName}`);
908
- console.error('Use --force to overwrite.');
921
+ logger.error(`❌ Directory already exists and is not empty: ${projectName}`);
922
+ logger.error('Use --force to overwrite.');
909
923
  process.exit(1);
910
924
  }
911
925
  if (contents.length > 0 && isForce) {
912
- console.log(`⚠️ Using --force: overwriting existing directory: ${projectName}`);
926
+ logger.always(`⚠️ Using --force: overwriting existing directory: ${projectName}`);
913
927
  } else {
914
- console.log(`✓ Using existing empty directory: ${projectName}`);
928
+ logger.always(`✓ Using existing empty directory: ${projectName}`);
915
929
  }
916
930
  } else if (!fs.existsSync(targetPath)) {
917
931
  fs.mkdirSync(targetPath, { recursive: true });
918
- console.log(`✓ Created directory: ${projectName}`);
932
+ logger.always(`✓ Created directory: ${projectName}`);
919
933
  }
920
934
 
921
- console.log(`Creating new SINAPSE project: ${displayName}`);
935
+ logger.always(`Creating new SINAPSE project: ${displayName}`);
922
936
  if (template !== 'default') {
923
- console.log(`Template: ${template}`);
937
+ logger.always(`Template: ${template}`);
924
938
  }
925
939
  if (skipInstall) {
926
- console.log('Skip install: enabled');
940
+ logger.always('Skip install: enabled');
927
941
  }
928
- console.log('');
942
+ logger.always('');
929
943
 
930
944
  // 7. Change to project directory (if not already there)
931
945
  if (!isCurrentDir) {
@@ -942,6 +956,14 @@ async function initProject() {
942
956
 
943
957
  // Command routing (async main function)
944
958
  async function main() {
959
+ // Story 10.13 — emit deprecation notice when the legacy `sinapse` binary
960
+ // is used for the canonical subcommands. The warning goes to stderr so it
961
+ // does NOT interfere with pipes, does NOT change the exit code, and does
962
+ // NOT block execution (backward compat preserved for one major version).
963
+ if (command === 'install' || command === 'update' || command === 'uninstall') {
964
+ emitDeprecationWarning('sinapse', command);
965
+ }
966
+
945
967
  switch (command) {
946
968
  case 'workers':
947
969
  // Service Discovery CLI - Story 2.7
@@ -949,7 +971,7 @@ async function main() {
949
971
  const { run } = require('../.sinapse-ai/cli/index.js');
950
972
  await run(process.argv);
951
973
  } catch (error) {
952
- console.error(`❌ Workers command error: ${error.message}`);
974
+ logger.error(`❌ Workers command error: ${error.message}`);
953
975
  process.exit(1);
954
976
  }
955
977
  break;
@@ -960,7 +982,7 @@ async function main() {
960
982
  const { run } = require('../.sinapse-ai/cli/index.js');
961
983
  await run(process.argv);
962
984
  } catch (error) {
963
- console.error(`❌ Config command error: ${error.message}`);
985
+ logger.error(`❌ Config command error: ${error.message}`);
964
986
  process.exit(1);
965
987
  }
966
988
  break;
@@ -971,7 +993,7 @@ async function main() {
971
993
  const { run } = require('../.sinapse-ai/cli/index.js');
972
994
  await run(process.argv);
973
995
  } catch (error) {
974
- console.error(`❌ Pro command error: ${error.message}`);
996
+ logger.error(`❌ Pro command error: ${error.message}`);
975
997
  process.exit(1);
976
998
  }
977
999
  break;
@@ -983,7 +1005,7 @@ async function main() {
983
1005
  const { runChromeBrain } = require('./modules/chrome-brain-installer');
984
1006
  await runChromeBrain(chromeBrainArgs);
985
1007
  } catch (error) {
986
- console.error(`Error in chrome-brain: ${error.message}`);
1008
+ logger.error(`Error in chrome-brain: ${error.message}`);
987
1009
  process.exit(1);
988
1010
  }
989
1011
  break;
@@ -996,15 +1018,25 @@ async function main() {
996
1018
  showInstallHelp();
997
1019
  break;
998
1020
  }
1021
+ // Story A.2 — expose verbosity flags on the wizard options so the wizard
1022
+ // can pipe them down to sub-steps that still use raw console.
999
1023
  const installOptions = {
1000
1024
  force: installArgs.includes('--force'),
1001
- quiet: installArgs.includes('--quiet'),
1025
+ quiet: installArgs.includes('--quiet') || logger._flags?.quiet,
1026
+ verbose: installArgs.includes('--verbose') || logger._flags?.verbose,
1027
+ debug: installArgs.includes('--debug') || logger._flags?.debug,
1028
+ json: installArgs.includes('--json') || logger._flags?.json,
1002
1029
  dryRun: installArgs.includes('--dry-run'),
1003
1030
  forceMerge: installArgs.includes('--merge'),
1004
1031
  noMerge: installArgs.includes('--no-merge'),
1005
1032
  };
1006
- if (!installOptions.quiet) {
1007
- console.log('SINAPSE-FullStack Installation\n');
1033
+ // Story A.2 AC 9 — json mode: record metadata so flush() emits a
1034
+ // structured summary at process exit.
1035
+ if (installOptions.json) {
1036
+ logger.setVersion(packageJson.version);
1037
+ }
1038
+ if (!installOptions.quiet && !installOptions.json) {
1039
+ logger.always('SINAPSE-FullStack Installation\n');
1008
1040
  }
1009
1041
  await runWizard(installOptions);
1010
1042
  break;
@@ -1055,6 +1087,54 @@ async function main() {
1055
1087
  break;
1056
1088
  }
1057
1089
 
1090
+ case 'telemetry': {
1091
+ // Story C.1 — Opt-in telemetry (disabled by default).
1092
+ // Subcommands: enable | disable | status
1093
+ const sub = args[1];
1094
+ const telemetry = require(path.join(__dirname, '..', '.sinapse-ai', 'core', 'telemetry'));
1095
+ if (sub === 'enable') {
1096
+ const ok = telemetry.enable();
1097
+ if (ok) {
1098
+ logger.always('Telemetria ativada. Obrigado por ajudar a melhorar o SINAPSE!');
1099
+ logger.always('Política de privacidade: docs/TELEMETRY.md');
1100
+ } else {
1101
+ logger.error(`Falha ao gravar ${telemetry.configPath()} — telemetria não ativada.`);
1102
+ process.exit(1);
1103
+ }
1104
+ } else if (sub === 'disable') {
1105
+ const ok = telemetry.disable();
1106
+ if (ok) {
1107
+ logger.always('Telemetria desativada.');
1108
+ } else {
1109
+ logger.error(`Falha ao gravar ${telemetry.configPath()} — estado não alterado.`);
1110
+ process.exit(1);
1111
+ }
1112
+ } else if (sub === 'status' || sub === undefined) {
1113
+ const enabled = telemetry.isEnabled();
1114
+ const envOverride = process.env.SINAPSE_TELEMETRY;
1115
+ logger.always(`Telemetria: ${enabled ? 'ATIVADA' : 'DESATIVADA (padrão)'}`);
1116
+ if (envOverride === '1' || envOverride === 'true') {
1117
+ logger.always(' (forçada por SINAPSE_TELEMETRY env var)');
1118
+ } else if (envOverride === '0' || envOverride === 'false') {
1119
+ logger.always(' (forçada desativada por SINAPSE_TELEMETRY env var)');
1120
+ } else {
1121
+ logger.always(` Config: ${telemetry.configPath()}`);
1122
+ }
1123
+ logger.always('');
1124
+ logger.always('Comandos:');
1125
+ logger.always(' sinapse telemetry enable Ativar telemetria (opt-in)');
1126
+ logger.always(' sinapse telemetry disable Desativar telemetria');
1127
+ logger.always(' sinapse telemetry status Ver estado atual');
1128
+ logger.always('');
1129
+ logger.always('Política de privacidade: docs/TELEMETRY.md');
1130
+ } else {
1131
+ logger.error(`Subcomando desconhecido: telemetry ${sub}`);
1132
+ logger.always('Use: sinapse telemetry [enable|disable|status]');
1133
+ process.exit(1);
1134
+ }
1135
+ break;
1136
+ }
1137
+
1058
1138
  case 'validate':
1059
1139
  // Post-installation validation - Story 6.19
1060
1140
  await runValidate();
@@ -1087,7 +1167,7 @@ async function main() {
1087
1167
  const { run } = require('../.sinapse-ai/cli/index.js');
1088
1168
  await run(process.argv);
1089
1169
  } catch (error) {
1090
- console.error(`❌ QA command error: ${error.message}`);
1170
+ logger.error(`❌ QA command error: ${error.message}`);
1091
1171
  process.exit(1);
1092
1172
  }
1093
1173
  break;
@@ -1141,6 +1221,6 @@ async function main() {
1141
1221
 
1142
1222
  // Execute main function
1143
1223
  main().catch((error) => {
1144
- console.error('❌ Fatal error:', error.message);
1224
+ logger.error('❌ Fatal error:', error.message);
1145
1225
  process.exit(1);
1146
1226
  });