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
@@ -59,8 +59,108 @@ const TRANSLATIONS = {
59
59
  // Cancellation
60
60
  cancelConfirm: 'Cancel installation?',
61
61
  cancelled: 'Installation cancelled.',
62
- tryAgain: 'Run `npx @synkra/aios-core init` to try again.',
62
+ tryAgain: 'Run `npx aios-core init` to try again.',
63
63
  continuing: 'Continuing installation...',
64
+
65
+ // Pro Installation Wizard (pro-setup.js)
66
+ proWizardTitle: 'AIOS Pro Installation Wizard',
67
+ proWizardSubtitle: 'Premium Content & Features',
68
+ proLicenseActivation: 'License Activation',
69
+ proContentInstallation: 'Pro Content Installation',
70
+ proVerification: 'Verification',
71
+ proHowActivate: 'How would you like to activate Pro?',
72
+ proLoginOrCreate: 'Login or create account (Recommended)',
73
+ proEnterKey: 'Enter license key (legacy)',
74
+ proEmailLabel: 'Email:',
75
+ proEmailRequired: 'Email is required',
76
+ proEmailInvalid: 'Please enter a valid email address',
77
+ proVerifyingAccess: 'Verifying your access...',
78
+ proNoAccess: 'No AIOS Pro access found for this email.',
79
+ proContactSupport: 'If you believe this is an error, please contact support:',
80
+ proPurchase: 'Purchase Pro: https://pro.synkra.ai',
81
+ proEmailNotBuyer: 'Email not found in Pro buyers list.',
82
+ proAccessConfirmedAccount: 'Pro access confirmed! Account found.',
83
+ proAccessConfirmedCreate: "Pro access confirmed! Let's create your account.",
84
+ proPasswordLabel: 'Password:',
85
+ proPasswordMin: 'Password must be at least {min} characters',
86
+ proAuthenticating: 'Authenticating...',
87
+ proAuthSuccess: 'Authenticated successfully.',
88
+ proEmailNotVerified: 'Email not verified yet. Please check your inbox and click the verification link.',
89
+ proCheckingEvery: '(Checking every 5 seconds... timeout in 10 minutes)',
90
+ proEmailVerified: 'Email verified!',
91
+ proVerificationTimeout: 'Email verification timed out after 10 minutes.',
92
+ proRunAgain: 'Run the installer again to retry.',
93
+ proIncorrectPassword: 'Incorrect password. {remaining} attempt(s) remaining.',
94
+ proMaxAttempts: 'Maximum login attempts reached.',
95
+ proForgotPassword: 'Forgot your password? Visit https://aios-license-server.vercel.app/reset-password',
96
+ proContactSupportEmail: 'Or open an issue: https://github.com/SynkraAI/aios-core/issues',
97
+ proAuthFailed: 'Authentication failed: {message}',
98
+ proCreateAccount: 'Create your AIOS Pro account to get started.',
99
+ proChoosePassword: 'Choose a password:',
100
+ proConfirmPassword: 'Confirm password:',
101
+ proPasswordsNoMatch: 'Passwords do not match',
102
+ proCreatingAccount: 'Creating account...',
103
+ proAccountCreated: 'Account created! Verification email sent.',
104
+ proAccountExists: 'Account already exists. Switching to login...',
105
+ proAccountFailed: 'Account creation failed: {message}',
106
+ proCheckEmail: 'Please check your email and click the verification link.',
107
+ proWaitingVerification: 'Waiting for email verification...',
108
+ proAfterVerifying: 'After verifying, the installation will continue automatically.',
109
+ proPressResend: '[Press R to resend verification email]',
110
+ proVerificationResent: 'Verification email resent.',
111
+ proCouldNotResend: 'Could not resend: {message}',
112
+ proRunAgainRetry: 'Run the installer again to retry verification.',
113
+ proValidatingSubscription: 'Validating Pro subscription...',
114
+ proSubscriptionConfirmed: 'Pro subscription confirmed! License: {key}',
115
+ proNoSubscription: 'No active Pro subscription found for this email.',
116
+ proPurchaseAt: 'Purchase Pro at https://pro.synkra.ai',
117
+ proSeatLimit: 'Deactivate another device or upgrade your license.',
118
+ proAlreadyActivated: 'Pro license already activated for this account.',
119
+ proActivationFailed: 'Activation failed: {message}',
120
+ proEnterKeyPrompt: 'Enter your Pro license key:',
121
+ proKeyRequired: 'License key is required',
122
+ proKeyInvalid: 'Invalid format. Expected: PRO-XXXX-XXXX-XXXX-XXXX',
123
+ proKeyValidated: 'License validated: {key}',
124
+ proModuleNotAvailable: 'Pro license module not available. Ensure @aios-fullstack/pro is installed.',
125
+ proServerUnreachable: 'License server is unreachable. Check your internet connection and try again.',
126
+ proVerifyingAccessShort: 'Verifying access...',
127
+ proAccessConfirmed: 'Pro access confirmed.',
128
+ proBuyerCheckUnavailable: 'Buyer check unavailable, proceeding with login...',
129
+ proLoginFailedSignup: 'Login failed, attempting signup...',
130
+ proAccountCreatedVerify: 'Account created. Verification email sent!',
131
+ proAccountExistsWrongPw: 'Account exists but the password is incorrect.',
132
+ proAuthFailedShort: 'Authentication failed.',
133
+ proValidatingKey: 'Validating license {key}...',
134
+ proInvalidKey: 'Invalid license key.',
135
+ proExpiredKey: 'License key has expired.',
136
+ proMaxActivations: 'Maximum activations reached for this key.',
137
+ proRateLimited: 'Too many requests. Please wait and try again.',
138
+ proValidationFailed: 'License validation failed: {message}',
139
+ proInvalidKeyFormat: 'Invalid key format: {key}. Expected: PRO-XXXX-XXXX-XXXX-XXXX',
140
+ proScaffolding: 'Scaffolding pro content...',
141
+ proScaffoldingProgress: 'Scaffolding: {message}',
142
+ proContentInstalled: 'Pro content installed ({count} files)',
143
+ proScaffoldFailed: 'Scaffolding failed',
144
+ proScaffoldError: 'Scaffolding error: {message}',
145
+ proInitPackageJson: 'Initializing package.json...',
146
+ proPackageJsonCreated: 'package.json created',
147
+ proPackageJsonFailed: 'Failed to create package.json',
148
+ proInstallingPackage: 'Installing @aios-fullstack/pro...',
149
+ proPackageInstalled: 'Pro package installed',
150
+ proPackageInstallFailed: 'Failed to install Pro package',
151
+ proScaffolderNotAvailable: 'Pro scaffolder not available. Ensure @aios-fullstack/pro is installed.',
152
+ proFilesInstalled: 'Files installed: {count}',
153
+ proSquads: 'Squads: {names}',
154
+ proConfigs: 'Configs: {count} files',
155
+ proFeaturesUnlocked: 'Features unlocked: {count}',
156
+ proInstallComplete: 'AIOS Pro installation complete!',
157
+ proNeedHelp: 'Need help? Run: npx aios-pro recover',
158
+ proCISetEnv: 'CI mode: Set AIOS_PRO_EMAIL + AIOS_PRO_PASSWORD or AIOS_PRO_KEY environment variables.',
159
+ proVerificationFailed: 'Verification failed: {message}',
160
+ proPackageNotFound: 'Pro package not found after npm install. Check npm output.',
161
+ proScaffolderNotFound: 'Pro scaffolder module not found.',
162
+ proNpmInitFailed: 'npm init failed: {message}',
163
+ proNpmInstallFailed: 'npm install @aios-fullstack/pro failed: {message}. Try manually: npm install @aios-fullstack/pro',
64
164
  },
65
165
 
66
166
  pt: {
@@ -116,8 +216,108 @@ const TRANSLATIONS = {
116
216
  // Cancellation
117
217
  cancelConfirm: 'Cancelar instalação?',
118
218
  cancelled: 'Instalação cancelada.',
119
- tryAgain: 'Execute `npx @synkra/aios-core init` para tentar novamente.',
219
+ tryAgain: 'Execute `npx aios-core init` para tentar novamente.',
120
220
  continuing: 'Continuando instalação...',
221
+
222
+ // Pro Installation Wizard (pro-setup.js)
223
+ proWizardTitle: 'Assistente de Instalação AIOS Pro',
224
+ proWizardSubtitle: 'Conteúdo e Recursos Premium',
225
+ proLicenseActivation: 'Ativação de Licença',
226
+ proContentInstallation: 'Instalação do Conteúdo Pro',
227
+ proVerification: 'Verificação',
228
+ proHowActivate: 'Como você gostaria de ativar o Pro?',
229
+ proLoginOrCreate: 'Login ou criar conta (Recomendado)',
230
+ proEnterKey: 'Inserir chave de licença (legado)',
231
+ proEmailLabel: 'Email:',
232
+ proEmailRequired: 'Email é obrigatório',
233
+ proEmailInvalid: 'Por favor, insira um endereço de email válido',
234
+ proVerifyingAccess: 'Verificando seu acesso...',
235
+ proNoAccess: 'Nenhum acesso AIOS Pro encontrado para este email.',
236
+ proContactSupport: 'Se você acredita que isso é um erro, entre em contato com o suporte:',
237
+ proPurchase: 'Comprar Pro: https://pro.synkra.ai',
238
+ proEmailNotBuyer: 'Email não encontrado na lista de compradores Pro.',
239
+ proAccessConfirmedAccount: 'Acesso Pro confirmado! Conta encontrada.',
240
+ proAccessConfirmedCreate: 'Acesso Pro confirmado! Vamos criar sua conta.',
241
+ proPasswordLabel: 'Senha:',
242
+ proPasswordMin: 'A senha deve ter pelo menos {min} caracteres',
243
+ proAuthenticating: 'Autenticando...',
244
+ proAuthSuccess: 'Autenticado com sucesso.',
245
+ proEmailNotVerified: 'Email ainda não verificado. Verifique sua caixa de entrada e clique no link de verificação.',
246
+ proCheckingEvery: '(Verificando a cada 5 segundos... tempo limite de 10 minutos)',
247
+ proEmailVerified: 'Email verificado!',
248
+ proVerificationTimeout: 'Verificação de email expirou após 10 minutos.',
249
+ proRunAgain: 'Execute o instalador novamente para tentar.',
250
+ proIncorrectPassword: 'Senha incorreta. {remaining} tentativa(s) restante(s).',
251
+ proMaxAttempts: 'Número máximo de tentativas de login atingido.',
252
+ proForgotPassword: 'Esqueceu sua senha? Acesse https://aios-license-server.vercel.app/reset-password',
253
+ proContactSupportEmail: 'Ou abra uma issue: https://github.com/SynkraAI/aios-core/issues',
254
+ proAuthFailed: 'Falha na autenticação: {message}',
255
+ proCreateAccount: 'Crie sua conta AIOS Pro para começar.',
256
+ proChoosePassword: 'Escolha uma senha:',
257
+ proConfirmPassword: 'Confirme a senha:',
258
+ proPasswordsNoMatch: 'As senhas não correspondem',
259
+ proCreatingAccount: 'Criando conta...',
260
+ proAccountCreated: 'Conta criada! Email de verificação enviado.',
261
+ proAccountExists: 'Conta já existe. Mudando para login...',
262
+ proAccountFailed: 'Falha ao criar conta: {message}',
263
+ proCheckEmail: 'Por favor, verifique seu email e clique no link de verificação.',
264
+ proWaitingVerification: 'Aguardando verificação de email...',
265
+ proAfterVerifying: 'Após verificar, a instalação continuará automaticamente.',
266
+ proPressResend: '[Pressione R para reenviar email de verificação]',
267
+ proVerificationResent: 'Email de verificação reenviado.',
268
+ proCouldNotResend: 'Não foi possível reenviar: {message}',
269
+ proRunAgainRetry: 'Execute o instalador novamente para tentar a verificação.',
270
+ proValidatingSubscription: 'Validando assinatura Pro...',
271
+ proSubscriptionConfirmed: 'Assinatura Pro confirmada! Licença: {key}',
272
+ proNoSubscription: 'Nenhuma assinatura Pro ativa encontrada para este email.',
273
+ proPurchaseAt: 'Compre o Pro em https://pro.synkra.ai',
274
+ proSeatLimit: 'Desative outro dispositivo ou faça upgrade da sua licença.',
275
+ proAlreadyActivated: 'Licença Pro já ativada para esta conta.',
276
+ proActivationFailed: 'Falha na ativação: {message}',
277
+ proEnterKeyPrompt: 'Insira sua chave de licença Pro:',
278
+ proKeyRequired: 'Chave de licença é obrigatória',
279
+ proKeyInvalid: 'Formato inválido. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
280
+ proKeyValidated: 'Licença validada: {key}',
281
+ proModuleNotAvailable: 'Módulo de licença Pro não disponível. Certifique-se de que @aios-fullstack/pro está instalado.',
282
+ proServerUnreachable: 'Servidor de licenças inacessível. Verifique sua conexão com a internet e tente novamente.',
283
+ proVerifyingAccessShort: 'Verificando acesso...',
284
+ proAccessConfirmed: 'Acesso Pro confirmado.',
285
+ proBuyerCheckUnavailable: 'Verificação de comprador indisponível, prosseguindo com login...',
286
+ proLoginFailedSignup: 'Login falhou, tentando cadastro...',
287
+ proAccountCreatedVerify: 'Conta criada. Email de verificação enviado!',
288
+ proAccountExistsWrongPw: 'Conta existe mas a senha está incorreta.',
289
+ proAuthFailedShort: 'Falha na autenticação.',
290
+ proValidatingKey: 'Validando licença {key}...',
291
+ proInvalidKey: 'Chave de licença inválida.',
292
+ proExpiredKey: 'Chave de licença expirada.',
293
+ proMaxActivations: 'Número máximo de ativações atingido para esta chave.',
294
+ proRateLimited: 'Muitas requisições. Aguarde e tente novamente.',
295
+ proValidationFailed: 'Validação de licença falhou: {message}',
296
+ proInvalidKeyFormat: 'Formato de chave inválido: {key}. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
297
+ proScaffolding: 'Instalando conteúdo pro...',
298
+ proScaffoldingProgress: 'Instalando: {message}',
299
+ proContentInstalled: 'Conteúdo Pro instalado ({count} arquivos)',
300
+ proScaffoldFailed: 'Instalação falhou',
301
+ proScaffoldError: 'Erro na instalação: {message}',
302
+ proInitPackageJson: 'Inicializando package.json...',
303
+ proPackageJsonCreated: 'package.json criado',
304
+ proPackageJsonFailed: 'Falha ao criar package.json',
305
+ proInstallingPackage: 'Instalando @aios-fullstack/pro...',
306
+ proPackageInstalled: 'Pacote Pro instalado',
307
+ proPackageInstallFailed: 'Falha ao instalar pacote Pro',
308
+ proScaffolderNotAvailable: 'Scaffolder Pro não disponível. Certifique-se de que @aios-fullstack/pro está instalado.',
309
+ proFilesInstalled: 'Arquivos instalados: {count}',
310
+ proSquads: 'Squads: {names}',
311
+ proConfigs: 'Configs: {count} arquivos',
312
+ proFeaturesUnlocked: 'Recursos desbloqueados: {count}',
313
+ proInstallComplete: 'Instalação do AIOS Pro completa!',
314
+ proNeedHelp: 'Precisa de ajuda? Execute: npx aios-pro recover',
315
+ proCISetEnv: 'Modo CI: Defina as variáveis AIOS_PRO_EMAIL + AIOS_PRO_PASSWORD ou AIOS_PRO_KEY.',
316
+ proVerificationFailed: 'Verificação falhou: {message}',
317
+ proPackageNotFound: 'Pacote Pro não encontrado após npm install. Verifique a saída do npm.',
318
+ proScaffolderNotFound: 'Módulo scaffolder Pro não encontrado.',
319
+ proNpmInitFailed: 'npm init falhou: {message}',
320
+ proNpmInstallFailed: 'npm install @aios-fullstack/pro falhou: {message}. Tente manualmente: npm install @aios-fullstack/pro',
121
321
  },
122
322
 
123
323
  es: {
@@ -172,8 +372,108 @@ const TRANSLATIONS = {
172
372
  // Cancellation
173
373
  cancelConfirm: '¿Cancelar instalación?',
174
374
  cancelled: 'Instalación cancelada.',
175
- tryAgain: 'Ejecute `npx @synkra/aios-core init` para intentar nuevamente.',
375
+ tryAgain: 'Ejecute `npx aios-core init` para intentar nuevamente.',
176
376
  continuing: 'Continuando instalación...',
377
+
378
+ // Pro Installation Wizard (pro-setup.js)
379
+ proWizardTitle: 'Asistente de Instalación AIOS Pro',
380
+ proWizardSubtitle: 'Contenido y Funciones Premium',
381
+ proLicenseActivation: 'Activación de Licencia',
382
+ proContentInstallation: 'Instalación del Contenido Pro',
383
+ proVerification: 'Verificación',
384
+ proHowActivate: '¿Cómo te gustaría activar Pro?',
385
+ proLoginOrCreate: 'Iniciar sesión o crear cuenta (Recomendado)',
386
+ proEnterKey: 'Ingresar clave de licencia (legado)',
387
+ proEmailLabel: 'Email:',
388
+ proEmailRequired: 'Email es obligatorio',
389
+ proEmailInvalid: 'Por favor, ingrese una dirección de email válida',
390
+ proVerifyingAccess: 'Verificando tu acceso...',
391
+ proNoAccess: 'No se encontró acceso AIOS Pro para este email.',
392
+ proContactSupport: 'Si cree que esto es un error, contacte al soporte:',
393
+ proPurchase: 'Comprar Pro: https://pro.synkra.ai',
394
+ proEmailNotBuyer: 'Email no encontrado en la lista de compradores Pro.',
395
+ proAccessConfirmedAccount: '¡Acceso Pro confirmado! Cuenta encontrada.',
396
+ proAccessConfirmedCreate: '¡Acceso Pro confirmado! Vamos a crear tu cuenta.',
397
+ proPasswordLabel: 'Contraseña:',
398
+ proPasswordMin: 'La contraseña debe tener al menos {min} caracteres',
399
+ proAuthenticating: 'Autenticando...',
400
+ proAuthSuccess: 'Autenticado exitosamente.',
401
+ proEmailNotVerified: 'Email aún no verificado. Revise su bandeja de entrada y haga clic en el enlace de verificación.',
402
+ proCheckingEvery: '(Verificando cada 5 segundos... tiempo límite de 10 minutos)',
403
+ proEmailVerified: '¡Email verificado!',
404
+ proVerificationTimeout: 'Verificación de email expiró después de 10 minutos.',
405
+ proRunAgain: 'Ejecute el instalador nuevamente para reintentar.',
406
+ proIncorrectPassword: 'Contraseña incorrecta. {remaining} intento(s) restante(s).',
407
+ proMaxAttempts: 'Número máximo de intentos de inicio de sesión alcanzado.',
408
+ proForgotPassword: '¿Olvidó su contraseña? Visite https://aios-license-server.vercel.app/reset-password',
409
+ proContactSupportEmail: 'O abra un issue: https://github.com/SynkraAI/aios-core/issues',
410
+ proAuthFailed: 'Error de autenticación: {message}',
411
+ proCreateAccount: 'Cree su cuenta AIOS Pro para comenzar.',
412
+ proChoosePassword: 'Elija una contraseña:',
413
+ proConfirmPassword: 'Confirme la contraseña:',
414
+ proPasswordsNoMatch: 'Las contraseñas no coinciden',
415
+ proCreatingAccount: 'Creando cuenta...',
416
+ proAccountCreated: '¡Cuenta creada! Email de verificación enviado.',
417
+ proAccountExists: 'La cuenta ya existe. Cambiando a inicio de sesión...',
418
+ proAccountFailed: 'Error al crear la cuenta: {message}',
419
+ proCheckEmail: 'Por favor, revise su email y haga clic en el enlace de verificación.',
420
+ proWaitingVerification: 'Esperando verificación de email...',
421
+ proAfterVerifying: 'Después de verificar, la instalación continuará automáticamente.',
422
+ proPressResend: '[Presione R para reenviar email de verificación]',
423
+ proVerificationResent: 'Email de verificación reenviado.',
424
+ proCouldNotResend: 'No se pudo reenviar: {message}',
425
+ proRunAgainRetry: 'Ejecute el instalador nuevamente para reintentar la verificación.',
426
+ proValidatingSubscription: 'Validando suscripción Pro...',
427
+ proSubscriptionConfirmed: '¡Suscripción Pro confirmada! Licencia: {key}',
428
+ proNoSubscription: 'No se encontró suscripción Pro activa para este email.',
429
+ proPurchaseAt: 'Compre Pro en https://pro.synkra.ai',
430
+ proSeatLimit: 'Desactive otro dispositivo o actualice su licencia.',
431
+ proAlreadyActivated: 'Licencia Pro ya activada para esta cuenta.',
432
+ proActivationFailed: 'Error de activación: {message}',
433
+ proEnterKeyPrompt: 'Ingrese su clave de licencia Pro:',
434
+ proKeyRequired: 'Clave de licencia es obligatoria',
435
+ proKeyInvalid: 'Formato inválido. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
436
+ proKeyValidated: 'Licencia validada: {key}',
437
+ proModuleNotAvailable: 'Módulo de licencia Pro no disponible. Asegúrese de que @aios-fullstack/pro esté instalado.',
438
+ proServerUnreachable: 'Servidor de licencias inaccesible. Verifique su conexión a internet e intente nuevamente.',
439
+ proVerifyingAccessShort: 'Verificando acceso...',
440
+ proAccessConfirmed: 'Acceso Pro confirmado.',
441
+ proBuyerCheckUnavailable: 'Verificación de comprador no disponible, procediendo con inicio de sesión...',
442
+ proLoginFailedSignup: 'Inicio de sesión fallido, intentando registro...',
443
+ proAccountCreatedVerify: 'Cuenta creada. ¡Email de verificación enviado!',
444
+ proAccountExistsWrongPw: 'La cuenta existe pero la contraseña es incorrecta.',
445
+ proAuthFailedShort: 'Error de autenticación.',
446
+ proValidatingKey: 'Validando licencia {key}...',
447
+ proInvalidKey: 'Clave de licencia inválida.',
448
+ proExpiredKey: 'Clave de licencia expirada.',
449
+ proMaxActivations: 'Número máximo de activaciones alcanzado para esta clave.',
450
+ proRateLimited: 'Demasiadas solicitudes. Espere e intente nuevamente.',
451
+ proValidationFailed: 'Validación de licencia fallida: {message}',
452
+ proInvalidKeyFormat: 'Formato de clave inválido: {key}. Esperado: PRO-XXXX-XXXX-XXXX-XXXX',
453
+ proScaffolding: 'Instalando contenido pro...',
454
+ proScaffoldingProgress: 'Instalando: {message}',
455
+ proContentInstalled: 'Contenido Pro instalado ({count} archivos)',
456
+ proScaffoldFailed: 'Instalación fallida',
457
+ proScaffoldError: 'Error de instalación: {message}',
458
+ proInitPackageJson: 'Inicializando package.json...',
459
+ proPackageJsonCreated: 'package.json creado',
460
+ proPackageJsonFailed: 'Error al crear package.json',
461
+ proInstallingPackage: 'Instalando @aios-fullstack/pro...',
462
+ proPackageInstalled: 'Paquete Pro instalado',
463
+ proPackageInstallFailed: 'Error al instalar paquete Pro',
464
+ proScaffolderNotAvailable: 'Scaffolder Pro no disponible. Asegúrese de que @aios-fullstack/pro esté instalado.',
465
+ proFilesInstalled: 'Archivos instalados: {count}',
466
+ proSquads: 'Squads: {names}',
467
+ proConfigs: 'Configs: {count} archivos',
468
+ proFeaturesUnlocked: 'Funciones desbloqueadas: {count}',
469
+ proInstallComplete: '¡Instalación de AIOS Pro completa!',
470
+ proNeedHelp: '¿Necesita ayuda? Ejecute: npx aios-pro recover',
471
+ proCISetEnv: 'Modo CI: Configure las variables AIOS_PRO_EMAIL + AIOS_PRO_PASSWORD o AIOS_PRO_KEY.',
472
+ proVerificationFailed: 'Verificación fallida: {message}',
473
+ proPackageNotFound: 'Paquete Pro no encontrado después de npm install. Verifique la salida de npm.',
474
+ proScaffolderNotFound: 'Módulo scaffolder Pro no encontrado.',
475
+ proNpmInitFailed: 'npm init falló: {message}',
476
+ proNpmInstallFailed: 'npm install @aios-fullstack/pro falló: {message}. Intente manualmente: npm install @aios-fullstack/pro',
177
477
  },
178
478
  };
179
479
 
@@ -207,6 +507,23 @@ function t(key) {
207
507
  return TRANSLATIONS[currentLanguage][key] || TRANSLATIONS['en'][key] || key;
208
508
  }
209
509
 
510
+ /**
511
+ * Get translated string with placeholder substitution.
512
+ * Placeholders use {name} syntax.
513
+ *
514
+ * @param {string} key - Translation key
515
+ * @param {Object} [params={}] - Placeholder values
516
+ * @returns {string} Translated string with substitutions
517
+ * @example tf('proIncorrectPassword', { remaining: 2 })
518
+ */
519
+ function tf(key, params = {}) {
520
+ let str = t(key);
521
+ for (const [k, v] of Object.entries(params)) {
522
+ str = str.replace(new RegExp(`\\{${k}\\}`, 'g'), String(v));
523
+ }
524
+ return str;
525
+ }
526
+
210
527
  /**
211
528
  * Get language selection choices
212
529
  * @returns {Array} Inquirer choices
@@ -223,6 +540,7 @@ module.exports = {
223
540
  setLanguage,
224
541
  getLanguage,
225
542
  t,
543
+ tf,
226
544
  getLanguageChoices,
227
545
  TRANSLATIONS,
228
546
  };
@@ -253,6 +253,23 @@ async function copyAgentFiles(projectRoot, agentFolder, ideConfig = null) {
253
253
  const agentTargetPath = path.join(agentsDir, file);
254
254
  await fs.copy(sourcePath, agentTargetPath);
255
255
  copiedFiles.push(agentTargetPath);
256
+ } else if (ideConfig && ideConfig.agentFolder && ideConfig.agentFolder.includes('.github')) {
257
+ // GitHub Copilot: apply transformer for .agent.md format with YAML frontmatter
258
+ try {
259
+ const agentParser = require('../../../../.aios-core/infrastructure/scripts/ide-sync/agent-parser');
260
+ const copilotTransformer = require('../../../../.aios-core/infrastructure/scripts/ide-sync/transformers/github-copilot');
261
+ const agentData = agentParser.parseAgentFile(sourcePath);
262
+ const content = copilotTransformer.transform(agentData);
263
+ const filename = copilotTransformer.getFilename(agentData);
264
+ const targetPath = path.join(targetDir, filename);
265
+ await fs.writeFile(targetPath, content, 'utf8');
266
+ copiedFiles.push(targetPath);
267
+ } catch (transformError) {
268
+ // Fallback: copy raw file with .agent.md extension
269
+ const targetPath = path.join(targetDir, `${agentName}.agent.md`);
270
+ await fs.copy(sourcePath, targetPath);
271
+ copiedFiles.push(targetPath);
272
+ }
256
273
  } else {
257
274
  // Normal copy for other IDEs
258
275
  const targetPath = path.join(targetDir, file);
@@ -535,7 +552,7 @@ async function generateIDEConfigs(selectedIDEs, wizardState, options = {}) {
535
552
  const settingsFile = await createClaudeSettingsLocal(projectRoot);
536
553
  if (settingsFile) {
537
554
  createdFiles.push(settingsFile);
538
- spinner.succeed('Created .claude/settings.local.json with SYNAPSE hook');
555
+ spinner.succeed('Created .claude/settings.local.json with registered hooks');
539
556
  } else {
540
557
  spinner.info('Skipped settings.local.json (no hooks to register)');
541
558
  }
@@ -692,23 +709,22 @@ async function copyClaudeHooksFolder(projectRoot) {
692
709
  */
693
710
  async function createClaudeSettingsLocal(projectRoot) {
694
711
  const settingsPath = path.join(projectRoot, '.claude', 'settings.local.json');
695
- const hookFile = path.join(projectRoot, '.claude', 'hooks', 'synapse-engine.cjs');
712
+ const hooksDir = path.join(projectRoot, '.claude', 'hooks');
696
713
 
697
- // Only create if the hook file was actually copied
698
- if (!await fs.pathExists(hookFile)) {
714
+ // Only create if hooks directory exists
715
+ if (!await fs.pathExists(hooksDir)) {
699
716
  return null;
700
717
  }
701
718
 
702
- // QA-C1 fix: Use correct Claude Code nested hook format
703
- // Format: { hooks: [{ type, command }] } not flat { type, command }
704
- const hookWrapper = {
705
- hooks: [
706
- {
707
- type: 'command',
708
- command: 'node ".claude/hooks/synapse-engine.cjs"',
709
- },
710
- ],
711
- };
719
+ // Find all .cjs hook files dynamically (Story INS-4.3, Gap #13)
720
+ const allFiles = await fs.readdir(hooksDir);
721
+ const hookFiles = allFiles.filter(f => f.endsWith('.cjs'));
722
+
723
+ if (hookFiles.length === 0) {
724
+ return null;
725
+ }
726
+
727
+ const isWindows = process.platform === 'win32';
712
728
 
713
729
  let settings = {};
714
730
 
@@ -732,18 +748,36 @@ async function createClaudeSettingsLocal(projectRoot) {
732
748
  settings.hooks.UserPromptSubmit = [];
733
749
  }
734
750
 
735
- // Check if synapse hook is already registered (supports both nested and flat formats)
736
- const alreadyRegistered = settings.hooks.UserPromptSubmit.some(entry => {
737
- // Nested format: entry.hooks[].command
738
- if (Array.isArray(entry.hooks)) {
739
- return entry.hooks.some(h => h.command && h.command.includes('synapse-engine'));
740
- }
741
- // Flat format (legacy): entry.command
742
- return entry.command && entry.command.includes('synapse-engine');
743
- });
751
+ // Register each .cjs hook file
752
+ for (const hookFileName of hookFiles) {
753
+ const hookFilePath = path.join(hooksDir, hookFileName);
754
+
755
+ // QA-C1 fix: Use correct Claude Code nested hook format
756
+ // Windows workaround: $CLAUDE_PROJECT_DIR has known bug on Windows (GH #6023/#5814)
757
+ const hookCommand = isWindows
758
+ ? `node "${hookFilePath.replace(/\\/g, '\\\\')}"` // Absolute path with escaped backslashes
759
+ : `node "$CLAUDE_PROJECT_DIR/.claude/hooks/${hookFileName}"`;
760
+
761
+ // Check if this hook is already registered (supports both nested and flat formats)
762
+ const hookBaseName = hookFileName.replace('.cjs', '');
763
+ const alreadyRegistered = settings.hooks.UserPromptSubmit.some(entry => {
764
+ if (Array.isArray(entry.hooks)) {
765
+ return entry.hooks.some(h => h.command && h.command.includes(hookBaseName));
766
+ }
767
+ return entry.command && entry.command.includes(hookBaseName);
768
+ });
744
769
 
745
- if (!alreadyRegistered) {
746
- settings.hooks.UserPromptSubmit.push(hookWrapper);
770
+ if (!alreadyRegistered) {
771
+ settings.hooks.UserPromptSubmit.push({
772
+ hooks: [
773
+ {
774
+ type: 'command',
775
+ command: hookCommand,
776
+ timeout: 10,
777
+ },
778
+ ],
779
+ });
780
+ }
747
781
  }
748
782
 
749
783
  try {
@@ -975,6 +1009,118 @@ async function linkGeminiExtension(projectRoot) {
975
1009
  return { status: 'skipped', reason: 'link-failed' };
976
1010
  }
977
1011
 
1012
+ /**
1013
+ * Copy .claude/skills/ directories during installation (Story INS-4.3, Gap #11)
1014
+ * @param {string} projectRoot - Project root directory
1015
+ * @param {string} [_sourceRoot] - Override source root for testing (default: __dirname-relative)
1016
+ * @returns {Promise<{count: number, skipped: boolean}>} Copy result
1017
+ */
1018
+ async function copySkillFiles(projectRoot, _sourceRoot) {
1019
+ const sourceDir = _sourceRoot
1020
+ ? path.join(_sourceRoot, '.claude', 'skills')
1021
+ : path.join(__dirname, '..', '..', '..', '..', '.claude', 'skills');
1022
+ const targetDir = path.join(projectRoot, '.claude', 'skills');
1023
+
1024
+ if (!await fs.pathExists(sourceDir)) {
1025
+ return { count: 0, skipped: true };
1026
+ }
1027
+
1028
+ // Guard source === dest (framework-dev mode)
1029
+ if (path.resolve(sourceDir) === path.resolve(targetDir)) {
1030
+ return { count: 0, skipped: true };
1031
+ }
1032
+
1033
+ await fs.ensureDir(targetDir);
1034
+
1035
+ const entries = await fs.readdir(sourceDir, { withFileTypes: true });
1036
+ const skillDirs = entries.filter(d => d.isDirectory());
1037
+ let count = 0;
1038
+
1039
+ for (const dir of skillDirs) {
1040
+ const sourcePath = path.join(sourceDir, dir.name);
1041
+ const targetPath = path.join(targetDir, dir.name);
1042
+ await fs.copy(sourcePath, targetPath, { overwrite: true });
1043
+ count++;
1044
+ }
1045
+
1046
+ return { count, skipped: false };
1047
+ }
1048
+
1049
+ /**
1050
+ * Copy extra .claude/commands/ files during installation (Story INS-4.3, Gap #12)
1051
+ * Uses an allowlist of distributable top-level directories to prevent leaking
1052
+ * private squads or project-specific content into installed projects.
1053
+ * @param {string} projectRoot - Project root directory
1054
+ * @param {string} [_sourceRoot] - Override source root for testing (default: __dirname-relative)
1055
+ * @returns {Promise<{count: number, skipped: boolean}>} Copy result
1056
+ */
1057
+ async function copyExtraCommandFiles(projectRoot, _sourceRoot) {
1058
+ const sourceDir = _sourceRoot
1059
+ ? path.join(_sourceRoot, '.claude', 'commands')
1060
+ : path.join(__dirname, '..', '..', '..', '..', '.claude', 'commands');
1061
+ const targetDir = path.join(projectRoot, '.claude', 'commands');
1062
+
1063
+ if (!await fs.pathExists(sourceDir)) {
1064
+ return { count: 0, skipped: true };
1065
+ }
1066
+
1067
+ // Guard source === dest (framework-dev mode)
1068
+ if (path.resolve(sourceDir) === path.resolve(targetDir)) {
1069
+ return { count: 0, skipped: true };
1070
+ }
1071
+
1072
+ // Allowlist: only these top-level entries are distributable.
1073
+ // Squad commands (cohort-squad/, design-system/, squad-creator-pro/, etc.)
1074
+ // are private and must NOT be copied to installed projects.
1075
+ const DISTRIBUTABLE_ENTRIES = new Set([
1076
+ 'AIOS', // Core agent/script commands (agents/ sub-dir excluded below)
1077
+ 'synapse', // SYNAPSE context engine commands
1078
+ 'greet.md', // Greeting skill
1079
+ ]);
1080
+
1081
+ // Within AIOS/, these sub-dirs are excluded (private or handled separately)
1082
+ const AIOS_EXCLUDED = new Set([
1083
+ 'AIOS/agents', // Already handled by copyAgentFiles()
1084
+ 'AIOS/stories', // Project-specific story skills, not distributable
1085
+ ]);
1086
+
1087
+ await fs.ensureDir(targetDir);
1088
+
1089
+ let count = 0;
1090
+
1091
+ async function copyRecursive(src, dest, relativePath) {
1092
+ const entries = await fs.readdir(src, { withFileTypes: true });
1093
+
1094
+ for (const entry of entries) {
1095
+ const entryRelative = relativePath ? `${relativePath}/${entry.name}` : entry.name;
1096
+
1097
+ // At top level, only copy distributable entries
1098
+ if (!relativePath && !DISTRIBUTABLE_ENTRIES.has(entry.name)) {
1099
+ continue;
1100
+ }
1101
+
1102
+ // Within AIOS/, skip excluded sub-directories
1103
+ if (AIOS_EXCLUDED.has(entryRelative) || [...AIOS_EXCLUDED].some(ex => entryRelative.startsWith(ex + '/'))) {
1104
+ continue;
1105
+ }
1106
+
1107
+ const sourcePath = path.join(src, entry.name);
1108
+ const targetPath = path.join(dest, entry.name);
1109
+
1110
+ if (entry.isDirectory()) {
1111
+ await fs.ensureDir(targetPath);
1112
+ await copyRecursive(sourcePath, targetPath, entryRelative);
1113
+ } else if (entry.name.endsWith('.md')) {
1114
+ await fs.copy(sourcePath, targetPath, { overwrite: true });
1115
+ count++;
1116
+ }
1117
+ }
1118
+ }
1119
+
1120
+ await copyRecursive(sourceDir, targetDir, '');
1121
+ return { count, skipped: false };
1122
+ }
1123
+
978
1124
  module.exports = {
979
1125
  generateIDEConfigs,
980
1126
  showSuccessSummary,
@@ -985,6 +1131,8 @@ module.exports = {
985
1131
  generateTemplateVariables,
986
1132
  copyClaudeHooksFolder,
987
1133
  createClaudeSettingsLocal,
1134
+ copySkillFiles,
1135
+ copyExtraCommandFiles,
988
1136
  copyGeminiHooksFolder,
989
1137
  createGeminiSettings,
990
1138
  linkGeminiExtension,