aios-core 4.2.15 → 4.4.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 (329) hide show
  1. package/.aios-core/cli/commands/validate/index.js +1 -1
  2. package/.aios-core/core/code-intel/code-intel-client.js +19 -5
  3. package/.aios-core/core/code-intel/helpers/creation-helper.js +183 -0
  4. package/.aios-core/core/code-intel/helpers/devops-helper.js +166 -0
  5. package/.aios-core/core/code-intel/helpers/planning-helper.js +248 -0
  6. package/.aios-core/core/code-intel/helpers/qa-helper.js +187 -0
  7. package/.aios-core/core/code-intel/helpers/story-helper.js +146 -0
  8. package/.aios-core/core/code-intel/hook-runtime.js +186 -0
  9. package/.aios-core/core/code-intel/index.js +2 -0
  10. package/.aios-core/core/code-intel/providers/code-graph-provider.js +8 -0
  11. package/.aios-core/core/code-intel/providers/provider-interface.js +9 -0
  12. package/.aios-core/core/code-intel/providers/registry-provider.js +515 -0
  13. package/.aios-core/core/config/schemas/framework-config.schema.json +155 -7
  14. package/.aios-core/core/config/schemas/project-config.schema.json +329 -15
  15. package/.aios-core/core/config/template-overrides.js +84 -0
  16. package/.aios-core/core/docs/troubleshooting-guide.md +1 -1
  17. package/.aios-core/core/doctor/checks/agent-memory.js +63 -0
  18. package/.aios-core/core/doctor/checks/claude-md.js +56 -0
  19. package/.aios-core/core/doctor/checks/code-intel.js +131 -0
  20. package/.aios-core/core/doctor/checks/commands-count.js +81 -0
  21. package/.aios-core/core/doctor/checks/core-config.js +53 -0
  22. package/.aios-core/core/doctor/checks/entity-registry.js +53 -0
  23. package/.aios-core/core/doctor/checks/git-hooks.js +50 -0
  24. package/.aios-core/core/doctor/checks/graph-dashboard.js +48 -0
  25. package/.aios-core/core/doctor/checks/hooks-claude-count.js +118 -0
  26. package/.aios-core/core/doctor/checks/ide-sync.js +85 -0
  27. package/.aios-core/core/doctor/checks/index.js +46 -0
  28. package/.aios-core/core/doctor/checks/node-version.js +33 -0
  29. package/.aios-core/core/doctor/checks/npm-packages.js +35 -0
  30. package/.aios-core/core/doctor/checks/rules-files.js +61 -0
  31. package/.aios-core/core/doctor/checks/settings-json.js +121 -0
  32. package/.aios-core/core/doctor/checks/skills-count.js +72 -0
  33. package/.aios-core/core/doctor/fix-handler.js +165 -0
  34. package/.aios-core/core/doctor/formatters/json.js +14 -0
  35. package/.aios-core/core/doctor/formatters/text.js +59 -0
  36. package/.aios-core/core/doctor/index.js +94 -0
  37. package/.aios-core/core/graph-dashboard/cli.js +361 -0
  38. package/.aios-core/core/graph-dashboard/data-sources/code-intel-source.js +234 -0
  39. package/.aios-core/core/graph-dashboard/data-sources/metrics-source.js +95 -0
  40. package/.aios-core/core/graph-dashboard/data-sources/registry-source.js +106 -0
  41. package/.aios-core/core/graph-dashboard/formatters/dot-formatter.js +45 -0
  42. package/.aios-core/core/graph-dashboard/formatters/html-formatter.js +1437 -0
  43. package/.aios-core/core/graph-dashboard/formatters/json-formatter.js +13 -0
  44. package/.aios-core/core/graph-dashboard/formatters/mermaid-formatter.js +59 -0
  45. package/.aios-core/core/graph-dashboard/index.js +21 -0
  46. package/.aios-core/core/graph-dashboard/renderers/stats-renderer.js +217 -0
  47. package/.aios-core/core/graph-dashboard/renderers/status-renderer.js +125 -0
  48. package/.aios-core/core/graph-dashboard/renderers/tree-renderer.js +119 -0
  49. package/.aios-core/core/health-check/base-check.js +1 -1
  50. package/.aios-core/core/health-check/check-registry.js +1 -1
  51. package/.aios-core/core/health-check/checks/deployment/build-config.js +1 -1
  52. package/.aios-core/core/health-check/checks/deployment/ci-config.js +1 -1
  53. package/.aios-core/core/health-check/checks/deployment/deployment-readiness.js +1 -1
  54. package/.aios-core/core/health-check/checks/deployment/docker-config.js +1 -1
  55. package/.aios-core/core/health-check/checks/deployment/env-file.js +1 -1
  56. package/.aios-core/core/health-check/checks/deployment/index.js +1 -1
  57. package/.aios-core/core/health-check/checks/index.js +1 -1
  58. package/.aios-core/core/health-check/checks/local/disk-space.js +1 -1
  59. package/.aios-core/core/health-check/checks/local/environment-vars.js +1 -1
  60. package/.aios-core/core/health-check/checks/local/git-install.js +1 -1
  61. package/.aios-core/core/health-check/checks/local/ide-detection.js +1 -1
  62. package/.aios-core/core/health-check/checks/local/index.js +1 -1
  63. package/.aios-core/core/health-check/checks/local/memory.js +1 -1
  64. package/.aios-core/core/health-check/checks/local/network.js +1 -1
  65. package/.aios-core/core/health-check/checks/local/npm-install.js +1 -1
  66. package/.aios-core/core/health-check/checks/local/shell-environment.js +1 -1
  67. package/.aios-core/core/health-check/checks/project/agent-config.js +1 -1
  68. package/.aios-core/core/health-check/checks/project/aios-directory.js +1 -1
  69. package/.aios-core/core/health-check/checks/project/dependencies.js +1 -1
  70. package/.aios-core/core/health-check/checks/project/framework-config.js +1 -1
  71. package/.aios-core/core/health-check/checks/project/index.js +1 -1
  72. package/.aios-core/core/health-check/checks/project/node-version.js +1 -1
  73. package/.aios-core/core/health-check/checks/project/package-json.js +1 -1
  74. package/.aios-core/core/health-check/checks/project/task-definitions.js +1 -1
  75. package/.aios-core/core/health-check/checks/project/workflow-dependencies.js +1 -1
  76. package/.aios-core/core/health-check/checks/repository/branch-protection.js +1 -1
  77. package/.aios-core/core/health-check/checks/repository/commit-history.js +1 -1
  78. package/.aios-core/core/health-check/checks/repository/conflicts.js +1 -1
  79. package/.aios-core/core/health-check/checks/repository/git-repo.js +1 -1
  80. package/.aios-core/core/health-check/checks/repository/git-status.js +1 -1
  81. package/.aios-core/core/health-check/checks/repository/gitignore.js +1 -1
  82. package/.aios-core/core/health-check/checks/repository/index.js +1 -1
  83. package/.aios-core/core/health-check/checks/repository/large-files.js +1 -1
  84. package/.aios-core/core/health-check/checks/repository/lockfile-integrity.js +1 -1
  85. package/.aios-core/core/health-check/checks/services/api-endpoints.js +1 -1
  86. package/.aios-core/core/health-check/checks/services/claude-code.js +1 -1
  87. package/.aios-core/core/health-check/checks/services/gemini-cli.js +1 -1
  88. package/.aios-core/core/health-check/checks/services/github-cli.js +1 -1
  89. package/.aios-core/core/health-check/checks/services/index.js +1 -1
  90. package/.aios-core/core/health-check/checks/services/mcp-integration.js +1 -1
  91. package/.aios-core/core/health-check/engine.js +1 -1
  92. package/.aios-core/core/health-check/healers/backup-manager.js +1 -1
  93. package/.aios-core/core/health-check/healers/index.js +1 -1
  94. package/.aios-core/core/health-check/index.js +9 -2
  95. package/.aios-core/core/health-check/reporters/console.js +1 -1
  96. package/.aios-core/core/health-check/reporters/index.js +1 -1
  97. package/.aios-core/core/health-check/reporters/json.js +1 -1
  98. package/.aios-core/core/health-check/reporters/markdown.js +1 -1
  99. package/.aios-core/core/ids/layer-classifier.js +65 -0
  100. package/.aios-core/core/ids/registry-updater.js +49 -0
  101. package/.aios-core/core/index.esm.js +1 -1
  102. package/.aios-core/core/index.js +1 -1
  103. package/.aios-core/core/session/context-detector.js +2 -7
  104. package/.aios-core/core/synapse/context/context-tracker.js +9 -1
  105. package/.aios-core/core/synapse/engine.js +33 -13
  106. package/.aios-core/core/synapse/memory/memory-bridge.js +17 -43
  107. package/.aios-core/core/synapse/memory/synapse-memory-provider.js +201 -0
  108. package/.aios-core/core/synapse/runtime/hook-runtime.js +40 -2
  109. package/.aios-core/core/synapse/session/session-manager.js +3 -2
  110. package/.aios-core/core/synapse/utils/atomic-write.js +79 -0
  111. package/.aios-core/core-config.yaml +34 -1
  112. package/.aios-core/data/aios-kb.md +2 -2
  113. package/.aios-core/data/capability-detection.js +290 -0
  114. package/.aios-core/data/entity-registry.yaml +10450 -2129
  115. package/.aios-core/data/mcp-discipline.js +166 -0
  116. package/.aios-core/data/mcp-tool-examples.yaml +215 -0
  117. package/.aios-core/data/tok2-validation.js +168 -0
  118. package/.aios-core/data/tok3-token-comparison.js +123 -0
  119. package/.aios-core/data/tool-registry.yaml +648 -0
  120. package/.aios-core/data/tool-search-validation.js +174 -0
  121. package/.aios-core/data/workflow-chains.yaml +156 -0
  122. package/.aios-core/development/agents/aios-master.md +17 -10
  123. package/.aios-core/development/agents/analyst/MEMORY.md +33 -0
  124. package/.aios-core/development/agents/analyst.md +17 -10
  125. package/.aios-core/development/agents/architect/MEMORY.md +39 -0
  126. package/.aios-core/development/agents/architect.md +17 -10
  127. package/.aios-core/development/agents/data-engineer/MEMORY.md +32 -0
  128. package/.aios-core/development/agents/data-engineer.md +17 -10
  129. package/.aios-core/development/agents/dev/MEMORY.md +46 -0
  130. package/.aios-core/development/agents/dev.md +18 -11
  131. package/.aios-core/development/agents/devops/MEMORY.md +39 -0
  132. package/.aios-core/development/agents/devops.md +44 -10
  133. package/.aios-core/development/agents/pm/MEMORY.md +38 -0
  134. package/.aios-core/development/agents/pm.md +17 -10
  135. package/.aios-core/development/agents/po/MEMORY.md +45 -0
  136. package/.aios-core/development/agents/po.md +17 -10
  137. package/.aios-core/development/agents/qa/MEMORY.md +42 -0
  138. package/.aios-core/development/agents/qa.md +18 -11
  139. package/.aios-core/development/agents/sm/MEMORY.md +31 -0
  140. package/.aios-core/development/agents/sm.md +17 -10
  141. package/.aios-core/development/agents/squad-creator.md +18 -9
  142. package/.aios-core/development/agents/ux/MEMORY.md +31 -0
  143. package/.aios-core/development/agents/ux-design-expert.md +16 -9
  144. package/.aios-core/development/checklists/issue-triage-checklist.md +35 -0
  145. package/.aios-core/development/checklists/memory-audit-checklist.md +53 -0
  146. package/.aios-core/development/scripts/issue-triage.js +171 -0
  147. package/.aios-core/development/scripts/populate-entity-registry.js +412 -19
  148. package/.aios-core/development/scripts/unified-activation-pipeline.js +31 -10
  149. package/.aios-core/development/tasks/analyze-project-structure.md +48 -0
  150. package/.aios-core/development/tasks/apply-qa-fixes.md +7 -0
  151. package/.aios-core/development/tasks/architect-analyze-impact.md +8 -1
  152. package/.aios-core/development/tasks/brownfield-create-epic.md +41 -0
  153. package/.aios-core/development/tasks/brownfield-create-story.md +7 -0
  154. package/.aios-core/development/tasks/build-autonomous.md +7 -0
  155. package/.aios-core/development/tasks/create-deep-research-prompt.md +7 -0
  156. package/.aios-core/development/tasks/create-doc.md +44 -0
  157. package/.aios-core/development/tasks/create-next-story.md +17 -0
  158. package/.aios-core/development/tasks/create-suite.md +7 -0
  159. package/.aios-core/development/tasks/dev-develop-story.md +9 -1
  160. package/.aios-core/development/tasks/execute-checklist.md +7 -0
  161. package/.aios-core/development/tasks/github-devops-github-pr-automation.md +56 -0
  162. package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +70 -0
  163. package/.aios-core/development/tasks/github-issue-triage.md +118 -0
  164. package/.aios-core/development/tasks/health-check.yaml +206 -171
  165. package/.aios-core/development/tasks/kb-mode-interaction.md +3 -3
  166. package/.aios-core/development/tasks/plan-create-context.md +47 -1
  167. package/.aios-core/development/tasks/plan-create-implementation.md +55 -0
  168. package/.aios-core/development/tasks/po-close-story.md +7 -0
  169. package/.aios-core/development/tasks/pr-automation.md +5 -5
  170. package/.aios-core/development/tasks/qa-create-fix-request.md +7 -0
  171. package/.aios-core/development/tasks/qa-fix-issues.md +7 -0
  172. package/.aios-core/development/tasks/qa-gate.md +56 -0
  173. package/.aios-core/development/tasks/qa-review-story.md +32 -1
  174. package/.aios-core/development/tasks/release-management.md +7 -0
  175. package/.aios-core/development/tasks/resolve-github-issue.md +608 -0
  176. package/.aios-core/development/tasks/review-contributor-pr.md +152 -0
  177. package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
  178. package/.aios-core/development/tasks/spec-critique.md +8 -0
  179. package/.aios-core/development/tasks/spec-gather-requirements.md +7 -0
  180. package/.aios-core/development/tasks/spec-research-dependencies.md +4 -0
  181. package/.aios-core/development/tasks/spec-write-spec.md +5 -0
  182. package/.aios-core/development/tasks/triage-github-issues.md +356 -0
  183. package/.aios-core/development/tasks/validate-agents.md +4 -0
  184. package/.aios-core/development/tasks/validate-next-story.md +17 -0
  185. package/.aios-core/development/templates/agent-handoff-tmpl.yaml +48 -0
  186. package/.aios-core/development/templates/code-intel-integration-pattern.md +199 -0
  187. package/.aios-core/development/templates/ptc-entity-validation.md +113 -0
  188. package/.aios-core/development/templates/ptc-qa-gate.md +100 -0
  189. package/.aios-core/development/templates/ptc-research-aggregation.md +94 -0
  190. package/.aios-core/development/templates/service-template/README.md.hbs +158 -158
  191. package/.aios-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -237
  192. package/.aios-core/development/templates/service-template/client.ts.hbs +403 -403
  193. package/.aios-core/development/templates/service-template/errors.ts.hbs +182 -182
  194. package/.aios-core/development/templates/service-template/index.ts.hbs +120 -120
  195. package/.aios-core/development/templates/service-template/package.json.hbs +87 -87
  196. package/.aios-core/development/templates/service-template/types.ts.hbs +145 -145
  197. package/.aios-core/development/templates/squad/agent-template.md +11 -0
  198. package/.aios-core/development/templates/squad/task-template.md +21 -0
  199. package/.aios-core/development/templates/squad-template/LICENSE +21 -21
  200. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +1 -1
  201. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1 -1
  202. package/.aios-core/framework-config.yaml +8 -0
  203. package/.aios-core/index.esm.js +1 -1
  204. package/.aios-core/index.js +1 -1
  205. package/.aios-core/infrastructure/integrations/ai-providers/index.js +1 -1
  206. package/.aios-core/infrastructure/schemas/task-v3-schema.json +6 -0
  207. package/.aios-core/infrastructure/scripts/collect-tool-usage.js +311 -0
  208. package/.aios-core/infrastructure/scripts/generate-optimization-report.js +497 -0
  209. package/.aios-core/infrastructure/scripts/generate-settings-json.js +300 -0
  210. package/.aios-core/infrastructure/scripts/git-config-detector.js +65 -9
  211. package/.aios-core/infrastructure/scripts/ide-sync/index.js +3 -1
  212. package/.aios-core/infrastructure/scripts/ide-sync/transformers/github-copilot.js +184 -0
  213. package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
  214. package/.aios-core/infrastructure/templates/aios-sync.yaml.template +182 -182
  215. package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
  216. package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
  217. package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
  218. package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
  219. package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
  220. package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
  221. package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
  222. package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
  223. package/.aios-core/install-manifest.yaml +613 -305
  224. package/.aios-core/lib/build.json +1 -0
  225. package/.aios-core/local-config.yaml.template +71 -71
  226. package/.aios-core/monitor/hooks/lib/__init__.py +1 -1
  227. package/.aios-core/monitor/hooks/lib/enrich.py +58 -58
  228. package/.aios-core/monitor/hooks/lib/send_event.py +47 -47
  229. package/.aios-core/monitor/hooks/notification.py +29 -29
  230. package/.aios-core/monitor/hooks/post_tool_use.py +45 -45
  231. package/.aios-core/monitor/hooks/pre_compact.py +29 -29
  232. package/.aios-core/monitor/hooks/pre_tool_use.py +40 -40
  233. package/.aios-core/monitor/hooks/stop.py +29 -29
  234. package/.aios-core/monitor/hooks/subagent_stop.py +29 -29
  235. package/.aios-core/monitor/hooks/user_prompt_submit.py +38 -38
  236. package/.aios-core/product/templates/adr.hbs +125 -125
  237. package/.aios-core/product/templates/dbdr.hbs +241 -241
  238. package/.aios-core/product/templates/epic.hbs +212 -212
  239. package/.aios-core/product/templates/ide-rules/claude-rules.md +125 -0
  240. package/.aios-core/product/templates/pmdr.hbs +186 -186
  241. package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
  242. package/.aios-core/product/templates/prd.hbs +201 -201
  243. package/.aios-core/product/templates/story.hbs +263 -263
  244. package/.aios-core/product/templates/task.hbs +170 -170
  245. package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
  246. package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
  247. package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
  248. package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
  249. package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
  250. package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
  251. package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
  252. package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
  253. package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
  254. package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
  255. package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
  256. package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
  257. package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
  258. package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
  259. package/.aios-core/product/templates/tmpl-view.sql +177 -177
  260. package/.aios-core/scripts/pm.sh +0 -0
  261. package/.aios-core/user-guide.md +15 -15
  262. package/.aios-core/utils/filters/constants.js +10 -0
  263. package/.aios-core/utils/filters/content-filter.js +223 -0
  264. package/.aios-core/utils/filters/field-filter.js +126 -0
  265. package/.aios-core/utils/filters/index.js +180 -0
  266. package/.aios-core/utils/filters/schema-filter.js +157 -0
  267. package/.claude/CLAUDE.md +62 -0
  268. package/.claude/hooks/enforce-architecture-first.py +196 -196
  269. package/.claude/hooks/enforce-git-push-authority.sh +33 -0
  270. package/.claude/hooks/mind-clone-governance.py +192 -192
  271. package/.claude/hooks/read-protection.py +151 -151
  272. package/.claude/hooks/slug-validation.py +176 -176
  273. package/.claude/hooks/sql-governance.py +182 -182
  274. package/.claude/hooks/synapse-engine.cjs +28 -5
  275. package/.claude/hooks/write-path-validation.py +194 -194
  276. package/.claude/rules/agent-authority.md +105 -0
  277. package/.claude/rules/agent-handoff.md +97 -0
  278. package/.claude/rules/agent-memory-imports.md +15 -0
  279. package/.claude/rules/coderabbit-integration.md +101 -0
  280. package/.claude/rules/ids-principles.md +119 -0
  281. package/.claude/rules/story-lifecycle.md +145 -0
  282. package/.claude/rules/tool-examples.md +64 -0
  283. package/.claude/rules/tool-response-filtering.md +57 -0
  284. package/.claude/rules/workflow-execution.md +150 -0
  285. package/LICENSE +33 -33
  286. package/bin/aios-graph.js +9 -0
  287. package/bin/aios-init.js +2 -2
  288. package/bin/aios-minimal.js +0 -0
  289. package/bin/aios.js +17 -221
  290. package/bin/utils/detect-fsmonitor.js +70 -0
  291. package/bin/utils/framework-guard.js +238 -0
  292. package/bin/utils/validate-publish.js +108 -0
  293. package/package.json +6 -3
  294. package/packages/aios-install/bin/aios-install.js +0 -0
  295. package/packages/aios-install/bin/edmcp.js +0 -0
  296. package/packages/aios-pro-cli/bin/aios-pro.js +2 -0
  297. package/packages/installer/src/config/templates/core-config-template.js +25 -0
  298. package/packages/installer/src/installer/brownfield-upgrader.js +68 -5
  299. package/packages/installer/src/merger/index.js +3 -0
  300. package/packages/installer/src/merger/strategies/index.js +6 -0
  301. package/packages/installer/src/merger/strategies/yaml-merger.js +181 -0
  302. package/packages/installer/src/updater/index.js +4 -4
  303. package/packages/installer/src/wizard/i18n.js +321 -3
  304. package/packages/installer/src/wizard/ide-config-generator.js +173 -25
  305. package/packages/installer/src/wizard/index.js +119 -1
  306. package/packages/installer/src/wizard/pro-setup.js +137 -121
  307. package/packages/installer/tests/unit/artifact-copy-pipeline/artifact-copy-pipeline.test.js +271 -0
  308. package/packages/installer/tests/unit/claude-md-template-v5/claude-md-template-v5.test.js +192 -0
  309. package/packages/installer/tests/unit/doctor/doctor-checks.test.js +610 -0
  310. package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +134 -0
  311. package/packages/installer/tests/unit/entity-registry-bootstrap.test.js +186 -0
  312. package/packages/installer/tests/unit/generate-settings-json/generate-settings-json.test.js +309 -0
  313. package/packages/installer/tests/unit/ide-sync-integration/ide-sync-integration.test.js +230 -0
  314. package/packages/installer/tests/unit/merger/strategies.test.js +2 -2
  315. package/packages/installer/tests/unit/merger/yaml-merger.test.js +327 -0
  316. package/scripts/check-markdown-links.py +352 -352
  317. package/scripts/dashboard-parallel-dev.sh +0 -0
  318. package/scripts/dashboard-parallel-phase3.sh +0 -0
  319. package/scripts/dashboard-parallel-phase4.sh +0 -0
  320. package/scripts/install-monitor-hooks.sh +0 -0
  321. package/scripts/package-synapse.js +2 -1
  322. package/pro/README.md +0 -66
  323. package/pro/license/degradation.js +0 -220
  324. package/pro/license/errors.js +0 -450
  325. package/pro/license/feature-gate.js +0 -354
  326. package/pro/license/index.js +0 -181
  327. package/pro/license/license-api.js +0 -651
  328. package/pro/license/license-cache.js +0 -523
  329. package/pro/license/license-crypto.js +0 -303
@@ -1,196 +1,196 @@
1
- #!/usr/bin/env python3
2
- """
3
- Hook: Enforce Architecture-First Development
4
-
5
- REGRA: Código só pode ser criado/editado se existir documentação prévia.
6
-
7
- Este hook intercepta Write/Edit em paths de código e verifica se existe
8
- documentação aprovada antes de permitir a operação.
9
-
10
- Exit Codes:
11
- - 0: Permitido (doc existe ou path não requer doc)
12
- - 2: Bloqueado (doc não existe para path protegido)
13
- """
14
-
15
- import json
16
- import sys
17
- import os
18
- from pathlib import Path
19
-
20
- # =============================================================================
21
- # CONFIGURAÇÃO: Paths que EXIGEM documentação prévia
22
- # =============================================================================
23
-
24
- PROTECTED_PATHS = [
25
- # Edge Functions - exigem docs/architecture/{function-name}.md
26
- {
27
- "pattern": "supabase/functions/",
28
- "doc_patterns": [
29
- "docs/architecture/{name}.md",
30
- "docs/architecture/{name}-architecture.md",
31
- "docs/approved-plans/{name}.md",
32
- ],
33
- "extract_name": lambda p: p.split("supabase/functions/")[1].split("/")[0] if "supabase/functions/" in p else None,
34
- },
35
- # Migrations - exigem documentação de schema changes
36
- {
37
- "pattern": "supabase/migrations/",
38
- "doc_patterns": [
39
- "docs/approved-plans/migration-{name}.md",
40
- "docs/architecture/database-changes.md",
41
- ],
42
- "extract_name": lambda p: Path(p).stem if "supabase/migrations/" in p else None,
43
- "allow_if_exists": True, # Permite editar migrations existentes
44
- },
45
- ]
46
-
47
- # Paths que são SEMPRE permitidos (não exigem doc)
48
- ALWAYS_ALLOWED = [
49
- ".claude/",
50
- "docs/",
51
- "outputs/",
52
- "squads/",
53
- ".aios-core/",
54
- ".aios-custom/",
55
- "node_modules/",
56
- ".git/",
57
- "package.json",
58
- "package-lock.json",
59
- "tsconfig.json",
60
- ".env",
61
- "README.md",
62
- ]
63
-
64
- # =============================================================================
65
- # LÓGICA DO HOOK
66
- # =============================================================================
67
-
68
- def get_project_root():
69
- """Obtém o root do projeto via variável de ambiente ou cwd."""
70
- return os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd())
71
-
72
- def is_always_allowed(file_path: str) -> bool:
73
- """Verifica se o path está na lista de sempre permitidos."""
74
- for allowed in ALWAYS_ALLOWED:
75
- if allowed in file_path:
76
- return True
77
- return False
78
-
79
- def find_matching_protection(file_path: str) -> dict | None:
80
- """Encontra a regra de proteção que corresponde ao path."""
81
- for protection in PROTECTED_PATHS:
82
- if protection["pattern"] in file_path:
83
- return protection
84
- return None
85
-
86
- def check_documentation_exists(file_path: str, protection: dict, project_root: str) -> tuple[bool, str]:
87
- """
88
- Verifica se existe documentação para o path protegido.
89
-
90
- Returns:
91
- (exists: bool, doc_path: str | None)
92
- """
93
- extract_fn = protection.get("extract_name")
94
- if not extract_fn:
95
- return True, None
96
-
97
- name = extract_fn(file_path)
98
- if not name:
99
- return True, None
100
-
101
- # Verificar cada padrão de documentação
102
- for doc_pattern in protection["doc_patterns"]:
103
- doc_path = doc_pattern.format(name=name)
104
- full_doc_path = os.path.join(project_root, doc_path)
105
-
106
- if os.path.exists(full_doc_path):
107
- return True, doc_path
108
-
109
- # Se allow_if_exists e o arquivo já existe, permitir edição
110
- if protection.get("allow_if_exists"):
111
- full_file_path = os.path.join(project_root, file_path) if not file_path.startswith("/") else file_path
112
- if os.path.exists(full_file_path):
113
- return True, "(arquivo existente)"
114
-
115
- return False, None
116
-
117
- def format_required_docs(protection: dict, name: str) -> str:
118
- """Formata a lista de documentos aceitos."""
119
- docs = []
120
- for pattern in protection["doc_patterns"]:
121
- docs.append(f" - {pattern.format(name=name)}")
122
- return "\n".join(docs)
123
-
124
- def main():
125
- # Ler input do stdin
126
- try:
127
- input_data = json.load(sys.stdin)
128
- except json.JSONDecodeError:
129
- # Se não conseguir parsear, permitir (fail-open)
130
- sys.exit(0)
131
-
132
- tool_name = input_data.get("tool_name", "")
133
- tool_input = input_data.get("tool_input", {})
134
- file_path = tool_input.get("file_path", "")
135
-
136
- # Só processar Write e Edit
137
- if tool_name not in ["Write", "Edit"]:
138
- sys.exit(0)
139
-
140
- # Normalizar path (remover prefixo absoluto se presente)
141
- project_root = get_project_root()
142
- relative_path = file_path
143
- if file_path.startswith(project_root):
144
- relative_path = file_path[len(project_root):].lstrip("/")
145
-
146
- # Verificar se é sempre permitido
147
- if is_always_allowed(relative_path):
148
- sys.exit(0)
149
-
150
- # Verificar se path está protegido
151
- protection = find_matching_protection(relative_path)
152
- if not protection:
153
- # Path não protegido, permitir
154
- sys.exit(0)
155
-
156
- # Verificar se documentação existe
157
- doc_exists, doc_path = check_documentation_exists(relative_path, protection, project_root)
158
-
159
- if doc_exists:
160
- # Documentação existe, permitir
161
- sys.exit(0)
162
-
163
- # BLOQUEAR: Documentação não existe
164
- name = protection["extract_name"](relative_path) or "unknown"
165
- required_docs = format_required_docs(protection, name)
166
-
167
- error_message = f"""
168
- ╔══════════════════════════════════════════════════════════════════════════════╗
169
- ║ 🛑 ARCHITECTURE-FIRST: Documentação obrigatória antes de código ║
170
- ╠══════════════════════════════════════════════════════════════════════════════╣
171
- ║ ║
172
- ║ Arquivo bloqueado: {relative_path[:50]:<50} ║
173
- ║ ║
174
- ║ REGRA: Antes de criar/editar código em paths protegidos, você DEVE: ║
175
- ║ ║
176
- ║ 1. Documentar o plano de arquitetura ║
177
- ║ 2. Obter aprovação do usuário ║
178
- ║ 3. Criar o arquivo de documentação ║
179
- ║ ║
180
- ║ Documentos aceitos para '{name}': ║
181
- {required_docs}
182
- ║ ║
183
- ║ AÇÃO: Crie um dos documentos acima com o plano aprovado, depois tente ║
184
- ║ novamente a operação de código. ║
185
- ║ ║
186
- ║ DICA: Use `*create-doc architecture` para criar doc de arquitetura ║
187
- ║ Ou crie docs/approved-plans/{name}.md com o plano resumido ║
188
- ║ ║
189
- ╚══════════════════════════════════════════════════════════════════════════════╝
190
- """
191
-
192
- print(error_message, file=sys.stderr)
193
- sys.exit(2) # Exit code 2 = bloqueia o tool
194
-
195
- if __name__ == "__main__":
196
- main()
1
+ #!/usr/bin/env python3
2
+ """
3
+ Hook: Enforce Architecture-First Development
4
+
5
+ REGRA: Código só pode ser criado/editado se existir documentação prévia.
6
+
7
+ Este hook intercepta Write/Edit em paths de código e verifica se existe
8
+ documentação aprovada antes de permitir a operação.
9
+
10
+ Exit Codes:
11
+ - 0: Permitido (doc existe ou path não requer doc)
12
+ - 2: Bloqueado (doc não existe para path protegido)
13
+ """
14
+
15
+ import json
16
+ import sys
17
+ import os
18
+ from pathlib import Path
19
+
20
+ # =============================================================================
21
+ # CONFIGURAÇÃO: Paths que EXIGEM documentação prévia
22
+ # =============================================================================
23
+
24
+ PROTECTED_PATHS = [
25
+ # Edge Functions - exigem docs/architecture/{function-name}.md
26
+ {
27
+ "pattern": "supabase/functions/",
28
+ "doc_patterns": [
29
+ "docs/architecture/{name}.md",
30
+ "docs/architecture/{name}-architecture.md",
31
+ "docs/approved-plans/{name}.md",
32
+ ],
33
+ "extract_name": lambda p: p.split("supabase/functions/")[1].split("/")[0] if "supabase/functions/" in p else None,
34
+ },
35
+ # Migrations - exigem documentação de schema changes
36
+ {
37
+ "pattern": "supabase/migrations/",
38
+ "doc_patterns": [
39
+ "docs/approved-plans/migration-{name}.md",
40
+ "docs/architecture/database-changes.md",
41
+ ],
42
+ "extract_name": lambda p: Path(p).stem if "supabase/migrations/" in p else None,
43
+ "allow_if_exists": True, # Permite editar migrations existentes
44
+ },
45
+ ]
46
+
47
+ # Paths que são SEMPRE permitidos (não exigem doc)
48
+ ALWAYS_ALLOWED = [
49
+ ".claude/",
50
+ "docs/",
51
+ "outputs/",
52
+ "squads/",
53
+ ".aios-core/",
54
+ ".aios-custom/",
55
+ "node_modules/",
56
+ ".git/",
57
+ "package.json",
58
+ "package-lock.json",
59
+ "tsconfig.json",
60
+ ".env",
61
+ "README.md",
62
+ ]
63
+
64
+ # =============================================================================
65
+ # LÓGICA DO HOOK
66
+ # =============================================================================
67
+
68
+ def get_project_root():
69
+ """Obtém o root do projeto via variável de ambiente ou cwd."""
70
+ return os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd())
71
+
72
+ def is_always_allowed(file_path: str) -> bool:
73
+ """Verifica se o path está na lista de sempre permitidos."""
74
+ for allowed in ALWAYS_ALLOWED:
75
+ if allowed in file_path:
76
+ return True
77
+ return False
78
+
79
+ def find_matching_protection(file_path: str) -> dict | None:
80
+ """Encontra a regra de proteção que corresponde ao path."""
81
+ for protection in PROTECTED_PATHS:
82
+ if protection["pattern"] in file_path:
83
+ return protection
84
+ return None
85
+
86
+ def check_documentation_exists(file_path: str, protection: dict, project_root: str) -> tuple[bool, str]:
87
+ """
88
+ Verifica se existe documentação para o path protegido.
89
+
90
+ Returns:
91
+ (exists: bool, doc_path: str | None)
92
+ """
93
+ extract_fn = protection.get("extract_name")
94
+ if not extract_fn:
95
+ return True, None
96
+
97
+ name = extract_fn(file_path)
98
+ if not name:
99
+ return True, None
100
+
101
+ # Verificar cada padrão de documentação
102
+ for doc_pattern in protection["doc_patterns"]:
103
+ doc_path = doc_pattern.format(name=name)
104
+ full_doc_path = os.path.join(project_root, doc_path)
105
+
106
+ if os.path.exists(full_doc_path):
107
+ return True, doc_path
108
+
109
+ # Se allow_if_exists e o arquivo já existe, permitir edição
110
+ if protection.get("allow_if_exists"):
111
+ full_file_path = os.path.join(project_root, file_path) if not file_path.startswith("/") else file_path
112
+ if os.path.exists(full_file_path):
113
+ return True, "(arquivo existente)"
114
+
115
+ return False, None
116
+
117
+ def format_required_docs(protection: dict, name: str) -> str:
118
+ """Formata a lista de documentos aceitos."""
119
+ docs = []
120
+ for pattern in protection["doc_patterns"]:
121
+ docs.append(f" - {pattern.format(name=name)}")
122
+ return "\n".join(docs)
123
+
124
+ def main():
125
+ # Ler input do stdin
126
+ try:
127
+ input_data = json.load(sys.stdin)
128
+ except json.JSONDecodeError:
129
+ # Se não conseguir parsear, permitir (fail-open)
130
+ sys.exit(0)
131
+
132
+ tool_name = input_data.get("tool_name", "")
133
+ tool_input = input_data.get("tool_input", {})
134
+ file_path = tool_input.get("file_path", "")
135
+
136
+ # Só processar Write e Edit
137
+ if tool_name not in ["Write", "Edit"]:
138
+ sys.exit(0)
139
+
140
+ # Normalizar path (remover prefixo absoluto se presente)
141
+ project_root = get_project_root()
142
+ relative_path = file_path
143
+ if file_path.startswith(project_root):
144
+ relative_path = file_path[len(project_root):].lstrip("/")
145
+
146
+ # Verificar se é sempre permitido
147
+ if is_always_allowed(relative_path):
148
+ sys.exit(0)
149
+
150
+ # Verificar se path está protegido
151
+ protection = find_matching_protection(relative_path)
152
+ if not protection:
153
+ # Path não protegido, permitir
154
+ sys.exit(0)
155
+
156
+ # Verificar se documentação existe
157
+ doc_exists, doc_path = check_documentation_exists(relative_path, protection, project_root)
158
+
159
+ if doc_exists:
160
+ # Documentação existe, permitir
161
+ sys.exit(0)
162
+
163
+ # BLOQUEAR: Documentação não existe
164
+ name = protection["extract_name"](relative_path) or "unknown"
165
+ required_docs = format_required_docs(protection, name)
166
+
167
+ error_message = f"""
168
+ ╔══════════════════════════════════════════════════════════════════════════════╗
169
+ ║ 🛑 ARCHITECTURE-FIRST: Documentação obrigatória antes de código ║
170
+ ╠══════════════════════════════════════════════════════════════════════════════╣
171
+ ║ ║
172
+ ║ Arquivo bloqueado: {relative_path[:50]:<50} ║
173
+ ║ ║
174
+ ║ REGRA: Antes de criar/editar código em paths protegidos, você DEVE: ║
175
+ ║ ║
176
+ ║ 1. Documentar o plano de arquitetura ║
177
+ ║ 2. Obter aprovação do usuário ║
178
+ ║ 3. Criar o arquivo de documentação ║
179
+ ║ ║
180
+ ║ Documentos aceitos para '{name}': ║
181
+ {required_docs}
182
+ ║ ║
183
+ ║ AÇÃO: Crie um dos documentos acima com o plano aprovado, depois tente ║
184
+ ║ novamente a operação de código. ║
185
+ ║ ║
186
+ ║ DICA: Use `*create-doc architecture` para criar doc de arquitetura ║
187
+ ║ Ou crie docs/approved-plans/{name}.md com o plano resumido ║
188
+ ║ ║
189
+ ╚══════════════════════════════════════════════════════════════════════════════╝
190
+ """
191
+
192
+ print(error_message, file=sys.stderr)
193
+ sys.exit(2) # Exit code 2 = bloqueia o tool
194
+
195
+ if __name__ == "__main__":
196
+ main()
@@ -0,0 +1,33 @@
1
+ #!/bin/bash
2
+ # enforce-git-push-authority.sh
3
+ # PreToolUse hook: blocks "git push" commands in Bash tool
4
+ # Only meant to run when agent is NOT @devops
5
+ # Uses node (not jq) for JSON parsing — works on Windows/Git Bash
6
+ # FAIL-CLOSED: if parsing fails, blocks the command (exit 2)
7
+
8
+ INPUT=$(cat)
9
+
10
+ # Extract command from JSON using node (available on all AIOS systems)
11
+ COMMAND=$(echo "$INPUT" | node -e "
12
+ let d='';
13
+ process.stdin.on('data',c=>d+=c);
14
+ process.stdin.on('end',()=>{
15
+ try{console.log(JSON.parse(d).tool_input.command||'')}
16
+ catch(e){process.exit(1)}
17
+ });
18
+ " 2>/dev/null)
19
+
20
+ # Fail-closed: if node parsing failed, block the command
21
+ if [ $? -ne 0 ]; then
22
+ echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"Hook failed to parse input — blocking for safety. Contact @devops."}}'
23
+ exit 0
24
+ fi
25
+
26
+ # Block git push in all forms (push, push --force, push origin, etc.)
27
+ if echo "$COMMAND" | grep -qiE '\bgit\s+push\b'; then
28
+ echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"Git push is EXCLUSIVE to @devops agent. Activate @devops for push operations."}}'
29
+ exit 0
30
+ fi
31
+
32
+ # Allow all other commands
33
+ exit 0