aios-core 2.1.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/.session/current-session.json +14 -0
- package/.aios-core/cli/commands/generate/index.js +222 -0
- package/.aios-core/cli/commands/manifest/index.js +46 -0
- package/.aios-core/cli/commands/manifest/regenerate.js +96 -0
- package/.aios-core/cli/commands/manifest/validate.js +66 -0
- package/.aios-core/cli/commands/mcp/add.js +234 -0
- package/.aios-core/cli/commands/mcp/index.js +76 -0
- package/.aios-core/cli/commands/mcp/link.js +217 -0
- package/.aios-core/cli/commands/mcp/setup.js +164 -0
- package/.aios-core/cli/commands/mcp/status.js +183 -0
- package/.aios-core/cli/commands/metrics/cleanup.js +91 -0
- package/.aios-core/cli/commands/metrics/index.js +65 -0
- package/.aios-core/cli/commands/metrics/record.js +154 -0
- package/.aios-core/cli/commands/metrics/seed.js +126 -0
- package/.aios-core/cli/commands/metrics/show.js +209 -0
- package/.aios-core/cli/commands/migrate/analyze.js +353 -0
- package/.aios-core/cli/commands/migrate/backup.js +352 -0
- package/.aios-core/cli/commands/migrate/execute.js +292 -0
- package/.aios-core/cli/commands/migrate/index.js +441 -0
- package/.aios-core/cli/commands/migrate/rollback.js +323 -0
- package/.aios-core/cli/commands/migrate/update-imports.js +396 -0
- package/.aios-core/cli/commands/migrate/validate.js +452 -0
- package/.aios-core/cli/commands/qa/index.js +56 -0
- package/.aios-core/cli/commands/qa/run.js +163 -0
- package/.aios-core/cli/commands/qa/status.js +195 -0
- package/.aios-core/cli/commands/workers/formatters/info-formatter.js +274 -0
- package/.aios-core/cli/commands/workers/formatters/list-table.js +265 -0
- package/.aios-core/cli/commands/workers/formatters/list-tree.js +159 -0
- package/.aios-core/cli/commands/workers/index.js +56 -0
- package/.aios-core/cli/commands/workers/info.js +194 -0
- package/.aios-core/cli/commands/workers/list.js +214 -0
- package/.aios-core/cli/commands/workers/search-filters.js +185 -0
- package/.aios-core/cli/commands/workers/search-keyword.js +310 -0
- package/.aios-core/cli/commands/workers/search-semantic.js +293 -0
- package/.aios-core/cli/commands/workers/search.js +154 -0
- package/.aios-core/cli/commands/workers/utils/pagination.js +102 -0
- package/.aios-core/cli/index.js +128 -0
- package/.aios-core/cli/utils/output-formatter-cli.js +232 -0
- package/.aios-core/cli/utils/score-calculator.js +221 -0
- package/.aios-core/core/README.md +229 -0
- package/.aios-core/core/config/config-cache.js +233 -0
- package/.aios-core/core/config/config-loader.js +277 -0
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/core/data/aios-kb.md +924 -0
- package/.aios-core/core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/core/docs/component-creation-guide.md +458 -0
- package/.aios-core/core/docs/session-update-pattern.md +307 -0
- package/.aios-core/core/docs/template-syntax.md +267 -0
- package/.aios-core/core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/core/elicitation/elicitation-engine.js +479 -0
- package/.aios-core/core/elicitation/session-manager.js +320 -0
- package/.aios-core/core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/core/index.esm.js +42 -0
- package/.aios-core/core/index.js +76 -0
- package/.aios-core/core/manifest/manifest-generator.js +386 -0
- package/.aios-core/core/manifest/manifest-validator.js +429 -0
- package/.aios-core/core/mcp/config-migrator.js +340 -0
- package/.aios-core/core/mcp/global-config-manager.js +369 -0
- package/.aios-core/core/mcp/index.js +34 -0
- package/.aios-core/core/mcp/os-detector.js +188 -0
- package/.aios-core/core/mcp/symlink-manager.js +413 -0
- package/.aios-core/core/migration/migration-config.yaml +83 -0
- package/.aios-core/core/migration/module-mapping.yaml +89 -0
- package/.aios-core/core/quality-gates/base-layer.js +134 -0
- package/.aios-core/core/quality-gates/checklist-generator.js +329 -0
- package/.aios-core/core/quality-gates/focus-area-recommender.js +359 -0
- package/.aios-core/core/quality-gates/human-review-orchestrator.js +529 -0
- package/.aios-core/core/quality-gates/layer1-precommit.js +336 -0
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +324 -0
- package/.aios-core/core/quality-gates/layer3-human-review.js +348 -0
- package/.aios-core/core/quality-gates/notification-manager.js +550 -0
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -0
- package/.aios-core/core/quality-gates/quality-gate-manager.js +601 -0
- package/.aios-core/core/registry/README.md +179 -0
- package/.aios-core/core/registry/build-registry.js +452 -0
- package/.aios-core/core/registry/registry-loader.js +330 -0
- package/.aios-core/core/registry/registry-schema.json +166 -0
- package/.aios-core/core/registry/service-registry.json +6586 -0
- package/.aios-core/core/registry/validate-registry.js +340 -0
- package/.aios-core/core/session/context-detector.js +229 -0
- package/.aios-core/core/session/context-loader.js +288 -0
- package/.aios-core/core/utils/output-formatter.js +298 -0
- package/.aios-core/core/utils/security-utils.js +333 -0
- package/.aios-core/core/utils/yaml-validator.js +419 -0
- package/.aios-core/core-config.yaml +382 -0
- package/.aios-core/data/agent-config-requirements.yaml +368 -0
- package/.aios-core/data/aios-kb.md +924 -0
- package/.aios-core/data/technical-preferences.md +4 -0
- package/.aios-core/data/workflow-patterns.yaml +267 -0
- package/.aios-core/development/README.md +142 -0
- package/.aios-core/development/agent-teams/team-all.yaml +15 -0
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -0
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -0
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -0
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -0
- package/.aios-core/development/agents/aios-master.md +339 -0
- package/.aios-core/development/agents/analyst.md +195 -0
- package/.aios-core/development/agents/architect.md +359 -0
- package/.aios-core/development/agents/data-engineer.md +468 -0
- package/.aios-core/development/agents/dev.md +390 -0
- package/.aios-core/development/agents/devops.md +398 -0
- package/.aios-core/development/agents/pm.md +198 -0
- package/.aios-core/development/agents/po.md +256 -0
- package/.aios-core/development/agents/qa.md +312 -0
- package/.aios-core/development/agents/sm.md +220 -0
- package/.aios-core/development/agents/ux-design-expert.md +451 -0
- package/.aios-core/development/scripts/agent-assignment-resolver.js +231 -0
- package/.aios-core/development/scripts/agent-config-loader.js +624 -0
- package/.aios-core/development/scripts/agent-exit-hooks.js +96 -0
- package/.aios-core/development/scripts/apply-inline-greeting-all-agents.js +146 -0
- package/.aios-core/development/scripts/audit-agent-config.js +380 -0
- package/.aios-core/development/scripts/backlog-manager.js +404 -0
- package/.aios-core/development/scripts/batch-update-agents-session-context.js +95 -0
- package/.aios-core/development/scripts/decision-context.js +228 -0
- package/.aios-core/development/scripts/decision-log-generator.js +293 -0
- package/.aios-core/development/scripts/decision-log-indexer.js +284 -0
- package/.aios-core/development/scripts/decision-recorder.js +168 -0
- package/.aios-core/development/scripts/dev-context-loader.js +297 -0
- package/.aios-core/development/scripts/generate-greeting.js +160 -0
- package/.aios-core/development/scripts/greeting-builder.js +866 -0
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -0
- package/.aios-core/development/scripts/greeting-preference-manager.js +145 -0
- package/.aios-core/development/scripts/migrate-task-to-v2.js +377 -0
- package/.aios-core/development/scripts/story-index-generator.js +337 -0
- package/.aios-core/development/scripts/story-manager.js +375 -0
- package/.aios-core/development/scripts/story-update-hook.js +259 -0
- package/.aios-core/development/scripts/task-identifier-resolver.js +145 -0
- package/.aios-core/development/scripts/test-greeting-system.js +142 -0
- package/.aios-core/development/scripts/validate-task-v2.js +319 -0
- package/.aios-core/development/scripts/workflow-navigator.js +214 -0
- package/.aios-core/development/tasks/add-mcp.md +319 -0
- package/.aios-core/development/tasks/advanced-elicitation.md +319 -0
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +342 -0
- package/.aios-core/development/tasks/analyze-framework.md +697 -0
- package/.aios-core/development/tasks/analyze-performance.md +637 -0
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -0
- package/.aios-core/development/tasks/architect-analyze-impact.md +827 -0
- package/.aios-core/development/tasks/audit-codebase.md +429 -0
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -0
- package/.aios-core/development/tasks/audit-utilities.md +358 -0
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -0
- package/.aios-core/development/tasks/brownfield-create-epic.md +486 -0
- package/.aios-core/development/tasks/brownfield-create-story.md +357 -0
- package/.aios-core/development/tasks/build-component.md +478 -0
- package/.aios-core/development/tasks/calculate-roi.md +455 -0
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -0
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -0
- package/.aios-core/development/tasks/collaborative-edit.md +1109 -0
- package/.aios-core/development/tasks/compose-molecule.md +284 -0
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -0
- package/.aios-core/development/tasks/correct-course.md +280 -0
- package/.aios-core/development/tasks/create-agent.md +322 -0
- package/.aios-core/development/tasks/create-brownfield-story.md +727 -0
- package/.aios-core/development/tasks/create-deep-research-prompt.md +499 -0
- package/.aios-core/development/tasks/create-doc.md +316 -0
- package/.aios-core/development/tasks/create-next-story.md +774 -0
- package/.aios-core/development/tasks/create-suite.md +284 -0
- package/.aios-core/development/tasks/create-task.md +372 -0
- package/.aios-core/development/tasks/create-workflow.md +371 -0
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -0
- package/.aios-core/development/tasks/db-apply-migration.md +381 -0
- package/.aios-core/development/tasks/db-bootstrap.md +642 -0
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -0
- package/.aios-core/development/tasks/db-dry-run.md +293 -0
- package/.aios-core/development/tasks/db-env-check.md +260 -0
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -0
- package/.aios-core/development/tasks/db-explain.md +631 -0
- package/.aios-core/development/tasks/db-impersonate.md +495 -0
- package/.aios-core/development/tasks/db-load-csv.md +593 -0
- package/.aios-core/development/tasks/db-policy-apply.md +653 -0
- package/.aios-core/development/tasks/db-rls-audit.md +411 -0
- package/.aios-core/development/tasks/db-rollback.md +739 -0
- package/.aios-core/development/tasks/db-run-sql.md +613 -0
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -0
- package/.aios-core/development/tasks/db-seed.md +390 -0
- package/.aios-core/development/tasks/db-smoke-test.md +351 -0
- package/.aios-core/development/tasks/db-snapshot.md +569 -0
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -0
- package/.aios-core/development/tasks/db-verify-order.md +515 -0
- package/.aios-core/development/tasks/deprecate-component.md +957 -0
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -0
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -0
- package/.aios-core/development/tasks/dev-develop-story.md +846 -0
- package/.aios-core/development/tasks/dev-improve-code-quality.md +873 -0
- package/.aios-core/development/tasks/dev-optimize-performance.md +1034 -0
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +871 -0
- package/.aios-core/development/tasks/dev-validate-next-story.md +349 -0
- package/.aios-core/development/tasks/document-project.md +553 -0
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -0
- package/.aios-core/development/tasks/execute-checklist.md +301 -0
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -0
- package/.aios-core/development/tasks/extend-pattern.md +269 -0
- package/.aios-core/development/tasks/extract-tokens.md +467 -0
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -0
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +261 -0
- package/.aios-core/development/tasks/generate-documentation.md +284 -0
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -0
- package/.aios-core/development/tasks/generate-shock-report.md +501 -0
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -0
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -0
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -0
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -0
- package/.aios-core/development/tasks/improve-self.md +823 -0
- package/.aios-core/development/tasks/index-docs.md +388 -0
- package/.aios-core/development/tasks/init-project-status.md +506 -0
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -0
- package/.aios-core/development/tasks/kb-mode-interaction.md +284 -0
- package/.aios-core/development/tasks/learn-patterns.md +901 -0
- package/.aios-core/development/tasks/mcp-workflow.md +437 -0
- package/.aios-core/development/tasks/modify-agent.md +382 -0
- package/.aios-core/development/tasks/modify-task.md +425 -0
- package/.aios-core/development/tasks/modify-workflow.md +466 -0
- package/.aios-core/development/tasks/po-backlog-add.md +370 -0
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -0
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -0
- package/.aios-core/development/tasks/po-pull-story.md +316 -0
- package/.aios-core/development/tasks/po-stories-index.md +351 -0
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -0
- package/.aios-core/development/tasks/po-sync-story.md +303 -0
- package/.aios-core/development/tasks/pr-automation.md +701 -0
- package/.aios-core/development/tasks/propose-modification.md +843 -0
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -0
- package/.aios-core/development/tasks/qa-gate.md +374 -0
- package/.aios-core/development/tasks/qa-generate-tests.md +1175 -0
- package/.aios-core/development/tasks/qa-nfr-assess.md +558 -0
- package/.aios-core/development/tasks/qa-review-proposal.md +1158 -0
- package/.aios-core/development/tasks/qa-review-story.md +683 -0
- package/.aios-core/development/tasks/qa-risk-profile.md +567 -0
- package/.aios-core/development/tasks/qa-run-tests.md +277 -0
- package/.aios-core/development/tasks/qa-test-design.md +388 -0
- package/.aios-core/development/tasks/qa-trace-requirements.md +477 -0
- package/.aios-core/development/tasks/release-management.md +723 -0
- package/.aios-core/development/tasks/security-audit.md +554 -0
- package/.aios-core/development/tasks/security-scan.md +790 -0
- package/.aios-core/development/tasks/setup-database.md +741 -0
- package/.aios-core/development/tasks/setup-design-system.md +462 -0
- package/.aios-core/development/tasks/setup-github.md +874 -0
- package/.aios-core/development/tasks/setup-llm-routing.md +229 -0
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -0
- package/.aios-core/development/tasks/shard-doc.md +538 -0
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -0
- package/.aios-core/development/tasks/sync-documentation.md +865 -0
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -0
- package/.aios-core/development/tasks/test-as-user.md +621 -0
- package/.aios-core/development/tasks/test-validation-task.md +171 -0
- package/.aios-core/development/tasks/undo-last.md +347 -0
- package/.aios-core/development/tasks/update-manifest.md +410 -0
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -0
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -0
- package/.aios-core/development/tasks/ux-user-research.md +559 -0
- package/.aios-core/development/tasks/validate-next-story.md +423 -0
- package/.aios-core/development/tasks/validate-structure.md +243 -0
- package/.aios-core/development/workflows/README.md +84 -0
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -0
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -0
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -0
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -0
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -0
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -0
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -0
- package/.aios-core/docs/component-creation-guide.md +458 -0
- package/.aios-core/docs/session-update-pattern.md +307 -0
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -0
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -0
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -0
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -0
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -0
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -0
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -0
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -0
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -0
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -0
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -0
- package/.aios-core/docs/template-syntax.md +267 -0
- package/.aios-core/docs/troubleshooting-guide.md +625 -0
- package/.aios-core/elicitation/agent-elicitation.js +272 -0
- package/.aios-core/elicitation/task-elicitation.js +281 -0
- package/.aios-core/elicitation/workflow-elicitation.js +315 -0
- package/.aios-core/index.d.ts +8 -0
- package/.aios-core/index.esm.js +16 -0
- package/.aios-core/index.js +16 -0
- package/.aios-core/infrastructure/README.md +126 -0
- package/.aios-core/infrastructure/index.js +199 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/clickup-adapter.js +345 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/github-adapter.js +392 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/jira-adapter.js +448 -0
- package/.aios-core/infrastructure/integrations/pm-adapters/local-adapter.js +175 -0
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +122 -0
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +89 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +780 -0
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +950 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +425 -0
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +132 -0
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +381 -0
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +203 -0
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +24 -0
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +51 -0
- package/.aios-core/infrastructure/scripts/aios-validator.js +294 -0
- package/.aios-core/infrastructure/scripts/approval-workflow.js +643 -0
- package/.aios-core/infrastructure/scripts/atomic-layer-classifier.js +308 -0
- package/.aios-core/infrastructure/scripts/backup-manager.js +607 -0
- package/.aios-core/infrastructure/scripts/batch-creator.js +608 -0
- package/.aios-core/infrastructure/scripts/branch-manager.js +391 -0
- package/.aios-core/infrastructure/scripts/capability-analyzer.js +535 -0
- package/.aios-core/infrastructure/scripts/clickup-helpers.js +226 -0
- package/.aios-core/infrastructure/scripts/code-quality-improver.js +1312 -0
- package/.aios-core/infrastructure/scripts/commit-message-generator.js +850 -0
- package/.aios-core/infrastructure/scripts/component-generator.js +738 -0
- package/.aios-core/infrastructure/scripts/component-metadata.js +627 -0
- package/.aios-core/infrastructure/scripts/component-search.js +277 -0
- package/.aios-core/infrastructure/scripts/config-cache.js +322 -0
- package/.aios-core/infrastructure/scripts/config-loader.js +349 -0
- package/.aios-core/infrastructure/scripts/conflict-resolver.js +675 -0
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +882 -0
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +638 -0
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +703 -0
- package/.aios-core/infrastructure/scripts/diff-generator.js +129 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +501 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/config-generator.js +329 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +282 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/gitignore-generator.js +313 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/index.js +74 -0
- package/.aios-core/infrastructure/scripts/documentation-integrity/mode-detector.js +358 -0
- package/.aios-core/infrastructure/scripts/documentation-synchronizer.js +1432 -0
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +746 -0
- package/.aios-core/infrastructure/scripts/git-config-detector.js +293 -0
- package/.aios-core/infrastructure/scripts/git-wrapper.js +443 -0
- package/.aios-core/infrastructure/scripts/improvement-engine.js +758 -0
- package/.aios-core/infrastructure/scripts/improvement-validator.js +710 -0
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +267 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.cmd +80 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free.sh +62 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.cmd +26 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-max.sh +18 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +970 -0
- package/.aios-core/infrastructure/scripts/modification-validator.js +555 -0
- package/.aios-core/infrastructure/scripts/output-formatter.js +297 -0
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +758 -0
- package/.aios-core/infrastructure/scripts/performance-and-error-resolver.js +258 -0
- package/.aios-core/infrastructure/scripts/performance-optimizer.js +1902 -0
- package/.aios-core/infrastructure/scripts/performance-tracker.js +452 -0
- package/.aios-core/infrastructure/scripts/pm-adapter-factory.js +181 -0
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -0
- package/.aios-core/infrastructure/scripts/project-status-loader.js +445 -0
- package/.aios-core/infrastructure/scripts/refactoring-suggester.js +1139 -0
- package/.aios-core/infrastructure/scripts/repository-detector.js +64 -0
- package/.aios-core/infrastructure/scripts/sandbox-tester.js +618 -0
- package/.aios-core/infrastructure/scripts/security-checker.js +359 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/index.js +375 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/manifest-generator.js +410 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/naming-rules.yaml +285 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/rules/placement-rules.yaml +262 -0
- package/.aios-core/infrastructure/scripts/source-tree-guardian/validator.js +468 -0
- package/.aios-core/infrastructure/scripts/spot-check-validator.js +149 -0
- package/.aios-core/infrastructure/scripts/status-mapper.js +115 -0
- package/.aios-core/infrastructure/scripts/template-engine.js +240 -0
- package/.aios-core/infrastructure/scripts/template-validator.js +279 -0
- package/.aios-core/infrastructure/scripts/test-generator.js +844 -0
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1081 -0
- package/.aios-core/infrastructure/scripts/test-utilities-fast.js +126 -0
- package/.aios-core/infrastructure/scripts/test-utilities.js +200 -0
- package/.aios-core/infrastructure/scripts/tool-resolver.js +360 -0
- package/.aios-core/infrastructure/scripts/transaction-manager.js +590 -0
- package/.aios-core/infrastructure/scripts/usage-analytics.js +634 -0
- package/.aios-core/infrastructure/scripts/validate-output-pattern.js +213 -0
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +1056 -0
- package/.aios-core/infrastructure/scripts/yaml-validator.js +397 -0
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -0
- package/.aios-core/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +182 -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 -0
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -0
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -0
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -0
- 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/project-status-loader.test.js +394 -0
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -0
- package/.aios-core/infrastructure/tests/utilities-audit-results.json +501 -0
- package/.aios-core/infrastructure/tests/validate-module.js +97 -0
- package/.aios-core/infrastructure/tools/README.md +222 -0
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -0
- package/.aios-core/infrastructure/tools/cli/llm-routing.yaml +126 -0
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -0
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -0
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -0
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -0
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -0
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -0
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -0
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -0
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -0
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -0
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -0
- package/.aios-core/install-manifest.yaml +347 -0
- package/.aios-core/manifests/agents.csv +1 -0
- package/.aios-core/manifests/schema/manifest-schema.json +190 -0
- package/.aios-core/manifests/tasks.csv +121 -0
- package/.aios-core/manifests/workers.csv +204 -0
- package/.aios-core/package.json +103 -0
- package/.aios-core/product/README.md +56 -0
- package/.aios-core/product/checklists/architect-checklist.md +444 -0
- package/.aios-core/product/checklists/change-checklist.md +183 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -0
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -0
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -0
- package/.aios-core/product/checklists/pm-checklist.md +376 -0
- package/.aios-core/product/checklists/po-master-checklist.md +442 -0
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -0
- package/.aios-core/product/checklists/release-checklist.md +122 -0
- package/.aios-core/product/checklists/story-dod-checklist.md +102 -0
- package/.aios-core/product/checklists/story-draft-checklist.md +216 -0
- package/.aios-core/product/data/brainstorming-techniques.md +37 -0
- package/.aios-core/product/data/elicitation-methods.md +135 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -0
- package/.aios-core/product/data/test-levels-framework.md +149 -0
- package/.aios-core/product/data/test-priorities-matrix.md +175 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -0
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -0
- package/.aios-core/product/templates/activation-instructions-template.md +258 -0
- package/.aios-core/product/templates/adr.hbs +125 -0
- package/.aios-core/product/templates/agent-template.yaml +121 -0
- package/.aios-core/product/templates/architecture-tmpl.yaml +651 -0
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +156 -0
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +476 -0
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +280 -0
- package/.aios-core/product/templates/changelog-template.md +134 -0
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -0
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +293 -0
- package/.aios-core/product/templates/component-react-tmpl.tsx +98 -0
- package/.aios-core/product/templates/dbdr.hbs +241 -0
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -0
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -0
- package/.aios-core/product/templates/engine/elicitation.js +298 -0
- package/.aios-core/product/templates/engine/index.js +308 -0
- package/.aios-core/product/templates/engine/loader.js +231 -0
- package/.aios-core/product/templates/engine/renderer.js +343 -0
- package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -0
- package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -0
- package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -0
- package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -0
- package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -0
- package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -0
- package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -0
- package/.aios-core/product/templates/engine/validator.js +294 -0
- package/.aios-core/product/templates/epic.hbs +212 -0
- package/.aios-core/product/templates/eslintrc-security.json +32 -0
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +206 -0
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +349 -0
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +805 -0
- package/.aios-core/product/templates/github-actions-cd.yml +212 -0
- package/.aios-core/product/templates/github-actions-ci.yml +172 -0
- package/.aios-core/product/templates/github-pr-template.md +67 -0
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -0
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -0
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -0
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -0
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -0
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -0
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -0
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -0
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -0
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -0
- package/.aios-core/product/templates/market-research-tmpl.yaml +252 -0
- package/.aios-core/product/templates/mcp-workflow.js +271 -0
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -0
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -0
- package/.aios-core/product/templates/personalized-agent-template.md +258 -0
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -0
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -0
- package/.aios-core/product/templates/personalized-task-template.md +344 -0
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -0
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -0
- package/.aios-core/product/templates/pmdr.hbs +186 -0
- package/.aios-core/product/templates/prd-tmpl.yaml +202 -0
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -0
- package/.aios-core/product/templates/prd.hbs +201 -0
- package/.aios-core/product/templates/project-brief-tmpl.yaml +221 -0
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -0
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -0
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -0
- package/.aios-core/product/templates/shock-report-tmpl.html +502 -0
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -0
- package/.aios-core/product/templates/story-tmpl.yaml +332 -0
- package/.aios-core/product/templates/story.hbs +263 -0
- package/.aios-core/product/templates/task-execution-report.md +495 -0
- package/.aios-core/product/templates/task-template.md +123 -0
- package/.aios-core/product/templates/task.hbs +170 -0
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -0
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -0
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -0
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -0
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -0
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -0
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -0
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -0
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -0
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -0
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -0
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -0
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -0
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -0
- package/.aios-core/product/templates/tmpl-view.sql +177 -0
- package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -0
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -0
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -0
- package/.aios-core/product/templates/workflow-template.yaml +134 -0
- package/.aios-core/quality/metrics-collector.js +572 -0
- package/.aios-core/quality/metrics-hook.js +260 -0
- package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -0
- package/.aios-core/quality/seed-metrics.js +336 -0
- package/.aios-core/scripts/README.md +354 -0
- package/.aios-core/scripts/aios-doc-template.md +325 -0
- package/.aios-core/scripts/batch-migrate-phase1.ps1 +36 -0
- package/.aios-core/scripts/batch-migrate-phase2.ps1 +88 -0
- package/.aios-core/scripts/batch-migrate-phase3.ps1 +45 -0
- package/.aios-core/scripts/command-execution-hook.js +201 -0
- package/.aios-core/scripts/context-detector.js +226 -0
- package/.aios-core/scripts/elicitation-engine.js +385 -0
- package/.aios-core/scripts/elicitation-session-manager.js +300 -0
- package/.aios-core/scripts/migrate-framework-docs.sh +300 -0
- package/.aios-core/scripts/session-context-loader.js +286 -0
- package/.aios-core/scripts/test-template-system.js +941 -0
- package/.aios-core/scripts/validate-phase1.ps1 +35 -0
- package/.aios-core/scripts/workflow-management.md +69 -0
- package/.aios-core/tasks/find-component.md.legacy +391 -0
- package/.aios-core/tasks/generate-commit-message.md.legacy +426 -0
- package/.aios-core/tasks/generate-migration.md.legacy +382 -0
- package/.aios-core/tasks/rollback-modification.md.legacy +307 -0
- package/.aios-core/tasks/update-tests.md.legacy +283 -0
- package/.aios-core/user-guide.md +1413 -0
- package/.aios-core/working-in-the-brownfield.md +361 -0
- package/.claude/CLAUDE.md +221 -0
- package/LICENSE +48 -0
- package/README.md +703 -0
- package/bin/aios-init-old.js +532 -0
- package/bin/aios-init-v4.js +390 -0
- package/bin/aios-init.backup-v1.1.4.js +352 -0
- package/bin/aios-init.js +736 -0
- package/bin/aios-minimal.js +26 -0
- package/bin/aios.js +279 -0
- package/bin/migrate-pm-config.js +219 -0
- package/bin/modules/env-config.js +436 -0
- package/bin/modules/mcp-installer.js +383 -0
- package/bin/utils/install-errors.js +339 -0
- package/bin/utils/install-transaction.js +445 -0
- package/index.d.ts +19 -0
- package/index.esm.js +21 -0
- package/index.js +94 -0
- package/package.json +161 -0
- package/packages/installer/package.json +39 -0
- package/packages/installer/src/config/configure-environment.js +312 -0
- package/packages/installer/src/config/templates/core-config-template.js +183 -0
- package/packages/installer/src/config/templates/env-template.js +127 -0
- package/packages/installer/src/config/validation/config-validator.js +243 -0
- package/packages/installer/src/detection/detect-project-type.js +81 -0
- package/packages/installer/src/wizard/wizard.js +244 -0
- package/packages/installer/tests/integration/environment-configuration.test.js +328 -0
- package/packages/installer/tests/integration/wizard-detection.test.js +349 -0
- package/packages/installer/tests/unit/config-validator.test.js +315 -0
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +401 -0
- package/packages/installer/tests/unit/env-template.test.js +185 -0
- package/src/config/ide-configs.js +189 -0
- package/src/installer/aios-core-installer.js +319 -0
- package/src/installer/dependency-installer.js +335 -0
- package/src/utils/aios-colors.js +234 -0
- package/src/wizard/feedback.js +218 -0
- package/src/wizard/ide-config-generator.js +488 -0
- package/src/wizard/ide-selector.js +84 -0
- package/src/wizard/index.js +589 -0
- package/src/wizard/questions.js +249 -0
- package/src/wizard/validation/index.js +120 -0
- package/src/wizard/validation/report-generator.js +269 -0
- package/src/wizard/validation/troubleshooting-system.js +346 -0
- package/src/wizard/validation/validators/config-validator.js +362 -0
- package/src/wizard/validation/validators/dependency-validator.js +333 -0
- package/src/wizard/validation/validators/file-structure-validator.js +181 -0
- package/src/wizard/validation/validators/mcp-health-checker.js +310 -0
- package/src/wizard/validators.js +274 -0
- package/templates/squad/LICENSE +21 -0
- package/templates/squad/README.md +37 -0
- package/templates/squad/agents/example-agent.yaml +36 -0
- package/templates/squad/package.json +19 -0
- package/templates/squad/squad.yaml +25 -0
- package/templates/squad/tasks/example-task.yaml +46 -0
- package/templates/squad/templates/example-template.md +24 -0
- package/templates/squad/tests/example-agent.test.js +53 -0
- package/templates/squad/workflows/example-workflow.yaml +54 -0
- package/tools/package-builder.js +35 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Search Module
|
|
3
|
+
*
|
|
4
|
+
* Implements semantic search using OpenAI embeddings for intelligent
|
|
5
|
+
* similarity matching based on meaning, not just keywords.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/commands/workers/search-semantic
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @story 2.7 - Discovery CLI Search
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const path = require('path');
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
|
|
15
|
+
// Registry loader
|
|
16
|
+
const { getRegistry } = require('../../../core/registry/registry-loader');
|
|
17
|
+
|
|
18
|
+
// Cache for embeddings
|
|
19
|
+
let embeddingsCache = null;
|
|
20
|
+
let embeddingsCacheTimestamp = 0;
|
|
21
|
+
const EMBEDDINGS_CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
22
|
+
|
|
23
|
+
// Configurable timeouts and rate limits
|
|
24
|
+
const OPENAI_REQUEST_TIMEOUT_MS = parseInt(process.env.OPENAI_REQUEST_TIMEOUT_MS) || 10000; // 10s default
|
|
25
|
+
const RATE_LIMIT_DELAY_MS = parseInt(process.env.RATE_LIMIT_DELAY_MS) || 600; // 600ms for 100 RPM (Free tier)
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Check if semantic search is available
|
|
29
|
+
* @returns {boolean} True if OPENAI_API_KEY is set
|
|
30
|
+
*/
|
|
31
|
+
function isSemanticAvailable() {
|
|
32
|
+
return !!process.env.OPENAI_API_KEY;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get OpenAI embeddings for text
|
|
37
|
+
* @param {string} text - Text to embed
|
|
38
|
+
* @returns {Promise<number[]>} Embedding vector
|
|
39
|
+
*/
|
|
40
|
+
async function getEmbedding(text) {
|
|
41
|
+
const apiKey = process.env.OPENAI_API_KEY;
|
|
42
|
+
|
|
43
|
+
if (!apiKey) {
|
|
44
|
+
throw new Error('OPENAI_API_KEY not set');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Create AbortController for timeout
|
|
48
|
+
const controller = new AbortController();
|
|
49
|
+
const timeoutId = setTimeout(() => controller.abort(), OPENAI_REQUEST_TIMEOUT_MS);
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
const response = await fetch('https://api.openai.com/v1/embeddings', {
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: {
|
|
55
|
+
'Content-Type': 'application/json',
|
|
56
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
57
|
+
},
|
|
58
|
+
body: JSON.stringify({
|
|
59
|
+
model: 'text-embedding-3-small',
|
|
60
|
+
input: text,
|
|
61
|
+
}),
|
|
62
|
+
signal: controller.signal,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
clearTimeout(timeoutId);
|
|
66
|
+
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
// Handle rate limiting with Retry-After header
|
|
69
|
+
if (response.status === 429) {
|
|
70
|
+
const retryAfter = response.headers.get('Retry-After');
|
|
71
|
+
throw new Error(`OpenAI rate limit exceeded. Retry after ${retryAfter || 'a few'} seconds.`);
|
|
72
|
+
}
|
|
73
|
+
const error = await response.json().catch(() => ({ error: { message: 'Unknown error' } }));
|
|
74
|
+
throw new Error(`OpenAI API error: ${error.error?.message || response.statusText}`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const data = await response.json();
|
|
78
|
+
return data.data[0].embedding;
|
|
79
|
+
} catch (error) {
|
|
80
|
+
clearTimeout(timeoutId);
|
|
81
|
+
if (error.name === 'AbortError') {
|
|
82
|
+
throw new Error(`OpenAI request timed out after ${OPENAI_REQUEST_TIMEOUT_MS}ms`);
|
|
83
|
+
}
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Calculate cosine similarity between two vectors
|
|
90
|
+
* @param {number[]} a - First vector
|
|
91
|
+
* @param {number[]} b - Second vector
|
|
92
|
+
* @returns {number} Similarity score (0-1)
|
|
93
|
+
*/
|
|
94
|
+
function cosineSimilarity(a, b) {
|
|
95
|
+
if (a.length !== b.length) {
|
|
96
|
+
throw new Error('Vectors must have same length');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
let dotProduct = 0;
|
|
100
|
+
let normA = 0;
|
|
101
|
+
let normB = 0;
|
|
102
|
+
|
|
103
|
+
for (let i = 0; i < a.length; i++) {
|
|
104
|
+
dotProduct += a[i] * b[i];
|
|
105
|
+
normA += a[i] * a[i];
|
|
106
|
+
normB += b[i] * b[i];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (normA === 0 || normB === 0) return 0;
|
|
110
|
+
|
|
111
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Load or generate worker embeddings
|
|
116
|
+
* @returns {Promise<Map<string, {worker: object, embedding: number[]}>>}
|
|
117
|
+
*/
|
|
118
|
+
async function loadWorkerEmbeddings() {
|
|
119
|
+
const now = Date.now();
|
|
120
|
+
|
|
121
|
+
// Return cached if valid
|
|
122
|
+
if (embeddingsCache && (now - embeddingsCacheTimestamp) < EMBEDDINGS_CACHE_TTL) {
|
|
123
|
+
return embeddingsCache;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Check for pre-computed embeddings file
|
|
127
|
+
const embeddingsPath = path.join(
|
|
128
|
+
process.cwd(),
|
|
129
|
+
'.aios-core/core/registry/worker-embeddings.json',
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
if (fs.existsSync(embeddingsPath)) {
|
|
133
|
+
try {
|
|
134
|
+
const data = JSON.parse(fs.readFileSync(embeddingsPath, 'utf8'));
|
|
135
|
+
embeddingsCache = new Map(Object.entries(data.embeddings));
|
|
136
|
+
embeddingsCacheTimestamp = now;
|
|
137
|
+
return embeddingsCache;
|
|
138
|
+
} catch (error) {
|
|
139
|
+
console.warn('Warning: Could not load pre-computed embeddings, will compute on-the-fly');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Load registry and compute embeddings on-the-fly
|
|
144
|
+
const registry = getRegistry();
|
|
145
|
+
const workers = await registry.getAll();
|
|
146
|
+
|
|
147
|
+
embeddingsCache = new Map();
|
|
148
|
+
|
|
149
|
+
// For performance, we'll batch the first N workers
|
|
150
|
+
// In production, embeddings should be pre-computed
|
|
151
|
+
const maxWorkersToEmbed = 50; // Limit for on-the-fly computation
|
|
152
|
+
const workersToEmbed = workers.slice(0, maxWorkersToEmbed);
|
|
153
|
+
|
|
154
|
+
for (const worker of workersToEmbed) {
|
|
155
|
+
const text = buildSearchText(worker);
|
|
156
|
+
try {
|
|
157
|
+
const embedding = await getEmbedding(text);
|
|
158
|
+
embeddingsCache.set(worker.id, { worker, embedding });
|
|
159
|
+
} catch (error) {
|
|
160
|
+
// Skip workers that fail embedding
|
|
161
|
+
console.warn(`Warning: Could not embed worker ${worker.id}: ${error.message}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Add remaining workers without embeddings (will use keyword fallback)
|
|
166
|
+
for (let i = maxWorkersToEmbed; i < workers.length; i++) {
|
|
167
|
+
embeddingsCache.set(workers[i].id, { worker: workers[i], embedding: null });
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
embeddingsCacheTimestamp = now;
|
|
171
|
+
return embeddingsCache;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Build searchable text from worker
|
|
176
|
+
* @param {object} worker - Worker object
|
|
177
|
+
* @returns {string} Concatenated search text
|
|
178
|
+
*/
|
|
179
|
+
function buildSearchText(worker) {
|
|
180
|
+
return [
|
|
181
|
+
worker.name,
|
|
182
|
+
worker.description,
|
|
183
|
+
worker.category,
|
|
184
|
+
worker.subcategory || '',
|
|
185
|
+
...(worker.tags || []),
|
|
186
|
+
...(worker.inputs || []),
|
|
187
|
+
...(worker.outputs || []),
|
|
188
|
+
].filter(Boolean).join(' ');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Perform semantic search
|
|
193
|
+
* @param {string} query - Search query
|
|
194
|
+
* @returns {Promise<Array<{worker: object, score: number}>>} Search results with scores
|
|
195
|
+
*/
|
|
196
|
+
async function searchSemantic(query) {
|
|
197
|
+
// Get query embedding
|
|
198
|
+
const queryEmbedding = await getEmbedding(query);
|
|
199
|
+
|
|
200
|
+
// Load worker embeddings
|
|
201
|
+
const workerEmbeddings = await loadWorkerEmbeddings();
|
|
202
|
+
|
|
203
|
+
const results = [];
|
|
204
|
+
|
|
205
|
+
for (const [id, data] of workerEmbeddings) {
|
|
206
|
+
if (data.embedding) {
|
|
207
|
+
// Calculate semantic similarity
|
|
208
|
+
const similarity = cosineSimilarity(queryEmbedding, data.embedding);
|
|
209
|
+
const score = Math.round(similarity * 100);
|
|
210
|
+
|
|
211
|
+
// Only include results with reasonable similarity
|
|
212
|
+
if (score >= 20) {
|
|
213
|
+
results.push({
|
|
214
|
+
...data.worker,
|
|
215
|
+
score: score,
|
|
216
|
+
matchType: 'semantic',
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
} else {
|
|
220
|
+
// Fallback to simple text matching for workers without embeddings
|
|
221
|
+
const searchText = buildSearchText(data.worker).toLowerCase();
|
|
222
|
+
if (searchText.includes(query.toLowerCase())) {
|
|
223
|
+
results.push({
|
|
224
|
+
...data.worker,
|
|
225
|
+
score: 50, // Default score for keyword matches
|
|
226
|
+
matchType: 'keyword-fallback',
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return results;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Pre-compute and save embeddings for all workers
|
|
237
|
+
* @returns {Promise<void>}
|
|
238
|
+
*/
|
|
239
|
+
async function precomputeEmbeddings() {
|
|
240
|
+
console.log('Pre-computing embeddings for all workers...');
|
|
241
|
+
|
|
242
|
+
const registry = getRegistry();
|
|
243
|
+
const workers = await registry.getAll();
|
|
244
|
+
|
|
245
|
+
const embeddings = {};
|
|
246
|
+
let computed = 0;
|
|
247
|
+
let failed = 0;
|
|
248
|
+
|
|
249
|
+
for (const worker of workers) {
|
|
250
|
+
const text = buildSearchText(worker);
|
|
251
|
+
try {
|
|
252
|
+
const embedding = await getEmbedding(text);
|
|
253
|
+
embeddings[worker.id] = { worker, embedding };
|
|
254
|
+
computed++;
|
|
255
|
+
process.stdout.write(`\rComputed: ${computed}/${workers.length}`);
|
|
256
|
+
} catch (error) {
|
|
257
|
+
failed++;
|
|
258
|
+
console.warn(`\nWarning: Failed to embed ${worker.id}: ${error.message}`);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Rate limiting - OpenAI Free tier allows 100 RPM, so 600ms delay
|
|
262
|
+
// Configurable via RATE_LIMIT_DELAY_MS environment variable
|
|
263
|
+
await new Promise(resolve => setTimeout(resolve, RATE_LIMIT_DELAY_MS));
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
console.log(`\nEmbeddings computed: ${computed}, failed: ${failed}`);
|
|
267
|
+
|
|
268
|
+
// Save to file
|
|
269
|
+
const embeddingsPath = path.join(
|
|
270
|
+
process.cwd(),
|
|
271
|
+
'.aios-core/core/registry/worker-embeddings.json',
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
const data = {
|
|
275
|
+
version: '1.0.0',
|
|
276
|
+
generated: new Date().toISOString(),
|
|
277
|
+
model: 'text-embedding-3-small',
|
|
278
|
+
count: computed,
|
|
279
|
+
embeddings: embeddings,
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
fs.writeFileSync(embeddingsPath, JSON.stringify(data, null, 2));
|
|
283
|
+
console.log(`Saved embeddings to: ${embeddingsPath}`);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
module.exports = {
|
|
287
|
+
isSemanticAvailable,
|
|
288
|
+
searchSemantic,
|
|
289
|
+
getEmbedding,
|
|
290
|
+
cosineSimilarity,
|
|
291
|
+
precomputeEmbeddings,
|
|
292
|
+
buildSearchText,
|
|
293
|
+
};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Command - Main entry point for worker search
|
|
3
|
+
*
|
|
4
|
+
* Implements `aios workers search <query>` CLI command.
|
|
5
|
+
* Supports semantic search (OpenAI embeddings) and keyword fallback.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/commands/workers/search
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @story 2.7 - Discovery CLI Search
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const { Command } = require('commander');
|
|
13
|
+
const path = require('path');
|
|
14
|
+
|
|
15
|
+
// Local modules
|
|
16
|
+
const { searchSemantic, isSemanticAvailable } = require('./search-semantic');
|
|
17
|
+
const { searchKeyword } = require('./search-keyword');
|
|
18
|
+
const { applyFilters } = require('./search-filters');
|
|
19
|
+
const { formatOutput } = require('../../utils/output-formatter-cli');
|
|
20
|
+
const { calculateScores, sortByScore } = require('../../utils/score-calculator');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Create the search command
|
|
24
|
+
* @returns {Command} Commander command instance
|
|
25
|
+
*/
|
|
26
|
+
function createSearchCommand() {
|
|
27
|
+
const search = new Command('search');
|
|
28
|
+
|
|
29
|
+
search
|
|
30
|
+
.description('Search for workers in the service registry')
|
|
31
|
+
.argument('<query>', 'Search query (words, phrases, or patterns)')
|
|
32
|
+
.option('-c, --category <category>', 'Filter by category')
|
|
33
|
+
.option('-t, --tags <tags>', 'Filter by tags (comma-separated)')
|
|
34
|
+
.option('-f, --format <format>', 'Output format: table, json, yaml', 'table')
|
|
35
|
+
.option('-l, --limit <n>', 'Max results', '10')
|
|
36
|
+
.option('--semantic', 'Force semantic search (requires OPENAI_API_KEY)')
|
|
37
|
+
.option('--keyword', 'Force keyword search')
|
|
38
|
+
.option('-v, --verbose', 'Show verbose output')
|
|
39
|
+
.addHelpText('after', `
|
|
40
|
+
Examples:
|
|
41
|
+
$ aios workers search "json csv"
|
|
42
|
+
$ aios workers search "data transformation" --category=etl
|
|
43
|
+
$ aios workers search "validation" --tags=schema,json
|
|
44
|
+
$ aios workers search "api" --format=json --limit=5
|
|
45
|
+
$ aios workers search "transform" --semantic
|
|
46
|
+
$ aios workers search "convert" --keyword
|
|
47
|
+
`)
|
|
48
|
+
.action(executeSearch);
|
|
49
|
+
|
|
50
|
+
return search;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Execute the search command
|
|
55
|
+
* @param {string} query - Search query
|
|
56
|
+
* @param {object} options - Command options
|
|
57
|
+
*/
|
|
58
|
+
async function executeSearch(query, options) {
|
|
59
|
+
const startTime = Date.now();
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
// Validate query
|
|
63
|
+
if (!query || query.trim().length === 0) {
|
|
64
|
+
console.error('Error: Search query cannot be empty');
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const trimmedQuery = query.trim();
|
|
69
|
+
const limit = parseInt(options.limit, 10) || 10;
|
|
70
|
+
const tags = options.tags ? options.tags.split(',').map(t => t.trim()) : [];
|
|
71
|
+
|
|
72
|
+
if (options.verbose) {
|
|
73
|
+
console.log(`Searching for: "${trimmedQuery}"`);
|
|
74
|
+
if (options.category) console.log(` Category filter: ${options.category}`);
|
|
75
|
+
if (tags.length > 0) console.log(` Tag filters: ${tags.join(', ')}`);
|
|
76
|
+
console.log(` Output format: ${options.format}`);
|
|
77
|
+
console.log(` Limit: ${limit}`);
|
|
78
|
+
console.log('');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Determine search strategy
|
|
82
|
+
let results;
|
|
83
|
+
let searchMethod;
|
|
84
|
+
|
|
85
|
+
if (options.keyword) {
|
|
86
|
+
// Force keyword search
|
|
87
|
+
searchMethod = 'keyword';
|
|
88
|
+
results = await searchKeyword(trimmedQuery);
|
|
89
|
+
} else if (options.semantic) {
|
|
90
|
+
// Force semantic search
|
|
91
|
+
if (!isSemanticAvailable()) {
|
|
92
|
+
console.error('Error: Semantic search requires OPENAI_API_KEY environment variable');
|
|
93
|
+
console.log('Hint: Set OPENAI_API_KEY or use --keyword for fallback search');
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
searchMethod = 'semantic';
|
|
97
|
+
results = await searchSemantic(trimmedQuery);
|
|
98
|
+
} else {
|
|
99
|
+
// Auto-detect: use semantic if available, otherwise keyword
|
|
100
|
+
if (isSemanticAvailable()) {
|
|
101
|
+
searchMethod = 'semantic';
|
|
102
|
+
results = await searchSemantic(trimmedQuery);
|
|
103
|
+
} else {
|
|
104
|
+
searchMethod = 'keyword';
|
|
105
|
+
results = await searchKeyword(trimmedQuery);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Apply filters
|
|
110
|
+
results = applyFilters(results, {
|
|
111
|
+
category: options.category,
|
|
112
|
+
tags: tags,
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Calculate and sort by scores
|
|
116
|
+
results = calculateScores(results, trimmedQuery);
|
|
117
|
+
results = sortByScore(results);
|
|
118
|
+
|
|
119
|
+
// Apply limit
|
|
120
|
+
results = results.slice(0, limit);
|
|
121
|
+
|
|
122
|
+
// Calculate duration
|
|
123
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
124
|
+
|
|
125
|
+
// Format and output results
|
|
126
|
+
const output = formatOutput(results, {
|
|
127
|
+
format: options.format,
|
|
128
|
+
query: trimmedQuery,
|
|
129
|
+
duration: duration,
|
|
130
|
+
searchMethod: searchMethod,
|
|
131
|
+
verbose: options.verbose,
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
console.log(output);
|
|
135
|
+
|
|
136
|
+
// Performance check
|
|
137
|
+
const durationMs = Date.now() - startTime;
|
|
138
|
+
if (durationMs > 30000) {
|
|
139
|
+
console.warn(`\nWarning: Search took ${(durationMs / 1000).toFixed(1)}s (target: < 30s)`);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
} catch (error) {
|
|
143
|
+
console.error(`Search error: ${error.message}`);
|
|
144
|
+
if (options.verbose) {
|
|
145
|
+
console.error(error.stack);
|
|
146
|
+
}
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
module.exports = {
|
|
152
|
+
createSearchCommand,
|
|
153
|
+
executeSearch,
|
|
154
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination Utility
|
|
3
|
+
*
|
|
4
|
+
* Handles pagination logic for CLI list commands.
|
|
5
|
+
*
|
|
6
|
+
* @module cli/commands/workers/utils/pagination
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @story 2.8-2.9 - Discovery CLI Info & List
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Default pagination options
|
|
13
|
+
*/
|
|
14
|
+
const DEFAULT_PAGE_SIZE = 20;
|
|
15
|
+
const MAX_PAGE_SIZE = 100;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Paginate an array of items
|
|
19
|
+
* @param {Array} items - Items to paginate
|
|
20
|
+
* @param {object} options - Pagination options
|
|
21
|
+
* @param {number} options.page - Page number (1-based)
|
|
22
|
+
* @param {number} options.limit - Items per page
|
|
23
|
+
* @returns {object} Paginated result
|
|
24
|
+
*/
|
|
25
|
+
function paginate(items, options = {}) {
|
|
26
|
+
const page = Math.max(1, parseInt(options.page, 10) || 1);
|
|
27
|
+
const limit = Math.min(
|
|
28
|
+
MAX_PAGE_SIZE,
|
|
29
|
+
Math.max(1, parseInt(options.limit, 10) || DEFAULT_PAGE_SIZE),
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const totalItems = items.length;
|
|
33
|
+
const totalPages = Math.ceil(totalItems / limit);
|
|
34
|
+
const startIndex = (page - 1) * limit;
|
|
35
|
+
const endIndex = Math.min(startIndex + limit, totalItems);
|
|
36
|
+
|
|
37
|
+
const paginatedItems = items.slice(startIndex, endIndex);
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
items: paginatedItems,
|
|
41
|
+
pagination: {
|
|
42
|
+
page,
|
|
43
|
+
limit,
|
|
44
|
+
totalItems,
|
|
45
|
+
totalPages,
|
|
46
|
+
startIndex: startIndex + 1, // 1-based for display
|
|
47
|
+
endIndex,
|
|
48
|
+
hasNextPage: page < totalPages,
|
|
49
|
+
hasPrevPage: page > 1,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Format pagination info for display
|
|
56
|
+
* @param {object} pagination - Pagination object from paginate()
|
|
57
|
+
* @returns {string} Formatted pagination text
|
|
58
|
+
*/
|
|
59
|
+
function formatPaginationInfo(pagination) {
|
|
60
|
+
const { startIndex, endIndex, totalItems, page, totalPages } = pagination;
|
|
61
|
+
|
|
62
|
+
if (totalItems === 0) {
|
|
63
|
+
return 'No items found.';
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (totalPages === 1) {
|
|
67
|
+
return `Showing all ${totalItems} items.`;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return `Showing ${startIndex}-${endIndex} of ${totalItems} items (page ${page}/${totalPages})`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Format pagination navigation hint
|
|
75
|
+
* @param {object} pagination - Pagination object
|
|
76
|
+
* @returns {string} Navigation hint text
|
|
77
|
+
*/
|
|
78
|
+
function formatPaginationHint(pagination) {
|
|
79
|
+
const hints = [];
|
|
80
|
+
|
|
81
|
+
if (pagination.hasPrevPage) {
|
|
82
|
+
hints.push(`--page=${pagination.page - 1} for previous`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (pagination.hasNextPage) {
|
|
86
|
+
hints.push(`--page=${pagination.page + 1} for next`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (hints.length === 0) {
|
|
90
|
+
return '';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return `Use ${hints.join(', ')}.`;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
module.exports = {
|
|
97
|
+
paginate,
|
|
98
|
+
formatPaginationInfo,
|
|
99
|
+
formatPaginationHint,
|
|
100
|
+
DEFAULT_PAGE_SIZE,
|
|
101
|
+
MAX_PAGE_SIZE,
|
|
102
|
+
};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AIOS CLI Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for the AIOS CLI with Commander.js integration.
|
|
5
|
+
* Registers all subcommands including workers, agents, etc.
|
|
6
|
+
*
|
|
7
|
+
* @module cli
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @story 2.7 - Discovery CLI Search
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const { Command } = require('commander');
|
|
13
|
+
const path = require('path');
|
|
14
|
+
const fs = require('fs');
|
|
15
|
+
|
|
16
|
+
// Import command modules
|
|
17
|
+
const { createWorkersCommand } = require('./commands/workers');
|
|
18
|
+
const { createManifestCommand } = require('./commands/manifest');
|
|
19
|
+
const { createQaCommand } = require('./commands/qa');
|
|
20
|
+
const { createMcpCommand } = require('./commands/mcp');
|
|
21
|
+
const { createMigrateCommand } = require('./commands/migrate');
|
|
22
|
+
const { createGenerateCommand } = require('./commands/generate');
|
|
23
|
+
const { createMetricsCommand } = require('./commands/metrics');
|
|
24
|
+
|
|
25
|
+
// Read package.json for version
|
|
26
|
+
const packageJsonPath = path.join(__dirname, '..', '..', 'package.json');
|
|
27
|
+
let packageVersion = '0.0.0';
|
|
28
|
+
try {
|
|
29
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
30
|
+
packageVersion = packageJson.version;
|
|
31
|
+
} catch (error) {
|
|
32
|
+
// Fallback version if package.json not found
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Create the main CLI program
|
|
37
|
+
* @returns {Command} Commander program instance
|
|
38
|
+
*/
|
|
39
|
+
function createProgram() {
|
|
40
|
+
const program = new Command();
|
|
41
|
+
|
|
42
|
+
program
|
|
43
|
+
.name('aios')
|
|
44
|
+
.version(packageVersion)
|
|
45
|
+
.description('AIOS-FullStack: AI-Orchestrated System for Full Stack Development')
|
|
46
|
+
.addHelpText('after', `
|
|
47
|
+
Commands:
|
|
48
|
+
workers Manage and discover workers
|
|
49
|
+
manifest Manage manifest files (validate, regenerate)
|
|
50
|
+
qa Quality Gate Manager (run, status)
|
|
51
|
+
metrics Quality Gate Metrics (record, show, seed, cleanup)
|
|
52
|
+
mcp Manage global MCP configuration
|
|
53
|
+
migrate Migrate from v2.0 to v2.1 structure
|
|
54
|
+
generate Generate documents from templates (prd, adr, pmdr, etc.)
|
|
55
|
+
install Install AIOS in current project
|
|
56
|
+
init <name> Create new AIOS project
|
|
57
|
+
info Show system information
|
|
58
|
+
doctor Run system diagnostics
|
|
59
|
+
|
|
60
|
+
For command help:
|
|
61
|
+
$ aios <command> --help
|
|
62
|
+
|
|
63
|
+
Examples:
|
|
64
|
+
$ aios workers search "json transformation"
|
|
65
|
+
$ aios workers list --category=data
|
|
66
|
+
$ aios manifest validate
|
|
67
|
+
$ aios manifest regenerate
|
|
68
|
+
$ aios qa run
|
|
69
|
+
$ aios qa status
|
|
70
|
+
$ aios mcp setup --with-defaults
|
|
71
|
+
$ aios mcp link
|
|
72
|
+
$ aios mcp status
|
|
73
|
+
$ aios metrics show
|
|
74
|
+
$ aios metrics record --layer 1 --passed
|
|
75
|
+
$ aios metrics seed --days 30
|
|
76
|
+
$ aios migrate --dry-run
|
|
77
|
+
$ aios migrate --from=2.0 --to=2.1
|
|
78
|
+
$ aios generate pmdr --title "Feature X Decision"
|
|
79
|
+
$ aios generate adr --save
|
|
80
|
+
$ aios generate list
|
|
81
|
+
$ aios install
|
|
82
|
+
$ aios doctor
|
|
83
|
+
`);
|
|
84
|
+
|
|
85
|
+
// Add workers command
|
|
86
|
+
program.addCommand(createWorkersCommand());
|
|
87
|
+
|
|
88
|
+
// Add manifest command (Story 2.13)
|
|
89
|
+
program.addCommand(createManifestCommand());
|
|
90
|
+
|
|
91
|
+
// Add qa command (Story 2.10)
|
|
92
|
+
program.addCommand(createQaCommand());
|
|
93
|
+
|
|
94
|
+
// Add mcp command (Story 2.11)
|
|
95
|
+
program.addCommand(createMcpCommand());
|
|
96
|
+
|
|
97
|
+
// Add migrate command (Story 2.14)
|
|
98
|
+
program.addCommand(createMigrateCommand());
|
|
99
|
+
|
|
100
|
+
// Add generate command (Story 3.9)
|
|
101
|
+
program.addCommand(createGenerateCommand());
|
|
102
|
+
|
|
103
|
+
// Add metrics command (Story 3.11a)
|
|
104
|
+
program.addCommand(createMetricsCommand());
|
|
105
|
+
|
|
106
|
+
return program;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Run the CLI
|
|
111
|
+
* @param {string[]} args - Command line arguments
|
|
112
|
+
* @returns {Promise<void>}
|
|
113
|
+
*/
|
|
114
|
+
async function run(args = process.argv) {
|
|
115
|
+
const program = createProgram();
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
await program.parseAsync(args);
|
|
119
|
+
} catch (error) {
|
|
120
|
+
console.error(`Error: ${error.message}`);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
module.exports = {
|
|
126
|
+
createProgram,
|
|
127
|
+
run,
|
|
128
|
+
};
|