sinapse-ai 1.8.0 → 1.9.1

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 (361) hide show
  1. package/.claude/hooks/mind-clone-governance.py +212 -212
  2. package/.claude/hooks/read-protection.py +152 -152
  3. package/.claude/hooks/slug-validation.py +175 -175
  4. package/.claude/hooks/sql-governance.py +183 -183
  5. package/.claude/rules/documentation-first.md +1 -1
  6. package/.claude/rules/hook-governance.md +1 -1
  7. package/.claude/rules/mandatory-delegation.md +1 -1
  8. package/.claude/rules/project-intelligence.md +1 -1
  9. package/.codex/agents/analyst.md +4 -371
  10. package/.codex/agents/animations-orqx.md +4 -57
  11. package/.codex/agents/architect.md +4 -560
  12. package/.codex/agents/brand-orqx.md +4 -95
  13. package/.codex/agents/claude-mastery-chief.md +4 -0
  14. package/.codex/agents/cloning-orqx.md +4 -70
  15. package/.codex/agents/commercial-orqx.md +4 -67
  16. package/.codex/agents/config-engineer.md +2 -2
  17. package/.codex/agents/content-orqx.md +4 -77
  18. package/.codex/agents/copy-orqx.md +4 -65
  19. package/.codex/agents/cost-optimizer.md +4 -0
  20. package/.codex/agents/council-orqx.md +4 -68
  21. package/.codex/agents/courses-orqx.md +4 -64
  22. package/.codex/agents/cro-persuasion.md +4 -0
  23. package/.codex/agents/cyber-orqx.md +4 -67
  24. package/.codex/agents/data-engineer.md +4 -542
  25. package/.codex/agents/design-orqx.md +4 -65
  26. package/.codex/agents/design-system.md +4 -210
  27. package/.codex/agents/developer.md +4 -666
  28. package/.codex/agents/devops.md +4 -668
  29. package/.codex/agents/finance-orqx.md +4 -57
  30. package/.codex/agents/fiscal-compliance-br.md +4 -0
  31. package/.codex/agents/forecast-strategist.md +4 -0
  32. package/.codex/agents/growth-orqx.md +4 -75
  33. package/.codex/agents/hooks-architect.md +2 -2
  34. package/.codex/agents/mcp-integrator.md +2 -2
  35. package/.codex/agents/paidmedia-orqx.md +4 -67
  36. package/.codex/agents/platform-aesthetic-director.md +4 -0
  37. package/.codex/agents/premium-packaging-strategist.md +4 -0
  38. package/.codex/agents/product-lead.md +4 -371
  39. package/.codex/agents/product-orqx.md +4 -57
  40. package/.codex/agents/product-surface-director.md +4 -0
  41. package/.codex/agents/project-integrator.md +2 -2
  42. package/.codex/agents/project-lead.md +4 -414
  43. package/.codex/agents/quality-gate.md +4 -547
  44. package/.codex/agents/research-orqx.md +4 -67
  45. package/.codex/agents/roadmap-sentinel.md +2 -2
  46. package/.codex/agents/skill-craftsman.md +2 -2
  47. package/.codex/agents/snps-orqx.md +4 -684
  48. package/.codex/agents/sop-extractor.md +4 -61
  49. package/.codex/agents/sprint-lead.md +4 -324
  50. package/.codex/agents/squad-creator.md +4 -402
  51. package/.codex/agents/storytelling-orqx.md +4 -65
  52. package/.codex/agents/swarm-orqx.md +4 -64
  53. package/.codex/agents/ux-design-expert.md +4 -532
  54. package/.codex/agents/ux-designer.md +4 -124
  55. package/.codex/command-registry.json +9 -9
  56. package/.codex/delegation-matrix.json +375 -839
  57. package/.codex/delegation-parity.json +658 -0
  58. package/.codex/handoff-packet.parity.schema.json +148 -0
  59. package/.codex/handoff-packet.template.json +26 -0
  60. package/.codex/instructions.md +8 -8
  61. package/.codex/scripts/resolve-codex-agent.js +482 -0
  62. package/.codex/scripts/resolve-codex-command.js +75 -12
  63. package/.codex/scripts/resolve-codex-delegation.js +131 -92
  64. package/.codex/skills/sinapse-claude/SKILL.md +3 -3
  65. package/.codex/skills/sinapse-po/SKILL.md +1 -1
  66. package/.codex/tasks/resolve-sinapse-conflict.md +1 -1
  67. package/.sinapse-ai/constitution.md +5 -5
  68. package/.sinapse-ai/core/doctor/checks/git-hooks.js +163 -19
  69. package/.sinapse-ai/core/events/dashboard-emitter.js +30 -9
  70. package/.sinapse-ai/core/execution/subagent-dispatcher.js +1 -1
  71. package/.sinapse-ai/core/synapse/engine.js +15 -0
  72. package/.sinapse-ai/core/ui/observability-panel.js +240 -0
  73. package/.sinapse-ai/core-config.yaml +0 -20
  74. package/.sinapse-ai/data/entity-registry.yaml +185 -236
  75. package/.sinapse-ai/development/agents/snps-orqx.md +16 -26
  76. package/.sinapse-ai/development/tasks/build-autonomous.md +11 -1
  77. package/.sinapse-ai/development/tasks/build-resume.md +8 -0
  78. package/.sinapse-ai/development/tasks/build-status.md +8 -0
  79. package/.sinapse-ai/development/tasks/build.md +8 -0
  80. package/.sinapse-ai/development/tasks/cleanup-worktrees.md +8 -1
  81. package/.sinapse-ai/development/tasks/gotcha.md +8 -0
  82. package/.sinapse-ai/development/tasks/gotchas.md +8 -0
  83. package/.sinapse-ai/development/tasks/ids-health.md +14 -6
  84. package/.sinapse-ai/development/tasks/list-mcps.md +15 -0
  85. package/.sinapse-ai/development/tasks/merge-worktree.md +8 -1
  86. package/.sinapse-ai/development/tasks/qa-review-build.md +18 -0
  87. package/.sinapse-ai/development/tasks/remove-mcp.md +8 -1
  88. package/.sinapse-ai/development/tasks/validate-agents.md +26 -14
  89. package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
  90. package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
  91. package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
  92. package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
  93. package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
  94. package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
  95. package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
  96. package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
  97. package/.sinapse-ai/git-hooks/lib/framework-guard.js +258 -0
  98. package/.sinapse-ai/git-hooks/lib/secret-scanner-core.js +355 -0
  99. package/.sinapse-ai/git-hooks/lib/staged-secret-scan.js +179 -0
  100. package/.sinapse-ai/git-hooks/lib/staged-sql-guard.js +204 -0
  101. package/.sinapse-ai/git-hooks/post-commit +28 -0
  102. package/.sinapse-ai/git-hooks/pre-commit +81 -0
  103. package/.sinapse-ai/git-hooks/pre-push +83 -0
  104. package/.sinapse-ai/hooks/ids-post-commit.js +13 -11
  105. package/.sinapse-ai/hooks/ids-pre-push.js +9 -7
  106. package/.sinapse-ai/infrastructure/scripts/codex-parity/resolve.js +161 -0
  107. package/.sinapse-ai/infrastructure/scripts/dashboard-status-writer.js +6 -2
  108. package/.sinapse-ai/infrastructure/scripts/ide-sync/index.js +65 -68
  109. package/.sinapse-ai/infrastructure/scripts/sync-codex-local-first.js +156 -1
  110. package/.sinapse-ai/infrastructure/scripts/validate-codex-delegation.js +1 -4
  111. package/.sinapse-ai/infrastructure/scripts/validate-codex-integration.js +41 -5
  112. package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
  113. package/.sinapse-ai/infrastructure/templates/config/env.example +16 -16
  114. package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -59
  115. package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -12
  116. package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
  117. package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
  118. package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
  119. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
  120. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
  121. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
  122. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
  123. package/.sinapse-ai/infrastructure/templates/safe-collab/CODEOWNERS.template +16 -16
  124. package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
  125. package/.sinapse-ai/install-manifest.yaml +112 -164
  126. package/.sinapse-ai/local-config.yaml.template +65 -65
  127. package/.sinapse-ai/product/templates/adr.hbs +126 -126
  128. package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
  129. package/.sinapse-ai/product/templates/epic.hbs +213 -213
  130. package/.sinapse-ai/product/templates/ide-rules/codex-rules.md +30 -0
  131. package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
  132. package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
  133. package/.sinapse-ai/product/templates/prd.hbs +202 -202
  134. package/.sinapse-ai/product/templates/statusline/statusline-script.js +31 -8
  135. package/.sinapse-ai/product/templates/statusline/track-agent-clear.cjs +79 -0
  136. package/.sinapse-ai/product/templates/statusline/track-agent.cjs +218 -0
  137. package/.sinapse-ai/product/templates/story.hbs +264 -264
  138. package/.sinapse-ai/product/templates/task.hbs +171 -171
  139. package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
  140. package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
  141. package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
  142. package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
  143. package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
  144. package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
  145. package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
  146. package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
  147. package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
  148. package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
  149. package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
  150. package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
  151. package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
  152. package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
  153. package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
  154. package/AGENTS.md +193 -0
  155. package/CHANGELOG.md +1247 -0
  156. package/LICENSE +63 -63
  157. package/README.en.md +17 -18
  158. package/README.md +18 -19
  159. package/bin/cli.js +1 -1
  160. package/bin/commands/install.js +194 -22
  161. package/bin/commands/status.js +14 -1
  162. package/bin/commands/uninstall.js +2 -2
  163. package/bin/commands/update.js +52 -0
  164. package/bin/lib/setup-statusline.js +191 -0
  165. package/bin/sinapse-init.js +11 -83
  166. package/bin/utils/framework-guard.js +17 -4
  167. package/bin/utils/secret-scanner-core.js +109 -7
  168. package/bin/utils/staged-sql-guard.js +204 -0
  169. package/bin/utils/validate-publish.js +63 -0
  170. package/docs/agent-reference-guide.md +5 -7
  171. package/docs/framework/agent-prefix-convention.md +58 -0
  172. package/docs/framework/architecture-overview.md +4 -4
  173. package/docs/framework/collaboration-activation.md +45 -0
  174. package/docs/framework/guiding-principles.md +9 -9
  175. package/docs/getting-started.md +1 -1
  176. package/docs/guides/agent-reference.md +1 -1
  177. package/docs/guides/codex-config.md +4 -5
  178. package/docs/pt/architecture/sub-orqx-pattern.md +20 -18
  179. package/docs/security/overview.md +1 -1
  180. package/package.json +16 -12
  181. package/packages/installer/src/index.js +26 -0
  182. package/packages/installer/src/installer/git-hooks-installer.js +211 -47
  183. package/packages/installer/src/installer/sinapse-ai-installer.js +71 -0
  184. package/packages/installer/src/wizard/feedback.js +1 -1
  185. package/packages/installer/src/wizard/ide-config-generator.js +26 -26
  186. package/packages/installer/src/wizard/index.js +53 -4
  187. package/packages/sinapse-install/bin/edmcp.js +0 -0
  188. package/packages/sinapse-install/bin/sinapse-install.js +0 -0
  189. package/scripts/audit-tasks.cjs +112 -91
  190. package/scripts/check-markdown-links.py +352 -352
  191. package/scripts/prepare-hooks.js +58 -0
  192. package/scripts/regenerate-orqx-stubs.ps1 +2 -3
  193. package/scripts/sync-counts.js +10 -2
  194. package/scripts/sync-squad-yaml-components.js +108 -6
  195. package/scripts/validate-agents-md.js +128 -0
  196. package/scripts/validate-all.js +1 -0
  197. package/scripts/validate-squad-orqx.js +19 -9
  198. package/sinapse/agents/sinapse-orqx.md +16 -26
  199. package/sinapse/agents/snps-orqx.md +15 -25
  200. package/sinapse/knowledge-base/routing-catalog.md +1 -1
  201. package/sinapse/tasks/diagnose-and-route.md +1 -1
  202. package/sinapse/tasks/squad-status-report.md +1 -1
  203. package/squads/claude-code-mastery/agents/claude-mastery-chief.md +1 -1
  204. package/squads/claude-code-mastery/agents/hooks-architect.md +60 -68
  205. package/squads/claude-code-mastery/knowledge-base/swarm-orchestration-patterns.md +1 -1
  206. package/squads/claude-code-mastery/squad.yaml +8 -0
  207. package/squads/claude-code-mastery/tasks/audit-setup.md +1 -1
  208. package/squads/claude-code-mastery/workflows/optimization-cycle.yaml +4 -4
  209. package/squads/claude-code-mastery/workflows/project-setup-cycle.yaml +4 -4
  210. package/squads/squad-animations/README.md +1 -1
  211. package/squads/squad-animations/squad.yaml +1 -1
  212. package/squads/squad-brand/squad.yaml +1 -1
  213. package/squads/squad-cloning/README.md +1 -1
  214. package/squads/squad-cloning/squad.yaml +1 -1
  215. package/squads/squad-commercial/README.md +1 -1
  216. package/squads/squad-commercial/squad.yaml +2 -3
  217. package/squads/squad-content/README.md +1 -1
  218. package/squads/squad-content/squad.yaml +1 -1
  219. package/squads/squad-copy/README.md +1 -1
  220. package/squads/squad-copy/squad.yaml +2 -3
  221. package/squads/squad-council/README.md +1 -1
  222. package/squads/squad-courses/README.md +1 -1
  223. package/squads/squad-courses/squad.yaml +1 -1
  224. package/squads/squad-cybersecurity/README.md +1 -1
  225. package/squads/squad-cybersecurity/squad.yaml +2 -3
  226. package/squads/squad-design/README.md +1 -1
  227. package/squads/{squad-artdir → squad-design}/agents/cro-persuasion.md +1 -1
  228. package/squads/{squad-artdir → squad-design}/agents/platform-aesthetic-director.md +2 -2
  229. package/squads/{squad-artdir → squad-design}/agents/premium-packaging-strategist.md +2 -2
  230. package/squads/{squad-artdir → squad-design}/agents/product-surface-director.md +3 -3
  231. package/squads/squad-design/squad.yaml +6 -3
  232. package/squads/squad-finance/README.md +1 -1
  233. package/squads/squad-finance/squad.yaml +7 -1
  234. package/squads/squad-growth/README.md +1 -1
  235. package/squads/squad-growth/squad.yaml +1 -1
  236. package/squads/squad-paidmedia/README.md +1 -1
  237. package/squads/squad-paidmedia/squad.yaml +2 -3
  238. package/squads/squad-product/README.md +1 -1
  239. package/squads/squad-product/squad.yaml +1 -1
  240. package/squads/squad-research/README.md +1 -1
  241. package/squads/squad-research/squad.yaml +2 -3
  242. package/squads/squad-storytelling/README.md +1 -1
  243. package/squads/squad-storytelling/squad.yaml +2 -3
  244. package/.codex/agents/brad-frost.md +0 -46
  245. package/.codex/agents/claude-orqx.md +0 -72
  246. package/.codex/agents/copy-chief.md +0 -162
  247. package/.codex/agents/cyber-chief.md +0 -169
  248. package/.codex/agents/dan-mall.md +0 -43
  249. package/.codex/agents/data-chief.md +0 -198
  250. package/.codex/agents/dave-malouf.md +0 -43
  251. package/.codex/agents/db-sage.md +0 -152
  252. package/.codex/agents/design-chief.md +0 -226
  253. package/.codex/agents/dev.md +0 -102
  254. package/.codex/agents/legal-chief.md +0 -199
  255. package/.codex/agents/nano-banana-generator.md +0 -42
  256. package/.codex/agents/pm.md +0 -81
  257. package/.codex/agents/po.md +0 -85
  258. package/.codex/agents/qa.md +0 -98
  259. package/.codex/agents/sm.md +0 -77
  260. package/.codex/agents/squad-chief.md +0 -1553
  261. package/.codex/agents/squad.md +0 -66
  262. package/.codex/agents/story-chief.md +0 -180
  263. package/.codex/agents/tools-orqx.md +0 -219
  264. package/.codex/agents/traffic-masters-chief.md +0 -211
  265. package/.sinapse-ai/core/memory/__tests__/active-modules.verify.js +0 -265
  266. package/.sinapse-ai/core/permissions/__tests__/permission-mode.test.js +0 -293
  267. package/.sinapse-ai/data/registry-update-log.jsonl +0 -158
  268. package/.sinapse-ai/infrastructure/scripts/ide-sync/gemini-commands.js +0 -298
  269. package/.sinapse-ai/infrastructure/scripts/ide-sync/transformers/antigravity.js +0 -121
  270. package/.sinapse-ai/infrastructure/scripts/ide-sync/transformers/cursor.js +0 -119
  271. package/.sinapse-ai/infrastructure/scripts/ide-sync/transformers/github-copilot.js +0 -191
  272. package/.sinapse-ai/infrastructure/scripts/ide-sync/transformers/kimi.js +0 -448
  273. package/.sinapse-ai/infrastructure/tests/project-status-loader.test.js +0 -569
  274. package/.sinapse-ai/infrastructure/tests/regression-suite-v2.md +0 -622
  275. package/.sinapse-ai/infrastructure/tests/validate-module.js +0 -98
  276. package/.sinapse-ai/infrastructure/tests/worktree-manager.test.js +0 -620
  277. package/.sinapse-ai/monitor/hooks/lib/__init__.py +0 -2
  278. package/.sinapse-ai/monitor/hooks/lib/enrich.py +0 -59
  279. package/.sinapse-ai/monitor/hooks/lib/send_event.py +0 -48
  280. package/.sinapse-ai/monitor/hooks/notification.py +0 -30
  281. package/.sinapse-ai/monitor/hooks/post_tool_use.py +0 -46
  282. package/.sinapse-ai/monitor/hooks/pre_compact.py +0 -30
  283. package/.sinapse-ai/monitor/hooks/pre_tool_use.py +0 -41
  284. package/.sinapse-ai/monitor/hooks/stop.py +0 -30
  285. package/.sinapse-ai/monitor/hooks/subagent_stop.py +0 -30
  286. package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +0 -39
  287. package/.sinapse-ai/product/templates/statusline/track-agent.sh +0 -69
  288. package/.sinapse-ai/workflow-intelligence/__tests__/confidence-scorer.test.js +0 -335
  289. package/.sinapse-ai/workflow-intelligence/__tests__/integration.test.js +0 -340
  290. package/.sinapse-ai/workflow-intelligence/__tests__/suggestion-engine.test.js +0 -438
  291. package/.sinapse-ai/workflow-intelligence/__tests__/wave-analyzer.test.js +0 -448
  292. package/.sinapse-ai/workflow-intelligence/__tests__/workflow-registry.test.js +0 -303
  293. package/bin/sinapse-graph.js +0 -19
  294. package/docs/codex-integration-process.md +0 -22
  295. package/docs/codex-parity-program.md +0 -27
  296. package/packages/installer/src/__tests__/performance-benchmark.js +0 -383
  297. package/packages/installer/tests/integration/environment-configuration.test.js +0 -332
  298. package/packages/installer/tests/integration/wizard-detection.test.js +0 -352
  299. package/packages/installer/tests/unit/artifact-copy-pipeline/artifact-copy-pipeline.test.js +0 -383
  300. package/packages/installer/tests/unit/claude-md-template-v5/claude-md-template-v5.test.js +0 -193
  301. package/packages/installer/tests/unit/config-validator.test.js +0 -315
  302. package/packages/installer/tests/unit/detection/detect-project-type.test.js +0 -539
  303. package/packages/installer/tests/unit/doctor/doctor-checks.test.js +0 -636
  304. package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +0 -192
  305. package/packages/installer/tests/unit/entity-registry-bootstrap.test.js +0 -186
  306. package/packages/installer/tests/unit/env-template.test.js +0 -187
  307. package/packages/installer/tests/unit/generate-settings-json/generate-settings-json.test.js +0 -310
  308. package/packages/installer/tests/unit/git-hooks-installer.test.js +0 -262
  309. package/packages/installer/tests/unit/ide-sync-integration/ide-sync-integration.test.js +0 -231
  310. package/packages/installer/tests/unit/merger/env-merger.test.js +0 -191
  311. package/packages/installer/tests/unit/merger/markdown-merger.test.js +0 -262
  312. package/packages/installer/tests/unit/merger/strategies.test.js +0 -154
  313. package/packages/installer/tests/unit/merger/yaml-merger.test.js +0 -328
  314. package/packages/sinapse-install/tests/unit/chrome-brain.smoke.test.js +0 -66
  315. package/scripts/install-monitor-hooks.sh +0 -82
  316. package/squads/squad-artdir/README.md +0 -90
  317. package/squads/squad-artdir/agents/accessibility-guardian.md +0 -184
  318. package/squads/squad-artdir/agents/artdir-orqx.md +0 -222
  319. package/squads/squad-artdir/agents/color-psychologist.md +0 -166
  320. package/squads/squad-artdir/agents/design-system-architect.md +0 -100
  321. package/squads/squad-artdir/agents/ia-architect.md +0 -169
  322. package/squads/squad-artdir/agents/interaction-designer.md +0 -162
  323. package/squads/squad-artdir/agents/layout-engineer.md +0 -163
  324. package/squads/squad-artdir/agents/motion-architect.md +0 -185
  325. package/squads/squad-artdir/agents/type-systemist.md +0 -138
  326. package/squads/squad-artdir/agents/visual-strategist.md +0 -127
  327. package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +0 -172
  328. package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +0 -289
  329. package/squads/squad-artdir/knowledge-base/deliverables-templates.md +0 -457
  330. package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +0 -247
  331. package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +0 -133
  332. package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +0 -229
  333. package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +0 -242
  334. package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +0 -289
  335. package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +0 -221
  336. package/squads/squad-artdir/package.json +0 -20
  337. package/squads/squad-artdir/squad.yaml +0 -299
  338. package/squads/squad-artdir/tasks/audit-conversion.md +0 -97
  339. package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +0 -55
  340. package/squads/squad-artdir/tasks/consult-saas-canon.md +0 -54
  341. package/squads/squad-artdir/tasks/create-art-direction-brief.md +0 -110
  342. package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +0 -61
  343. package/squads/squad-artdir/tasks/create-wireflow.md +0 -84
  344. package/squads/squad-artdir/tasks/design-color-system.md +0 -81
  345. package/squads/squad-artdir/tasks/design-product-surface.md +0 -60
  346. package/squads/squad-artdir/tasks/design-token-system.md +0 -58
  347. package/squads/squad-artdir/tasks/diagnose-visual-language.md +0 -92
  348. package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +0 -65
  349. package/squads/squad-artdir/tasks/specify-motion-system.md +0 -84
  350. package/squads/squad-artdir/tasks/validate-against-pillars.md +0 -143
  351. package/squads/squad-artdir/templates/art-direction-brief-template.md +0 -215
  352. package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +0 -142
  353. package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +0 -179
  354. package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +0 -338
  355. package/squads/squad-commercial/agents/legal-chief.md +0 -199
  356. package/squads/squad-copy/agents/copy-chief.md +0 -162
  357. package/squads/squad-cybersecurity/agents/cyber-chief.md +0 -169
  358. package/squads/squad-design/agents/design-chief.md +0 -226
  359. package/squads/squad-paidmedia/agents/traffic-masters-chief.md +0 -211
  360. package/squads/squad-research/agents/data-chief.md +0 -198
  361. package/squads/squad-storytelling/agents/story-chief.md +0 -180
@@ -1,265 +0,0 @@
1
- /**
2
- * Verification Tests for Active SINAPSE Memory Modules
3
- *
4
- * Tests active memory modules:
5
- * 1. Feedback Loop (gotchas-memory.js)
6
- * 2. Custom Rules per Project (semantic-merge-engine.js)
7
- *
8
- * @created 2026-01-29
9
- * @updated 2026-02-09 - Removed orphan modules tests (Story MIS-2)
10
- * @updated 2026-06-15 - Status note added (see below)
11
- *
12
- * STATUS — IMPORTANT (do not mistake this for a passing CI gate):
13
- * This is a `.verify.js` standalone script (run manually via `node`), NOT a
14
- * Jest spec — jest.config.js only matches `*.test.js`/`*.spec.js`, so it never
15
- * runs in CI. The "Feedback Loop" section below asserts the Story 9.4 surface
16
- * (FeedbackType enum + trackUserFeedback / getAccuracyMetrics / getSuggestedRules)
17
- * which is NOT yet implemented in gotchas-memory.js — those assertions are a
18
- * forward spec for pending work, not a regression check. The Custom Rules
19
- * section reflects shipped behavior. Do not "fix" this by inventing the feedback
20
- * feature without its story (Constitution Art. IV — No Invention).
21
- */
22
-
23
- const path = require('path');
24
- const fs = require('fs');
25
-
26
- // Test helpers
27
- const testResults = {
28
- passed: 0,
29
- failed: 0,
30
- errors: [],
31
- };
32
-
33
- function test(name, fn) {
34
- try {
35
- fn();
36
- console.log(` ✅ ${name}`);
37
- testResults.passed++;
38
- } catch (error) {
39
- console.log(` ❌ ${name}`);
40
- console.log(` Error: ${error.message}`);
41
- testResults.failed++;
42
- testResults.errors.push({ name, error: error.message });
43
- }
44
- }
45
-
46
- function assertEqual(actual, expected, message) {
47
- if (actual !== expected) {
48
- throw new Error(`${message}: expected ${expected}, got ${actual}`);
49
- }
50
- }
51
-
52
- function assertTrue(condition, message) {
53
- if (!condition) {
54
- throw new Error(message || 'Assertion failed');
55
- }
56
- }
57
-
58
- function assertDefined(value, message) {
59
- if (value === undefined || value === null) {
60
- throw new Error(message || 'Value is undefined or null');
61
- }
62
- }
63
-
64
- // ============================================================================
65
- // TEST SUITE 1: FEEDBACK LOOP
66
- // ============================================================================
67
-
68
- console.log('\n🔄 Testing Feedback Loop...\n');
69
-
70
- test('GotchasMemory module loads with FeedbackType', () => {
71
- const { GotchasMemory, FeedbackType } = require('../gotchas-memory');
72
-
73
- assertDefined(GotchasMemory, 'GotchasMemory should be defined');
74
- assertDefined(FeedbackType, 'FeedbackType should be defined');
75
- });
76
-
77
- test('FeedbackType has required types', () => {
78
- const { FeedbackType } = require('../gotchas-memory');
79
-
80
- assertEqual(FeedbackType.HELPFUL, 'helpful', 'HELPFUL type');
81
- assertEqual(FeedbackType.NOT_HELPFUL, 'not_helpful', 'NOT_HELPFUL type');
82
- assertEqual(FeedbackType.FALSE_POSITIVE, 'false_positive', 'FALSE_POSITIVE type');
83
- assertEqual(FeedbackType.MISSED, 'missed', 'MISSED type');
84
- assertEqual(FeedbackType.IMPROVED, 'improved', 'IMPROVED type');
85
- });
86
-
87
- test('GotchasMemory has trackUserFeedback method', () => {
88
- const { GotchasMemory } = require('../gotchas-memory');
89
-
90
- // GotchasMemory constructor takes rootPath as first arg (string)
91
- const memory = new GotchasMemory(process.cwd());
92
- assertDefined(memory.trackUserFeedback, 'trackUserFeedback method should exist');
93
- });
94
-
95
- test('GotchasMemory has getAccuracyMetrics method', () => {
96
- const { GotchasMemory } = require('../gotchas-memory');
97
-
98
- const memory = new GotchasMemory(process.cwd());
99
- assertDefined(memory.getAccuracyMetrics, 'getAccuracyMetrics method should exist');
100
- });
101
-
102
- test('GotchasMemory has getSuggestedRules method', () => {
103
- const { GotchasMemory } = require('../gotchas-memory');
104
-
105
- const memory = new GotchasMemory(process.cwd());
106
- assertDefined(memory.getSuggestedRules, 'getSuggestedRules method should exist');
107
- });
108
-
109
- test('GotchasMemory can track feedback', () => {
110
- const { GotchasMemory, FeedbackType } = require('../gotchas-memory');
111
-
112
- const memory = new GotchasMemory(process.cwd());
113
- const result = memory.trackUserFeedback({
114
- gotchaId: 'test-gotcha-1',
115
- feedbackType: FeedbackType.HELPFUL,
116
- comment: 'Test feedback',
117
- });
118
-
119
- assertDefined(result, 'Result should be defined');
120
- // Result structure may vary
121
- assertTrue(typeof result === 'object', 'Result should be an object');
122
- });
123
-
124
- test('GotchasMemory can get accuracy metrics', () => {
125
- const { GotchasMemory } = require('../gotchas-memory');
126
-
127
- const memory = new GotchasMemory(process.cwd());
128
- const metrics = memory.getAccuracyMetrics();
129
-
130
- assertDefined(metrics, 'Metrics should be defined');
131
- assertTrue(typeof metrics === 'object', 'Metrics should be an object');
132
- });
133
-
134
- // ============================================================================
135
- // TEST SUITE 2: CUSTOM RULES PER PROJECT
136
- // ============================================================================
137
-
138
- console.log('\n⚙️ Testing Custom Rules per Project...\n');
139
-
140
- test('SemanticMergeEngine loads CustomRulesLoader', () => {
141
- const {
142
- SemanticMergeEngine,
143
- CustomRulesLoader,
144
- } = require('../../execution/semantic-merge-engine');
145
-
146
- assertDefined(SemanticMergeEngine, 'SemanticMergeEngine should be defined');
147
- assertDefined(CustomRulesLoader, 'CustomRulesLoader should be defined');
148
- });
149
-
150
- test('CustomRulesLoader instantiates correctly', () => {
151
- const { CustomRulesLoader } = require('../../execution/semantic-merge-engine');
152
-
153
- const loader = new CustomRulesLoader(process.cwd());
154
- assertDefined(loader, 'Loader should instantiate');
155
- assertDefined(loader.loadCustomRules, 'loadCustomRules method should exist');
156
- assertDefined(loader.getMergedRules, 'getMergedRules method should exist');
157
- });
158
-
159
- test('CustomRulesLoader has getDefaultRules method', () => {
160
- const { CustomRulesLoader } = require('../../execution/semantic-merge-engine');
161
-
162
- const loader = new CustomRulesLoader(process.cwd());
163
- const defaults = loader.getDefaultRules();
164
-
165
- assertDefined(defaults, 'Defaults should be defined');
166
- assertDefined(defaults.compatibility, 'Defaults should have compatibility');
167
- assertDefined(defaults.file_patterns, 'Defaults should have file_patterns');
168
- assertDefined(defaults.languages, 'Defaults should have languages');
169
- assertDefined(defaults.ai, 'Defaults should have ai config');
170
- });
171
-
172
- test('CustomRulesLoader can get merged rules', () => {
173
- const { CustomRulesLoader } = require('../../execution/semantic-merge-engine');
174
-
175
- const loader = new CustomRulesLoader(process.cwd());
176
- const rules = loader.getMergedRules();
177
-
178
- assertDefined(rules, 'Rules should be defined');
179
- assertDefined(rules.file_patterns, 'Rules should have file_patterns');
180
- });
181
-
182
- test('CustomRulesLoader can categorize files', () => {
183
- const { CustomRulesLoader } = require('../../execution/semantic-merge-engine');
184
-
185
- const loader = new CustomRulesLoader(process.cwd());
186
-
187
- // Test matchesPattern directly
188
- const skipPatterns = ['node_modules/**', '.git/**', '*.log'];
189
- const matchesNodeModules = loader.matchesPattern('node_modules/package/index.js', skipPatterns);
190
- assertTrue(matchesNodeModules, 'node_modules/package/index.js should match node_modules/**');
191
-
192
- // Test default category
193
- const defaultCategory = loader.getFileCategory('src/utils/helper.js');
194
- // This depends on rules, but should be defined
195
- assertDefined(defaultCategory, 'Category should be defined');
196
- });
197
-
198
- test('CustomRulesLoader has cache functionality', () => {
199
- const { CustomRulesLoader } = require('../../execution/semantic-merge-engine');
200
-
201
- const loader = new CustomRulesLoader(process.cwd());
202
-
203
- // First call loads
204
- loader.getMergedRules();
205
-
206
- // Check cache is valid
207
- const isValid = loader.isCacheValid();
208
- assertTrue(isValid, 'Cache should be valid after loading');
209
-
210
- // Clear cache
211
- loader.clearCache();
212
- const isInvalid = !loader.isCacheValid();
213
- assertTrue(isInvalid, 'Cache should be invalid after clearing');
214
- });
215
-
216
- test('SemanticMergeEngine integrates with CustomRulesLoader', () => {
217
- const { SemanticMergeEngine } = require('../../execution/semantic-merge-engine');
218
-
219
- const engine = new SemanticMergeEngine({ rootPath: process.cwd() });
220
-
221
- assertDefined(engine.rulesLoader, 'Engine should have rulesLoader');
222
- assertDefined(engine.getRules, 'Engine should have getRules method');
223
- assertDefined(engine.reloadRules, 'Engine should have reloadRules method');
224
- assertDefined(engine.getFileCategory, 'Engine should have getFileCategory method');
225
- });
226
-
227
- test('SemanticMergeEngine can get rules', () => {
228
- const { SemanticMergeEngine } = require('../../execution/semantic-merge-engine');
229
-
230
- const engine = new SemanticMergeEngine({ rootPath: process.cwd() });
231
- const rules = engine.getRules();
232
-
233
- assertDefined(rules, 'Rules should be defined');
234
- });
235
-
236
- test('merge-rules.yaml exists in .sinapse', () => {
237
- const rulesPath = path.join(process.cwd(), '.sinapse', 'merge-rules.yaml');
238
- const exists = fs.existsSync(rulesPath);
239
-
240
- assertTrue(exists, 'merge-rules.yaml should exist in .sinapse');
241
- });
242
-
243
- // ============================================================================
244
- // TEST SUMMARY
245
- // ============================================================================
246
-
247
- console.log('\n' + '='.repeat(60));
248
- console.log('TEST SUMMARY');
249
- console.log('='.repeat(60));
250
- console.log(`\n ✅ Passed: ${testResults.passed}`);
251
- console.log(` ❌ Failed: ${testResults.failed}`);
252
- console.log(` 📊 Total: ${testResults.passed + testResults.failed}`);
253
-
254
- if (testResults.errors.length > 0) {
255
- console.log('\n Errors:');
256
- testResults.errors.forEach((e) => {
257
- console.log(` - ${e.name}: ${e.error}`);
258
- });
259
- }
260
-
261
- console.log('\n' + '='.repeat(60));
262
-
263
- // Exit with error code if tests failed
264
- process.exit(testResults.failed > 0 ? 1 : 0);
265
-
@@ -1,293 +0,0 @@
1
- /**
2
- * Permission Mode Tests
3
- *
4
- * Tests for the permission mode system (Epic 6)
5
- */
6
-
7
- const { PermissionMode } = require('../permission-mode');
8
- const { OperationGuard } = require('../operation-guard');
9
- const path = require('path');
10
- const fs = require('fs').promises;
11
- const os = require('os');
12
-
13
- describe('PermissionMode', () => {
14
- let tempDir;
15
- let mode;
16
-
17
- beforeEach(async () => {
18
- // Create temp directory for tests
19
- tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'sinapse-test-'));
20
- await fs.mkdir(path.join(tempDir, '.sinapse'), { recursive: true });
21
- mode = new PermissionMode(tempDir);
22
- });
23
-
24
- afterEach(async () => {
25
- // Cleanup temp directory
26
- try {
27
- await fs.rm(tempDir, { recursive: true });
28
- } catch {
29
- // Ignore cleanup errors
30
- }
31
- });
32
-
33
- describe('load()', () => {
34
- it('should default to "ask" mode when no config exists', async () => {
35
- const result = await mode.load();
36
- expect(result).toBe('ask');
37
- expect(mode.currentMode).toBe('ask');
38
- });
39
-
40
- it('should load mode from config file', async () => {
41
- await fs.writeFile(
42
- path.join(tempDir, '.sinapse', 'config.yaml'),
43
- 'permissions:\n mode: auto\n',
44
- );
45
-
46
- const result = await mode.load();
47
- expect(result).toBe('auto');
48
- });
49
-
50
- it('should fallback to "ask" for invalid mode in config', async () => {
51
- await fs.writeFile(
52
- path.join(tempDir, '.sinapse', 'config.yaml'),
53
- 'permissions:\n mode: invalid_mode\n',
54
- );
55
-
56
- const result = await mode.load();
57
- expect(result).toBe('ask');
58
- });
59
- });
60
-
61
- describe('setMode()', () => {
62
- it('should set mode and persist to config', async () => {
63
- const result = await mode.setMode('auto');
64
-
65
- expect(result.mode).toBe('auto');
66
- expect(mode.currentMode).toBe('auto');
67
-
68
- // Verify persisted
69
- const configContent = await fs.readFile(path.join(tempDir, '.sinapse', 'config.yaml'), 'utf-8');
70
- expect(configContent).toContain('mode: auto');
71
- });
72
-
73
- it('should handle alias "yolo" for "auto"', async () => {
74
- const result = await mode.setMode('yolo');
75
- expect(result.mode).toBe('auto');
76
- });
77
-
78
- it('should handle alias "safe" for "explore"', async () => {
79
- const result = await mode.setMode('safe');
80
- expect(result.mode).toBe('explore');
81
- });
82
-
83
- it('should throw error for invalid mode', async () => {
84
- await expect(mode.setMode('invalid')).rejects.toThrow('Invalid mode');
85
- });
86
- });
87
-
88
- describe('getBadge()', () => {
89
- it('should return correct badge for each mode', async () => {
90
- mode.currentMode = 'explore';
91
- expect(mode.getBadge()).toBe('[🔍 Explore]');
92
-
93
- mode.currentMode = 'ask';
94
- expect(mode.getBadge()).toBe('[⚠️ Ask]');
95
-
96
- mode.currentMode = 'auto';
97
- expect(mode.getBadge()).toBe('[⚡ Auto]');
98
- });
99
- });
100
-
101
- describe('canPerform()', () => {
102
- it('should allow all reads in all modes', () => {
103
- for (const modeName of ['explore', 'ask', 'auto']) {
104
- mode.currentMode = modeName;
105
- const result = mode.canPerform('read');
106
- expect(result.allowed).toBe(true);
107
- }
108
- });
109
-
110
- it('should block writes in explore mode', () => {
111
- mode.currentMode = 'explore';
112
- const result = mode.canPerform('write');
113
- expect(result.allowed).toBe(false);
114
- });
115
-
116
- it('should require confirmation for writes in ask mode', () => {
117
- mode.currentMode = 'ask';
118
- const result = mode.canPerform('write');
119
- expect(result.allowed).toBe('confirm');
120
- });
121
-
122
- it('should allow writes in auto mode', () => {
123
- mode.currentMode = 'auto';
124
- const result = mode.canPerform('write');
125
- expect(result.allowed).toBe(true);
126
- });
127
- });
128
-
129
- describe('cycleMode()', () => {
130
- it('should cycle through modes correctly', async () => {
131
- mode.currentMode = 'explore';
132
- mode._loaded = true;
133
-
134
- let result = await mode.cycleMode();
135
- expect(result.mode).toBe('ask');
136
-
137
- result = await mode.cycleMode();
138
- expect(result.mode).toBe('auto');
139
-
140
- result = await mode.cycleMode();
141
- expect(result.mode).toBe('explore');
142
- });
143
- });
144
-
145
- describe('isAutonomous()', () => {
146
- it('should return true only for auto mode', () => {
147
- mode.currentMode = 'auto';
148
- expect(mode.isAutonomous()).toBe(true);
149
-
150
- mode.currentMode = 'ask';
151
- expect(mode.isAutonomous()).toBe(false);
152
-
153
- mode.currentMode = 'explore';
154
- expect(mode.isAutonomous()).toBe(false);
155
- });
156
- });
157
-
158
- describe('isReadOnly()', () => {
159
- it('should return true only for explore mode', () => {
160
- mode.currentMode = 'explore';
161
- expect(mode.isReadOnly()).toBe(true);
162
-
163
- mode.currentMode = 'ask';
164
- expect(mode.isReadOnly()).toBe(false);
165
-
166
- mode.currentMode = 'auto';
167
- expect(mode.isReadOnly()).toBe(false);
168
- });
169
- });
170
- });
171
-
172
- describe('OperationGuard', () => {
173
- let mode;
174
- let guard;
175
-
176
- beforeEach(() => {
177
- mode = new PermissionMode();
178
- mode._loaded = true;
179
- guard = new OperationGuard(mode);
180
- });
181
-
182
- describe('classifyOperation()', () => {
183
- it('should classify Read tool as read', () => {
184
- expect(guard.classifyOperation('Read', {})).toBe('read');
185
- });
186
-
187
- it('should classify Write tool as write', () => {
188
- expect(guard.classifyOperation('Write', {})).toBe('write');
189
- });
190
-
191
- it('should classify Edit tool as write', () => {
192
- expect(guard.classifyOperation('Edit', {})).toBe('write');
193
- });
194
-
195
- it('should classify Glob tool as read', () => {
196
- expect(guard.classifyOperation('Glob', {})).toBe('read');
197
- });
198
-
199
- it('should classify Grep tool as read', () => {
200
- expect(guard.classifyOperation('Grep', {})).toBe('read');
201
- });
202
- });
203
-
204
- describe('classifyBashCommand()', () => {
205
- it('should classify git status as read', () => {
206
- expect(guard.classifyBashCommand('git status')).toBe('read');
207
- });
208
-
209
- it('should classify ls as read', () => {
210
- expect(guard.classifyBashCommand('ls -la')).toBe('read');
211
- });
212
-
213
- it('should classify git push as write', () => {
214
- expect(guard.classifyBashCommand('git push origin main')).toBe('write');
215
- });
216
-
217
- it('should classify rm -rf as delete', () => {
218
- expect(guard.classifyBashCommand('rm -rf node_modules')).toBe('delete');
219
- });
220
-
221
- it('should classify git reset --hard as delete', () => {
222
- expect(guard.classifyBashCommand('git reset --hard HEAD')).toBe('delete');
223
- });
224
-
225
- it('should classify npm install as write', () => {
226
- expect(guard.classifyBashCommand('npm install lodash')).toBe('write');
227
- });
228
-
229
- it('should classify mkdir as write', () => {
230
- expect(guard.classifyBashCommand('mkdir new_dir')).toBe('write');
231
- });
232
- });
233
-
234
- describe('guard()', () => {
235
- it('should allow read operations in all modes', async () => {
236
- for (const modeName of ['explore', 'ask', 'auto']) {
237
- mode.currentMode = modeName;
238
- const result = await guard.guard('Read', { file_path: 'test.js' });
239
- expect(result.proceed).toBe(true);
240
- }
241
- });
242
-
243
- it('should block write in explore mode', async () => {
244
- mode.currentMode = 'explore';
245
- const result = await guard.guard('Write', { file_path: 'test.js' });
246
- expect(result.proceed).toBe(false);
247
- expect(result.blocked).toBe(true);
248
- });
249
-
250
- it('should request confirmation for write in ask mode', async () => {
251
- mode.currentMode = 'ask';
252
- const result = await guard.guard('Write', { file_path: 'test.js' });
253
- expect(result.proceed).toBe(false);
254
- expect(result.needsConfirmation).toBe(true);
255
- });
256
-
257
- it('should allow write in auto mode', async () => {
258
- mode.currentMode = 'auto';
259
- const result = await guard.guard('Write', { file_path: 'test.js' });
260
- expect(result.proceed).toBe(true);
261
- });
262
-
263
- it('should block destructive bash commands in explore mode', async () => {
264
- mode.currentMode = 'explore';
265
- const result = await guard.guard('Bash', { command: 'rm -rf temp' });
266
- expect(result.proceed).toBe(false);
267
- expect(result.blocked).toBe(true);
268
- });
269
-
270
- it('should allow safe bash commands in explore mode', async () => {
271
- mode.currentMode = 'explore';
272
- const result = await guard.guard('Bash', { command: 'git status' });
273
- expect(result.proceed).toBe(true);
274
- });
275
- });
276
-
277
- describe('getStats()', () => {
278
- it('should track operation statistics', async () => {
279
- mode.currentMode = 'auto';
280
-
281
- await guard.guard('Read', {});
282
- await guard.guard('Write', {});
283
- await guard.guard('Bash', { command: 'rm -rf x' });
284
-
285
- const stats = guard.getStats();
286
- expect(stats.total).toBe(3);
287
- expect(stats.byOperation.read).toBe(1);
288
- expect(stats.byOperation.write).toBe(1);
289
- expect(stats.byOperation.delete).toBe(1);
290
- });
291
- });
292
- });
293
-