aios-core 2.1.5 → 2.2.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.
- package/.aios-core/core/README.md +229 -229
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/core/data/aios-kb.md +923 -923
- package/.aios-core/core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/core/docs/component-creation-guide.md +457 -457
- package/.aios-core/core/docs/session-update-pattern.md +307 -307
- package/.aios-core/core/docs/template-syntax.md +266 -266
- package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
- package/.aios-core/core/index.esm.js +42 -42
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/migration/migration-config.yaml +83 -83
- package/.aios-core/core/migration/module-mapping.yaml +89 -89
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
- package/.aios-core/core/registry/README.md +179 -179
- package/.aios-core/core/utils/security-utils.js +1 -1
- package/.aios-core/core-config.yaml +391 -382
- package/.aios-core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/data/aios-kb.md +923 -923
- package/.aios-core/data/technical-preferences.md +3 -3
- package/.aios-core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/development/README.md +142 -142
- package/.aios-core/development/agent-teams/team-all.yaml +15 -15
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
- package/.aios-core/development/agents/aios-master.md +339 -339
- package/.aios-core/development/agents/analyst.md +195 -195
- package/.aios-core/development/agents/architect.md +359 -359
- package/.aios-core/development/agents/data-engineer.md +468 -468
- package/.aios-core/development/agents/dev.md +390 -390
- package/.aios-core/development/agents/devops.md +398 -398
- package/.aios-core/development/agents/pm.md +198 -198
- package/.aios-core/development/agents/po.md +256 -256
- package/.aios-core/development/agents/qa.md +312 -312
- package/.aios-core/development/agents/sm.md +220 -220
- package/.aios-core/development/agents/ux-design-expert.md +451 -451
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
- package/.aios-core/development/tasks/add-mcp.md +319 -319
- package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
- package/.aios-core/development/tasks/analyze-brownfield.md +456 -0
- package/.aios-core/development/tasks/analyze-framework.md +696 -696
- package/.aios-core/development/tasks/analyze-performance.md +637 -637
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
- package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
- package/.aios-core/development/tasks/audit-codebase.md +429 -429
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
- package/.aios-core/development/tasks/audit-utilities.md +358 -358
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
- package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
- package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
- package/.aios-core/development/tasks/build-component.md +478 -478
- package/.aios-core/development/tasks/calculate-roi.md +455 -455
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
- package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
- package/.aios-core/development/tasks/compose-molecule.md +284 -284
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
- package/.aios-core/development/tasks/correct-course.md +279 -279
- package/.aios-core/development/tasks/create-agent.md +321 -321
- package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
- package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
- package/.aios-core/development/tasks/create-doc.md +316 -316
- package/.aios-core/development/tasks/create-next-story.md +774 -774
- package/.aios-core/development/tasks/create-suite.md +283 -283
- package/.aios-core/development/tasks/create-task.md +371 -371
- package/.aios-core/development/tasks/create-workflow.md +370 -370
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
- package/.aios-core/development/tasks/db-apply-migration.md +381 -381
- package/.aios-core/development/tasks/db-bootstrap.md +642 -642
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
- package/.aios-core/development/tasks/db-dry-run.md +293 -293
- package/.aios-core/development/tasks/db-env-check.md +260 -260
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
- package/.aios-core/development/tasks/db-explain.md +631 -631
- package/.aios-core/development/tasks/db-impersonate.md +495 -495
- package/.aios-core/development/tasks/db-load-csv.md +593 -593
- package/.aios-core/development/tasks/db-policy-apply.md +653 -653
- package/.aios-core/development/tasks/db-rls-audit.md +411 -411
- package/.aios-core/development/tasks/db-rollback.md +739 -739
- package/.aios-core/development/tasks/db-run-sql.md +613 -613
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
- package/.aios-core/development/tasks/db-seed.md +390 -390
- package/.aios-core/development/tasks/db-smoke-test.md +351 -351
- package/.aios-core/development/tasks/db-snapshot.md +569 -569
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
- package/.aios-core/development/tasks/db-verify-order.md +515 -515
- package/.aios-core/development/tasks/deprecate-component.md +956 -956
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
- package/.aios-core/development/tasks/dev-develop-story.md +846 -846
- package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
- package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
- package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
- package/.aios-core/development/tasks/document-project.md +552 -552
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
- package/.aios-core/development/tasks/execute-checklist.md +301 -301
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
- package/.aios-core/development/tasks/extend-pattern.md +269 -269
- package/.aios-core/development/tasks/extract-tokens.md +467 -467
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
- package/.aios-core/development/tasks/generate-documentation.md +284 -284
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
- package/.aios-core/development/tasks/generate-shock-report.md +501 -501
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
- package/.aios-core/development/tasks/improve-self.md +822 -822
- package/.aios-core/development/tasks/index-docs.md +387 -387
- package/.aios-core/development/tasks/init-project-status.md +506 -506
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
- package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
- package/.aios-core/development/tasks/learn-patterns.md +900 -900
- package/.aios-core/development/tasks/mcp-workflow.md +437 -437
- package/.aios-core/development/tasks/modify-agent.md +381 -381
- package/.aios-core/development/tasks/modify-task.md +424 -424
- package/.aios-core/development/tasks/modify-workflow.md +465 -465
- package/.aios-core/development/tasks/po-backlog-add.md +370 -370
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
- package/.aios-core/development/tasks/po-pull-story.md +316 -316
- package/.aios-core/development/tasks/po-stories-index.md +351 -351
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
- package/.aios-core/development/tasks/po-sync-story.md +303 -303
- package/.aios-core/development/tasks/pr-automation.md +701 -701
- package/.aios-core/development/tasks/propose-modification.md +842 -842
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
- package/.aios-core/development/tasks/qa-gate.md +373 -373
- package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
- package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
- package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
- package/.aios-core/development/tasks/qa-review-story.md +682 -682
- package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
- package/.aios-core/development/tasks/qa-run-tests.md +277 -277
- package/.aios-core/development/tasks/qa-test-design.md +387 -387
- package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
- package/.aios-core/development/tasks/release-management.md +723 -723
- package/.aios-core/development/tasks/security-audit.md +554 -554
- package/.aios-core/development/tasks/security-scan.md +790 -790
- package/.aios-core/development/tasks/setup-database.md +741 -741
- package/.aios-core/development/tasks/setup-design-system.md +462 -462
- package/.aios-core/development/tasks/setup-github.md +874 -874
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
- package/.aios-core/development/tasks/setup-project-docs.md +440 -0
- package/.aios-core/development/tasks/shard-doc.md +537 -537
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
- package/.aios-core/development/tasks/sync-documentation.md +864 -864
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
- package/.aios-core/development/tasks/test-as-user.md +621 -621
- package/.aios-core/development/tasks/test-validation-task.md +171 -171
- package/.aios-core/development/tasks/undo-last.md +346 -346
- package/.aios-core/development/tasks/update-manifest.md +409 -409
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
- package/.aios-core/development/tasks/ux-user-research.md +559 -559
- package/.aios-core/development/tasks/validate-next-story.md +422 -422
- package/.aios-core/development/workflows/README.md +83 -83
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/docs/component-creation-guide.md +457 -457
- package/.aios-core/docs/session-update-pattern.md +307 -307
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
- package/.aios-core/docs/template-syntax.md +266 -266
- package/.aios-core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/index.esm.js +15 -15
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/README.md +126 -126
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
- package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
- package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
- package/.aios-core/infrastructure/scripts/component-search.js +1 -1
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +501 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/config-generator.js +368 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +308 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +312 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +389 -0
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
- package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
- package/.aios-core/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +176 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +127 -0
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -0
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -0
- package/.aios-core/infrastructure/templates/project-docs/coding-standards-tmpl.md +346 -0
- package/.aios-core/infrastructure/templates/project-docs/source-tree-tmpl.md +177 -0
- package/.aios-core/infrastructure/templates/project-docs/tech-stack-tmpl.md +267 -0
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
- package/.aios-core/infrastructure/tools/README.md +222 -222
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
- package/.aios-core/install-manifest.yaml +347 -347
- package/.aios-core/product/README.md +56 -56
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/.aios-core/product/checklists/architect-checklist.md +443 -443
- package/.aios-core/product/checklists/change-checklist.md +182 -182
- package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -119
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
- package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/.aios-core/product/checklists/pm-checklist.md +375 -375
- package/.aios-core/product/checklists/po-master-checklist.md +441 -441
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
- package/.aios-core/product/checklists/release-checklist.md +122 -122
- package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
- package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
- package/.aios-core/product/data/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +36 -36
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +134 -134
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -0
- package/.aios-core/product/data/test-levels-framework.md +148 -148
- package/.aios-core/product/data/test-priorities-matrix.md +174 -174
- package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -225
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
- package/.aios-core/product/templates/activation-instructions-template.md +258 -258
- package/.aios-core/product/templates/agent-template.yaml +120 -120
- package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
- package/.aios-core/product/templates/changelog-template.md +134 -134
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
- package/.aios-core/product/templates/github-pr-template.md +67 -67
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
- package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
- package/.aios-core/product/templates/mcp-workflow.js +271 -271
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
- package/.aios-core/product/templates/personalized-agent-template.md +258 -258
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
- package/.aios-core/product/templates/personalized-task-template.md +344 -344
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
- package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
- package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
- package/.aios-core/product/templates/story-tmpl.yaml +331 -331
- package/.aios-core/product/templates/task-execution-report.md +495 -495
- package/.aios-core/product/templates/task-template.md +122 -122
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
- package/.aios-core/product/templates/workflow-template.yaml +133 -133
- package/.aios-core/scripts/README.md +354 -354
- package/.aios-core/scripts/aios-doc-template.md +325 -325
- package/.aios-core/scripts/elicitation-engine.js +1 -1
- package/.aios-core/scripts/test-template-system.js +1 -1
- package/.aios-core/scripts/workflow-management.md +69 -69
- package/.aios-core/user-guide.md +1413 -1413
- package/.aios-core/working-in-the-brownfield.md +361 -361
- package/LICENSE +1 -1
- package/README.md +702 -703
- package/bin/aios-init-old.js +3 -3
- package/bin/aios-init-v4.js +1 -1
- package/bin/aios-init.backup-v1.1.4.js +1 -1
- package/bin/aios-init.js +3 -3
- package/bin/aios.js +279 -279
- package/bin/utils/install-errors.js +339 -339
- package/bin/utils/install-transaction.js +445 -445
- package/index.d.ts +18 -18
- package/index.esm.js +20 -20
- package/index.js +6 -6
- package/package.json +8 -10
- package/packages/installer/src/config/templates/env-template.js +27 -4
- package/packages/installer/src/detection/detect-project-type.js +81 -81
- package/packages/installer/src/wizard/wizard.js +185 -34
- package/packages/installer/tests/integration/environment-configuration.test.js +2 -1
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +11 -10
- package/src/config/ide-configs.js +1 -1
- package/src/wizard/feedback.js +2 -2
- package/src/wizard/index.js +1 -1
- package/src/wizard/validation/report-generator.js +1 -1
- package/src/wizard/validation/troubleshooting-system.js +13 -13
- package/.aios-core/development/tasks/validate-structure.md +0 -243
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
- package/.aios-core/infrastructure/scripts/source-tree-guardian/index.js +0 -375
- package/.aios-core/infrastructure/scripts/source-tree-guardian/manifest-generator.js +0 -410
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/naming-rules.yaml +0 -285
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/placement-rules.yaml +0 -262
- package/.aios-core/infrastructure/scripts/source-tree-guardian/validator.js +0 -468
- package/.aios-core/tasks/find-component.md.legacy +0 -391
- package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
- package/.aios-core/tasks/generate-migration.md.legacy +0 -382
- package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
- package/.aios-core/tasks/update-tests.md.legacy +0 -283
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mode Detector Module
|
|
3
|
+
*
|
|
4
|
+
* Detects installation mode for AIOS projects with three-mode support:
|
|
5
|
+
* - FRAMEWORK_DEV: Contributing to aios-core itself
|
|
6
|
+
* - GREENFIELD: New empty project
|
|
7
|
+
* - BROWNFIELD: Existing project being integrated
|
|
8
|
+
*
|
|
9
|
+
* @module documentation-integrity/mode-detector
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @story 6.9
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const fs = require('fs');
|
|
15
|
+
const path = require('path');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Installation modes supported by AIOS
|
|
19
|
+
* @enum {string}
|
|
20
|
+
*/
|
|
21
|
+
const InstallationMode = {
|
|
22
|
+
FRAMEWORK_DEV: 'framework-dev',
|
|
23
|
+
GREENFIELD: 'greenfield',
|
|
24
|
+
BROWNFIELD: 'brownfield',
|
|
25
|
+
UNKNOWN: 'unknown',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Legacy project type mappings (for backward compatibility)
|
|
30
|
+
* @enum {string}
|
|
31
|
+
*/
|
|
32
|
+
const LegacyProjectType = {
|
|
33
|
+
EXISTING_AIOS: 'EXISTING_AIOS',
|
|
34
|
+
GREENFIELD: 'GREENFIELD',
|
|
35
|
+
BROWNFIELD: 'BROWNFIELD',
|
|
36
|
+
UNKNOWN: 'UNKNOWN',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Mode descriptions for display in wizard
|
|
41
|
+
* @type {Object.<string, Object>}
|
|
42
|
+
*/
|
|
43
|
+
const ModeDescriptions = {
|
|
44
|
+
[InstallationMode.FRAMEWORK_DEV]: {
|
|
45
|
+
label: '🔧 Framework Development',
|
|
46
|
+
hint: 'Developing aios-core itself - uses framework standards, skips project setup',
|
|
47
|
+
description: 'For AIOS contributors working on the framework',
|
|
48
|
+
},
|
|
49
|
+
[InstallationMode.GREENFIELD]: {
|
|
50
|
+
label: '🆕 New Project (Greenfield)',
|
|
51
|
+
hint: 'Start a fresh project with AIOS - generates project docs, config, and infrastructure',
|
|
52
|
+
description: 'Empty directory setup with full scaffolding',
|
|
53
|
+
},
|
|
54
|
+
[InstallationMode.BROWNFIELD]: {
|
|
55
|
+
label: '📂 Existing Project (Brownfield)',
|
|
56
|
+
hint: 'Add AIOS to existing project - analyzes current structure and adapts',
|
|
57
|
+
description: 'Integration with existing codebase',
|
|
58
|
+
},
|
|
59
|
+
[InstallationMode.UNKNOWN]: {
|
|
60
|
+
label: '❓ Unknown',
|
|
61
|
+
hint: 'Could not determine project type - manual selection required',
|
|
62
|
+
description: 'Manual mode selection needed',
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Detection result with confidence and reasoning
|
|
68
|
+
* @typedef {Object} DetectionResult
|
|
69
|
+
* @property {string} mode - Detected installation mode
|
|
70
|
+
* @property {string} legacyType - Legacy project type for backward compatibility
|
|
71
|
+
* @property {number} confidence - Detection confidence (0-100)
|
|
72
|
+
* @property {string} reason - Human-readable reason for detection
|
|
73
|
+
* @property {Object} markers - Detected markers in the directory
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Detects the installation mode for a target directory
|
|
78
|
+
*
|
|
79
|
+
* Detection Priority Order:
|
|
80
|
+
* 1. FRAMEWORK_DEV - .aios-core/ exists AND is aios-core repo
|
|
81
|
+
* 2. GREENFIELD - directory is empty
|
|
82
|
+
* 3. BROWNFIELD - has package.json, .git, or other project markers
|
|
83
|
+
* 4. UNKNOWN - has files but no recognized markers
|
|
84
|
+
*
|
|
85
|
+
* @param {string} targetDir - Directory to analyze
|
|
86
|
+
* @returns {DetectionResult} Detection result with mode and metadata
|
|
87
|
+
* @throws {Error} If directory cannot be accessed
|
|
88
|
+
*/
|
|
89
|
+
function detectInstallationMode(targetDir = process.cwd()) {
|
|
90
|
+
// Validate input
|
|
91
|
+
if (!targetDir || typeof targetDir !== 'string') {
|
|
92
|
+
throw new Error('Invalid targetDir parameter: must be a non-empty string');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const normalizedDir = path.resolve(targetDir);
|
|
96
|
+
|
|
97
|
+
// Check if directory exists
|
|
98
|
+
if (!fs.existsSync(normalizedDir)) {
|
|
99
|
+
throw new Error(`Directory does not exist: ${normalizedDir}`);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Collect markers
|
|
103
|
+
const markers = collectMarkers(normalizedDir);
|
|
104
|
+
|
|
105
|
+
// Priority 1: Check for AIOS framework development
|
|
106
|
+
if (markers.hasAiosCore && markers.isAiosCoreRepo) {
|
|
107
|
+
return {
|
|
108
|
+
mode: InstallationMode.FRAMEWORK_DEV,
|
|
109
|
+
legacyType: LegacyProjectType.EXISTING_AIOS,
|
|
110
|
+
confidence: 100,
|
|
111
|
+
reason: 'Detected aios-core repository with .aios-core directory',
|
|
112
|
+
markers,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Priority 2: Check for existing AIOS installation (non-framework)
|
|
117
|
+
if (markers.hasAiosCore && !markers.isAiosCoreRepo) {
|
|
118
|
+
return {
|
|
119
|
+
mode: InstallationMode.BROWNFIELD,
|
|
120
|
+
legacyType: LegacyProjectType.EXISTING_AIOS,
|
|
121
|
+
confidence: 95,
|
|
122
|
+
reason: 'AIOS already installed in user project - treating as brownfield update',
|
|
123
|
+
markers,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Priority 3: Check for empty directory (greenfield)
|
|
128
|
+
if (markers.isEmpty) {
|
|
129
|
+
return {
|
|
130
|
+
mode: InstallationMode.GREENFIELD,
|
|
131
|
+
legacyType: LegacyProjectType.GREENFIELD,
|
|
132
|
+
confidence: 100,
|
|
133
|
+
reason: 'Empty directory detected',
|
|
134
|
+
markers,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Priority 4: Check for project markers (brownfield)
|
|
139
|
+
if (
|
|
140
|
+
markers.hasPackageJson ||
|
|
141
|
+
markers.hasGit ||
|
|
142
|
+
markers.hasPythonProject ||
|
|
143
|
+
markers.hasGoMod ||
|
|
144
|
+
markers.hasCargoToml
|
|
145
|
+
) {
|
|
146
|
+
const projectTypes = [];
|
|
147
|
+
if (markers.hasPackageJson) projectTypes.push('Node.js');
|
|
148
|
+
if (markers.hasPythonProject) projectTypes.push('Python');
|
|
149
|
+
if (markers.hasGoMod) projectTypes.push('Go');
|
|
150
|
+
if (markers.hasCargoToml) projectTypes.push('Rust');
|
|
151
|
+
|
|
152
|
+
return {
|
|
153
|
+
mode: InstallationMode.BROWNFIELD,
|
|
154
|
+
legacyType: LegacyProjectType.BROWNFIELD,
|
|
155
|
+
confidence: 90,
|
|
156
|
+
reason: `Existing project detected: ${projectTypes.join(', ') || 'Git repository'}`,
|
|
157
|
+
markers,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Priority 5: Directory has files but no recognized markers
|
|
162
|
+
return {
|
|
163
|
+
mode: InstallationMode.UNKNOWN,
|
|
164
|
+
legacyType: LegacyProjectType.UNKNOWN,
|
|
165
|
+
confidence: 0,
|
|
166
|
+
reason: 'Directory has files but no recognized project markers',
|
|
167
|
+
markers,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Collects all relevant markers from a directory
|
|
173
|
+
*
|
|
174
|
+
* @param {string} targetDir - Directory to scan
|
|
175
|
+
* @returns {Object} Object containing all detected markers
|
|
176
|
+
*/
|
|
177
|
+
function collectMarkers(targetDir) {
|
|
178
|
+
const dirContents = fs.readdirSync(targetDir);
|
|
179
|
+
|
|
180
|
+
return {
|
|
181
|
+
// AIOS markers
|
|
182
|
+
hasAiosCore: fs.existsSync(path.join(targetDir, '.aios-core')),
|
|
183
|
+
isAiosCoreRepo: isAiosCoreRepository(targetDir),
|
|
184
|
+
|
|
185
|
+
// Directory state
|
|
186
|
+
isEmpty: dirContents.length === 0,
|
|
187
|
+
fileCount: dirContents.length,
|
|
188
|
+
|
|
189
|
+
// Project markers
|
|
190
|
+
hasPackageJson: fs.existsSync(path.join(targetDir, 'package.json')),
|
|
191
|
+
hasGit: fs.existsSync(path.join(targetDir, '.git')),
|
|
192
|
+
|
|
193
|
+
// Python markers
|
|
194
|
+
hasPythonProject:
|
|
195
|
+
fs.existsSync(path.join(targetDir, 'requirements.txt')) ||
|
|
196
|
+
fs.existsSync(path.join(targetDir, 'pyproject.toml')) ||
|
|
197
|
+
fs.existsSync(path.join(targetDir, 'setup.py')),
|
|
198
|
+
|
|
199
|
+
// Go markers
|
|
200
|
+
hasGoMod: fs.existsSync(path.join(targetDir, 'go.mod')),
|
|
201
|
+
|
|
202
|
+
// Rust markers
|
|
203
|
+
hasCargoToml: fs.existsSync(path.join(targetDir, 'Cargo.toml')),
|
|
204
|
+
|
|
205
|
+
// Existing standards markers
|
|
206
|
+
hasEslintrc:
|
|
207
|
+
fs.existsSync(path.join(targetDir, '.eslintrc.js')) ||
|
|
208
|
+
fs.existsSync(path.join(targetDir, '.eslintrc.json')) ||
|
|
209
|
+
fs.existsSync(path.join(targetDir, '.eslintrc.yaml')),
|
|
210
|
+
hasPrettierrc:
|
|
211
|
+
fs.existsSync(path.join(targetDir, '.prettierrc')) ||
|
|
212
|
+
fs.existsSync(path.join(targetDir, '.prettierrc.json')) ||
|
|
213
|
+
fs.existsSync(path.join(targetDir, 'prettier.config.js')),
|
|
214
|
+
hasTsconfig: fs.existsSync(path.join(targetDir, 'tsconfig.json')),
|
|
215
|
+
|
|
216
|
+
// CI/CD markers
|
|
217
|
+
hasGithubWorkflows: fs.existsSync(path.join(targetDir, '.github', 'workflows')),
|
|
218
|
+
hasGitlabCi: fs.existsSync(path.join(targetDir, '.gitlab-ci.yml')),
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Checks if the target directory is the aios-core repository itself
|
|
224
|
+
*
|
|
225
|
+
* @param {string} targetDir - Directory to check
|
|
226
|
+
* @returns {boolean} True if this is the aios-core repository
|
|
227
|
+
*/
|
|
228
|
+
function isAiosCoreRepository(targetDir) {
|
|
229
|
+
const packageJsonPath = path.join(targetDir, 'package.json');
|
|
230
|
+
|
|
231
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
try {
|
|
236
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
237
|
+
|
|
238
|
+
// Primary check: explicit aios-core package names
|
|
239
|
+
if (packageJson.name === '@aios/core' || packageJson.name === 'aios-core') {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Secondary check: workspaces pattern + aios-specific marker file
|
|
244
|
+
// This prevents false positives for generic monorepos
|
|
245
|
+
const hasAiosMarker = fs.existsSync(path.join(targetDir, '.aios-core', 'infrastructure'));
|
|
246
|
+
const hasWorkspaces =
|
|
247
|
+
Array.isArray(packageJson.workspaces) && packageJson.workspaces.includes('packages/*');
|
|
248
|
+
|
|
249
|
+
return hasWorkspaces && hasAiosMarker;
|
|
250
|
+
} catch (error) {
|
|
251
|
+
// Log error for debugging but don't throw - return false for safety
|
|
252
|
+
if (process.env.AIOS_DEBUG) {
|
|
253
|
+
console.warn(`[mode-detector] Error checking aios-core repository: ${error.message}`);
|
|
254
|
+
}
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Maps legacy project type to new installation mode
|
|
261
|
+
*
|
|
262
|
+
* @deprecated Use detectInstallationMode().mode directly instead.
|
|
263
|
+
* This function cannot distinguish between FRAMEWORK_DEV and BROWNFIELD
|
|
264
|
+
* for EXISTING_AIOS legacy type (both use EXISTING_AIOS but with different modes).
|
|
265
|
+
* For accurate mode detection, use the mode property from detectInstallationMode().
|
|
266
|
+
*
|
|
267
|
+
* @param {string} legacyType - Legacy project type (EXISTING_AIOS, GREENFIELD, etc.)
|
|
268
|
+
* @param {Object} [context] - Optional context for disambiguation
|
|
269
|
+
* @param {boolean} [context.isAiosCoreRepo] - True if this is the aios-core repository
|
|
270
|
+
* @returns {string} New installation mode
|
|
271
|
+
*/
|
|
272
|
+
function mapLegacyTypeToMode(legacyType, context = {}) {
|
|
273
|
+
// EXISTING_AIOS is ambiguous: it can be FRAMEWORK_DEV (aios-core repo)
|
|
274
|
+
// or BROWNFIELD (user project with AIOS installed)
|
|
275
|
+
if (legacyType === LegacyProjectType.EXISTING_AIOS) {
|
|
276
|
+
// Use context to disambiguate if provided
|
|
277
|
+
if (context.isAiosCoreRepo === true) {
|
|
278
|
+
return InstallationMode.FRAMEWORK_DEV;
|
|
279
|
+
}
|
|
280
|
+
if (context.isAiosCoreRepo === false) {
|
|
281
|
+
return InstallationMode.BROWNFIELD;
|
|
282
|
+
}
|
|
283
|
+
// Default to BROWNFIELD as it's safer (won't skip project setup)
|
|
284
|
+
return InstallationMode.BROWNFIELD;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const mapping = {
|
|
288
|
+
[LegacyProjectType.GREENFIELD]: InstallationMode.GREENFIELD,
|
|
289
|
+
[LegacyProjectType.BROWNFIELD]: InstallationMode.BROWNFIELD,
|
|
290
|
+
[LegacyProjectType.UNKNOWN]: InstallationMode.UNKNOWN,
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
return mapping[legacyType] || InstallationMode.UNKNOWN;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Validates user mode selection against auto-detection
|
|
298
|
+
*
|
|
299
|
+
* @param {string} selectedMode - User-selected mode
|
|
300
|
+
* @param {DetectionResult} detected - Auto-detected result
|
|
301
|
+
* @returns {Object} Validation result with warnings if mismatch
|
|
302
|
+
*/
|
|
303
|
+
function validateModeSelection(selectedMode, detected) {
|
|
304
|
+
const result = {
|
|
305
|
+
isValid: true,
|
|
306
|
+
warnings: [],
|
|
307
|
+
suggestions: [],
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
// Allow any selection for UNKNOWN detection
|
|
311
|
+
if (detected.mode === InstallationMode.UNKNOWN) {
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Check for mismatches
|
|
316
|
+
if (selectedMode !== detected.mode) {
|
|
317
|
+
if (selectedMode === InstallationMode.GREENFIELD && !detected.markers.isEmpty) {
|
|
318
|
+
result.warnings.push(
|
|
319
|
+
'Selected greenfield but directory is not empty. Existing files may be overwritten.',
|
|
320
|
+
);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if (selectedMode === InstallationMode.FRAMEWORK_DEV && !detected.markers.isAiosCoreRepo) {
|
|
324
|
+
result.warnings.push(
|
|
325
|
+
'Selected framework-dev but this does not appear to be the aios-core repository.',
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if (selectedMode === InstallationMode.BROWNFIELD && detected.markers.isEmpty) {
|
|
330
|
+
result.warnings.push(
|
|
331
|
+
'Selected brownfield but directory is empty. Consider using greenfield instead.',
|
|
332
|
+
);
|
|
333
|
+
result.suggestions.push(InstallationMode.GREENFIELD);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
return result;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Gets mode options for wizard display
|
|
342
|
+
*
|
|
343
|
+
* @param {DetectionResult} [detected] - Optional detected result to highlight recommended
|
|
344
|
+
* @returns {Array<Object>} Array of mode options for wizard
|
|
345
|
+
*/
|
|
346
|
+
function getModeOptions(detected = null) {
|
|
347
|
+
const options = [
|
|
348
|
+
{
|
|
349
|
+
value: InstallationMode.GREENFIELD,
|
|
350
|
+
label: ModeDescriptions[InstallationMode.GREENFIELD].label,
|
|
351
|
+
hint: ModeDescriptions[InstallationMode.GREENFIELD].hint,
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
value: InstallationMode.BROWNFIELD,
|
|
355
|
+
label: ModeDescriptions[InstallationMode.BROWNFIELD].label,
|
|
356
|
+
hint: ModeDescriptions[InstallationMode.BROWNFIELD].hint,
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
value: InstallationMode.FRAMEWORK_DEV,
|
|
360
|
+
label: ModeDescriptions[InstallationMode.FRAMEWORK_DEV].label,
|
|
361
|
+
hint: ModeDescriptions[InstallationMode.FRAMEWORK_DEV].hint,
|
|
362
|
+
},
|
|
363
|
+
];
|
|
364
|
+
|
|
365
|
+
// If we have detection, mark recommended option
|
|
366
|
+
if (detected && detected.mode !== InstallationMode.UNKNOWN) {
|
|
367
|
+
const recommendedIndex = options.findIndex((opt) => opt.value === detected.mode);
|
|
368
|
+
if (recommendedIndex >= 0) {
|
|
369
|
+
options[recommendedIndex].hint += ' (Recommended)';
|
|
370
|
+
// Move recommended to top
|
|
371
|
+
const recommended = options.splice(recommendedIndex, 1)[0];
|
|
372
|
+
options.unshift(recommended);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return options;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
module.exports = {
|
|
380
|
+
detectInstallationMode,
|
|
381
|
+
collectMarkers,
|
|
382
|
+
isAiosCoreRepository,
|
|
383
|
+
mapLegacyTypeToMode,
|
|
384
|
+
validateModeSelection,
|
|
385
|
+
getModeOptions,
|
|
386
|
+
InstallationMode,
|
|
387
|
+
LegacyProjectType,
|
|
388
|
+
ModeDescriptions,
|
|
389
|
+
};
|
|
@@ -3,7 +3,7 @@ const path = require('path');
|
|
|
3
3
|
const chalk = require('chalk');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Framework improvement suggestion engine for AIOS
|
|
6
|
+
* Framework improvement suggestion engine for Synkra AIOS
|
|
7
7
|
* Generates actionable improvement recommendations based on analysis results
|
|
8
8
|
*/
|
|
9
9
|
class ImprovementEngine {
|
|
@@ -17,7 +17,7 @@ const path = require('path');
|
|
|
17
17
|
const os = require('os');
|
|
18
18
|
|
|
19
19
|
const isWindows = os.platform() === 'win32';
|
|
20
|
-
const LLM_ROUTING_VERSION = '1.
|
|
20
|
+
const LLM_ROUTING_VERSION = '1.1.0'; // Added usage tracking support
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Get the installation directory for commands
|
|
@@ -61,6 +61,7 @@ function getInstallDir() {
|
|
|
61
61
|
* @param {Object} options - Installation options
|
|
62
62
|
* @param {string} options.projectRoot - Project root directory
|
|
63
63
|
* @param {string} options.templatesDir - Templates directory
|
|
64
|
+
* @param {boolean} options.enableTracking - Enable usage tracking (default: true)
|
|
64
65
|
* @param {Function} options.onProgress - Progress callback
|
|
65
66
|
* @param {Function} options.onError - Error callback
|
|
66
67
|
* @returns {Object} Installation result
|
|
@@ -69,6 +70,7 @@ function installLLMRouting(options = {}) {
|
|
|
69
70
|
const {
|
|
70
71
|
projectRoot = process.cwd(),
|
|
71
72
|
templatesDir = path.join(__dirname, 'templates'),
|
|
73
|
+
enableTracking = true,
|
|
72
74
|
onProgress = console.log,
|
|
73
75
|
onError = console.error
|
|
74
76
|
} = options;
|
|
@@ -94,13 +96,16 @@ function installLLMRouting(options = {}) {
|
|
|
94
96
|
onProgress(`📂 Installing to: ${installDir}`);
|
|
95
97
|
|
|
96
98
|
// Determine which scripts to install
|
|
99
|
+
// Use tracked version of claude-free if tracking is enabled
|
|
100
|
+
const claudeFreeScript = enableTracking ? 'claude-free-tracked' : 'claude-free';
|
|
101
|
+
|
|
97
102
|
const scripts = isWindows
|
|
98
|
-
? ['claude-
|
|
99
|
-
: ['claude-
|
|
103
|
+
? [`${claudeFreeScript}.cmd`, 'claude-max.cmd', 'deepseek-usage.cmd', 'deepseek-proxy.cmd']
|
|
104
|
+
: [`${claudeFreeScript}.sh`, 'claude-max.sh', 'deepseek-usage.sh', 'deepseek-proxy.sh'];
|
|
100
105
|
|
|
101
106
|
const targetNames = isWindows
|
|
102
|
-
? ['claude-free.cmd', 'claude-max.cmd']
|
|
103
|
-
: ['claude-free', 'claude-max'];
|
|
107
|
+
? ['claude-free.cmd', 'claude-max.cmd', 'deepseek-usage.cmd', 'deepseek-proxy.cmd']
|
|
108
|
+
: ['claude-free', 'claude-max', 'deepseek-usage', 'deepseek-proxy'];
|
|
104
109
|
|
|
105
110
|
// Install each script
|
|
106
111
|
scripts.forEach((script, index) => {
|
|
@@ -158,7 +163,7 @@ function installLLMRouting(options = {}) {
|
|
|
158
163
|
|
|
159
164
|
// Only update ~/.claude.json when installation succeeded
|
|
160
165
|
if (result.success) {
|
|
161
|
-
updateClaudeConfig();
|
|
166
|
+
updateClaudeConfig(enableTracking);
|
|
162
167
|
}
|
|
163
168
|
|
|
164
169
|
return result;
|
|
@@ -166,8 +171,9 @@ function installLLMRouting(options = {}) {
|
|
|
166
171
|
|
|
167
172
|
/**
|
|
168
173
|
* Update ~/.claude.json to mark LLM routing as installed
|
|
174
|
+
* @param {boolean} trackingEnabled - Whether tracking is enabled
|
|
169
175
|
*/
|
|
170
|
-
function updateClaudeConfig() {
|
|
176
|
+
function updateClaudeConfig(trackingEnabled = true) {
|
|
171
177
|
const claudeConfigPath = path.join(os.homedir(), '.claude.json');
|
|
172
178
|
|
|
173
179
|
try {
|
|
@@ -180,7 +186,8 @@ function updateClaudeConfig() {
|
|
|
180
186
|
config.aiosLLMRouting = {
|
|
181
187
|
version: LLM_ROUTING_VERSION,
|
|
182
188
|
installedAt: new Date().toISOString(),
|
|
183
|
-
commands: ['claude-max', 'claude-free']
|
|
189
|
+
commands: ['claude-max', 'claude-free', 'deepseek-usage', 'deepseek-proxy'],
|
|
190
|
+
trackingEnabled
|
|
184
191
|
};
|
|
185
192
|
|
|
186
193
|
fs.writeFileSync(claudeConfigPath, JSON.stringify(config, null, 2));
|
|
@@ -216,11 +223,13 @@ function getInstallationSummary(result) {
|
|
|
216
223
|
if (result.success) {
|
|
217
224
|
summary.push('');
|
|
218
225
|
summary.push('📋 LLM Routing Installation Complete!');
|
|
219
|
-
summary.push('═'.repeat(
|
|
226
|
+
summary.push('═'.repeat(60));
|
|
220
227
|
summary.push('');
|
|
221
228
|
summary.push('Commands installed:');
|
|
222
|
-
summary.push(' • claude-max
|
|
223
|
-
summary.push(' • claude-free
|
|
229
|
+
summary.push(' • claude-max → Uses your Claude Max subscription');
|
|
230
|
+
summary.push(' • claude-free → Uses DeepSeek (~$0.14/M tokens) with tracking');
|
|
231
|
+
summary.push(' • deepseek-usage → View usage statistics by alias');
|
|
232
|
+
summary.push(' • deepseek-proxy → Manage the usage tracking proxy');
|
|
224
233
|
summary.push('');
|
|
225
234
|
|
|
226
235
|
if (result.envCreated) {
|
|
@@ -231,8 +240,12 @@ function getInstallationSummary(result) {
|
|
|
231
240
|
}
|
|
232
241
|
|
|
233
242
|
summary.push('Usage:');
|
|
234
|
-
summary.push(' claude-max
|
|
235
|
-
summary.push(' claude-free
|
|
243
|
+
summary.push(' claude-max # Premium Claude experience');
|
|
244
|
+
summary.push(' claude-free # Cost-effective development (tracked)');
|
|
245
|
+
summary.push(' deepseek-usage # View all usage stats');
|
|
246
|
+
summary.push(' deepseek-usage <alias> # Stats for specific alias');
|
|
247
|
+
summary.push('');
|
|
248
|
+
summary.push('Usage data saved to: ~/.aios/usage-tracking/deepseek-usage.json');
|
|
236
249
|
summary.push('');
|
|
237
250
|
} else {
|
|
238
251
|
summary.push('');
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
:: Claude Code - DeepSeek Native Mode with Usage Tracking
|
|
3
|
+
:: Routes through local proxy to track per-alias usage
|
|
4
|
+
:: Cost: ~$0.14/M tokens with tool calling support
|
|
5
|
+
|
|
6
|
+
setlocal enabledelayedexpansion
|
|
7
|
+
|
|
8
|
+
:: Configuration
|
|
9
|
+
set "PROXY_PORT=8787"
|
|
10
|
+
set "ALIAS=claude-free"
|
|
11
|
+
|
|
12
|
+
:: Find tracker script
|
|
13
|
+
if defined AIOS_HOME (
|
|
14
|
+
set "TRACKER_SCRIPT=%AIOS_HOME%\.aios-core\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
15
|
+
if exist "!TRACKER_SCRIPT!" goto :tracker_found
|
|
16
|
+
)
|
|
17
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\aios-core\.aios-core\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
18
|
+
if exist "%TRACKER_SCRIPT%" goto :tracker_found
|
|
19
|
+
set "TRACKER_SCRIPT=%USERPROFILE%\Workspaces\AIOS\SynkraAI\aios-core\.aios-core\infrastructure\scripts\llm-routing\usage-tracker\index.js"
|
|
20
|
+
if exist "%TRACKER_SCRIPT%" goto :tracker_found
|
|
21
|
+
set "TRACKER_SCRIPT=%~dp0..\usage-tracker\index.js"
|
|
22
|
+
:tracker_found
|
|
23
|
+
|
|
24
|
+
:: Find project root (look for .env file)
|
|
25
|
+
set "PROJECT_ROOT=%CD%"
|
|
26
|
+
set /a "LOOP_COUNT=0"
|
|
27
|
+
:find_env
|
|
28
|
+
set /a "LOOP_COUNT+=1"
|
|
29
|
+
if %LOOP_COUNT% gtr 50 goto :no_env
|
|
30
|
+
if exist "%PROJECT_ROOT%\.env" goto :found_env
|
|
31
|
+
if "%PROJECT_ROOT%"=="%PROJECT_ROOT:~0,3%" goto :no_env
|
|
32
|
+
for %%i in ("%PROJECT_ROOT%\..") do set "PROJECT_ROOT=%%~fi"
|
|
33
|
+
goto :find_env
|
|
34
|
+
|
|
35
|
+
:no_env
|
|
36
|
+
if not "%DEEPSEEK_API_KEY%"=="" goto :use_env_key
|
|
37
|
+
|
|
38
|
+
echo.
|
|
39
|
+
echo [91mERROR: No .env file found and DEEPSEEK_API_KEY not set![0m
|
|
40
|
+
echo.
|
|
41
|
+
echo Options:
|
|
42
|
+
echo 1. Create .env in your project: cp .env.example .env
|
|
43
|
+
echo 2. Set DEEPSEEK_API_KEY in the .env file
|
|
44
|
+
echo 3. Or set it globally: setx DEEPSEEK_API_KEY "sk-your-key"
|
|
45
|
+
echo.
|
|
46
|
+
echo Get your API key at: https://platform.deepseek.com/api_keys
|
|
47
|
+
echo.
|
|
48
|
+
pause
|
|
49
|
+
exit /b 1
|
|
50
|
+
|
|
51
|
+
:found_env
|
|
52
|
+
:: Load DEEPSEEK_API_KEY from .env
|
|
53
|
+
for /f "usebackq eol=# tokens=1,* delims==" %%a in ("%PROJECT_ROOT%\.env") do (
|
|
54
|
+
if "%%a"=="DEEPSEEK_API_KEY" set "DEEPSEEK_API_KEY=%%b"
|
|
55
|
+
)
|
|
56
|
+
set "DEEPSEEK_API_KEY=!DEEPSEEK_API_KEY:"=!"
|
|
57
|
+
|
|
58
|
+
if "!DEEPSEEK_API_KEY!"=="" (
|
|
59
|
+
echo.
|
|
60
|
+
echo [91mERROR: DEEPSEEK_API_KEY not found in .env![0m
|
|
61
|
+
echo.
|
|
62
|
+
pause
|
|
63
|
+
exit /b 1
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
:use_env_key
|
|
67
|
+
:: Check if proxy is running
|
|
68
|
+
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
69
|
+
if %errorlevel% neq 0 (
|
|
70
|
+
echo.
|
|
71
|
+
echo [93mUsage Tracker proxy not running. Starting in background...[0m
|
|
72
|
+
|
|
73
|
+
:: Start proxy in background
|
|
74
|
+
start /b "" node "%TRACKER_SCRIPT%" start --port=%PROXY_PORT% --alias=%ALIAS% >nul 2>&1
|
|
75
|
+
|
|
76
|
+
:: Wait for proxy to start
|
|
77
|
+
timeout /t 2 /nobreak >nul
|
|
78
|
+
|
|
79
|
+
:: Verify it started
|
|
80
|
+
curl -s http://127.0.0.1:%PROXY_PORT%/health >nul 2>&1
|
|
81
|
+
if %errorlevel% neq 0 (
|
|
82
|
+
echo [91mFailed to start proxy. Falling back to direct connection.[0m
|
|
83
|
+
goto :direct_connection
|
|
84
|
+
)
|
|
85
|
+
echo [92mProxy started successfully![0m
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
:: Use local proxy (proxy will forward to DeepSeek with original API key)
|
|
89
|
+
set ANTHROPIC_BASE_URL=http://127.0.0.1:%PROXY_PORT%/anthropic
|
|
90
|
+
set ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%
|
|
91
|
+
set ANTHROPIC_MODEL=deepseek-chat
|
|
92
|
+
set API_TIMEOUT_MS=600000
|
|
93
|
+
|
|
94
|
+
echo.
|
|
95
|
+
echo [92mClaude Code - DeepSeek Native Mode (TRACKED)[0m
|
|
96
|
+
echo Proxy: 127.0.0.1:%PROXY_PORT%
|
|
97
|
+
echo Alias: %ALIAS%
|
|
98
|
+
echo [92mTool Calling: SUPPORTED[0m
|
|
99
|
+
echo Cost: ~$0.14/M tokens
|
|
100
|
+
echo.
|
|
101
|
+
echo [96mUsage tracking enabled. Run 'deepseek-usage' to view stats.[0m
|
|
102
|
+
echo.
|
|
103
|
+
|
|
104
|
+
goto :run_claude
|
|
105
|
+
|
|
106
|
+
:direct_connection
|
|
107
|
+
:: Direct connection without tracking
|
|
108
|
+
set ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
|
|
109
|
+
set ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%
|
|
110
|
+
set ANTHROPIC_MODEL=deepseek-chat
|
|
111
|
+
set API_TIMEOUT_MS=600000
|
|
112
|
+
|
|
113
|
+
echo.
|
|
114
|
+
echo [92mClaude Code - DeepSeek Native Mode (DIRECT)[0m
|
|
115
|
+
echo Endpoint: api.deepseek.com/anthropic
|
|
116
|
+
echo [93mUsage tracking: DISABLED (proxy not running)[0m
|
|
117
|
+
echo.
|
|
118
|
+
|
|
119
|
+
:run_claude
|
|
120
|
+
endlocal & set "ANTHROPIC_BASE_URL=%ANTHROPIC_BASE_URL%" & set "ANTHROPIC_API_KEY=%DEEPSEEK_API_KEY%" & set "ANTHROPIC_MODEL=deepseek-chat" & set "API_TIMEOUT_MS=600000"
|
|
121
|
+
|
|
122
|
+
>&2 echo.
|
|
123
|
+
>&2 echo [93mWARNING: Running with --dangerously-skip-permissions (no confirmation prompts)[0m
|
|
124
|
+
>&2 echo [93mOnly use in trusted repositories/environments.[0m
|
|
125
|
+
>&2 echo.
|
|
126
|
+
|
|
127
|
+
claude --dangerously-skip-permissions %*
|