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,126 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fast Framework Utilities Audit Script
|
|
5
|
+
*
|
|
6
|
+
* Quick scan version that skips slow integration counting during initial pass
|
|
7
|
+
* Usage: node test-utilities-fast.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
|
|
13
|
+
const utilsDir = path.join(__dirname);
|
|
14
|
+
let results = [];
|
|
15
|
+
let utilities = [];
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Quick test - just try to require and see what happens
|
|
19
|
+
*/
|
|
20
|
+
function quickTest(utilityFile) {
|
|
21
|
+
const utilityPath = path.join(utilsDir, utilityFile);
|
|
22
|
+
const result = {
|
|
23
|
+
name: utilityFile,
|
|
24
|
+
status: 'UNKNOWN',
|
|
25
|
+
loadable: false,
|
|
26
|
+
exports: [],
|
|
27
|
+
errors: [],
|
|
28
|
+
recommendation: '',
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
// Suppress console output during require
|
|
33
|
+
const originalLog = console.log;
|
|
34
|
+
const originalError = console.error;
|
|
35
|
+
console.log = () => {};
|
|
36
|
+
console.error = () => {};
|
|
37
|
+
|
|
38
|
+
delete require.cache[require.resolve(utilityPath)];
|
|
39
|
+
const utility = require(utilityPath);
|
|
40
|
+
|
|
41
|
+
// Restore console
|
|
42
|
+
console.log = originalLog;
|
|
43
|
+
console.error = originalError;
|
|
44
|
+
|
|
45
|
+
result.loadable = true;
|
|
46
|
+
result.exports = Object.keys(utility);
|
|
47
|
+
|
|
48
|
+
if (result.exports.length > 0) {
|
|
49
|
+
result.status = 'WORKING';
|
|
50
|
+
result.recommendation = 'Functional - verify integration';
|
|
51
|
+
} else {
|
|
52
|
+
result.status = 'FIXABLE';
|
|
53
|
+
result.recommendation = 'Loads but exports nothing';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
} catch (error) {
|
|
57
|
+
// Restore console
|
|
58
|
+
console.log = console.log.bind(console);
|
|
59
|
+
console.error = console.error.bind(console);
|
|
60
|
+
|
|
61
|
+
result.errors.push(error.message);
|
|
62
|
+
|
|
63
|
+
if (error.code === 'MODULE_NOT_FOUND' || error.message.includes('Cannot find module')) {
|
|
64
|
+
result.status = 'FIXABLE';
|
|
65
|
+
result.recommendation = 'Missing dependencies - installable';
|
|
66
|
+
} else if (error.message.includes('SyntaxError')) {
|
|
67
|
+
result.status = 'DEPRECATED';
|
|
68
|
+
result.recommendation = 'Syntax errors - major rewrite needed';
|
|
69
|
+
} else {
|
|
70
|
+
result.status = 'DEPRECATED';
|
|
71
|
+
result.recommendation = 'Runtime errors - investigation needed';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Run the fast audit
|
|
80
|
+
*/
|
|
81
|
+
function runFastAudit() {
|
|
82
|
+
console.log('🔍 Fast Framework Utilities Audit Starting...\n');
|
|
83
|
+
|
|
84
|
+
// Get all .js files except test utilities
|
|
85
|
+
utilities = fs.readdirSync(utilsDir)
|
|
86
|
+
.filter(f => f.endsWith('.js') && !f.includes('test-utilities'))
|
|
87
|
+
.sort();
|
|
88
|
+
|
|
89
|
+
results = [];
|
|
90
|
+
console.log(`Found ${utilities.length} utilities to audit\n`);
|
|
91
|
+
|
|
92
|
+
// Run quick audit
|
|
93
|
+
let processed = 0;
|
|
94
|
+
for (const utility of utilities) {
|
|
95
|
+
processed++;
|
|
96
|
+
process.stdout.write(`\r[${processed}/${utilities.length}] ${utility}`.padEnd(80));
|
|
97
|
+
results.push(quickTest(utility));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
console.log('\n');
|
|
101
|
+
|
|
102
|
+
// Summary
|
|
103
|
+
const working = results.filter(r => r.status === 'WORKING');
|
|
104
|
+
const fixable = results.filter(r => r.status === 'FIXABLE');
|
|
105
|
+
const deprecated = results.filter(r => r.status === 'DEPRECATED');
|
|
106
|
+
|
|
107
|
+
console.log('\n📊 QUICK AUDIT SUMMARY\n');
|
|
108
|
+
console.log(`✅ WORKING: ${working.length} (${Math.round(working.length / utilities.length * 100)}%)`);
|
|
109
|
+
console.log(`🔧 FIXABLE: ${fixable.length} (${Math.round(fixable.length / utilities.length * 100)}%)`);
|
|
110
|
+
console.log(`🗑️ DEPRECATED: ${deprecated.length} (${Math.round(deprecated.length / utilities.length * 100)}%)`);
|
|
111
|
+
console.log(`\n📦 Total: ${utilities.length}`);
|
|
112
|
+
|
|
113
|
+
// Save results
|
|
114
|
+
const outputPath = path.join(process.cwd(), 'utilities-audit-results.json');
|
|
115
|
+
fs.writeFileSync(outputPath, JSON.stringify(results, null, 2));
|
|
116
|
+
console.log(`\n💾 Results: ${outputPath}\n`);
|
|
117
|
+
|
|
118
|
+
return { results, working: working.length, fixable: fixable.length, deprecated: deprecated.length };
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Run audit if executed directly
|
|
122
|
+
if (require.main === module) {
|
|
123
|
+
runFastAudit();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
module.exports = { runFastAudit, quickTest };
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Framework Utilities Audit Script
|
|
5
|
+
*
|
|
6
|
+
* Systematically tests all utilities in .aios-core/scripts/ and classifies them
|
|
7
|
+
* as WORKING, FIXABLE, or DEPRECATED based on their functional status.
|
|
8
|
+
*
|
|
9
|
+
* Usage: node .aios-core/scripts/test-utilities.js
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const fs = require('fs');
|
|
13
|
+
const path = require('path');
|
|
14
|
+
const { exec } = require('child_process');
|
|
15
|
+
const util = require('util');
|
|
16
|
+
const execPromise = util.promisify(exec);
|
|
17
|
+
|
|
18
|
+
const utilsDir = path.join(__dirname);
|
|
19
|
+
let results = [];
|
|
20
|
+
let utilities = [];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Count integration references for a utility
|
|
24
|
+
*/
|
|
25
|
+
async function countIntegrationReferences(utilityName) {
|
|
26
|
+
const basename = path.basename(utilityName, '.js');
|
|
27
|
+
const searchDirs = [
|
|
28
|
+
'.aios-core/agents',
|
|
29
|
+
'.aios-core/tasks',
|
|
30
|
+
'expansion-packs',
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
let totalCount = 0;
|
|
34
|
+
|
|
35
|
+
for (const dir of searchDirs) {
|
|
36
|
+
if (!fs.existsSync(dir)) continue;
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
const { stdout } = await execPromise(
|
|
40
|
+
`grep -r "${basename}" ${dir} 2>/dev/null | wc -l`,
|
|
41
|
+
{ shell: '/bin/bash' },
|
|
42
|
+
);
|
|
43
|
+
totalCount += parseInt(stdout.trim()) || 0;
|
|
44
|
+
} catch (_error) {
|
|
45
|
+
// Directory doesn't exist or grep failed - not a problem
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return totalCount;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Test a single utility
|
|
54
|
+
*/
|
|
55
|
+
async function testUtility(utilityFile) {
|
|
56
|
+
const utilityPath = path.join(utilsDir, utilityFile);
|
|
57
|
+
const result = {
|
|
58
|
+
name: utilityFile,
|
|
59
|
+
status: 'UNKNOWN',
|
|
60
|
+
loadable: false,
|
|
61
|
+
exports: [],
|
|
62
|
+
testPassed: null,
|
|
63
|
+
errors: [],
|
|
64
|
+
integrationCount: 0,
|
|
65
|
+
recommendation: '',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
// Clear require cache to ensure fresh load
|
|
70
|
+
delete require.cache[require.resolve(utilityPath)];
|
|
71
|
+
|
|
72
|
+
// Test 1: Can it be required?
|
|
73
|
+
const utility = require(utilityPath);
|
|
74
|
+
result.loadable = true;
|
|
75
|
+
|
|
76
|
+
// Test 2: Does it export functions?
|
|
77
|
+
result.exports = Object.keys(utility);
|
|
78
|
+
|
|
79
|
+
// Test 3: Can we call its test function if it exists?
|
|
80
|
+
if (typeof utility.test === 'function') {
|
|
81
|
+
try {
|
|
82
|
+
await utility.test();
|
|
83
|
+
result.testPassed = true;
|
|
84
|
+
} catch (testError) {
|
|
85
|
+
result.testPassed = false;
|
|
86
|
+
result.errors.push(`Test function failed: ${testError.message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Test 4: Count integration references
|
|
91
|
+
result.integrationCount = await countIntegrationReferences(utilityFile);
|
|
92
|
+
|
|
93
|
+
// Classify based on results
|
|
94
|
+
if (result.errors.length === 0 && result.exports.length > 0) {
|
|
95
|
+
result.status = 'WORKING';
|
|
96
|
+
result.recommendation = result.integrationCount > 0
|
|
97
|
+
? 'Keep - actively used'
|
|
98
|
+
: 'Keep but document usage';
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
} catch (_error) {
|
|
102
|
+
result.errors.push(error.message);
|
|
103
|
+
|
|
104
|
+
// Classify error type
|
|
105
|
+
if (error.code === 'MODULE_NOT_FOUND') {
|
|
106
|
+
result.status = 'FIXABLE';
|
|
107
|
+
result.recommendation = 'Install missing dependencies';
|
|
108
|
+
} else if (error.message.includes('SyntaxError')) {
|
|
109
|
+
result.status = 'DEPRECATED';
|
|
110
|
+
result.recommendation = 'Syntax errors - needs major rewrite';
|
|
111
|
+
} else if (error.message.includes('Cannot find module')) {
|
|
112
|
+
result.status = 'FIXABLE';
|
|
113
|
+
result.recommendation = 'Missing local dependencies - <4h fix';
|
|
114
|
+
} else {
|
|
115
|
+
result.status = 'DEPRECATED';
|
|
116
|
+
result.recommendation = 'Execution errors - needs investigation';
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Count integration even if broken
|
|
120
|
+
try {
|
|
121
|
+
result.integrationCount = await countIntegrationReferences(utilityFile);
|
|
122
|
+
} catch (_e) {
|
|
123
|
+
// Ignore counting errors
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Main audit execution
|
|
132
|
+
*/
|
|
133
|
+
async function runAudit() {
|
|
134
|
+
console.log('🔍 Framework Utilities Audit Starting...\n');
|
|
135
|
+
console.log(`📁 Scanning directory: ${utilsDir}\n`);
|
|
136
|
+
|
|
137
|
+
// Get all .js files except test-utilities.js itself
|
|
138
|
+
utilities = fs.readdirSync(utilsDir)
|
|
139
|
+
.filter(f => f.endsWith('.js') && f !== 'test-utilities.js')
|
|
140
|
+
.sort();
|
|
141
|
+
|
|
142
|
+
results = [];
|
|
143
|
+
console.log(`Found ${utilities.length} utilities to audit\n`);
|
|
144
|
+
console.log('=' .repeat(80));
|
|
145
|
+
|
|
146
|
+
let processed = 0;
|
|
147
|
+
|
|
148
|
+
for (const utility of utilities) {
|
|
149
|
+
processed++;
|
|
150
|
+
process.stdout.write(`\r[${processed}/${utilities.length}] Testing ${utility}...`.padEnd(80));
|
|
151
|
+
|
|
152
|
+
const result = await testUtility(utility);
|
|
153
|
+
results.push(result);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
console.log('\n');
|
|
157
|
+
console.log('=' .repeat(80));
|
|
158
|
+
|
|
159
|
+
// Generate summary
|
|
160
|
+
const working = results.filter(r => r.status === 'WORKING');
|
|
161
|
+
const fixable = results.filter(r => r.status === 'FIXABLE');
|
|
162
|
+
const deprecated = results.filter(r => r.status === 'DEPRECATED');
|
|
163
|
+
const unknown = results.filter(r => r.status === 'UNKNOWN');
|
|
164
|
+
|
|
165
|
+
console.log('\n📊 AUDIT SUMMARY\n');
|
|
166
|
+
console.log(`✅ WORKING: ${working.length} (${Math.round(working.length / utilities.length * 100)}%)`);
|
|
167
|
+
console.log(`🔧 FIXABLE: ${fixable.length} (${Math.round(fixable.length / utilities.length * 100)}%)`);
|
|
168
|
+
console.log(`🗑️ DEPRECATED: ${deprecated.length} (${Math.round(deprecated.length / utilities.length * 100)}%)`);
|
|
169
|
+
console.log(`❓ UNKNOWN: ${unknown.length} (${Math.round(unknown.length / utilities.length * 100)}%)`);
|
|
170
|
+
console.log(`\n📦 Total Utilities: ${utilities.length}`);
|
|
171
|
+
|
|
172
|
+
// Save detailed results to JSON for report generation
|
|
173
|
+
const outputPath = path.join(process.cwd(), 'utilities-audit-results.json');
|
|
174
|
+
fs.writeFileSync(outputPath, JSON.stringify(results, null, 2));
|
|
175
|
+
console.log(`\n💾 Detailed results saved to: ${outputPath}`);
|
|
176
|
+
|
|
177
|
+
return {
|
|
178
|
+
total: utilities.length,
|
|
179
|
+
working: working.length,
|
|
180
|
+
fixable: fixable.length,
|
|
181
|
+
deprecated: deprecated.length,
|
|
182
|
+
unknown: unknown.length,
|
|
183
|
+
results,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Run audit if executed directly
|
|
188
|
+
if (require.main === module) {
|
|
189
|
+
runAudit()
|
|
190
|
+
.then(() => {
|
|
191
|
+
console.log('\n✅ Audit complete!\n');
|
|
192
|
+
process.exit(0);
|
|
193
|
+
})
|
|
194
|
+
.catch(error => {
|
|
195
|
+
console.error('\n❌ Audit failed:', error);
|
|
196
|
+
process.exit(1);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
module.exports = { runAudit, testUtility, countIntegrationReferences };
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
const fs = require('fs-extra');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const yaml = require('js-yaml');
|
|
4
|
+
const glob = require('glob');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ToolResolver - Resolves and loads AIOS tools from file system
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Map-based caching for performance (<5ms cached lookups)
|
|
11
|
+
* - Search path priority: expansion pack → common → core
|
|
12
|
+
* - Glob-based file resolution
|
|
13
|
+
* - Schema validation
|
|
14
|
+
* - Health checking (tool_call, command, http methods)
|
|
15
|
+
* - Schema version auto-detection
|
|
16
|
+
*
|
|
17
|
+
* Target Performance: <50ms for uncached resolution
|
|
18
|
+
*/
|
|
19
|
+
class ToolResolver {
|
|
20
|
+
constructor() {
|
|
21
|
+
// Map-based cache for fast lookups
|
|
22
|
+
this.cache = new Map();
|
|
23
|
+
|
|
24
|
+
// Base search paths (in priority order)
|
|
25
|
+
this.basePaths = [
|
|
26
|
+
'aios-core/tools',
|
|
27
|
+
'common/tools',
|
|
28
|
+
// Expansion pack paths added dynamically during resolution
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Resolve a tool by name
|
|
34
|
+
*
|
|
35
|
+
* @param {string} toolName - Tool identifier (e.g., 'clickup', 'github-cli')
|
|
36
|
+
* @param {object} context - Resolution context (optional)
|
|
37
|
+
* @param {string} context.expansionPack - Specific expansion pack to search
|
|
38
|
+
* @returns {object} Tool definition with schema_version detected
|
|
39
|
+
* @throws {Error} If tool not found or validation fails
|
|
40
|
+
*/
|
|
41
|
+
async resolveTool(toolName, context = {}) {
|
|
42
|
+
// 1. Check cache first (performance: <5ms cached)
|
|
43
|
+
const cacheKey = `${context.expansionPack || 'core'}:${toolName}`;
|
|
44
|
+
if (this.cache.has(cacheKey)) {
|
|
45
|
+
return this.cache.get(cacheKey);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// 2. Build search paths (expansion pack → core priority)
|
|
49
|
+
const searchPaths = [];
|
|
50
|
+
if (context.expansionPack) {
|
|
51
|
+
searchPaths.push(`expansion-packs/${context.expansionPack}/tools`);
|
|
52
|
+
}
|
|
53
|
+
searchPaths.push(...this.basePaths);
|
|
54
|
+
|
|
55
|
+
// 3. Find tool file using glob (searches subdirectories)
|
|
56
|
+
let toolPath = null;
|
|
57
|
+
for (const basePath of searchPaths) {
|
|
58
|
+
const candidates = glob.sync(`${basePath}/**/${toolName}.yaml`);
|
|
59
|
+
if (candidates.length > 0) {
|
|
60
|
+
toolPath = candidates[0];
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (!toolPath) {
|
|
66
|
+
throw new Error(`Tool '${toolName}' not found in search paths: ${searchPaths.join(', ')}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// 4. Load and parse YAML
|
|
70
|
+
const toolContent = await fs.readFile(toolPath, 'utf8');
|
|
71
|
+
let toolDef = yaml.load(toolContent);
|
|
72
|
+
|
|
73
|
+
// Extract tool object if wrapped (handles both formats)
|
|
74
|
+
if (toolDef.tool) {
|
|
75
|
+
toolDef = toolDef.tool;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// 5. Validate schema
|
|
79
|
+
await this.validateToolSchema(toolDef);
|
|
80
|
+
|
|
81
|
+
// 6. Detect schema version (auto-detection if not specified)
|
|
82
|
+
if (!toolDef.schema_version) {
|
|
83
|
+
toolDef.schema_version = this.detectSchemaVersion(toolDef);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// 7. Health check if configured
|
|
87
|
+
if (toolDef.health_check) {
|
|
88
|
+
const healthy = await this.checkHealth(toolDef);
|
|
89
|
+
if (!healthy && toolDef.health_check.required) {
|
|
90
|
+
throw new Error(`Required tool '${toolName}' health check failed`);
|
|
91
|
+
}
|
|
92
|
+
toolDef._healthStatus = healthy ? 'healthy' : 'unhealthy';
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 8. Cache and return (target: <50ms total)
|
|
96
|
+
this.cache.set(cacheKey, toolDef);
|
|
97
|
+
return toolDef;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Validate tool schema structure
|
|
102
|
+
*
|
|
103
|
+
* @param {object} tool - Tool definition
|
|
104
|
+
* @throws {Error} If required fields missing or invalid
|
|
105
|
+
*/
|
|
106
|
+
async validateToolSchema(tool) {
|
|
107
|
+
// Required fields for all tools
|
|
108
|
+
const requiredFields = ['id', 'type', 'name', 'version', 'description'];
|
|
109
|
+
|
|
110
|
+
for (const field of requiredFields) {
|
|
111
|
+
if (!tool[field]) {
|
|
112
|
+
throw new Error(`Tool missing required field: ${field}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Validate type enum
|
|
117
|
+
const validTypes = ['mcp', 'cli', 'local', 'meta'];
|
|
118
|
+
if (!validTypes.includes(tool.type)) {
|
|
119
|
+
throw new Error(`Invalid tool type '${tool.type}'. Must be one of: ${validTypes.join(', ')}`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Validate version format (basic semver check)
|
|
123
|
+
const semverPattern = /^\d+\.\d+\.\d+$/;
|
|
124
|
+
if (!semverPattern.test(tool.version)) {
|
|
125
|
+
throw new Error(`Invalid version format '${tool.version}'. Expected semantic versioning (e.g., 1.0.0)`);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Validate schema_version if present (support both string and numeric formats)
|
|
129
|
+
if (tool.schema_version) {
|
|
130
|
+
const version = typeof tool.schema_version === 'number'
|
|
131
|
+
? tool.schema_version
|
|
132
|
+
: parseFloat(tool.schema_version);
|
|
133
|
+
|
|
134
|
+
if (![1.0, 2.0].includes(version)) {
|
|
135
|
+
throw new Error(`Invalid schema_version '${tool.schema_version}'. Must be '1.0' or '2.0'`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// v2.0 specific validation
|
|
140
|
+
if (tool.schema_version === '2.0' || tool.schema_version === 2.0) {
|
|
141
|
+
await this.validateV2Schema(tool);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Validate v2.0 schema-specific features
|
|
147
|
+
*
|
|
148
|
+
* @param {object} tool - Tool definition
|
|
149
|
+
* @throws {Error} If v2.0 features are invalid
|
|
150
|
+
*/
|
|
151
|
+
async validateV2Schema(tool) {
|
|
152
|
+
// Validate executable_knowledge if present
|
|
153
|
+
if (tool.executable_knowledge) {
|
|
154
|
+
const { helpers, processors, validators } = tool.executable_knowledge;
|
|
155
|
+
|
|
156
|
+
// Validate helpers
|
|
157
|
+
if (helpers) {
|
|
158
|
+
if (!Array.isArray(helpers)) {
|
|
159
|
+
throw new Error('executable_knowledge.helpers must be an array');
|
|
160
|
+
}
|
|
161
|
+
for (const helper of helpers) {
|
|
162
|
+
if (!helper.id || !helper.language || !helper.function) {
|
|
163
|
+
throw new Error('Helper must have id, language, and function fields');
|
|
164
|
+
}
|
|
165
|
+
if (helper.language !== 'javascript') {
|
|
166
|
+
throw new Error(`Unsupported helper language: ${helper.language}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Validate validators
|
|
172
|
+
if (validators) {
|
|
173
|
+
if (!Array.isArray(validators)) {
|
|
174
|
+
throw new Error('executable_knowledge.validators must be an array');
|
|
175
|
+
}
|
|
176
|
+
for (const validator of validators) {
|
|
177
|
+
if (!validator.id || !validator.validates || !validator.function) {
|
|
178
|
+
throw new Error('Validator must have id, validates, and function fields');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Validate anti_patterns if present
|
|
185
|
+
if (tool.anti_patterns) {
|
|
186
|
+
if (!Array.isArray(tool.anti_patterns)) {
|
|
187
|
+
throw new Error('anti_patterns must be an array');
|
|
188
|
+
}
|
|
189
|
+
for (const pattern of tool.anti_patterns) {
|
|
190
|
+
if (!pattern.pattern || !pattern.description || !pattern.wrong || !pattern.correct) {
|
|
191
|
+
throw new Error('Anti-pattern must have pattern, description, wrong, and correct fields');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Detect schema version from tool features
|
|
199
|
+
*
|
|
200
|
+
* @param {object} tool - Tool definition
|
|
201
|
+
* @returns {number} Detected schema version (1.0 or 2.0)
|
|
202
|
+
*/
|
|
203
|
+
detectSchemaVersion(tool) {
|
|
204
|
+
// Check for v2.0 features
|
|
205
|
+
const hasExecutableKnowledge = !!tool.executable_knowledge;
|
|
206
|
+
const hasApiComplexity = !!tool.api_complexity;
|
|
207
|
+
const hasAntiPatterns = !!tool.anti_patterns;
|
|
208
|
+
const hasEnhancedExamples = tool.examples &&
|
|
209
|
+
Object.values(tool.examples).some(ex =>
|
|
210
|
+
ex.some(e => e.scenario && ['success', 'failure_invalid_param'].includes(e.scenario)),
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
if (hasExecutableKnowledge || hasApiComplexity || hasAntiPatterns || hasEnhancedExamples) {
|
|
214
|
+
return 2.0;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Default to v1.0 (simple tools)
|
|
218
|
+
return 1.0;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Perform health check on tool
|
|
223
|
+
*
|
|
224
|
+
* @param {object} tool - Tool definition with health_check config
|
|
225
|
+
* @returns {boolean} True if healthy, false otherwise
|
|
226
|
+
*/
|
|
227
|
+
async checkHealth(tool) {
|
|
228
|
+
const { health_check } = tool;
|
|
229
|
+
|
|
230
|
+
if (!health_check || !health_check.method) {
|
|
231
|
+
return true; // No health check configured = assume healthy
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
try {
|
|
235
|
+
switch (health_check.method) {
|
|
236
|
+
case 'tool_call':
|
|
237
|
+
// Execute a specific tool command and check response
|
|
238
|
+
// Note: Actual implementation would use ToolExecutor
|
|
239
|
+
// For now, check if command exists in tool definition
|
|
240
|
+
return !!tool.commands?.includes(health_check.command);
|
|
241
|
+
|
|
242
|
+
case 'command':
|
|
243
|
+
// Execute shell command and check exit code
|
|
244
|
+
// Note: Actual implementation would use child_process
|
|
245
|
+
// For now, return true (not implemented)
|
|
246
|
+
return true;
|
|
247
|
+
|
|
248
|
+
case 'http':
|
|
249
|
+
// Make HTTP request and check status
|
|
250
|
+
// Note: Actual implementation would use fetch/axios
|
|
251
|
+
// For now, return true (not implemented)
|
|
252
|
+
return true;
|
|
253
|
+
|
|
254
|
+
default:
|
|
255
|
+
console.warn(`Unknown health check method: ${health_check.method}`);
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
} catch (error) {
|
|
259
|
+
console.error(`Health check failed for tool '${tool.id}':`, error);
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Clear cache (useful for testing or reloading tools)
|
|
266
|
+
*/
|
|
267
|
+
clearCache() {
|
|
268
|
+
this.cache.clear();
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Get cache statistics
|
|
273
|
+
*
|
|
274
|
+
* @returns {object} Cache stats
|
|
275
|
+
*/
|
|
276
|
+
getCacheStats() {
|
|
277
|
+
return {
|
|
278
|
+
size: this.cache.size,
|
|
279
|
+
keys: Array.from(this.cache.keys()),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* List all available tools across all search paths
|
|
285
|
+
*
|
|
286
|
+
* @returns {Array<string>} Array of tool file paths
|
|
287
|
+
*/
|
|
288
|
+
listAvailableTools() {
|
|
289
|
+
const allTools = [];
|
|
290
|
+
for (const basePath of this.basePaths) {
|
|
291
|
+
const tools = glob.sync(`${basePath}/**/*.yaml`);
|
|
292
|
+
allTools.push(...tools);
|
|
293
|
+
}
|
|
294
|
+
return allTools;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Check if a tool exists without loading it
|
|
299
|
+
*
|
|
300
|
+
* @param {string} toolName - Tool identifier
|
|
301
|
+
* @param {object} context - Resolution context
|
|
302
|
+
* @returns {boolean} True if tool exists
|
|
303
|
+
*/
|
|
304
|
+
async toolExists(toolName, context = {}) {
|
|
305
|
+
const searchPaths = [];
|
|
306
|
+
if (context.expansionPack) {
|
|
307
|
+
searchPaths.push(`expansion-packs/${context.expansionPack}/tools`);
|
|
308
|
+
}
|
|
309
|
+
searchPaths.push(...this.basePaths);
|
|
310
|
+
|
|
311
|
+
for (const basePath of searchPaths) {
|
|
312
|
+
const candidates = glob.sync(`${basePath}/**/${toolName}.yaml`);
|
|
313
|
+
if (candidates.length > 0) {
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Set custom search paths (useful for testing)
|
|
322
|
+
*
|
|
323
|
+
* @param {string[]} paths - Array of search paths
|
|
324
|
+
*/
|
|
325
|
+
setSearchPaths(paths) {
|
|
326
|
+
this.basePaths = paths;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Reset search paths to default
|
|
331
|
+
*/
|
|
332
|
+
resetSearchPaths() {
|
|
333
|
+
this.basePaths = [
|
|
334
|
+
'aios-core/tools',
|
|
335
|
+
'common/tools',
|
|
336
|
+
];
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Export singleton instance
|
|
341
|
+
const toolResolverInstance = new ToolResolver();
|
|
342
|
+
|
|
343
|
+
// Save reference to instance method BEFORE it gets overwritten by the export
|
|
344
|
+
const yamlBasedResolveTool = toolResolverInstance.resolveTool.bind(toolResolverInstance);
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Simple tool resolution function - delegates to YAML-based tool resolution
|
|
348
|
+
* All tools (including MCP tools like clickup and github) are loaded from YAML definitions
|
|
349
|
+
*
|
|
350
|
+
* @param {string} toolName - Name of the tool (e.g., 'clickup', 'github')
|
|
351
|
+
* @param {object} context - Resolution context (optional, includes expansionPack)
|
|
352
|
+
* @returns {object} Tool definition from YAML file
|
|
353
|
+
*/
|
|
354
|
+
async function resolveTool(toolName, context = {}) {
|
|
355
|
+
// All tools go through YAML-based resolution
|
|
356
|
+
return await yamlBasedResolveTool(toolName, context);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
module.exports = toolResolverInstance;
|
|
360
|
+
module.exports.resolveTool = resolveTool;
|