sinapse-ai 9.4.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 (266) hide show
  1. package/.claude/CLAUDE.md +10 -4
  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/hook-governance.md +1 -0
  10. package/.claude/rules/mandatory-delegation.md +24 -0
  11. package/.claude/rules/project-intelligence.md +63 -0
  12. package/.claude/rules/response-format.md +4 -0
  13. package/.claude/rules/safe-collaboration.md +4 -2
  14. package/.claude/rules/security-data-protection.md +18 -0
  15. package/.claude/rules/squad-awareness.md +93 -67
  16. package/.claude/rules/token-economy.md +148 -0
  17. package/.codex/agents/analyst.md +90 -0
  18. package/.codex/agents/architect.md +78 -0
  19. package/.codex/agents/data-engineer.md +38 -0
  20. package/.codex/agents/developer.md +97 -0
  21. package/.codex/agents/devops.md +121 -0
  22. package/.codex/agents/product-lead.md +27 -0
  23. package/.codex/agents/project-lead.md +28 -0
  24. package/.codex/agents/quality-gate.md +89 -0
  25. package/.codex/agents/sprint-lead.md +28 -0
  26. package/.codex/agents/squad-creator.md +58 -0
  27. package/.codex/agents/ux-design-expert.md +28 -0
  28. package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
  29. package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
  30. package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
  31. package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
  32. package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
  33. package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
  34. package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
  35. package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
  36. package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
  37. package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
  38. package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
  39. package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
  40. package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
  41. package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
  42. package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
  43. package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
  44. package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
  45. package/.sinapse-ai/core/doctor/index.js +157 -50
  46. package/.sinapse-ai/core/ids/registry-updater.js +6 -1
  47. package/.sinapse-ai/core/logger/index.js +319 -0
  48. package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
  49. package/.sinapse-ai/core/telemetry/index.js +247 -0
  50. package/.sinapse-ai/data/entity-registry.yaml +1384 -944
  51. package/.sinapse-ai/development/agents/architect.md +5 -0
  52. package/.sinapse-ai/development/agents/data-engineer.md +38 -0
  53. package/.sinapse-ai/development/agents/developer.md +28 -0
  54. package/.sinapse-ai/development/agents/devops.md +4 -0
  55. package/.sinapse-ai/development/agents/product-lead.md +27 -0
  56. package/.sinapse-ai/development/agents/project-lead.md +28 -0
  57. package/.sinapse-ai/development/agents/quality-gate.md +4 -0
  58. package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
  59. package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
  60. package/.sinapse-ai/development/agents/squad-creator.md +58 -0
  61. package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
  62. package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
  63. package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
  64. package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
  65. package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
  66. package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
  67. package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
  68. package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
  69. package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
  70. package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
  71. package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
  72. package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
  73. package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
  74. package/.sinapse-ai/development/skills/model-router.md +92 -0
  75. package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
  76. package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
  77. package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
  78. package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
  79. package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
  80. package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
  81. package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
  82. package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
  83. package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
  84. package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
  85. package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
  86. package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
  87. package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
  88. package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
  89. package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
  90. package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
  91. package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
  92. package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
  93. package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
  94. package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
  95. package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
  96. package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
  97. package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
  98. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
  99. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
  100. package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
  101. package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
  102. package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
  103. package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
  104. package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
  105. package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
  106. package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
  107. package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
  108. package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
  109. package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
  110. package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
  111. package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
  112. package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
  113. package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
  114. package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
  115. package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
  116. package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
  117. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
  118. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
  119. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
  120. package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
  121. package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
  122. package/.sinapse-ai/install-manifest.yaml +275 -140
  123. package/.sinapse-ai/local-config.yaml.template +65 -65
  124. package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
  125. package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
  126. package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
  127. package/.sinapse-ai/monitor/hooks/notification.py +30 -30
  128. package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
  129. package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
  130. package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
  131. package/.sinapse-ai/monitor/hooks/stop.py +30 -30
  132. package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
  133. package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
  134. package/.sinapse-ai/product/templates/adr.hbs +126 -126
  135. package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
  136. package/.sinapse-ai/product/templates/epic.hbs +213 -213
  137. package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
  138. package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
  139. package/.sinapse-ai/product/templates/prd.hbs +202 -202
  140. package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
  141. package/.sinapse-ai/product/templates/story.hbs +264 -264
  142. package/.sinapse-ai/product/templates/task.hbs +171 -171
  143. package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
  144. package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
  145. package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
  146. package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
  147. package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
  148. package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
  149. package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
  150. package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
  151. package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
  152. package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
  153. package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
  154. package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
  155. package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
  156. package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
  157. package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
  158. package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
  159. package/LICENSE +34 -34
  160. package/README.en.md +167 -20
  161. package/README.md +190 -22
  162. package/bin/cli.js +510 -196
  163. package/bin/postinstall.js +564 -0
  164. package/bin/sinapse-cli +283 -283
  165. package/bin/sinapse-graph.js +9 -0
  166. package/bin/sinapse-init.js +36 -4
  167. package/bin/sinapse-minimal.js +20 -9
  168. package/bin/sinapse.js +202 -122
  169. package/bin/utils/deprecation-warning.js +46 -0
  170. package/bin/utils/pre-push-safety.js +14 -0
  171. package/docs/TELEMETRY.md +131 -0
  172. package/docs/chrome-brain-upgrade-plan.md +624 -0
  173. package/docs/framework/orqx-plan.md +1 -1
  174. package/docs/installation/chrome-brain.md +17 -7
  175. package/docs/mega-upgrade-orchestration-plan.md +71 -0
  176. package/docs/pt/contributing.md +20 -0
  177. package/docs/research-synthesis-for-upgrade.md +511 -0
  178. package/docs/security-audit-report.md +306 -0
  179. package/package.json +20 -8
  180. package/packages/installer/src/config/configure-environment.js +19 -44
  181. package/packages/installer/src/detection/detect-project-type.js +181 -63
  182. package/packages/installer/src/installer/manifest-signature.js +32 -17
  183. package/packages/installer/src/wizard/i18n.js +12 -0
  184. package/packages/installer/src/wizard/ide-config-generator.js +8 -39
  185. package/packages/installer/src/wizard/index.js +119 -14
  186. package/packages/installer/src/wizard/questions.js +2 -3
  187. package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
  188. package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
  189. package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
  190. package/packages/sinapse-install/bin/edmcp.js +0 -0
  191. package/packages/sinapse-install/bin/sinapse-install.js +0 -0
  192. package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
  193. package/scripts/check-markdown-links.py +353 -353
  194. package/scripts/coverage-report-summary.js +169 -0
  195. package/scripts/generate-install-manifest.js +6 -2
  196. package/scripts/release-readiness.js +169 -0
  197. package/scripts/test-install-matrix-local.sh +153 -0
  198. package/scripts/validate-install-docs.js +394 -0
  199. package/scripts/validate-no-external-refs.js +376 -0
  200. package/scripts/validate-squad-orqx.js +302 -0
  201. package/scripts/validate-story-meta.js +263 -0
  202. package/squads/claude-code-mastery/CHANGELOG.md +1 -1
  203. package/squads/claude-code-mastery/README.md +2 -2
  204. package/squads/claude-code-mastery/squad.yaml +1 -1
  205. package/squads/squad-artdir/README.md +90 -0
  206. package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
  207. package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
  208. package/squads/squad-artdir/agents/color-psychologist.md +166 -0
  209. package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
  210. package/squads/squad-artdir/agents/design-system-architect.md +100 -0
  211. package/squads/squad-artdir/agents/ia-architect.md +169 -0
  212. package/squads/squad-artdir/agents/interaction-designer.md +162 -0
  213. package/squads/squad-artdir/agents/layout-engineer.md +163 -0
  214. package/squads/squad-artdir/agents/motion-architect.md +185 -0
  215. package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
  216. package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
  217. package/squads/squad-artdir/agents/product-surface-director.md +86 -0
  218. package/squads/squad-artdir/agents/type-systemist.md +138 -0
  219. package/squads/squad-artdir/agents/visual-strategist.md +127 -0
  220. package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
  221. package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
  222. package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
  223. package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
  224. package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
  225. package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
  226. package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
  227. package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
  228. package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
  229. package/squads/squad-artdir/package.json +20 -0
  230. package/squads/squad-artdir/squad.yaml +271 -0
  231. package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
  232. package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
  233. package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
  234. package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
  235. package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
  236. package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
  237. package/squads/squad-artdir/tasks/design-color-system.md +81 -0
  238. package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
  239. package/squads/squad-artdir/tasks/design-token-system.md +58 -0
  240. package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
  241. package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
  242. package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
  243. package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
  244. package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
  245. package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
  246. package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
  247. package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
  248. package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
  249. package/squads/squad-brand/squad.yaml +20 -6
  250. package/squads/squad-claude/knowledge-base/context-window-optimization.md +1 -1
  251. package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +2 -2
  252. package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
  253. package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
  254. package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
  255. package/squads/squad-content/squad.yaml +187 -27
  256. package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
  257. package/squads/squad-copy/squad.yaml +19 -4
  258. package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
  259. package/squads/squad-design/squad.yaml +19 -4
  260. package/.sinapse-ai/core/registry/service-registry.json +0 -6346
  261. package/.sinapse-ai/data/registry-update-log.jsonl +0 -1323
  262. package/.sinapse-ai/manifests/agents.csv +0 -29
  263. package/.sinapse-ai/manifests/tasks.csv +0 -204
  264. package/.sinapse-ai/manifests/workers.csv +0 -196
  265. package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
  266. package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
@@ -1,65 +1,65 @@
1
- # ============================================
2
- # SINAPSE Local Configuration (Level 4) — TEMPLATE
3
- # ============================================
4
- # Machine-specific overrides and secrets.
5
- # Copy this file to local-config.yaml and customize:
6
- # cp .sinapse-ai/local-config.yaml.template .sinapse-ai/local-config.yaml
7
- #
8
- # Or run: sinapse config init-local
9
- #
10
- # WARNING: This file contains machine-specific secrets.
11
- # DO NOT commit local-config.yaml to git.
12
- # (It is already in .gitignore)
13
- #
14
- # Level: L4 (Local)
15
- # Mutability: Editable
16
- # Git status: Gitignored
17
- # ADR: ADR-PRO-002 — Configuration Hierarchy
18
- # ============================================
19
-
20
- # --- IDE Configuration (Section 4) ---
21
- ide:
22
- selected:
23
- - codex
24
- - claude-code
25
- configs:
26
- codex: true
27
- claude-code: true
28
-
29
- # --- MCP Configuration (Section 5) ---
30
- mcp:
31
- enabled: true
32
- config_location: ".claude/mcp.json"
33
- docker_mcp:
34
- enabled: true
35
- gateway:
36
- transport: "http"
37
- url: "http://localhost:8080/mcp"
38
- port: 8080
39
- watch: true
40
- default_preset: "minimal"
41
-
42
- # --- CodeRabbit Secrets (Section 9 - secret portion) ---
43
- coderabbit_integration:
44
- installation_mode: "wsl"
45
- wsl_config:
46
- distribution: "Ubuntu"
47
- installation_path: "~/.local/bin/coderabbit"
48
- # Replace ${PROJECT_ROOT} with your actual project root (e.g., /home/user/myproject)
49
- working_directory: "${PROJECT_ROOT}"
50
- commands:
51
- qa_pre_review_uncommitted: |
52
- wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t uncommitted'
53
- qa_story_review_committed: |
54
- wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t committed --base main'
55
-
56
- # --- Performance Overrides (Section 6 - local overrides) ---
57
- # Uncomment to override framework defaults:
58
- # performance:
59
- # max_concurrent_operations: 8
60
-
61
- # --- pvMindContext (optional per-machine override) ---
62
- # Uncomment to override project-level pv_mind_context:
63
- # pv_mind_context:
64
- # enabled: false
65
-
1
+ # ============================================
2
+ # SINAPSE Local Configuration (Level 4) — TEMPLATE
3
+ # ============================================
4
+ # Machine-specific overrides and secrets.
5
+ # Copy this file to local-config.yaml and customize:
6
+ # cp .sinapse-ai/local-config.yaml.template .sinapse-ai/local-config.yaml
7
+ #
8
+ # Or run: sinapse config init-local
9
+ #
10
+ # WARNING: This file contains machine-specific secrets.
11
+ # DO NOT commit local-config.yaml to git.
12
+ # (It is already in .gitignore)
13
+ #
14
+ # Level: L4 (Local)
15
+ # Mutability: Editable
16
+ # Git status: Gitignored
17
+ # ADR: ADR-PRO-002 — Configuration Hierarchy
18
+ # ============================================
19
+
20
+ # --- IDE Configuration (Section 4) ---
21
+ ide:
22
+ selected:
23
+ - codex
24
+ - claude-code
25
+ configs:
26
+ codex: true
27
+ claude-code: true
28
+
29
+ # --- MCP Configuration (Section 5) ---
30
+ mcp:
31
+ enabled: true
32
+ config_location: ".claude/mcp.json"
33
+ docker_mcp:
34
+ enabled: true
35
+ gateway:
36
+ transport: "http"
37
+ url: "http://localhost:8080/mcp"
38
+ port: 8080
39
+ watch: true
40
+ default_preset: "minimal"
41
+
42
+ # --- CodeRabbit Secrets (Section 9 - secret portion) ---
43
+ coderabbit_integration:
44
+ installation_mode: "wsl"
45
+ wsl_config:
46
+ distribution: "Ubuntu"
47
+ installation_path: "~/.local/bin/coderabbit"
48
+ # Replace ${PROJECT_ROOT} with your actual project root (e.g., /home/user/myproject)
49
+ working_directory: "${PROJECT_ROOT}"
50
+ commands:
51
+ qa_pre_review_uncommitted: |
52
+ wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t uncommitted'
53
+ qa_story_review_committed: |
54
+ wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t committed --base main'
55
+
56
+ # --- Performance Overrides (Section 6 - local overrides) ---
57
+ # Uncomment to override framework defaults:
58
+ # performance:
59
+ # max_concurrent_operations: 8
60
+
61
+ # --- pvMindContext (optional per-machine override) ---
62
+ # Uncomment to override project-level pv_mind_context:
63
+ # pv_mind_context:
64
+ # enabled: false
65
+
@@ -1,2 +1,2 @@
1
- # SINAPSE Monitor Hooks Library
2
-
1
+ # SINAPSE Monitor Hooks Library
2
+
@@ -1,59 +1,59 @@
1
- #!/usr/bin/env python3
2
- """
3
- Enrich events with SINAPSE context (agent, story, task, etc.)
4
- """
5
-
6
- import os
7
- import re
8
- from pathlib import Path
9
- from typing import Any
10
-
11
-
12
- def enrich_event(data: dict[str, Any]) -> dict[str, Any]:
13
- """Add SINAPSE context to event data."""
14
-
15
- # Project detection
16
- cwd = data.get("cwd", os.getcwd())
17
- data["project"] = detect_project(cwd)
18
-
19
- # SINAPSE context from environment
20
- if os.environ.get("SINAPSE_AGENT"):
21
- data["sinapse_agent"] = os.environ["SINAPSE_AGENT"]
22
-
23
- if os.environ.get("SINAPSE_STORY_ID"):
24
- data["sinapse_story_id"] = os.environ["SINAPSE_STORY_ID"]
25
-
26
- if os.environ.get("SINAPSE_TASK_ID"):
27
- data["sinapse_task_id"] = os.environ["SINAPSE_TASK_ID"]
28
-
29
- # Try to detect SINAPSE agent from user prompt if available
30
- user_prompt = data.get("user_prompt", "")
31
- if user_prompt:
32
- detected_agent = detect_agent_from_prompt(user_prompt)
33
- if detected_agent and not data.get("sinapse_agent"):
34
- data["sinapse_agent"] = detected_agent
35
-
36
- return data
37
-
38
-
39
- def detect_project(cwd: str) -> str:
40
- """Detect project name from cwd."""
41
- path = Path(cwd)
42
-
43
- # Check for common project markers
44
- markers = [".git", "package.json", "Cargo.toml", "go.mod", "pyproject.toml"]
45
- for marker in markers:
46
- if (path / marker).exists():
47
- return path.name
48
-
49
- return path.name
50
-
51
-
52
- def detect_agent_from_prompt(prompt: str) -> str | None:
53
- """Detect SINAPSE agent activation from prompt."""
54
- # Look for @agent patterns
55
- match = re.search(r'@(dev|architect|qa|pm|po|sm|analyst|devops|sinapse-orqx)', prompt.lower())
56
- if match:
57
- return match.group(1)
58
- return None
59
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ Enrich events with SINAPSE context (agent, story, task, etc.)
4
+ """
5
+
6
+ import os
7
+ import re
8
+ from pathlib import Path
9
+ from typing import Any
10
+
11
+
12
+ def enrich_event(data: dict[str, Any]) -> dict[str, Any]:
13
+ """Add SINAPSE context to event data."""
14
+
15
+ # Project detection
16
+ cwd = data.get("cwd", os.getcwd())
17
+ data["project"] = detect_project(cwd)
18
+
19
+ # SINAPSE context from environment
20
+ if os.environ.get("SINAPSE_AGENT"):
21
+ data["sinapse_agent"] = os.environ["SINAPSE_AGENT"]
22
+
23
+ if os.environ.get("SINAPSE_STORY_ID"):
24
+ data["sinapse_story_id"] = os.environ["SINAPSE_STORY_ID"]
25
+
26
+ if os.environ.get("SINAPSE_TASK_ID"):
27
+ data["sinapse_task_id"] = os.environ["SINAPSE_TASK_ID"]
28
+
29
+ # Try to detect SINAPSE agent from user prompt if available
30
+ user_prompt = data.get("user_prompt", "")
31
+ if user_prompt:
32
+ detected_agent = detect_agent_from_prompt(user_prompt)
33
+ if detected_agent and not data.get("sinapse_agent"):
34
+ data["sinapse_agent"] = detected_agent
35
+
36
+ return data
37
+
38
+
39
+ def detect_project(cwd: str) -> str:
40
+ """Detect project name from cwd."""
41
+ path = Path(cwd)
42
+
43
+ # Check for common project markers
44
+ markers = [".git", "package.json", "Cargo.toml", "go.mod", "pyproject.toml"]
45
+ for marker in markers:
46
+ if (path / marker).exists():
47
+ return path.name
48
+
49
+ return path.name
50
+
51
+
52
+ def detect_agent_from_prompt(prompt: str) -> str | None:
53
+ """Detect SINAPSE agent activation from prompt."""
54
+ # Look for @agent patterns
55
+ match = re.search(r'@(dev|architect|qa|pm|po|sm|analyst|devops|sinapse-orqx)', prompt.lower())
56
+ if match:
57
+ return match.group(1)
58
+ return None
59
+
@@ -1,48 +1,48 @@
1
- #!/usr/bin/env python3
2
- """
3
- Send event to SINAPSE Monitor server.
4
- Non-blocking with short timeout to avoid slowing Claude.
5
- """
6
-
7
- import json
8
- import os
9
- import time
10
- import urllib.request
11
- from typing import Any
12
-
13
- SERVER_URL = os.environ.get("SINAPSE_MONITOR_URL", "http://localhost:4001")
14
- TIMEOUT_MS = int(os.environ.get("SINAPSE_MONITOR_TIMEOUT_MS", "500"))
15
-
16
-
17
- def send_event(event_type: str, data: dict[str, Any]) -> bool:
18
- """
19
- Send event to SINAPSE Monitor server.
20
-
21
- Args:
22
- event_type: Hook event type (PreToolUse, PostToolUse, etc.)
23
- data: Event data from Claude hook
24
-
25
- Returns:
26
- True if sent successfully, False otherwise
27
- """
28
- try:
29
- payload = json.dumps({
30
- "type": event_type,
31
- "timestamp": int(time.time() * 1000),
32
- "data": data
33
- }).encode("utf-8")
34
-
35
- req = urllib.request.Request(
36
- f"{SERVER_URL}/events",
37
- data=payload,
38
- headers={"Content-Type": "application/json"},
39
- method="POST"
40
- )
41
-
42
- urllib.request.urlopen(req, timeout=TIMEOUT_MS / 1000)
43
- return True
44
-
45
- except Exception:
46
- # Silent fail - never block Claude
47
- return False
48
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ Send event to SINAPSE Monitor server.
4
+ Non-blocking with short timeout to avoid slowing Claude.
5
+ """
6
+
7
+ import json
8
+ import os
9
+ import time
10
+ import urllib.request
11
+ from typing import Any
12
+
13
+ SERVER_URL = os.environ.get("SINAPSE_MONITOR_URL", "http://localhost:4001")
14
+ TIMEOUT_MS = int(os.environ.get("SINAPSE_MONITOR_TIMEOUT_MS", "500"))
15
+
16
+
17
+ def send_event(event_type: str, data: dict[str, Any]) -> bool:
18
+ """
19
+ Send event to SINAPSE Monitor server.
20
+
21
+ Args:
22
+ event_type: Hook event type (PreToolUse, PostToolUse, etc.)
23
+ data: Event data from Claude hook
24
+
25
+ Returns:
26
+ True if sent successfully, False otherwise
27
+ """
28
+ try:
29
+ payload = json.dumps({
30
+ "type": event_type,
31
+ "timestamp": int(time.time() * 1000),
32
+ "data": data
33
+ }).encode("utf-8")
34
+
35
+ req = urllib.request.Request(
36
+ f"{SERVER_URL}/events",
37
+ data=payload,
38
+ headers={"Content-Type": "application/json"},
39
+ method="POST"
40
+ )
41
+
42
+ urllib.request.urlopen(req, timeout=TIMEOUT_MS / 1000)
43
+ return True
44
+
45
+ except Exception:
46
+ # Silent fail - never block Claude
47
+ return False
48
+
@@ -1,30 +1,30 @@
1
- #!/usr/bin/env python3
2
- """
3
- Notification hook - captures Claude notifications.
4
- """
5
-
6
- import json
7
- import sys
8
- import os
9
-
10
- # Add lib to path
11
- sys.path.insert(0, os.path.dirname(__file__))
12
-
13
- from lib.send_event import send_event
14
- from lib.enrich import enrich_event
15
-
16
-
17
- def main():
18
- # Read event from stdin
19
- data = json.load(sys.stdin)
20
-
21
- # Enrich with SINAPSE context
22
- data = enrich_event(data)
23
-
24
- # Send to monitor server
25
- send_event("Notification", data)
26
-
27
-
28
- if __name__ == "__main__":
29
- main()
30
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ Notification hook - captures Claude notifications.
4
+ """
5
+
6
+ import json
7
+ import sys
8
+ import os
9
+
10
+ # Add lib to path
11
+ sys.path.insert(0, os.path.dirname(__file__))
12
+
13
+ from lib.send_event import send_event
14
+ from lib.enrich import enrich_event
15
+
16
+
17
+ def main():
18
+ # Read event from stdin
19
+ data = json.load(sys.stdin)
20
+
21
+ # Enrich with SINAPSE context
22
+ data = enrich_event(data)
23
+
24
+ # Send to monitor server
25
+ send_event("Notification", data)
26
+
27
+
28
+ if __name__ == "__main__":
29
+ main()
30
+
@@ -1,46 +1,46 @@
1
- #!/usr/bin/env python3
2
- """
3
- PostToolUse hook - captures tool results after execution.
4
-
5
- This hook runs after Claude executes any tool, capturing the result.
6
- Most important for tracking what actually happened.
7
- """
8
-
9
- import json
10
- import sys
11
- import os
12
-
13
- # Add lib to path
14
- sys.path.insert(0, os.path.dirname(__file__))
15
-
16
- from lib.send_event import send_event
17
- from lib.enrich import enrich_event
18
-
19
-
20
- def main():
21
- # Read event from stdin
22
- data = json.load(sys.stdin)
23
-
24
- # Truncate large fields
25
- if "tool_result" in data:
26
- result = data["tool_result"]
27
- if isinstance(result, str) and len(result) > 1000:
28
- data["tool_result"] = result[:1000] + "...[truncated]"
29
-
30
- if "tool_input" in data:
31
- tool_input = data["tool_input"]
32
- if isinstance(tool_input, dict):
33
- for key, value in tool_input.items():
34
- if isinstance(value, str) and len(value) > 500:
35
- data["tool_input"][key] = value[:500] + "..."
36
-
37
- # Enrich with SINAPSE context
38
- data = enrich_event(data)
39
-
40
- # Send to monitor server
41
- send_event("PostToolUse", data)
42
-
43
-
44
- if __name__ == "__main__":
45
- main()
46
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ PostToolUse hook - captures tool results after execution.
4
+
5
+ This hook runs after Claude executes any tool, capturing the result.
6
+ Most important for tracking what actually happened.
7
+ """
8
+
9
+ import json
10
+ import sys
11
+ import os
12
+
13
+ # Add lib to path
14
+ sys.path.insert(0, os.path.dirname(__file__))
15
+
16
+ from lib.send_event import send_event
17
+ from lib.enrich import enrich_event
18
+
19
+
20
+ def main():
21
+ # Read event from stdin
22
+ data = json.load(sys.stdin)
23
+
24
+ # Truncate large fields
25
+ if "tool_result" in data:
26
+ result = data["tool_result"]
27
+ if isinstance(result, str) and len(result) > 1000:
28
+ data["tool_result"] = result[:1000] + "...[truncated]"
29
+
30
+ if "tool_input" in data:
31
+ tool_input = data["tool_input"]
32
+ if isinstance(tool_input, dict):
33
+ for key, value in tool_input.items():
34
+ if isinstance(value, str) and len(value) > 500:
35
+ data["tool_input"][key] = value[:500] + "..."
36
+
37
+ # Enrich with SINAPSE context
38
+ data = enrich_event(data)
39
+
40
+ # Send to monitor server
41
+ send_event("PostToolUse", data)
42
+
43
+
44
+ if __name__ == "__main__":
45
+ main()
46
+
@@ -1,30 +1,30 @@
1
- #!/usr/bin/env python3
2
- """
3
- PreCompact hook - captures before context compaction.
4
- """
5
-
6
- import json
7
- import sys
8
- import os
9
-
10
- # Add lib to path
11
- sys.path.insert(0, os.path.dirname(__file__))
12
-
13
- from lib.send_event import send_event
14
- from lib.enrich import enrich_event
15
-
16
-
17
- def main():
18
- # Read event from stdin
19
- data = json.load(sys.stdin)
20
-
21
- # Enrich with SINAPSE context
22
- data = enrich_event(data)
23
-
24
- # Send to monitor server
25
- send_event("PreCompact", data)
26
-
27
-
28
- if __name__ == "__main__":
29
- main()
30
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ PreCompact hook - captures before context compaction.
4
+ """
5
+
6
+ import json
7
+ import sys
8
+ import os
9
+
10
+ # Add lib to path
11
+ sys.path.insert(0, os.path.dirname(__file__))
12
+
13
+ from lib.send_event import send_event
14
+ from lib.enrich import enrich_event
15
+
16
+
17
+ def main():
18
+ # Read event from stdin
19
+ data = json.load(sys.stdin)
20
+
21
+ # Enrich with SINAPSE context
22
+ data = enrich_event(data)
23
+
24
+ # Send to monitor server
25
+ send_event("PreCompact", data)
26
+
27
+
28
+ if __name__ == "__main__":
29
+ main()
30
+
@@ -1,41 +1,41 @@
1
- #!/usr/bin/env python3
2
- """
3
- PreToolUse hook - captures tool calls before execution.
4
-
5
- This hook runs before Claude executes any tool (Read, Write, Bash, etc.)
6
- Use this to see what tools are being invoked and their inputs.
7
- """
8
-
9
- import json
10
- import sys
11
- import os
12
-
13
- # Add lib to path
14
- sys.path.insert(0, os.path.dirname(__file__))
15
-
16
- from lib.send_event import send_event
17
- from lib.enrich import enrich_event
18
-
19
-
20
- def main():
21
- # Read event from stdin
22
- data = json.load(sys.stdin)
23
-
24
- # Truncate large fields to avoid memory issues
25
- if "tool_input" in data:
26
- tool_input = data["tool_input"]
27
- if isinstance(tool_input, dict):
28
- for key, value in tool_input.items():
29
- if isinstance(value, str) and len(value) > 500:
30
- data["tool_input"][key] = value[:500] + "..."
31
-
32
- # Enrich with SINAPSE context
33
- data = enrich_event(data)
34
-
35
- # Send to monitor server
36
- send_event("PreToolUse", data)
37
-
38
-
39
- if __name__ == "__main__":
40
- main()
41
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ PreToolUse hook - captures tool calls before execution.
4
+
5
+ This hook runs before Claude executes any tool (Read, Write, Bash, etc.)
6
+ Use this to see what tools are being invoked and their inputs.
7
+ """
8
+
9
+ import json
10
+ import sys
11
+ import os
12
+
13
+ # Add lib to path
14
+ sys.path.insert(0, os.path.dirname(__file__))
15
+
16
+ from lib.send_event import send_event
17
+ from lib.enrich import enrich_event
18
+
19
+
20
+ def main():
21
+ # Read event from stdin
22
+ data = json.load(sys.stdin)
23
+
24
+ # Truncate large fields to avoid memory issues
25
+ if "tool_input" in data:
26
+ tool_input = data["tool_input"]
27
+ if isinstance(tool_input, dict):
28
+ for key, value in tool_input.items():
29
+ if isinstance(value, str) and len(value) > 500:
30
+ data["tool_input"][key] = value[:500] + "..."
31
+
32
+ # Enrich with SINAPSE context
33
+ data = enrich_event(data)
34
+
35
+ # Send to monitor server
36
+ send_event("PreToolUse", data)
37
+
38
+
39
+ if __name__ == "__main__":
40
+ main()
41
+