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
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Doctor Check: Code Intelligence
3
+ *
4
+ * Validates code-intel provider status by actually testing provider detection.
5
+ * Checks: module exists → registry-provider available → primitives work.
6
+ *
7
+ * @module aios-core/doctor/checks/code-intel
8
+ * @story INS-4.1, CODEINTEL-RP-001
9
+ */
10
+
11
+ const path = require('path');
12
+ const fs = require('fs');
13
+
14
+ const name = 'code-intel';
15
+
16
+ async function run(context) {
17
+ const codeIntelDir = path.join(context.projectRoot, '.aios-core', 'core', 'code-intel');
18
+
19
+ // Check 1: Module exists
20
+ if (!fs.existsSync(codeIntelDir)) {
21
+ return {
22
+ check: name,
23
+ status: 'INFO',
24
+ message: 'Code-intel module not found (optional)',
25
+ fixCommand: null,
26
+ };
27
+ }
28
+
29
+ // Check 2: Try to load and detect provider
30
+ try {
31
+ const indexPath = path.join(codeIntelDir, 'index.js');
32
+ if (!fs.existsSync(indexPath)) {
33
+ return {
34
+ check: name,
35
+ status: 'WARN',
36
+ message: 'Code-intel index.js not found',
37
+ fixCommand: null,
38
+ };
39
+ }
40
+
41
+ // Clear require cache to get fresh state
42
+ const resolvedIndex = require.resolve(indexPath);
43
+ delete require.cache[resolvedIndex];
44
+
45
+ const { getClient, isCodeIntelAvailable, _resetForTesting } = require(indexPath);
46
+
47
+ // Reset singleton to test fresh detection
48
+ _resetForTesting();
49
+
50
+ // Initialize client (triggers provider auto-detection)
51
+ const client = getClient({ projectRoot: context.projectRoot });
52
+ const available = isCodeIntelAvailable();
53
+ const metrics = client.getMetrics();
54
+
55
+ // Clean up singleton after test
56
+ _resetForTesting();
57
+
58
+ if (!available) {
59
+ // Check if entity-registry.yaml exists but provider still failed
60
+ const registryPath = path.join(context.projectRoot, '.aios-core', 'data', 'entity-registry.yaml');
61
+ if (fs.existsSync(registryPath)) {
62
+ const stat = fs.statSync(registryPath);
63
+ const sizeKB = Math.round(stat.size / 1024);
64
+ return {
65
+ check: name,
66
+ status: 'WARN',
67
+ message: `Registry exists (${sizeKB}KB) but provider detection failed — may be empty or malformed`,
68
+ fixCommand: 'node .aios-core/development/scripts/populate-entity-registry.js',
69
+ };
70
+ }
71
+
72
+ return {
73
+ check: name,
74
+ status: 'INFO',
75
+ message: 'No provider available (no registry, no MCP) — graceful fallback active',
76
+ fixCommand: 'node .aios-core/development/scripts/populate-entity-registry.js',
77
+ };
78
+ }
79
+
80
+ // Provider is available — report details
81
+ const provider = metrics.activeProvider;
82
+ const cbState = metrics.circuitBreakerState;
83
+
84
+ if (provider === 'registry') {
85
+ // Read entity count from registry metadata
86
+ const registryPath = path.join(context.projectRoot, '.aios-core', 'data', 'entity-registry.yaml');
87
+ let entityInfo = '';
88
+ if (fs.existsSync(registryPath)) {
89
+ const content = fs.readFileSync(registryPath, 'utf8');
90
+ const sizeKB = Math.round(fs.statSync(registryPath).size / 1024);
91
+ // Extract entityCount from metadata header (avoids full YAML parse)
92
+ const countMatch = content.match(/entityCount:\s*(\d+)/);
93
+ const entityCount = countMatch ? countMatch[1] : '?';
94
+ entityInfo = `, ${entityCount} entities, ${sizeKB}KB`;
95
+ }
96
+
97
+ return {
98
+ check: name,
99
+ status: 'PASS',
100
+ message: `RegistryProvider (T1) active, 5/8 primitives${entityInfo}, CB: ${cbState}`,
101
+ fixCommand: null,
102
+ };
103
+ }
104
+
105
+ if (provider === 'code-graph') {
106
+ return {
107
+ check: name,
108
+ status: 'PASS',
109
+ message: `CodeGraphProvider (T3/MCP) active, 8/8 primitives, CB: ${cbState}`,
110
+ fixCommand: null,
111
+ };
112
+ }
113
+
114
+ // Unknown provider (custom)
115
+ return {
116
+ check: name,
117
+ status: 'PASS',
118
+ message: `Provider '${provider}' active, CB: ${cbState}`,
119
+ fixCommand: null,
120
+ };
121
+ } catch (error) {
122
+ return {
123
+ check: name,
124
+ status: 'WARN',
125
+ message: `Provider detection error: ${error.message}`,
126
+ fixCommand: null,
127
+ };
128
+ }
129
+ }
130
+
131
+ module.exports = { name, run };
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Doctor Check: Commands Count
3
+ *
4
+ * Counts .md files in .claude/commands/ recursively.
5
+ * PASS: >=20, WARN: 12-19, FAIL: <12.
6
+ *
7
+ * @module aios-core/doctor/checks/commands-count
8
+ * @story INS-4.8
9
+ */
10
+
11
+ const path = require('path');
12
+ const fs = require('fs');
13
+
14
+ const name = 'commands-count';
15
+
16
+ /**
17
+ * Recursively count .md files in a directory.
18
+ */
19
+ function countMdFiles(dir) {
20
+ let count = 0;
21
+ let entries;
22
+
23
+ try {
24
+ entries = fs.readdirSync(dir, { withFileTypes: true });
25
+ } catch {
26
+ return 0;
27
+ }
28
+
29
+ for (const entry of entries) {
30
+ const fullPath = path.join(dir, entry.name);
31
+ if (entry.isDirectory()) {
32
+ count += countMdFiles(fullPath);
33
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
34
+ count++;
35
+ }
36
+ }
37
+
38
+ return count;
39
+ }
40
+
41
+ async function run(context) {
42
+ const commandsDir = path.join(context.projectRoot, '.claude', 'commands');
43
+
44
+ if (!fs.existsSync(commandsDir)) {
45
+ return {
46
+ check: name,
47
+ status: 'FAIL',
48
+ message: 'Commands directory not found (.claude/commands/)',
49
+ fixCommand: 'npx aios-core install --force',
50
+ };
51
+ }
52
+
53
+ const count = countMdFiles(commandsDir);
54
+
55
+ if (count >= 20) {
56
+ return {
57
+ check: name,
58
+ status: 'PASS',
59
+ message: `${count} command files found`,
60
+ fixCommand: null,
61
+ };
62
+ }
63
+
64
+ if (count >= 12) {
65
+ return {
66
+ check: name,
67
+ status: 'WARN',
68
+ message: `${count}/20 command files found (agents only, no extras)`,
69
+ fixCommand: 'npx aios-core install --force',
70
+ };
71
+ }
72
+
73
+ return {
74
+ check: name,
75
+ status: 'FAIL',
76
+ message: `Only ${count} command files found (expected >=12)`,
77
+ fixCommand: 'npx aios-core install --force',
78
+ };
79
+ }
80
+
81
+ module.exports = { name, run };
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Doctor Check: Core Config
3
+ *
4
+ * Validates core-config.yaml exists and has required keys:
5
+ * boundary, project, ide.
6
+ *
7
+ * @module aios-core/doctor/checks/core-config
8
+ * @story INS-4.1
9
+ */
10
+
11
+ const path = require('path');
12
+ const fs = require('fs');
13
+
14
+ const name = 'core-config';
15
+
16
+ const REQUIRED_SECTIONS = ['boundary', 'project', 'ide'];
17
+
18
+ async function run(context) {
19
+ const configPath = path.join(context.projectRoot, '.aios-core', 'core-config.yaml');
20
+
21
+ if (!fs.existsSync(configPath)) {
22
+ return {
23
+ check: name,
24
+ status: 'FAIL',
25
+ message: 'core-config.yaml not found',
26
+ fixCommand: 'npx aios-core install --force',
27
+ };
28
+ }
29
+
30
+ const content = fs.readFileSync(configPath, 'utf8');
31
+
32
+ const missingSections = REQUIRED_SECTIONS.filter(
33
+ (section) => !content.includes(`${section}:`),
34
+ );
35
+
36
+ if (missingSections.length === 0) {
37
+ return {
38
+ check: name,
39
+ status: 'PASS',
40
+ message: 'Schema valid, boundary section present',
41
+ fixCommand: null,
42
+ };
43
+ }
44
+
45
+ return {
46
+ check: name,
47
+ status: 'FAIL',
48
+ message: `Missing sections: ${missingSections.join(', ')}`,
49
+ fixCommand: 'npx aios-core install --force',
50
+ };
51
+ }
52
+
53
+ module.exports = { name, run };
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Doctor Check: Entity Registry
3
+ *
4
+ * Validates .aios-core/data/entity-registry.yaml exists and mtime < 48h.
5
+ *
6
+ * @module aios-core/doctor/checks/entity-registry
7
+ * @story INS-4.1
8
+ */
9
+
10
+ const path = require('path');
11
+ const fs = require('fs');
12
+
13
+ const name = 'entity-registry';
14
+
15
+ const MAX_AGE_MS = 48 * 60 * 60 * 1000; // 48 hours
16
+
17
+ async function run(context) {
18
+ const registryPath = path.join(context.projectRoot, '.aios-core', 'data', 'entity-registry.yaml');
19
+
20
+ if (!fs.existsSync(registryPath)) {
21
+ return {
22
+ check: name,
23
+ status: 'FAIL',
24
+ message: 'entity-registry.yaml not found',
25
+ fixCommand: 'npx aios-core install --force',
26
+ };
27
+ }
28
+
29
+ const stat = fs.statSync(registryPath);
30
+ const ageMs = Date.now() - stat.mtimeMs;
31
+ const ageHours = Math.round(ageMs / (60 * 60 * 1000));
32
+
33
+ const content = fs.readFileSync(registryPath, 'utf8');
34
+ const lineCount = content.split('\n').length;
35
+
36
+ if (ageMs > MAX_AGE_MS) {
37
+ return {
38
+ check: name,
39
+ status: 'WARN',
40
+ message: `entity-registry.yaml is ${ageHours}h old (threshold: 48h), ~${lineCount} lines`,
41
+ fixCommand: 'npx aios-core install --force',
42
+ };
43
+ }
44
+
45
+ return {
46
+ check: name,
47
+ status: 'PASS',
48
+ message: `~${lineCount} lines, updated ${ageHours}h ago`,
49
+ fixCommand: null,
50
+ };
51
+ }
52
+
53
+ module.exports = { name, run };
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Doctor Check: Git Hooks
3
+ *
4
+ * Validates .husky/pre-commit and .husky/pre-push exist.
5
+ *
6
+ * @module aios-core/doctor/checks/git-hooks
7
+ * @story INS-4.1
8
+ */
9
+
10
+ const path = require('path');
11
+ const fs = require('fs');
12
+
13
+ const name = 'git-hooks';
14
+
15
+ const EXPECTED_HOOKS = ['pre-commit', 'pre-push'];
16
+
17
+ async function run(context) {
18
+ const huskyDir = path.join(context.projectRoot, '.husky');
19
+
20
+ if (!fs.existsSync(huskyDir)) {
21
+ return {
22
+ check: name,
23
+ status: 'WARN',
24
+ message: '.husky directory not found',
25
+ fixCommand: 'npx husky init',
26
+ };
27
+ }
28
+
29
+ const missing = EXPECTED_HOOKS.filter(
30
+ (hook) => !fs.existsSync(path.join(huskyDir, hook)),
31
+ );
32
+
33
+ if (missing.length === 0) {
34
+ return {
35
+ check: name,
36
+ status: 'PASS',
37
+ message: `${EXPECTED_HOOKS.join(' + ')} installed`,
38
+ fixCommand: null,
39
+ };
40
+ }
41
+
42
+ return {
43
+ check: name,
44
+ status: 'WARN',
45
+ message: `Missing hooks: ${missing.join(', ')}`,
46
+ fixCommand: 'npx husky init',
47
+ };
48
+ }
49
+
50
+ module.exports = { name, run };
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Doctor Check: Graph Dashboard
3
+ *
4
+ * Validates .aios-core/core/graph-dashboard/ directory exists
5
+ * with at least 1 .js file.
6
+ *
7
+ * @module aios-core/doctor/checks/graph-dashboard
8
+ * @story INS-4.1
9
+ */
10
+
11
+ const path = require('path');
12
+ const fs = require('fs');
13
+
14
+ const name = 'graph-dashboard';
15
+
16
+ async function run(context) {
17
+ const dashboardDir = path.join(context.projectRoot, '.aios-core', 'core', 'graph-dashboard');
18
+
19
+ if (!fs.existsSync(dashboardDir)) {
20
+ return {
21
+ check: name,
22
+ status: 'WARN',
23
+ message: 'graph-dashboard directory not found',
24
+ fixCommand: 'npx aios-core install --force',
25
+ };
26
+ }
27
+
28
+ const jsFiles = fs.readdirSync(dashboardDir)
29
+ .filter((f) => f.endsWith('.js'));
30
+
31
+ if (jsFiles.length === 0) {
32
+ return {
33
+ check: name,
34
+ status: 'WARN',
35
+ message: 'graph-dashboard directory empty (no .js files)',
36
+ fixCommand: 'npx aios-core install --force',
37
+ };
38
+ }
39
+
40
+ return {
41
+ check: name,
42
+ status: 'PASS',
43
+ message: `All modules present (${jsFiles.length} files)`,
44
+ fixCommand: null,
45
+ };
46
+ }
47
+
48
+ module.exports = { name, run };
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Doctor Check: Hooks Claude Count
3
+ *
4
+ * Counts .cjs files in .claude/hooks/ and verifies registration
5
+ * in settings.local.json.
6
+ * PASS: >=2 + all registered, WARN: files present but not registered or <2,
7
+ * FAIL: 0 or directory missing.
8
+ *
9
+ * @module aios-core/doctor/checks/hooks-claude-count
10
+ * @story INS-4.8
11
+ */
12
+
13
+ const path = require('path');
14
+ const fs = require('fs');
15
+
16
+ const name = 'hooks-claude-count';
17
+
18
+ async function run(context) {
19
+ const hooksDir = path.join(context.projectRoot, '.claude', 'hooks');
20
+
21
+ if (!fs.existsSync(hooksDir)) {
22
+ return {
23
+ check: name,
24
+ status: 'FAIL',
25
+ message: 'Hooks directory not found (.claude/hooks/)',
26
+ fixCommand: 'npx aios-core install --force',
27
+ };
28
+ }
29
+
30
+ let entries;
31
+ try {
32
+ entries = fs.readdirSync(hooksDir, { withFileTypes: true });
33
+ } catch {
34
+ return {
35
+ check: name,
36
+ status: 'FAIL',
37
+ message: 'Cannot read hooks directory',
38
+ fixCommand: 'npx aios-core install --force',
39
+ };
40
+ }
41
+
42
+ const hookFiles = entries.filter(
43
+ (e) => e.isFile() && e.name.endsWith('.cjs'),
44
+ );
45
+ const hookCount = hookFiles.length;
46
+
47
+ if (hookCount === 0) {
48
+ return {
49
+ check: name,
50
+ status: 'FAIL',
51
+ message: 'No hook files found (.cjs)',
52
+ fixCommand: 'npx aios-core install --force',
53
+ };
54
+ }
55
+
56
+ // Check registration in settings.local.json
57
+ const settingsLocalPath = path.join(context.projectRoot, '.claude', 'settings.local.json');
58
+ let registered = false;
59
+
60
+ if (fs.existsSync(settingsLocalPath)) {
61
+ try {
62
+ const settingsLocal = JSON.parse(fs.readFileSync(settingsLocalPath, 'utf8'));
63
+ const hooks = settingsLocal.hooks || {};
64
+ // Claude Code hooks schema: { EventName: [{ matcher, hooks: [{ type, command }] }] }
65
+ const allHookCommands = [];
66
+ for (const entries of Object.values(hooks)) {
67
+ if (!Array.isArray(entries)) continue;
68
+ for (const entry of entries) {
69
+ if (entry && Array.isArray(entry.hooks)) {
70
+ for (const h of entry.hooks) {
71
+ if (h && h.command) allHookCommands.push(h.command);
72
+ }
73
+ }
74
+ // Fallback: flat string or direct command
75
+ if (typeof entry === 'string') allHookCommands.push(entry);
76
+ if (entry && typeof entry.command === 'string') allHookCommands.push(entry.command);
77
+ }
78
+ }
79
+ const hooksStr = allHookCommands.join('\n');
80
+
81
+ // Check if at least some hook files are referenced in settings
82
+ const referencedCount = hookFiles.filter(
83
+ (f) => hooksStr.includes(f.name) || hooksStr.includes(f.name.replace('.cjs', '')),
84
+ ).length;
85
+
86
+ registered = referencedCount > 0;
87
+ } catch {
88
+ registered = false;
89
+ }
90
+ }
91
+
92
+ if (hookCount >= 2 && registered) {
93
+ return {
94
+ check: name,
95
+ status: 'PASS',
96
+ message: `${hookCount} hook files found and registered`,
97
+ fixCommand: null,
98
+ };
99
+ }
100
+
101
+ if (hookCount >= 2 && !registered) {
102
+ return {
103
+ check: name,
104
+ status: 'WARN',
105
+ message: `${hookCount} hook files found but not registered in settings.local.json`,
106
+ fixCommand: 'npx aios-core install --force',
107
+ };
108
+ }
109
+
110
+ return {
111
+ check: name,
112
+ status: 'WARN',
113
+ message: `Only ${hookCount}/2 hook files found`,
114
+ fixCommand: 'npx aios-core install --force',
115
+ };
116
+ }
117
+
118
+ module.exports = { name, run };
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Doctor Check: IDE Sync
3
+ *
4
+ * Validates agents in .claude/commands/AIOS/agents/ match
5
+ * .aios-core/development/agents/ (count and names).
6
+ *
7
+ * @module aios-core/doctor/checks/ide-sync
8
+ * @story INS-4.1
9
+ */
10
+
11
+ const path = require('path');
12
+ const fs = require('fs');
13
+
14
+ const name = 'ide-sync';
15
+
16
+ async function run(context) {
17
+ const agentsSourceDir = path.join(context.projectRoot, '.aios-core', 'development', 'agents');
18
+ const agentsIdeDir = path.join(context.projectRoot, '.claude', 'commands', 'AIOS', 'agents');
19
+
20
+ if (!fs.existsSync(agentsSourceDir)) {
21
+ return {
22
+ check: name,
23
+ status: 'FAIL',
24
+ message: 'Source agents directory not found',
25
+ fixCommand: 'npx aios-core install --force',
26
+ };
27
+ }
28
+
29
+ if (!fs.existsSync(agentsIdeDir)) {
30
+ return {
31
+ check: name,
32
+ status: 'WARN',
33
+ message: 'IDE agents directory not found (.claude/commands/AIOS/agents/)',
34
+ fixCommand: 'npx aios-core install --force',
35
+ };
36
+ }
37
+
38
+ let sourceAgents, ideFiles;
39
+ try {
40
+ sourceAgents = fs.readdirSync(agentsSourceDir)
41
+ .filter((f) => f.endsWith('.md'))
42
+ .map((f) => f.replace('.md', ''));
43
+ } catch (_err) {
44
+ return {
45
+ check: name,
46
+ status: 'FAIL',
47
+ message: 'Cannot read source agents directory',
48
+ fixCommand: 'npx aios-core install --force',
49
+ };
50
+ }
51
+
52
+ try {
53
+ ideFiles = fs.readdirSync(agentsIdeDir)
54
+ .filter((f) => f.endsWith('.md'));
55
+ } catch (_err) {
56
+ return {
57
+ check: name,
58
+ status: 'WARN',
59
+ message: 'Cannot read IDE agents directory',
60
+ fixCommand: 'npx aios-core install --force',
61
+ };
62
+ }
63
+
64
+ const ideAgents = ideFiles.map((f) => f.replace('.md', ''));
65
+ const sourceCount = sourceAgents.length;
66
+ const ideCount = ideAgents.length;
67
+
68
+ if (sourceCount === ideCount) {
69
+ return {
70
+ check: name,
71
+ status: 'PASS',
72
+ message: `${ideCount}/${sourceCount} agents synced`,
73
+ fixCommand: null,
74
+ };
75
+ }
76
+
77
+ return {
78
+ check: name,
79
+ status: 'WARN',
80
+ message: `IDE has ${ideCount} agents, source has ${sourceCount}`,
81
+ fixCommand: 'npx aios-core install --force',
82
+ };
83
+ }
84
+
85
+ module.exports = { name, run };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Doctor Check Registry
3
+ *
4
+ * Exports all 15 check modules in execution order.
5
+ *
6
+ * @module aios-core/doctor/checks
7
+ * @story INS-4.1, INS-4.8
8
+ */
9
+
10
+ const settingsJson = require('./settings-json');
11
+ const rulesFiles = require('./rules-files');
12
+ const agentMemory = require('./agent-memory');
13
+ const entityRegistry = require('./entity-registry');
14
+ const gitHooks = require('./git-hooks');
15
+ const coreConfig = require('./core-config');
16
+ const claudeMd = require('./claude-md');
17
+ const ideSync = require('./ide-sync');
18
+ const graphDashboard = require('./graph-dashboard');
19
+ const codeIntel = require('./code-intel');
20
+ const nodeVersion = require('./node-version');
21
+ const npmPackages = require('./npm-packages');
22
+ const skillsCount = require('./skills-count');
23
+ const commandsCount = require('./commands-count');
24
+ const hooksClaudeCount = require('./hooks-claude-count');
25
+
26
+ function loadChecks() {
27
+ return [
28
+ settingsJson,
29
+ rulesFiles,
30
+ agentMemory,
31
+ entityRegistry,
32
+ gitHooks,
33
+ coreConfig,
34
+ claudeMd,
35
+ ideSync,
36
+ graphDashboard,
37
+ codeIntel,
38
+ nodeVersion,
39
+ npmPackages,
40
+ skillsCount,
41
+ commandsCount,
42
+ hooksClaudeCount,
43
+ ];
44
+ }
45
+
46
+ module.exports = { loadChecks };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Doctor Check: Node.js Version
3
+ *
4
+ * Validates Node.js >= 18 via process.version.
5
+ *
6
+ * @module aios-core/doctor/checks/node-version
7
+ * @story INS-4.1
8
+ */
9
+
10
+ const name = 'node-version';
11
+
12
+ async function run() {
13
+ const version = process.version.replace('v', '');
14
+ const [major] = version.split('.').map(Number);
15
+
16
+ if (major >= 18) {
17
+ return {
18
+ check: name,
19
+ status: 'PASS',
20
+ message: `Node.js ${process.version}`,
21
+ fixCommand: null,
22
+ };
23
+ }
24
+
25
+ return {
26
+ check: name,
27
+ status: 'FAIL',
28
+ message: `Node.js ${process.version} (requires >= 18.0.0)`,
29
+ fixCommand: 'nvm install 20 && nvm use 20',
30
+ };
31
+ }
32
+
33
+ module.exports = { name, run };