aios-core 2.1.6 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/.aios-core/core/README.md +229 -229
  2. package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
  3. package/.aios-core/core/data/aios-kb.md +923 -923
  4. package/.aios-core/core/data/workflow-patterns.yaml +267 -267
  5. package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
  6. package/.aios-core/core/docs/component-creation-guide.md +457 -457
  7. package/.aios-core/core/docs/session-update-pattern.md +307 -307
  8. package/.aios-core/core/docs/template-syntax.md +266 -266
  9. package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
  10. package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
  11. package/.aios-core/core/index.esm.js +42 -42
  12. package/.aios-core/core/index.js +1 -1
  13. package/.aios-core/core/migration/migration-config.yaml +83 -83
  14. package/.aios-core/core/migration/module-mapping.yaml +89 -89
  15. package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
  16. package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
  17. package/.aios-core/core/registry/README.md +179 -179
  18. package/.aios-core/core/utils/security-utils.js +1 -1
  19. package/.aios-core/core-config.yaml +391 -382
  20. package/.aios-core/data/agent-config-requirements.yaml +368 -368
  21. package/.aios-core/data/aios-kb.md +923 -923
  22. package/.aios-core/data/technical-preferences.md +3 -3
  23. package/.aios-core/data/workflow-patterns.yaml +267 -267
  24. package/.aios-core/development/README.md +142 -142
  25. package/.aios-core/development/agent-teams/team-all.yaml +15 -15
  26. package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
  27. package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
  28. package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
  29. package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
  30. package/.aios-core/development/agents/aios-master.md +339 -339
  31. package/.aios-core/development/agents/analyst.md +195 -195
  32. package/.aios-core/development/agents/architect.md +359 -359
  33. package/.aios-core/development/agents/data-engineer.md +468 -468
  34. package/.aios-core/development/agents/dev.md +390 -390
  35. package/.aios-core/development/agents/devops.md +398 -398
  36. package/.aios-core/development/agents/pm.md +198 -198
  37. package/.aios-core/development/agents/po.md +256 -256
  38. package/.aios-core/development/agents/qa.md +312 -312
  39. package/.aios-core/development/agents/sm.md +220 -220
  40. package/.aios-core/development/agents/ux-design-expert.md +451 -451
  41. package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
  42. package/.aios-core/development/tasks/add-mcp.md +319 -319
  43. package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
  44. package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
  45. package/.aios-core/development/tasks/analyze-framework.md +696 -696
  46. package/.aios-core/development/tasks/analyze-performance.md +637 -637
  47. package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
  48. package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
  49. package/.aios-core/development/tasks/audit-codebase.md +429 -429
  50. package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
  51. package/.aios-core/development/tasks/audit-utilities.md +358 -358
  52. package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
  53. package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
  54. package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
  55. package/.aios-core/development/tasks/build-component.md +478 -478
  56. package/.aios-core/development/tasks/calculate-roi.md +455 -455
  57. package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
  58. package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
  59. package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
  60. package/.aios-core/development/tasks/compose-molecule.md +284 -284
  61. package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
  62. package/.aios-core/development/tasks/correct-course.md +279 -279
  63. package/.aios-core/development/tasks/create-agent.md +321 -321
  64. package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
  65. package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
  66. package/.aios-core/development/tasks/create-doc.md +316 -316
  67. package/.aios-core/development/tasks/create-next-story.md +774 -774
  68. package/.aios-core/development/tasks/create-suite.md +283 -283
  69. package/.aios-core/development/tasks/create-task.md +371 -371
  70. package/.aios-core/development/tasks/create-workflow.md +370 -370
  71. package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
  72. package/.aios-core/development/tasks/db-apply-migration.md +381 -381
  73. package/.aios-core/development/tasks/db-bootstrap.md +642 -642
  74. package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
  75. package/.aios-core/development/tasks/db-dry-run.md +293 -293
  76. package/.aios-core/development/tasks/db-env-check.md +260 -260
  77. package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
  78. package/.aios-core/development/tasks/db-explain.md +631 -631
  79. package/.aios-core/development/tasks/db-impersonate.md +495 -495
  80. package/.aios-core/development/tasks/db-load-csv.md +593 -593
  81. package/.aios-core/development/tasks/db-policy-apply.md +653 -653
  82. package/.aios-core/development/tasks/db-rls-audit.md +411 -411
  83. package/.aios-core/development/tasks/db-rollback.md +739 -739
  84. package/.aios-core/development/tasks/db-run-sql.md +613 -613
  85. package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
  86. package/.aios-core/development/tasks/db-seed.md +390 -390
  87. package/.aios-core/development/tasks/db-smoke-test.md +351 -351
  88. package/.aios-core/development/tasks/db-snapshot.md +569 -569
  89. package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
  90. package/.aios-core/development/tasks/db-verify-order.md +515 -515
  91. package/.aios-core/development/tasks/deprecate-component.md +956 -956
  92. package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
  93. package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
  94. package/.aios-core/development/tasks/dev-develop-story.md +846 -846
  95. package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
  96. package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
  97. package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
  98. package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
  99. package/.aios-core/development/tasks/document-project.md +552 -552
  100. package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
  101. package/.aios-core/development/tasks/execute-checklist.md +301 -301
  102. package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
  103. package/.aios-core/development/tasks/extend-pattern.md +269 -269
  104. package/.aios-core/development/tasks/extract-tokens.md +467 -467
  105. package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
  106. package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
  107. package/.aios-core/development/tasks/generate-documentation.md +284 -284
  108. package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
  109. package/.aios-core/development/tasks/generate-shock-report.md +501 -501
  110. package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
  111. package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
  112. package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
  113. package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
  114. package/.aios-core/development/tasks/improve-self.md +822 -822
  115. package/.aios-core/development/tasks/index-docs.md +387 -387
  116. package/.aios-core/development/tasks/init-project-status.md +506 -506
  117. package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
  118. package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
  119. package/.aios-core/development/tasks/learn-patterns.md +900 -900
  120. package/.aios-core/development/tasks/mcp-workflow.md +437 -437
  121. package/.aios-core/development/tasks/modify-agent.md +381 -381
  122. package/.aios-core/development/tasks/modify-task.md +424 -424
  123. package/.aios-core/development/tasks/modify-workflow.md +465 -465
  124. package/.aios-core/development/tasks/po-backlog-add.md +370 -370
  125. package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
  126. package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
  127. package/.aios-core/development/tasks/po-pull-story.md +316 -316
  128. package/.aios-core/development/tasks/po-stories-index.md +351 -351
  129. package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
  130. package/.aios-core/development/tasks/po-sync-story.md +303 -303
  131. package/.aios-core/development/tasks/pr-automation.md +701 -701
  132. package/.aios-core/development/tasks/propose-modification.md +842 -842
  133. package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
  134. package/.aios-core/development/tasks/qa-gate.md +373 -373
  135. package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
  136. package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
  137. package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
  138. package/.aios-core/development/tasks/qa-review-story.md +682 -682
  139. package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
  140. package/.aios-core/development/tasks/qa-run-tests.md +277 -277
  141. package/.aios-core/development/tasks/qa-test-design.md +387 -387
  142. package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
  143. package/.aios-core/development/tasks/release-management.md +723 -723
  144. package/.aios-core/development/tasks/security-audit.md +554 -554
  145. package/.aios-core/development/tasks/security-scan.md +790 -790
  146. package/.aios-core/development/tasks/setup-database.md +741 -741
  147. package/.aios-core/development/tasks/setup-design-system.md +462 -462
  148. package/.aios-core/development/tasks/setup-github.md +874 -874
  149. package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
  150. package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
  151. package/.aios-core/development/tasks/setup-project-docs.md +1 -1
  152. package/.aios-core/development/tasks/shard-doc.md +537 -537
  153. package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
  154. package/.aios-core/development/tasks/sync-documentation.md +864 -864
  155. package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
  156. package/.aios-core/development/tasks/test-as-user.md +621 -621
  157. package/.aios-core/development/tasks/test-validation-task.md +171 -171
  158. package/.aios-core/development/tasks/undo-last.md +346 -346
  159. package/.aios-core/development/tasks/update-manifest.md +409 -409
  160. package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
  161. package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
  162. package/.aios-core/development/tasks/ux-user-research.md +559 -559
  163. package/.aios-core/development/tasks/validate-next-story.md +422 -422
  164. package/.aios-core/development/workflows/README.md +83 -83
  165. package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
  166. package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
  167. package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
  168. package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
  169. package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
  170. package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
  171. package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
  172. package/.aios-core/docs/component-creation-guide.md +457 -457
  173. package/.aios-core/docs/session-update-pattern.md +307 -307
  174. package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
  175. package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
  176. package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
  177. package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
  178. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
  179. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
  180. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
  181. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
  182. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
  183. package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
  184. package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
  185. package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
  186. package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
  187. package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
  188. package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
  189. package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
  190. package/.aios-core/docs/template-syntax.md +266 -266
  191. package/.aios-core/docs/troubleshooting-guide.md +624 -624
  192. package/.aios-core/index.esm.js +15 -15
  193. package/.aios-core/index.js +1 -1
  194. package/.aios-core/infrastructure/README.md +126 -126
  195. package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
  196. package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
  197. package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
  198. package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
  199. package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
  200. package/.aios-core/infrastructure/scripts/component-search.js +1 -1
  201. package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
  202. package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
  203. package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
  204. package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
  205. package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
  206. package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
  207. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
  208. package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
  209. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
  210. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
  211. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
  212. package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
  213. package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
  214. package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
  215. package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
  216. package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
  217. package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
  218. package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
  219. package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
  220. package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
  221. package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
  222. package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
  223. package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
  224. package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
  225. package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
  226. package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
  227. package/.aios-core/infrastructure/tools/README.md +222 -222
  228. package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
  229. package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
  230. package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
  231. package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
  232. package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
  233. package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
  234. package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
  235. package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
  236. package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
  237. package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
  238. package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
  239. package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
  240. package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
  241. package/.aios-core/install-manifest.yaml +347 -347
  242. package/.aios-core/product/README.md +56 -56
  243. package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
  244. package/.aios-core/product/checklists/architect-checklist.md +443 -443
  245. package/.aios-core/product/checklists/change-checklist.md +182 -182
  246. package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
  247. package/.aios-core/product/checklists/database-design-checklist.md +119 -119
  248. package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
  249. package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
  250. package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
  251. package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
  252. package/.aios-core/product/checklists/pm-checklist.md +375 -375
  253. package/.aios-core/product/checklists/po-master-checklist.md +441 -441
  254. package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
  255. package/.aios-core/product/checklists/release-checklist.md +122 -122
  256. package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
  257. package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
  258. package/.aios-core/product/data/atomic-design-principles.md +108 -0
  259. package/.aios-core/product/data/brainstorming-techniques.md +36 -36
  260. package/.aios-core/product/data/consolidation-algorithms.md +142 -0
  261. package/.aios-core/product/data/database-best-practices.md +182 -0
  262. package/.aios-core/product/data/design-token-best-practices.md +107 -0
  263. package/.aios-core/product/data/elicitation-methods.md +134 -134
  264. package/.aios-core/product/data/integration-patterns.md +207 -0
  265. package/.aios-core/product/data/migration-safety-guide.md +329 -0
  266. package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
  267. package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
  268. package/.aios-core/product/data/rls-security-patterns.md +333 -0
  269. package/.aios-core/product/data/roi-calculation-guide.md +142 -0
  270. package/.aios-core/product/data/supabase-patterns.md +330 -0
  271. package/.aios-core/product/data/test-levels-framework.md +148 -148
  272. package/.aios-core/product/data/test-priorities-matrix.md +174 -174
  273. package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
  274. package/.aios-core/product/templates/1mcp-config.yaml +225 -225
  275. package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
  276. package/.aios-core/product/templates/activation-instructions-template.md +258 -258
  277. package/.aios-core/product/templates/agent-template.yaml +120 -120
  278. package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
  279. package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
  280. package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
  281. package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
  282. package/.aios-core/product/templates/changelog-template.md +134 -134
  283. package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
  284. package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
  285. package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
  286. package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
  287. package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
  288. package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
  289. package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
  290. package/.aios-core/product/templates/github-pr-template.md +67 -67
  291. package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
  292. package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
  293. package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
  294. package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
  295. package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
  296. package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
  297. package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
  298. package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
  299. package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
  300. package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
  301. package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
  302. package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
  303. package/.aios-core/product/templates/mcp-workflow.js +271 -271
  304. package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
  305. package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
  306. package/.aios-core/product/templates/personalized-agent-template.md +258 -258
  307. package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
  308. package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
  309. package/.aios-core/product/templates/personalized-task-template.md +344 -344
  310. package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
  311. package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
  312. package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
  313. package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
  314. package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
  315. package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
  316. package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
  317. package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
  318. package/.aios-core/product/templates/story-tmpl.yaml +331 -331
  319. package/.aios-core/product/templates/task-execution-report.md +495 -495
  320. package/.aios-core/product/templates/task-template.md +122 -122
  321. package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
  322. package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
  323. package/.aios-core/product/templates/workflow-template.yaml +133 -133
  324. package/.aios-core/scripts/README.md +354 -354
  325. package/.aios-core/scripts/aios-doc-template.md +325 -325
  326. package/.aios-core/scripts/elicitation-engine.js +1 -1
  327. package/.aios-core/scripts/test-template-system.js +1 -1
  328. package/.aios-core/scripts/workflow-management.md +69 -69
  329. package/.aios-core/user-guide.md +1413 -1413
  330. package/.aios-core/working-in-the-brownfield.md +361 -361
  331. package/LICENSE +1 -1
  332. package/README.md +704 -703
  333. package/bin/aios-init-old.js +3 -3
  334. package/bin/aios-init-v4.js +1 -1
  335. package/bin/aios-init.backup-v1.1.4.js +1 -1
  336. package/bin/aios-init.js +3 -3
  337. package/bin/aios.js +279 -279
  338. package/bin/utils/install-errors.js +339 -339
  339. package/bin/utils/install-transaction.js +445 -445
  340. package/index.d.ts +18 -18
  341. package/index.esm.js +20 -20
  342. package/index.js +6 -6
  343. package/package.json +8 -11
  344. package/packages/installer/src/config/templates/env-template.js +27 -4
  345. package/packages/installer/src/detection/detect-project-type.js +81 -81
  346. package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
  347. package/packages/installer/tests/unit/env-template.test.js +8 -8
  348. package/src/config/ide-configs.js +1 -1
  349. package/src/wizard/feedback.js +2 -2
  350. package/src/wizard/index.js +1 -1
  351. package/src/wizard/validation/report-generator.js +1 -1
  352. package/src/wizard/validation/troubleshooting-system.js +13 -13
  353. package/tools/diagnose-installation.js +266 -0
  354. package/tools/diagnose-npx-issue.ps1 +96 -0
  355. package/tools/quick-diagnose.cmd +85 -0
  356. package/tools/quick-diagnose.ps1 +117 -0
  357. package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
  358. package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
  359. package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
  360. package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
  361. package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
  362. package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
  363. package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
  364. package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
  365. package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
  366. package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
  367. package/.aios-core/tasks/find-component.md.legacy +0 -391
  368. package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
  369. package/.aios-core/tasks/generate-migration.md.legacy +0 -382
  370. package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
  371. package/.aios-core/tasks/update-tests.md.legacy +0 -283
@@ -1,865 +1,865 @@
1
- # sync-documentation
2
-
3
- **Task ID:** `sync-documentation`
4
- **Version:** 2.0.0
5
- **Status:** Active
6
-
7
- ---
8
-
9
- ## Purpose
10
-
11
- Automatically synchronize documentation with code changes to ensure documentation stays up-to-date with implementation.
12
-
13
- ---
14
-
15
- ## Execution Modes
16
-
17
- **Choose your execution mode:**
18
-
19
- ### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
20
- - Autonomous decision making with logging
21
- - Minimal user interaction
22
- - **Best for:** Simple, deterministic tasks
23
-
24
- ### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
25
- - Explicit decision checkpoints
26
- - Educational explanations
27
- - **Best for:** Learning, complex decisions
28
-
29
- ### 3. Pre-Flight Planning - Comprehensive Upfront Planning
30
- - Task analysis phase (identify all ambiguities)
31
- - Zero ambiguity execution
32
- - **Best for:** Ambiguous requirements, critical work
33
-
34
- **Parameter:** `mode` (optional, default: `interactive`)
35
-
36
- **Valid values:** `yolo`, `interactive`, `preflight`
37
-
38
- ---
39
-
40
- ## Task Definition (AIOS Task Format V1.0)
41
-
42
- ```yaml
43
- task: syncDocumentation()
44
- responsƔvel: Morgan (Strategist)
45
- responsavel_type: Agente
46
- atomic_layer: Molecule
47
-
48
- **Entrada:**
49
- - campo: task
50
- tipo: string
51
- origem: User Input
52
- obrigatório: true
53
- validação: Must be registered task
54
-
55
- - campo: parameters
56
- tipo: object
57
- origem: User Input
58
- obrigatório: false
59
- validação: Valid task parameters
60
-
61
- - campo: mode
62
- tipo: string
63
- origem: User Input
64
- obrigatório: false
65
- validação: yolo|interactive|pre-flight
66
-
67
- **SaĆ­da:**
68
- - campo: execution_result
69
- tipo: object
70
- destino: Memory
71
- persistido: false
72
-
73
- - campo: logs
74
- tipo: array
75
- destino: File (.ai/logs/*)
76
- persistido: true
77
-
78
- - campo: state
79
- tipo: object
80
- destino: State management
81
- persistido: true
82
- ```
83
-
84
- ---
85
-
86
- ## Pre-Conditions
87
-
88
- **Purpose:** Validate prerequisites BEFORE task execution (blocking)
89
-
90
- **Checklist:**
91
-
92
- ```yaml
93
- pre-conditions:
94
- - [ ] Task is registered; required parameters provided; dependencies met
95
- tipo: pre-condition
96
- blocker: true
97
- validação: |
98
- Check task is registered; required parameters provided; dependencies met
99
- error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met"
100
- ```
101
-
102
- ---
103
-
104
- ## Step-by-Step Execution
105
-
106
- ### Step 1: Parse Parameters
107
-
108
- **Purpose:** Parse and validate command-line parameters
109
-
110
- **Actions:**
111
- 1. Parse command-line options (--component, --all, --check, etc.)
112
- 2. Validate sync strategies
113
- 3. Set default values
114
- 4. Validate file paths if provided
115
-
116
- **Validation:**
117
- - Parameters are valid
118
- - Strategies are supported
119
- - File paths exist (if specified)
120
-
121
- ---
122
-
123
- ### Step 2: Initialize Dependencies
124
-
125
- **Purpose:** Set up documentation synchronizer and required tools
126
-
127
- **Actions:**
128
- 1. Load DocumentationSynchronizer module
129
- 2. Initialize synchronizer with root path
130
- 3. Set up event listeners
131
- 4. Verify all dependencies available
132
-
133
- **Validation:**
134
- - Synchronizer initialized successfully
135
- - Event listeners registered
136
- - Dependencies available
137
-
138
- ---
139
-
140
- ### Step 3: Execute Requested Action
141
-
142
- **Purpose:** Execute the requested synchronization action
143
-
144
- **Actions:**
145
- 1. Determine action type (check, sync, auto-sync, report)
146
- 2. Execute corresponding method
147
- 3. Handle errors gracefully
148
- 4. Return results
149
-
150
- **Validation:**
151
- - Action executed successfully
152
- - Results returned
153
- - Errors handled appropriately
154
-
155
- ---
156
-
157
- ## Post-Conditions
158
-
159
- **Purpose:** Validate execution success AFTER task completes
160
-
161
- **Checklist:**
162
-
163
- ```yaml
164
- post-conditions:
165
- - [ ] Task completed; exit code 0; expected outputs created
166
- tipo: post-condition
167
- blocker: true
168
- validação: |
169
- Verify task completed; exit code 0; expected outputs created
170
- rollback: false
171
- error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created"
172
- ```
173
-
174
- ---
175
-
176
- ## Acceptance Criteria
177
-
178
- **Purpose:** Validate story requirements AFTER workflow (non-blocking, can be manual)
179
-
180
- **Checklist:**
181
-
182
- ```yaml
183
- acceptance-criteria:
184
- - [ ] Task completed as expected; side effects documented
185
- tipo: acceptance-criterion
186
- blocker: false
187
- story: N/A
188
- manual_check: false
189
- validação: |
190
- Assert task completed as expected; side effects documented
191
- error_message: "Acceptance criterion not met: Task completed as expected; side effects documented"
192
- ```
193
-
194
- ---
195
-
196
- ## Tools (External/Shared)
197
-
198
- **Purpose:** Catalog reusable tools used by multiple agents
199
-
200
- ```yaml
201
- **Tools:**
202
- - task-runner:
203
- version: latest
204
- used_for: Task execution and orchestration
205
- shared_with: [dev, qa, po]
206
- cost: $0
207
-
208
- - logger:
209
- version: latest
210
- used_for: Execution logging and error tracking
211
- shared_with: [dev, qa, po, sm]
212
- cost: $0
213
- ```
214
-
215
- ---
216
-
217
- ## Scripts (Agent-Specific)
218
-
219
- **Purpose:** Agent-specific code for this task
220
-
221
- ```yaml
222
- **Scripts:**
223
- - execute-task.js:
224
- description: Generic task execution wrapper
225
- language: JavaScript
226
- location: .aios-core/scripts/execute-task.js
227
-
228
- - documentation-synchronizer.js:
229
- description: Core documentation synchronization engine
230
- language: JavaScript
231
- location: .aios-core/scripts/documentation-synchronizer.js
232
- ```
233
-
234
- ---
235
-
236
- ## Error Handling
237
-
238
- **Strategy:** fallback
239
-
240
- **Common Errors:**
241
-
242
- 1. **Error:** Task Not Found
243
- - **Cause:** Specified task not registered in system
244
- - **Resolution:** Verify task name and registration
245
- - **Recovery:** List available tasks, suggest similar
246
-
247
- 2. **Error:** Invalid Parameters
248
- - **Cause:** Task parameters do not match expected schema
249
- - **Resolution:** Validate parameters against task definition
250
- - **Recovery:** Provide parameter template, reject execution
251
-
252
- 3. **Error:** Execution Timeout
253
- - **Cause:** Task exceeds maximum execution time
254
- - **Resolution:** Optimize task or increase timeout
255
- - **Recovery:** Kill task, cleanup resources, log state
256
-
257
- ---
258
-
259
- ## Performance
260
-
261
- **Expected Metrics:**
262
-
263
- ```yaml
264
- duration_expected: 2-5 min (estimated)
265
- cost_estimated: $0.001-0.003
266
- token_usage: ~1,000-3,000 tokens
267
- ```
268
-
269
- **Optimization Notes:**
270
- - Parallelize independent operations; reuse atom results; implement early exits
271
-
272
- ---
273
-
274
- ## Metadata
275
-
276
- ```yaml
277
- story: STORY-6.1.7.2
278
- version: 2.0.0
279
- dependencies:
280
- - N/A
281
- tags:
282
- - automation
283
- - workflow
284
- updated_at: 2025-01-17
285
- ```
286
-
287
- ## Command Pattern
288
- ```
289
- *sync-documentation [options]
290
- ```
291
-
292
- ## Parameters
293
- - `options`: Documentation synchronization configuration
294
-
295
- ### Options
296
- - `--component <path>`: Sync documentation for specific component
297
- - `--all`: Sync all registered components
298
- - `--check`: Check for out-of-sync documentation without updating
299
- - `--strategies <types>`: Comma-separated sync strategies (jsdoc,markdown,schema,api,examples)
300
- - `--auto-sync`: Enable automatic synchronization monitoring
301
- - `--report <file>`: Generate synchronization report
302
- - `--force`: Force synchronization even if up-to-date
303
- - `--interactive`: Interactive mode for reviewing changes
304
-
305
- ## Examples
306
- ```bash
307
- # Check documentation status
308
- *sync-documentation --check
309
-
310
- # Sync specific component
311
- *sync-documentation --component aios-core/scripts/pattern-learner.js
312
-
313
- # Sync all components with specific strategies
314
- *sync-documentation --all --strategies jsdoc,examples
315
-
316
- # Enable auto-sync monitoring
317
- *sync-documentation --auto-sync
318
-
319
- # Generate sync report
320
- *sync-documentation --report sync-report.json
321
-
322
- # Interactive sync review
323
- *sync-documentation --all --interactive
324
- ```
325
-
326
- ## Implementation
327
-
328
- ```javascript
329
- const fs = require('fs').promises;
330
- const path = require('path');
331
- const chalk = require('chalk');
332
- const inquirer = require('inquirer');
333
-
334
- class SyncDocumentationTask {
335
- constructor() {
336
- this.taskName = 'sync-documentation';
337
- this.description = 'Synchronize documentation with code changes';
338
- this.rootPath = process.cwd();
339
- this.documentationSynchronizer = null;
340
- this.syncResults = [];
341
- }
342
-
343
- async execute(params) {
344
- try {
345
- console.log(chalk.blue('šŸ“š AIOS Documentation Synchronization'));
346
- console.log(chalk.gray('Keeping documentation in sync with code\n'));
347
-
348
- // Parse parameters
349
- const config = await this.parseParameters(params);
350
-
351
- // Initialize dependencies
352
- await this.initializeDependencies();
353
-
354
- // Execute requested action
355
- let result;
356
-
357
- if (config.check) {
358
- result = await this.checkSyncStatus(config);
359
- } else if (config.autoSync) {
360
- result = await this.enableAutoSync(config);
361
- } else if (config.report) {
362
- result = await this.generateReport(config.report);
363
- } else if (config.component) {
364
- result = await this.syncComponent(config.component, config);
365
- } else if (config.all) {
366
- result = await this.syncAllComponents(config);
367
- } else {
368
- // Default: show sync status
369
- result = await this.showSyncStatus();
370
- }
371
-
372
- return {
373
- success: true,
374
- ...result
375
- };
376
-
377
- } catch (error) {
378
- console.error(chalk.red(`\nāŒ Documentation sync failed: ${error.message}`));
379
- throw error;
380
- }
381
- }
382
-
383
- async parseParameters(params) {
384
- const config = {
385
- component: null,
386
- all: false,
387
- check: false,
388
- strategies: ['jsdoc', 'markdown', 'schema', 'api', 'examples'],
389
- autoSync: false,
390
- report: null,
391
- force: false,
392
- interactive: false
393
- };
394
-
395
- for (let i = 0; i < params.length; i++) {
396
- const param = params[i];
397
-
398
- if (param === '--all') {
399
- config.all = true;
400
- } else if (param === '--check') {
401
- config.check = true;
402
- } else if (param === '--auto-sync') {
403
- config.autoSync = true;
404
- } else if (param === '--force') {
405
- config.force = true;
406
- } else if (param === '--interactive') {
407
- config.interactive = true;
408
- } else if (param.startsWith('--component') && params[i + 1]) {
409
- config.component = params[++i];
410
- } else if (param.startsWith('--strategies') && params[i + 1]) {
411
- config.strategies = params[++i].split(',').map(s => s.trim());
412
- } else if (param.startsWith('--report') && params[i + 1]) {
413
- config.report = params[++i];
414
- }
415
- }
416
-
417
- // Validate strategies
418
- const validStrategies = ['jsdoc', 'markdown', 'schema', 'api', 'examples'];
419
- for (const strategy of config.strategies) {
420
- if (!validStrategies.includes(strategy)) {
421
- throw new Error(`Invalid sync strategy: ${strategy}`);
422
- }
423
- }
424
-
425
- return config;
426
- }
427
-
428
- async initializeDependencies() {
429
- try {
430
- const DocumentationSynchronizer = require('../scripts/documentation-synchronizer');
431
- this.documentationSynchronizer = new DocumentationSynchronizer({
432
- rootPath: this.rootPath,
433
- autoSync: false // We'll manage auto-sync manually
434
- });
435
-
436
- // Initialize synchronizer
437
- await this.documentationSynchronizer.initialize();
438
-
439
- // Listen to events
440
- this.documentationSynchronizer.on('synchronized', (data) => {
441
- this.syncResults.push(data);
442
- });
443
-
444
- this.documentationSynchronizer.on('error', (data) => {
445
- console.error(chalk.red(`Sync error: ${data.error.message}`));
446
- });
447
-
448
- } catch (error) {
449
- throw new Error(`Failed to initialize dependencies: ${error.message}`);
450
- }
451
- }
452
-
453
- async checkSyncStatus(config) {
454
- console.log(chalk.blue('šŸ” Checking documentation sync status...\n'));
455
-
456
- const components = this.documentationSynchronizer.syncedComponents;
457
- const outOfSync = [];
458
- const upToDate = [];
459
-
460
- for (const [componentPath, component] of components) {
461
- try {
462
- const stats = await fs.stat(componentPath);
463
- const lastModified = stats.mtime.toISOString();
464
-
465
- if (!component.lastSync || lastModified > component.lastSync) {
466
- outOfSync.push({
467
- component: componentPath,
468
- doc: component.docPath,
469
- lastModified,
470
- lastSync: component.lastSync
471
- });
472
- } else {
473
- upToDate.push({
474
- component: componentPath,
475
- doc: component.docPath
476
- });
477
- }
478
- } catch (error) {
479
- console.warn(chalk.yellow(`Cannot check: ${componentPath}`));
480
- }
481
- }
482
-
483
- // Display results
484
- if (outOfSync.length > 0) {
485
- console.log(chalk.yellow(`šŸ“‹ Out of sync (${outOfSync.length}):\n`));
486
-
487
- for (const item of outOfSync) {
488
- console.log(chalk.red(' āš ļø ') + path.relative(this.rootPath, item.component));
489
- console.log(chalk.gray(` Doc: ${path.relative(this.rootPath, item.doc)}`));
490
- console.log(chalk.gray(` Last modified: ${this.formatDate(item.lastModified)}`));
491
- if (item.lastSync) {
492
- console.log(chalk.gray(` Last sync: ${this.formatDate(item.lastSync)}`));
493
- } else {
494
- console.log(chalk.gray(` Last sync: Never`));
495
- }
496
- console.log('');
497
- }
498
- }
499
-
500
- if (upToDate.length > 0) {
501
- console.log(chalk.green(`āœ… Up to date (${upToDate.length}):\n`));
502
-
503
- const shown = Math.min(5, upToDate.length);
504
- for (let i = 0; i < shown; i++) {
505
- const item = upToDate[i];
506
- console.log(chalk.green(' āœ“ ') + path.relative(this.rootPath, item.component));
507
- }
508
-
509
- if (upToDate.length > shown) {
510
- console.log(chalk.gray(` ... and ${upToDate.length - shown} more`));
511
- }
512
- }
513
-
514
- console.log(chalk.blue('\nšŸ“Š Summary:'));
515
- console.log(` Total components: ${components.size}`);
516
- console.log(` Out of sync: ${chalk.yellow(outOfSync.length)}`);
517
- console.log(` Up to date: ${chalk.green(upToDate.length)}`);
518
-
519
- if (outOfSync.length > 0) {
520
- console.log(chalk.yellow('\nšŸ’” Run with --all to sync all out-of-date documentation'));
521
- }
522
-
523
- return {
524
- totalComponents: components.size,
525
- outOfSync: outOfSync.length,
526
- upToDate: upToDate.length
527
- };
528
- }
529
-
530
- async syncComponent(componentPath, config) {
531
- const fullPath = path.resolve(this.rootPath, componentPath);
532
-
533
- console.log(chalk.blue(`šŸ”„ Syncing documentation for: ${componentPath}\n`));
534
-
535
- try {
536
- const changes = await this.documentationSynchronizer.synchronizeComponent(fullPath, {
537
- strategies: config.strategies,
538
- force: config.force
539
- });
540
-
541
- if (changes.length === 0) {
542
- console.log(chalk.green('āœ… Documentation is already up to date'));
543
- return { synced: 0 };
544
- }
545
-
546
- // Display changes
547
- await this.displaySyncChanges(changes, config);
548
-
549
- return {
550
- synced: 1,
551
- changes: changes.length
552
- };
553
-
554
- } catch (error) {
555
- console.error(chalk.red(`Failed to sync: ${error.message}`));
556
- return { synced: 0, error: error.message };
557
- }
558
- }
559
-
560
- async syncAllComponents(config) {
561
- const components = Array.from(this.documentationSynchronizer.syncedComponents.entries());
562
-
563
- console.log(chalk.blue(`šŸ”„ Syncing ${components.length} components...\n`));
564
-
565
- const results = {
566
- synced: 0,
567
- skipped: 0,
568
- failed: 0,
569
- totalChanges: 0
570
- };
571
-
572
- for (const [componentPath, component] of components) {
573
- try {
574
- // Check if needs sync
575
- if (!config.force) {
576
- const stats = await fs.stat(componentPath);
577
- const lastModified = stats.mtime.toISOString();
578
-
579
- if (component.lastSync && lastModified <= component.lastSync) {
580
- results.skipped++;
581
- continue;
582
- }
583
- }
584
-
585
- console.log(chalk.gray(`\nSyncing: ${path.relative(this.rootPath, componentPath)}`));
586
-
587
- const changes = await this.documentationSynchronizer.synchronizeComponent(componentPath, {
588
- strategies: config.strategies
589
- });
590
-
591
- if (changes.length > 0) {
592
- results.synced++;
593
- results.totalChanges += changes.length;
594
-
595
- if (config.interactive) {
596
- await this.displaySyncChanges(changes, config);
597
- } else {
598
- console.log(chalk.green(` āœ… Applied ${changes.length} changes`));
599
- }
600
- } else {
601
- results.skipped++;
602
- }
603
-
604
- } catch (error) {
605
- results.failed++;
606
- console.error(chalk.red(` āŒ Failed: ${error.message}`));
607
- }
608
- }
609
-
610
- // Display summary
611
- console.log(chalk.blue('\nšŸ“Š Synchronization Summary:'));
612
- console.log(chalk.green(` āœ… Synced: ${results.synced}`));
613
- console.log(chalk.gray(` ā­ļø Skipped: ${results.skipped}`));
614
- if (results.failed > 0) {
615
- console.log(chalk.red(` āŒ Failed: ${results.failed}`));
616
- }
617
- console.log(` Total changes: ${results.totalChanges}`);
618
-
619
- return results;
620
- }
621
-
622
- async displaySyncChanges(changes, config) {
623
- console.log(chalk.blue('šŸ“ Changes applied:\n'));
624
-
625
- for (const strategyChanges of changes) {
626
- if (!strategyChanges.success) {
627
- console.log(chalk.red(`āŒ ${strategyChanges.strategy}: ${strategyChanges.error}`));
628
- continue;
629
- }
630
-
631
- console.log(chalk.yellow(`${strategyChanges.strategy}:`));
632
-
633
- for (const change of strategyChanges.changes) {
634
- console.log(` - ${change.description}`);
635
-
636
- if (config.interactive && change.type === 'updated') {
637
- // Show diff preview
638
- console.log(chalk.gray(' Preview of changes...'));
639
- }
640
- }
641
- }
642
- }
643
-
644
- async enableAutoSync(config) {
645
- console.log(chalk.blue('šŸ”„ Enabling automatic documentation sync...\n'));
646
-
647
- // Configure auto-sync
648
- this.documentationSynchronizer.options.autoSync = true;
649
- this.documentationSynchronizer.options.syncInterval = 60000; // 1 minute
650
-
651
- // Start auto-sync
652
- await this.documentationSynchronizer.startAutoSync();
653
-
654
- console.log(chalk.green('āœ… Auto-sync enabled'));
655
- console.log(chalk.gray('Documentation will be checked every minute for changes'));
656
- console.log(chalk.gray('Press Ctrl+C to stop auto-sync'));
657
-
658
- // Set up monitoring
659
- this.documentationSynchronizer.on('auto-sync', (data) => {
660
- if (data.changes.length > 0) {
661
- console.log(chalk.blue(`\n[${this.formatTime(new Date())}] Auto-sync detected changes:`));
662
-
663
- for (const change of data.changes) {
664
- console.log(` - ${path.relative(this.rootPath, change.componentPath)}`);
665
- }
666
- }
667
- });
668
-
669
- // Keep process running
670
- await new Promise((resolve) => {
671
- process.on('SIGINT', () => {
672
- console.log(chalk.yellow('\n\nStopping auto-sync...'));
673
- this.documentationSynchronizer.stopAutoSync();
674
- resolve();
675
- });
676
- });
677
-
678
- return {
679
- autoSyncEnabled: true
680
- };
681
- }
682
-
683
- async generateReport(reportPath) {
684
- console.log(chalk.blue('šŸ“Š Generating synchronization report...\n'));
685
-
686
- const report = await this.documentationSynchronizer.generateSyncReport();
687
-
688
- // Add sync results
689
- report.syncResults = this.syncResults;
690
-
691
- // Save report
692
- await fs.writeFile(reportPath, JSON.stringify(report, null, 2));
693
-
694
- console.log(chalk.green(`āœ… Report generated: ${reportPath}`));
695
-
696
- // Display summary
697
- console.log(chalk.blue('\nšŸ“‹ Report Summary:'));
698
- console.log(` Total components: ${report.summary.totalComponents}`);
699
- console.log(` Total documentation: ${report.summary.totalDocumentation}`);
700
- console.log(` Sync history entries: ${report.summary.syncHistory}`);
701
-
702
- if (report.summary.lastSync) {
703
- console.log(` Last sync: ${this.formatDate(report.summary.lastSync)}`);
704
- }
705
-
706
- return {
707
- reportGenerated: true,
708
- reportPath
709
- };
710
- }
711
-
712
- async showSyncStatus() {
713
- const components = this.documentationSynchronizer.syncedComponents;
714
- const docs = this.documentationSynchronizer.documentationIndex;
715
-
716
- console.log(chalk.blue('šŸ“š Documentation Sync Status\n'));
717
-
718
- console.log(chalk.gray('Registered components:'));
719
- console.log(` Components with docs: ${components.size}`);
720
- console.log(` Documentation files: ${docs.size}`);
721
-
722
- // Show sync strategies
723
- console.log(chalk.gray('\nActive sync strategies:'));
724
- for (const [name, strategy] of this.documentationSynchronizer.syncStrategies) {
725
- console.log(` - ${name}: ${strategy.description}`);
726
- }
727
-
728
- // Recent sync history
729
- const history = this.documentationSynchronizer.syncHistory.slice(-5);
730
- if (history.length > 0) {
731
- console.log(chalk.gray('\nRecent synchronizations:'));
732
- for (const entry of history) {
733
- console.log(` ${this.formatDate(entry.timestamp)} - ${path.basename(entry.componentPath)}`);
734
- }
735
- }
736
-
737
- console.log(chalk.blue('\nšŸ“Œ Commands:'));
738
- console.log(' Check status: *sync-documentation --check');
739
- console.log(' Sync all: *sync-documentation --all');
740
- console.log(' Enable auto-sync: *sync-documentation --auto-sync');
741
- console.log(' Generate report: *sync-documentation --report <file>');
742
-
743
- return {
744
- status: 'ready',
745
- components: components.size,
746
- documentation: docs.size
747
- };
748
- }
749
-
750
- formatDate(dateString) {
751
- const date = new Date(dateString);
752
- const now = new Date();
753
- const diff = now - date;
754
-
755
- // Less than 1 hour
756
- if (diff < 3600000) {
757
- const minutes = Math.floor(diff / 60000);
758
- return `${minutes} minute${minutes !== 1 ? 's' : ''} ago`;
759
- }
760
-
761
- // Less than 24 hours
762
- if (diff < 86400000) {
763
- const hours = Math.floor(diff / 3600000);
764
- return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
765
- }
766
-
767
- // Less than 7 days
768
- if (diff < 604800000) {
769
- const days = Math.floor(diff / 86400000);
770
- return `${days} day${days !== 1 ? 's' : ''} ago`;
771
- }
772
-
773
- // Otherwise show date
774
- return date.toLocaleDateString();
775
- }
776
-
777
- formatTime(date) {
778
- return date.toLocaleTimeString();
779
- }
780
- }
781
-
782
- module.exports = SyncDocumentationTask;
783
- ```
784
-
785
- ## Integration Points
786
-
787
- ### Documentation Synchronizer
788
- - Core synchronization engine
789
- - Multi-strategy sync support
790
- - Automatic change detection
791
- - Real-time monitoring
792
-
793
- ### Sync Strategies
794
- - **JSDoc**: Sync code comments with markdown
795
- - **Markdown**: Update documentation sections
796
- - **Schema**: Sync YAML/JSON schemas
797
- - **API**: Update API documentation
798
- - **Examples**: Validate and update code examples
799
-
800
- ### Documentation Sources
801
- - Markdown files (.md)
802
- - YAML manifests (.yaml, .yml)
803
- - JSON schemas (.json)
804
- - README files
805
- - Inline documentation
806
-
807
- ### Code Sources
808
- - JavaScript files (.js, .jsx)
809
- - TypeScript files (.ts, .tsx)
810
- - Task definitions
811
- - Agent manifests
812
- - Workflow configurations
813
-
814
- ## Synchronization Workflow
815
-
816
- ### Detection Phase
817
- 1. Monitor file changes
818
- 2. Identify linked documentation
819
- 3. Detect content differences
820
- 4. Calculate sync requirements
821
- 5. Prioritize updates
822
-
823
- ### Analysis Phase
824
- 1. Parse code changes
825
- 2. Extract documentation elements
826
- 3. Compare with existing docs
827
- 4. Identify gaps and conflicts
828
- 5. Generate sync plan
829
-
830
- ### Update Phase
831
- 1. Apply sync strategies
832
- 2. Update documentation files
833
- 3. Preserve formatting
834
- 4. Validate changes
835
- 5. Record sync history
836
-
837
- ## Best Practices
838
-
839
- ### Documentation Structure
840
- - Keep docs near code
841
- - Use consistent naming
842
- - Link explicitly in docs
843
- - Maintain clear sections
844
- - Update examples regularly
845
-
846
- ### Sync Configuration
847
- - Choose appropriate strategies
848
- - Set reasonable intervals
849
- - Review changes regularly
850
- - Monitor sync history
851
- - Handle conflicts gracefully
852
-
853
- ### Quality Assurance
854
- - Validate after sync
855
- - Test code examples
856
- - Check API accuracy
857
- - Verify schema alignment
858
- - Maintain version history
859
-
860
- ## Security Considerations
861
- - Validate file paths
862
- - Prevent injection in docs
863
- - Protect sensitive information
864
- - Audit sync operations
1
+ # sync-documentation
2
+
3
+ **Task ID:** `sync-documentation`
4
+ **Version:** 2.0.0
5
+ **Status:** Active
6
+
7
+ ---
8
+
9
+ ## Purpose
10
+
11
+ Automatically synchronize documentation with code changes to ensure documentation stays up-to-date with implementation.
12
+
13
+ ---
14
+
15
+ ## Execution Modes
16
+
17
+ **Choose your execution mode:**
18
+
19
+ ### 1. YOLO Mode - Fast, Autonomous (0-1 prompts)
20
+ - Autonomous decision making with logging
21
+ - Minimal user interaction
22
+ - **Best for:** Simple, deterministic tasks
23
+
24
+ ### 2. Interactive Mode - Balanced, Educational (5-10 prompts) **[DEFAULT]**
25
+ - Explicit decision checkpoints
26
+ - Educational explanations
27
+ - **Best for:** Learning, complex decisions
28
+
29
+ ### 3. Pre-Flight Planning - Comprehensive Upfront Planning
30
+ - Task analysis phase (identify all ambiguities)
31
+ - Zero ambiguity execution
32
+ - **Best for:** Ambiguous requirements, critical work
33
+
34
+ **Parameter:** `mode` (optional, default: `interactive`)
35
+
36
+ **Valid values:** `yolo`, `interactive`, `preflight`
37
+
38
+ ---
39
+
40
+ ## Task Definition (AIOS Task Format V1.0)
41
+
42
+ ```yaml
43
+ task: syncDocumentation()
44
+ responsƔvel: Morgan (Strategist)
45
+ responsavel_type: Agente
46
+ atomic_layer: Molecule
47
+
48
+ **Entrada:**
49
+ - campo: task
50
+ tipo: string
51
+ origem: User Input
52
+ obrigatório: true
53
+ validação: Must be registered task
54
+
55
+ - campo: parameters
56
+ tipo: object
57
+ origem: User Input
58
+ obrigatório: false
59
+ validação: Valid task parameters
60
+
61
+ - campo: mode
62
+ tipo: string
63
+ origem: User Input
64
+ obrigatório: false
65
+ validação: yolo|interactive|pre-flight
66
+
67
+ **SaĆ­da:**
68
+ - campo: execution_result
69
+ tipo: object
70
+ destino: Memory
71
+ persistido: false
72
+
73
+ - campo: logs
74
+ tipo: array
75
+ destino: File (.ai/logs/*)
76
+ persistido: true
77
+
78
+ - campo: state
79
+ tipo: object
80
+ destino: State management
81
+ persistido: true
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Pre-Conditions
87
+
88
+ **Purpose:** Validate prerequisites BEFORE task execution (blocking)
89
+
90
+ **Checklist:**
91
+
92
+ ```yaml
93
+ pre-conditions:
94
+ - [ ] Task is registered; required parameters provided; dependencies met
95
+ tipo: pre-condition
96
+ blocker: true
97
+ validação: |
98
+ Check task is registered; required parameters provided; dependencies met
99
+ error_message: "Pre-condition failed: Task is registered; required parameters provided; dependencies met"
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Step-by-Step Execution
105
+
106
+ ### Step 1: Parse Parameters
107
+
108
+ **Purpose:** Parse and validate command-line parameters
109
+
110
+ **Actions:**
111
+ 1. Parse command-line options (--component, --all, --check, etc.)
112
+ 2. Validate sync strategies
113
+ 3. Set default values
114
+ 4. Validate file paths if provided
115
+
116
+ **Validation:**
117
+ - Parameters are valid
118
+ - Strategies are supported
119
+ - File paths exist (if specified)
120
+
121
+ ---
122
+
123
+ ### Step 2: Initialize Dependencies
124
+
125
+ **Purpose:** Set up documentation synchronizer and required tools
126
+
127
+ **Actions:**
128
+ 1. Load DocumentationSynchronizer module
129
+ 2. Initialize synchronizer with root path
130
+ 3. Set up event listeners
131
+ 4. Verify all dependencies available
132
+
133
+ **Validation:**
134
+ - Synchronizer initialized successfully
135
+ - Event listeners registered
136
+ - Dependencies available
137
+
138
+ ---
139
+
140
+ ### Step 3: Execute Requested Action
141
+
142
+ **Purpose:** Execute the requested synchronization action
143
+
144
+ **Actions:**
145
+ 1. Determine action type (check, sync, auto-sync, report)
146
+ 2. Execute corresponding method
147
+ 3. Handle errors gracefully
148
+ 4. Return results
149
+
150
+ **Validation:**
151
+ - Action executed successfully
152
+ - Results returned
153
+ - Errors handled appropriately
154
+
155
+ ---
156
+
157
+ ## Post-Conditions
158
+
159
+ **Purpose:** Validate execution success AFTER task completes
160
+
161
+ **Checklist:**
162
+
163
+ ```yaml
164
+ post-conditions:
165
+ - [ ] Task completed; exit code 0; expected outputs created
166
+ tipo: post-condition
167
+ blocker: true
168
+ validação: |
169
+ Verify task completed; exit code 0; expected outputs created
170
+ rollback: false
171
+ error_message: "Post-condition failed: Task completed; exit code 0; expected outputs created"
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Acceptance Criteria
177
+
178
+ **Purpose:** Validate story requirements AFTER workflow (non-blocking, can be manual)
179
+
180
+ **Checklist:**
181
+
182
+ ```yaml
183
+ acceptance-criteria:
184
+ - [ ] Task completed as expected; side effects documented
185
+ tipo: acceptance-criterion
186
+ blocker: false
187
+ story: N/A
188
+ manual_check: false
189
+ validação: |
190
+ Assert task completed as expected; side effects documented
191
+ error_message: "Acceptance criterion not met: Task completed as expected; side effects documented"
192
+ ```
193
+
194
+ ---
195
+
196
+ ## Tools (External/Shared)
197
+
198
+ **Purpose:** Catalog reusable tools used by multiple agents
199
+
200
+ ```yaml
201
+ **Tools:**
202
+ - task-runner:
203
+ version: latest
204
+ used_for: Task execution and orchestration
205
+ shared_with: [dev, qa, po]
206
+ cost: $0
207
+
208
+ - logger:
209
+ version: latest
210
+ used_for: Execution logging and error tracking
211
+ shared_with: [dev, qa, po, sm]
212
+ cost: $0
213
+ ```
214
+
215
+ ---
216
+
217
+ ## Scripts (Agent-Specific)
218
+
219
+ **Purpose:** Agent-specific code for this task
220
+
221
+ ```yaml
222
+ **Scripts:**
223
+ - execute-task.js:
224
+ description: Generic task execution wrapper
225
+ language: JavaScript
226
+ location: .aios-core/scripts/execute-task.js
227
+
228
+ - documentation-synchronizer.js:
229
+ description: Core documentation synchronization engine
230
+ language: JavaScript
231
+ location: .aios-core/scripts/documentation-synchronizer.js
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Error Handling
237
+
238
+ **Strategy:** fallback
239
+
240
+ **Common Errors:**
241
+
242
+ 1. **Error:** Task Not Found
243
+ - **Cause:** Specified task not registered in system
244
+ - **Resolution:** Verify task name and registration
245
+ - **Recovery:** List available tasks, suggest similar
246
+
247
+ 2. **Error:** Invalid Parameters
248
+ - **Cause:** Task parameters do not match expected schema
249
+ - **Resolution:** Validate parameters against task definition
250
+ - **Recovery:** Provide parameter template, reject execution
251
+
252
+ 3. **Error:** Execution Timeout
253
+ - **Cause:** Task exceeds maximum execution time
254
+ - **Resolution:** Optimize task or increase timeout
255
+ - **Recovery:** Kill task, cleanup resources, log state
256
+
257
+ ---
258
+
259
+ ## Performance
260
+
261
+ **Expected Metrics:**
262
+
263
+ ```yaml
264
+ duration_expected: 2-5 min (estimated)
265
+ cost_estimated: $0.001-0.003
266
+ token_usage: ~1,000-3,000 tokens
267
+ ```
268
+
269
+ **Optimization Notes:**
270
+ - Parallelize independent operations; reuse atom results; implement early exits
271
+
272
+ ---
273
+
274
+ ## Metadata
275
+
276
+ ```yaml
277
+ story: STORY-6.1.7.2
278
+ version: 2.0.0
279
+ dependencies:
280
+ - N/A
281
+ tags:
282
+ - automation
283
+ - workflow
284
+ updated_at: 2025-01-17
285
+ ```
286
+
287
+ ## Command Pattern
288
+ ```
289
+ *sync-documentation [options]
290
+ ```
291
+
292
+ ## Parameters
293
+ - `options`: Documentation synchronization configuration
294
+
295
+ ### Options
296
+ - `--component <path>`: Sync documentation for specific component
297
+ - `--all`: Sync all registered components
298
+ - `--check`: Check for out-of-sync documentation without updating
299
+ - `--strategies <types>`: Comma-separated sync strategies (jsdoc,markdown,schema,api,examples)
300
+ - `--auto-sync`: Enable automatic synchronization monitoring
301
+ - `--report <file>`: Generate synchronization report
302
+ - `--force`: Force synchronization even if up-to-date
303
+ - `--interactive`: Interactive mode for reviewing changes
304
+
305
+ ## Examples
306
+ ```bash
307
+ # Check documentation status
308
+ *sync-documentation --check
309
+
310
+ # Sync specific component
311
+ *sync-documentation --component aios-core/scripts/pattern-learner.js
312
+
313
+ # Sync all components with specific strategies
314
+ *sync-documentation --all --strategies jsdoc,examples
315
+
316
+ # Enable auto-sync monitoring
317
+ *sync-documentation --auto-sync
318
+
319
+ # Generate sync report
320
+ *sync-documentation --report sync-report.json
321
+
322
+ # Interactive sync review
323
+ *sync-documentation --all --interactive
324
+ ```
325
+
326
+ ## Implementation
327
+
328
+ ```javascript
329
+ const fs = require('fs').promises;
330
+ const path = require('path');
331
+ const chalk = require('chalk');
332
+ const inquirer = require('inquirer');
333
+
334
+ class SyncDocumentationTask {
335
+ constructor() {
336
+ this.taskName = 'sync-documentation';
337
+ this.description = 'Synchronize documentation with code changes';
338
+ this.rootPath = process.cwd();
339
+ this.documentationSynchronizer = null;
340
+ this.syncResults = [];
341
+ }
342
+
343
+ async execute(params) {
344
+ try {
345
+ console.log(chalk.blue('šŸ“š AIOS Documentation Synchronization'));
346
+ console.log(chalk.gray('Keeping documentation in sync with code\n'));
347
+
348
+ // Parse parameters
349
+ const config = await this.parseParameters(params);
350
+
351
+ // Initialize dependencies
352
+ await this.initializeDependencies();
353
+
354
+ // Execute requested action
355
+ let result;
356
+
357
+ if (config.check) {
358
+ result = await this.checkSyncStatus(config);
359
+ } else if (config.autoSync) {
360
+ result = await this.enableAutoSync(config);
361
+ } else if (config.report) {
362
+ result = await this.generateReport(config.report);
363
+ } else if (config.component) {
364
+ result = await this.syncComponent(config.component, config);
365
+ } else if (config.all) {
366
+ result = await this.syncAllComponents(config);
367
+ } else {
368
+ // Default: show sync status
369
+ result = await this.showSyncStatus();
370
+ }
371
+
372
+ return {
373
+ success: true,
374
+ ...result
375
+ };
376
+
377
+ } catch (error) {
378
+ console.error(chalk.red(`\nāŒ Documentation sync failed: ${error.message}`));
379
+ throw error;
380
+ }
381
+ }
382
+
383
+ async parseParameters(params) {
384
+ const config = {
385
+ component: null,
386
+ all: false,
387
+ check: false,
388
+ strategies: ['jsdoc', 'markdown', 'schema', 'api', 'examples'],
389
+ autoSync: false,
390
+ report: null,
391
+ force: false,
392
+ interactive: false
393
+ };
394
+
395
+ for (let i = 0; i < params.length; i++) {
396
+ const param = params[i];
397
+
398
+ if (param === '--all') {
399
+ config.all = true;
400
+ } else if (param === '--check') {
401
+ config.check = true;
402
+ } else if (param === '--auto-sync') {
403
+ config.autoSync = true;
404
+ } else if (param === '--force') {
405
+ config.force = true;
406
+ } else if (param === '--interactive') {
407
+ config.interactive = true;
408
+ } else if (param.startsWith('--component') && params[i + 1]) {
409
+ config.component = params[++i];
410
+ } else if (param.startsWith('--strategies') && params[i + 1]) {
411
+ config.strategies = params[++i].split(',').map(s => s.trim());
412
+ } else if (param.startsWith('--report') && params[i + 1]) {
413
+ config.report = params[++i];
414
+ }
415
+ }
416
+
417
+ // Validate strategies
418
+ const validStrategies = ['jsdoc', 'markdown', 'schema', 'api', 'examples'];
419
+ for (const strategy of config.strategies) {
420
+ if (!validStrategies.includes(strategy)) {
421
+ throw new Error(`Invalid sync strategy: ${strategy}`);
422
+ }
423
+ }
424
+
425
+ return config;
426
+ }
427
+
428
+ async initializeDependencies() {
429
+ try {
430
+ const DocumentationSynchronizer = require('../scripts/documentation-synchronizer');
431
+ this.documentationSynchronizer = new DocumentationSynchronizer({
432
+ rootPath: this.rootPath,
433
+ autoSync: false // We'll manage auto-sync manually
434
+ });
435
+
436
+ // Initialize synchronizer
437
+ await this.documentationSynchronizer.initialize();
438
+
439
+ // Listen to events
440
+ this.documentationSynchronizer.on('synchronized', (data) => {
441
+ this.syncResults.push(data);
442
+ });
443
+
444
+ this.documentationSynchronizer.on('error', (data) => {
445
+ console.error(chalk.red(`Sync error: ${data.error.message}`));
446
+ });
447
+
448
+ } catch (error) {
449
+ throw new Error(`Failed to initialize dependencies: ${error.message}`);
450
+ }
451
+ }
452
+
453
+ async checkSyncStatus(config) {
454
+ console.log(chalk.blue('šŸ” Checking documentation sync status...\n'));
455
+
456
+ const components = this.documentationSynchronizer.syncedComponents;
457
+ const outOfSync = [];
458
+ const upToDate = [];
459
+
460
+ for (const [componentPath, component] of components) {
461
+ try {
462
+ const stats = await fs.stat(componentPath);
463
+ const lastModified = stats.mtime.toISOString();
464
+
465
+ if (!component.lastSync || lastModified > component.lastSync) {
466
+ outOfSync.push({
467
+ component: componentPath,
468
+ doc: component.docPath,
469
+ lastModified,
470
+ lastSync: component.lastSync
471
+ });
472
+ } else {
473
+ upToDate.push({
474
+ component: componentPath,
475
+ doc: component.docPath
476
+ });
477
+ }
478
+ } catch (error) {
479
+ console.warn(chalk.yellow(`Cannot check: ${componentPath}`));
480
+ }
481
+ }
482
+
483
+ // Display results
484
+ if (outOfSync.length > 0) {
485
+ console.log(chalk.yellow(`šŸ“‹ Out of sync (${outOfSync.length}):\n`));
486
+
487
+ for (const item of outOfSync) {
488
+ console.log(chalk.red(' āš ļø ') + path.relative(this.rootPath, item.component));
489
+ console.log(chalk.gray(` Doc: ${path.relative(this.rootPath, item.doc)}`));
490
+ console.log(chalk.gray(` Last modified: ${this.formatDate(item.lastModified)}`));
491
+ if (item.lastSync) {
492
+ console.log(chalk.gray(` Last sync: ${this.formatDate(item.lastSync)}`));
493
+ } else {
494
+ console.log(chalk.gray(` Last sync: Never`));
495
+ }
496
+ console.log('');
497
+ }
498
+ }
499
+
500
+ if (upToDate.length > 0) {
501
+ console.log(chalk.green(`āœ… Up to date (${upToDate.length}):\n`));
502
+
503
+ const shown = Math.min(5, upToDate.length);
504
+ for (let i = 0; i < shown; i++) {
505
+ const item = upToDate[i];
506
+ console.log(chalk.green(' āœ“ ') + path.relative(this.rootPath, item.component));
507
+ }
508
+
509
+ if (upToDate.length > shown) {
510
+ console.log(chalk.gray(` ... and ${upToDate.length - shown} more`));
511
+ }
512
+ }
513
+
514
+ console.log(chalk.blue('\nšŸ“Š Summary:'));
515
+ console.log(` Total components: ${components.size}`);
516
+ console.log(` Out of sync: ${chalk.yellow(outOfSync.length)}`);
517
+ console.log(` Up to date: ${chalk.green(upToDate.length)}`);
518
+
519
+ if (outOfSync.length > 0) {
520
+ console.log(chalk.yellow('\nšŸ’” Run with --all to sync all out-of-date documentation'));
521
+ }
522
+
523
+ return {
524
+ totalComponents: components.size,
525
+ outOfSync: outOfSync.length,
526
+ upToDate: upToDate.length
527
+ };
528
+ }
529
+
530
+ async syncComponent(componentPath, config) {
531
+ const fullPath = path.resolve(this.rootPath, componentPath);
532
+
533
+ console.log(chalk.blue(`šŸ”„ Syncing documentation for: ${componentPath}\n`));
534
+
535
+ try {
536
+ const changes = await this.documentationSynchronizer.synchronizeComponent(fullPath, {
537
+ strategies: config.strategies,
538
+ force: config.force
539
+ });
540
+
541
+ if (changes.length === 0) {
542
+ console.log(chalk.green('āœ… Documentation is already up to date'));
543
+ return { synced: 0 };
544
+ }
545
+
546
+ // Display changes
547
+ await this.displaySyncChanges(changes, config);
548
+
549
+ return {
550
+ synced: 1,
551
+ changes: changes.length
552
+ };
553
+
554
+ } catch (error) {
555
+ console.error(chalk.red(`Failed to sync: ${error.message}`));
556
+ return { synced: 0, error: error.message };
557
+ }
558
+ }
559
+
560
+ async syncAllComponents(config) {
561
+ const components = Array.from(this.documentationSynchronizer.syncedComponents.entries());
562
+
563
+ console.log(chalk.blue(`šŸ”„ Syncing ${components.length} components...\n`));
564
+
565
+ const results = {
566
+ synced: 0,
567
+ skipped: 0,
568
+ failed: 0,
569
+ totalChanges: 0
570
+ };
571
+
572
+ for (const [componentPath, component] of components) {
573
+ try {
574
+ // Check if needs sync
575
+ if (!config.force) {
576
+ const stats = await fs.stat(componentPath);
577
+ const lastModified = stats.mtime.toISOString();
578
+
579
+ if (component.lastSync && lastModified <= component.lastSync) {
580
+ results.skipped++;
581
+ continue;
582
+ }
583
+ }
584
+
585
+ console.log(chalk.gray(`\nSyncing: ${path.relative(this.rootPath, componentPath)}`));
586
+
587
+ const changes = await this.documentationSynchronizer.synchronizeComponent(componentPath, {
588
+ strategies: config.strategies
589
+ });
590
+
591
+ if (changes.length > 0) {
592
+ results.synced++;
593
+ results.totalChanges += changes.length;
594
+
595
+ if (config.interactive) {
596
+ await this.displaySyncChanges(changes, config);
597
+ } else {
598
+ console.log(chalk.green(` āœ… Applied ${changes.length} changes`));
599
+ }
600
+ } else {
601
+ results.skipped++;
602
+ }
603
+
604
+ } catch (error) {
605
+ results.failed++;
606
+ console.error(chalk.red(` āŒ Failed: ${error.message}`));
607
+ }
608
+ }
609
+
610
+ // Display summary
611
+ console.log(chalk.blue('\nšŸ“Š Synchronization Summary:'));
612
+ console.log(chalk.green(` āœ… Synced: ${results.synced}`));
613
+ console.log(chalk.gray(` ā­ļø Skipped: ${results.skipped}`));
614
+ if (results.failed > 0) {
615
+ console.log(chalk.red(` āŒ Failed: ${results.failed}`));
616
+ }
617
+ console.log(` Total changes: ${results.totalChanges}`);
618
+
619
+ return results;
620
+ }
621
+
622
+ async displaySyncChanges(changes, config) {
623
+ console.log(chalk.blue('šŸ“ Changes applied:\n'));
624
+
625
+ for (const strategyChanges of changes) {
626
+ if (!strategyChanges.success) {
627
+ console.log(chalk.red(`āŒ ${strategyChanges.strategy}: ${strategyChanges.error}`));
628
+ continue;
629
+ }
630
+
631
+ console.log(chalk.yellow(`${strategyChanges.strategy}:`));
632
+
633
+ for (const change of strategyChanges.changes) {
634
+ console.log(` - ${change.description}`);
635
+
636
+ if (config.interactive && change.type === 'updated') {
637
+ // Show diff preview
638
+ console.log(chalk.gray(' Preview of changes...'));
639
+ }
640
+ }
641
+ }
642
+ }
643
+
644
+ async enableAutoSync(config) {
645
+ console.log(chalk.blue('šŸ”„ Enabling automatic documentation sync...\n'));
646
+
647
+ // Configure auto-sync
648
+ this.documentationSynchronizer.options.autoSync = true;
649
+ this.documentationSynchronizer.options.syncInterval = 60000; // 1 minute
650
+
651
+ // Start auto-sync
652
+ await this.documentationSynchronizer.startAutoSync();
653
+
654
+ console.log(chalk.green('āœ… Auto-sync enabled'));
655
+ console.log(chalk.gray('Documentation will be checked every minute for changes'));
656
+ console.log(chalk.gray('Press Ctrl+C to stop auto-sync'));
657
+
658
+ // Set up monitoring
659
+ this.documentationSynchronizer.on('auto-sync', (data) => {
660
+ if (data.changes.length > 0) {
661
+ console.log(chalk.blue(`\n[${this.formatTime(new Date())}] Auto-sync detected changes:`));
662
+
663
+ for (const change of data.changes) {
664
+ console.log(` - ${path.relative(this.rootPath, change.componentPath)}`);
665
+ }
666
+ }
667
+ });
668
+
669
+ // Keep process running
670
+ await new Promise((resolve) => {
671
+ process.on('SIGINT', () => {
672
+ console.log(chalk.yellow('\n\nStopping auto-sync...'));
673
+ this.documentationSynchronizer.stopAutoSync();
674
+ resolve();
675
+ });
676
+ });
677
+
678
+ return {
679
+ autoSyncEnabled: true
680
+ };
681
+ }
682
+
683
+ async generateReport(reportPath) {
684
+ console.log(chalk.blue('šŸ“Š Generating synchronization report...\n'));
685
+
686
+ const report = await this.documentationSynchronizer.generateSyncReport();
687
+
688
+ // Add sync results
689
+ report.syncResults = this.syncResults;
690
+
691
+ // Save report
692
+ await fs.writeFile(reportPath, JSON.stringify(report, null, 2));
693
+
694
+ console.log(chalk.green(`āœ… Report generated: ${reportPath}`));
695
+
696
+ // Display summary
697
+ console.log(chalk.blue('\nšŸ“‹ Report Summary:'));
698
+ console.log(` Total components: ${report.summary.totalComponents}`);
699
+ console.log(` Total documentation: ${report.summary.totalDocumentation}`);
700
+ console.log(` Sync history entries: ${report.summary.syncHistory}`);
701
+
702
+ if (report.summary.lastSync) {
703
+ console.log(` Last sync: ${this.formatDate(report.summary.lastSync)}`);
704
+ }
705
+
706
+ return {
707
+ reportGenerated: true,
708
+ reportPath
709
+ };
710
+ }
711
+
712
+ async showSyncStatus() {
713
+ const components = this.documentationSynchronizer.syncedComponents;
714
+ const docs = this.documentationSynchronizer.documentationIndex;
715
+
716
+ console.log(chalk.blue('šŸ“š Documentation Sync Status\n'));
717
+
718
+ console.log(chalk.gray('Registered components:'));
719
+ console.log(` Components with docs: ${components.size}`);
720
+ console.log(` Documentation files: ${docs.size}`);
721
+
722
+ // Show sync strategies
723
+ console.log(chalk.gray('\nActive sync strategies:'));
724
+ for (const [name, strategy] of this.documentationSynchronizer.syncStrategies) {
725
+ console.log(` - ${name}: ${strategy.description}`);
726
+ }
727
+
728
+ // Recent sync history
729
+ const history = this.documentationSynchronizer.syncHistory.slice(-5);
730
+ if (history.length > 0) {
731
+ console.log(chalk.gray('\nRecent synchronizations:'));
732
+ for (const entry of history) {
733
+ console.log(` ${this.formatDate(entry.timestamp)} - ${path.basename(entry.componentPath)}`);
734
+ }
735
+ }
736
+
737
+ console.log(chalk.blue('\nšŸ“Œ Commands:'));
738
+ console.log(' Check status: *sync-documentation --check');
739
+ console.log(' Sync all: *sync-documentation --all');
740
+ console.log(' Enable auto-sync: *sync-documentation --auto-sync');
741
+ console.log(' Generate report: *sync-documentation --report <file>');
742
+
743
+ return {
744
+ status: 'ready',
745
+ components: components.size,
746
+ documentation: docs.size
747
+ };
748
+ }
749
+
750
+ formatDate(dateString) {
751
+ const date = new Date(dateString);
752
+ const now = new Date();
753
+ const diff = now - date;
754
+
755
+ // Less than 1 hour
756
+ if (diff < 3600000) {
757
+ const minutes = Math.floor(diff / 60000);
758
+ return `${minutes} minute${minutes !== 1 ? 's' : ''} ago`;
759
+ }
760
+
761
+ // Less than 24 hours
762
+ if (diff < 86400000) {
763
+ const hours = Math.floor(diff / 3600000);
764
+ return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
765
+ }
766
+
767
+ // Less than 7 days
768
+ if (diff < 604800000) {
769
+ const days = Math.floor(diff / 86400000);
770
+ return `${days} day${days !== 1 ? 's' : ''} ago`;
771
+ }
772
+
773
+ // Otherwise show date
774
+ return date.toLocaleDateString();
775
+ }
776
+
777
+ formatTime(date) {
778
+ return date.toLocaleTimeString();
779
+ }
780
+ }
781
+
782
+ module.exports = SyncDocumentationTask;
783
+ ```
784
+
785
+ ## Integration Points
786
+
787
+ ### Documentation Synchronizer
788
+ - Core synchronization engine
789
+ - Multi-strategy sync support
790
+ - Automatic change detection
791
+ - Real-time monitoring
792
+
793
+ ### Sync Strategies
794
+ - **JSDoc**: Sync code comments with markdown
795
+ - **Markdown**: Update documentation sections
796
+ - **Schema**: Sync YAML/JSON schemas
797
+ - **API**: Update API documentation
798
+ - **Examples**: Validate and update code examples
799
+
800
+ ### Documentation Sources
801
+ - Markdown files (.md)
802
+ - YAML manifests (.yaml, .yml)
803
+ - JSON schemas (.json)
804
+ - README files
805
+ - Inline documentation
806
+
807
+ ### Code Sources
808
+ - JavaScript files (.js, .jsx)
809
+ - TypeScript files (.ts, .tsx)
810
+ - Task definitions
811
+ - Agent manifests
812
+ - Workflow configurations
813
+
814
+ ## Synchronization Workflow
815
+
816
+ ### Detection Phase
817
+ 1. Monitor file changes
818
+ 2. Identify linked documentation
819
+ 3. Detect content differences
820
+ 4. Calculate sync requirements
821
+ 5. Prioritize updates
822
+
823
+ ### Analysis Phase
824
+ 1. Parse code changes
825
+ 2. Extract documentation elements
826
+ 3. Compare with existing docs
827
+ 4. Identify gaps and conflicts
828
+ 5. Generate sync plan
829
+
830
+ ### Update Phase
831
+ 1. Apply sync strategies
832
+ 2. Update documentation files
833
+ 3. Preserve formatting
834
+ 4. Validate changes
835
+ 5. Record sync history
836
+
837
+ ## Best Practices
838
+
839
+ ### Documentation Structure
840
+ - Keep docs near code
841
+ - Use consistent naming
842
+ - Link explicitly in docs
843
+ - Maintain clear sections
844
+ - Update examples regularly
845
+
846
+ ### Sync Configuration
847
+ - Choose appropriate strategies
848
+ - Set reasonable intervals
849
+ - Review changes regularly
850
+ - Monitor sync history
851
+ - Handle conflicts gracefully
852
+
853
+ ### Quality Assurance
854
+ - Validate after sync
855
+ - Test code examples
856
+ - Check API accuracy
857
+ - Verify schema alignment
858
+ - Maintain version history
859
+
860
+ ## Security Considerations
861
+ - Validate file paths
862
+ - Prevent injection in docs
863
+ - Protect sensitive information
864
+ - Audit sync operations
865
865
  - Control write permissions