@planu/cli 0.30.0 → 0.31.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/dist/config/ide-registry.json +204 -0
- package/dist/config/injection-patterns.json +30 -0
- package/dist/config/known-cves.json +41 -0
- package/dist/config/license-plans.json +32 -2
- package/dist/config/llm-providers.json +198 -0
- package/dist/config/model-equivalences.json +41 -0
- package/dist/config/model-language-affinity.json +16 -0
- package/dist/config/orchestration-templates.json +76 -0
- package/dist/config/orchestration-topologies.json +36 -0
- package/dist/config/plugin-marketplace.json +59 -0
- package/dist/config/security-runtime-config.json +26 -0
- package/dist/config/workers-registry.json +100 -0
- package/dist/engine/deleter/audit-logger.d.ts +11 -0
- package/dist/engine/deleter/audit-logger.d.ts.map +1 -0
- package/dist/engine/deleter/audit-logger.js +30 -0
- package/dist/engine/deleter/audit-logger.js.map +1 -0
- package/dist/engine/deleter/core.d.ts +39 -0
- package/dist/engine/deleter/core.d.ts.map +1 -0
- package/dist/engine/deleter/core.js +267 -0
- package/dist/engine/deleter/core.js.map +1 -0
- package/dist/engine/deleter/trash-manager.d.ts +18 -0
- package/dist/engine/deleter/trash-manager.d.ts.map +1 -0
- package/dist/engine/deleter/trash-manager.js +92 -0
- package/dist/engine/deleter/trash-manager.js.map +1 -0
- package/dist/engine/github/adapters/bitbucket-adapter.d.ts +12 -0
- package/dist/engine/github/adapters/bitbucket-adapter.d.ts.map +1 -0
- package/dist/engine/github/adapters/bitbucket-adapter.js +32 -0
- package/dist/engine/github/adapters/bitbucket-adapter.js.map +1 -0
- package/dist/engine/github/adapters/github-adapter.d.ts +20 -0
- package/dist/engine/github/adapters/github-adapter.d.ts.map +1 -0
- package/dist/engine/github/adapters/github-adapter.js +221 -0
- package/dist/engine/github/adapters/github-adapter.js.map +1 -0
- package/dist/engine/github/adapters/gitlab-adapter.d.ts +12 -0
- package/dist/engine/github/adapters/gitlab-adapter.d.ts.map +1 -0
- package/dist/engine/github/adapters/gitlab-adapter.js +32 -0
- package/dist/engine/github/adapters/gitlab-adapter.js.map +1 -0
- package/dist/engine/github/adapters/index.d.ts +4 -0
- package/dist/engine/github/adapters/index.d.ts.map +1 -0
- package/dist/engine/github/adapters/index.js +5 -0
- package/dist/engine/github/adapters/index.js.map +1 -0
- package/dist/engine/github/auth.d.ts +13 -0
- package/dist/engine/github/auth.d.ts.map +1 -0
- package/dist/engine/github/auth.js +59 -0
- package/dist/engine/github/auth.js.map +1 -0
- package/dist/engine/github/changelog.d.ts +26 -0
- package/dist/engine/github/changelog.d.ts.map +1 -0
- package/dist/engine/github/changelog.js +117 -0
- package/dist/engine/github/changelog.js.map +1 -0
- package/dist/engine/github/ci-status.d.ts +13 -0
- package/dist/engine/github/ci-status.d.ts.map +1 -0
- package/dist/engine/github/ci-status.js +32 -0
- package/dist/engine/github/ci-status.js.map +1 -0
- package/dist/engine/github/client.d.ts +18 -0
- package/dist/engine/github/client.d.ts.map +1 -0
- package/dist/engine/github/client.js +55 -0
- package/dist/engine/github/client.js.map +1 -0
- package/dist/engine/github/gh-cli.d.ts +22 -0
- package/dist/engine/github/gh-cli.d.ts.map +1 -0
- package/dist/engine/github/gh-cli.js +53 -0
- package/dist/engine/github/gh-cli.js.map +1 -0
- package/dist/engine/github/index.d.ts +9 -0
- package/dist/engine/github/index.d.ts.map +1 -0
- package/dist/engine/github/index.js +10 -0
- package/dist/engine/github/index.js.map +1 -0
- package/dist/engine/github/pr-template.d.ts +17 -0
- package/dist/engine/github/pr-template.d.ts.map +1 -0
- package/dist/engine/github/pr-template.js +79 -0
- package/dist/engine/github/pr-template.js.map +1 -0
- package/dist/engine/github/review-analyzer.d.ts +19 -0
- package/dist/engine/github/review-analyzer.d.ts.map +1 -0
- package/dist/engine/github/review-analyzer.js +146 -0
- package/dist/engine/github/review-analyzer.js.map +1 -0
- package/dist/engine/github/spec-linker.d.ts +18 -0
- package/dist/engine/github/spec-linker.d.ts.map +1 -0
- package/dist/engine/github/spec-linker.js +54 -0
- package/dist/engine/github/spec-linker.js.map +1 -0
- package/dist/engine/ide-config/core.d.ts +14 -0
- package/dist/engine/ide-config/core.d.ts.map +1 -0
- package/dist/engine/ide-config/core.js +103 -0
- package/dist/engine/ide-config/core.js.map +1 -0
- package/dist/engine/ide-config/detector.d.ts +18 -0
- package/dist/engine/ide-config/detector.d.ts.map +1 -0
- package/dist/engine/ide-config/detector.js +97 -0
- package/dist/engine/ide-config/detector.js.map +1 -0
- package/dist/engine/ide-config/generators.d.ts +6 -0
- package/dist/engine/ide-config/generators.d.ts.map +1 -0
- package/dist/engine/ide-config/generators.js +146 -0
- package/dist/engine/ide-config/generators.js.map +1 -0
- package/dist/engine/ide-config/index.d.ts +6 -0
- package/dist/engine/ide-config/index.d.ts.map +1 -0
- package/dist/engine/ide-config/index.js +7 -0
- package/dist/engine/ide-config/index.js.map +1 -0
- package/dist/engine/ide-config/path-resolver.d.ts +23 -0
- package/dist/engine/ide-config/path-resolver.d.ts.map +1 -0
- package/dist/engine/ide-config/path-resolver.js +55 -0
- package/dist/engine/ide-config/path-resolver.js.map +1 -0
- package/dist/engine/ide-config/validator.d.ts +7 -0
- package/dist/engine/ide-config/validator.d.ts.map +1 -0
- package/dist/engine/ide-config/validator.js +55 -0
- package/dist/engine/ide-config/validator.js.map +1 -0
- package/dist/engine/license-validator/lemon-squeezy.d.ts.map +1 -1
- package/dist/engine/license-validator/lemon-squeezy.js +16 -12
- package/dist/engine/license-validator/lemon-squeezy.js.map +1 -1
- package/dist/engine/llm-providers/cost-optimizer.d.ts +26 -0
- package/dist/engine/llm-providers/cost-optimizer.d.ts.map +1 -0
- package/dist/engine/llm-providers/cost-optimizer.js +101 -0
- package/dist/engine/llm-providers/cost-optimizer.js.map +1 -0
- package/dist/engine/llm-providers/cost-tracker.d.ts +26 -0
- package/dist/engine/llm-providers/cost-tracker.d.ts.map +1 -0
- package/dist/engine/llm-providers/cost-tracker.js +75 -0
- package/dist/engine/llm-providers/cost-tracker.js.map +1 -0
- package/dist/engine/llm-providers/failover-chain.d.ts +23 -0
- package/dist/engine/llm-providers/failover-chain.d.ts.map +1 -0
- package/dist/engine/llm-providers/failover-chain.js +88 -0
- package/dist/engine/llm-providers/failover-chain.js.map +1 -0
- package/dist/engine/llm-providers/health-checker.d.ts +18 -0
- package/dist/engine/llm-providers/health-checker.d.ts.map +1 -0
- package/dist/engine/llm-providers/health-checker.js +45 -0
- package/dist/engine/llm-providers/health-checker.js.map +1 -0
- package/dist/engine/llm-providers/index.d.ts +10 -0
- package/dist/engine/llm-providers/index.d.ts.map +1 -0
- package/dist/engine/llm-providers/index.js +11 -0
- package/dist/engine/llm-providers/index.js.map +1 -0
- package/dist/engine/llm-providers/key-manager.d.ts +23 -0
- package/dist/engine/llm-providers/key-manager.d.ts.map +1 -0
- package/dist/engine/llm-providers/key-manager.js +47 -0
- package/dist/engine/llm-providers/key-manager.js.map +1 -0
- package/dist/engine/llm-providers/load-balancer.d.ts +13 -0
- package/dist/engine/llm-providers/load-balancer.d.ts.map +1 -0
- package/dist/engine/llm-providers/load-balancer.js +94 -0
- package/dist/engine/llm-providers/load-balancer.js.map +1 -0
- package/dist/engine/llm-providers/provider-adapter.d.ts +25 -0
- package/dist/engine/llm-providers/provider-adapter.d.ts.map +1 -0
- package/dist/engine/llm-providers/provider-adapter.js +86 -0
- package/dist/engine/llm-providers/provider-adapter.js.map +1 -0
- package/dist/engine/llm-providers/rate-limiter.d.ts +29 -0
- package/dist/engine/llm-providers/rate-limiter.d.ts.map +1 -0
- package/dist/engine/llm-providers/rate-limiter.js +70 -0
- package/dist/engine/llm-providers/rate-limiter.js.map +1 -0
- package/dist/engine/orchestrator/agent-spawner.d.ts +22 -0
- package/dist/engine/orchestrator/agent-spawner.d.ts.map +1 -0
- package/dist/engine/orchestrator/agent-spawner.js +117 -0
- package/dist/engine/orchestrator/agent-spawner.js.map +1 -0
- package/dist/engine/orchestrator/conflict-resolver.d.ts +11 -0
- package/dist/engine/orchestrator/conflict-resolver.d.ts.map +1 -0
- package/dist/engine/orchestrator/conflict-resolver.js +81 -0
- package/dist/engine/orchestrator/conflict-resolver.js.map +1 -0
- package/dist/engine/orchestrator/file-ownership.d.ts +25 -0
- package/dist/engine/orchestrator/file-ownership.d.ts.map +1 -0
- package/dist/engine/orchestrator/file-ownership.js +62 -0
- package/dist/engine/orchestrator/file-ownership.js.map +1 -0
- package/dist/engine/orchestrator/handoff-generator.d.ts +20 -0
- package/dist/engine/orchestrator/handoff-generator.d.ts.map +1 -0
- package/dist/engine/orchestrator/handoff-generator.js +95 -0
- package/dist/engine/orchestrator/handoff-generator.js.map +1 -0
- package/dist/engine/orchestrator/index.d.ts +10 -0
- package/dist/engine/orchestrator/index.d.ts.map +1 -0
- package/dist/engine/orchestrator/index.js +11 -0
- package/dist/engine/orchestrator/index.js.map +1 -0
- package/dist/engine/orchestrator/progress-tracker.d.ts +32 -0
- package/dist/engine/orchestrator/progress-tracker.d.ts.map +1 -0
- package/dist/engine/orchestrator/progress-tracker.js +102 -0
- package/dist/engine/orchestrator/progress-tracker.js.map +1 -0
- package/dist/engine/orchestrator/result-collector.d.ts +23 -0
- package/dist/engine/orchestrator/result-collector.d.ts.map +1 -0
- package/dist/engine/orchestrator/result-collector.js +124 -0
- package/dist/engine/orchestrator/result-collector.js.map +1 -0
- package/dist/engine/orchestrator/runtime.d.ts +21 -0
- package/dist/engine/orchestrator/runtime.d.ts.map +1 -0
- package/dist/engine/orchestrator/runtime.js +231 -0
- package/dist/engine/orchestrator/runtime.js.map +1 -0
- package/dist/engine/orchestrator/task-distributor.d.ts +8 -0
- package/dist/engine/orchestrator/task-distributor.d.ts.map +1 -0
- package/dist/engine/orchestrator/task-distributor.js +106 -0
- package/dist/engine/orchestrator/task-distributor.js.map +1 -0
- package/dist/engine/orchestrator/topologies.d.ts +30 -0
- package/dist/engine/orchestrator/topologies.d.ts.map +1 -0
- package/dist/engine/orchestrator/topologies.js +89 -0
- package/dist/engine/orchestrator/topologies.js.map +1 -0
- package/dist/engine/plugins/compatibility.d.ts +24 -0
- package/dist/engine/plugins/compatibility.d.ts.map +1 -0
- package/dist/engine/plugins/compatibility.js +140 -0
- package/dist/engine/plugins/compatibility.js.map +1 -0
- package/dist/engine/plugins/doc-generator.d.ts +6 -0
- package/dist/engine/plugins/doc-generator.d.ts.map +1 -0
- package/dist/engine/plugins/doc-generator.js +79 -0
- package/dist/engine/plugins/doc-generator.js.map +1 -0
- package/dist/engine/plugins/extensions/analyzer-extension.d.ts +26 -0
- package/dist/engine/plugins/extensions/analyzer-extension.d.ts.map +1 -0
- package/dist/engine/plugins/extensions/analyzer-extension.js +100 -0
- package/dist/engine/plugins/extensions/analyzer-extension.js.map +1 -0
- package/dist/engine/plugins/extensions/template-extension.d.ts +25 -0
- package/dist/engine/plugins/extensions/template-extension.d.ts.map +1 -0
- package/dist/engine/plugins/extensions/template-extension.js +65 -0
- package/dist/engine/plugins/extensions/template-extension.js.map +1 -0
- package/dist/engine/plugins/extensions/tool-extension.d.ts +34 -0
- package/dist/engine/plugins/extensions/tool-extension.d.ts.map +1 -0
- package/dist/engine/plugins/extensions/tool-extension.js +80 -0
- package/dist/engine/plugins/extensions/tool-extension.js.map +1 -0
- package/dist/engine/plugins/extensions/worker-extension.d.ts +24 -0
- package/dist/engine/plugins/extensions/worker-extension.d.ts.map +1 -0
- package/dist/engine/plugins/extensions/worker-extension.js +88 -0
- package/dist/engine/plugins/extensions/worker-extension.js.map +1 -0
- package/dist/engine/plugins/index.d.ts +11 -0
- package/dist/engine/plugins/index.d.ts.map +1 -0
- package/dist/engine/plugins/index.js +12 -0
- package/dist/engine/plugins/index.js.map +1 -0
- package/dist/engine/plugins/lifecycle.d.ts +26 -0
- package/dist/engine/plugins/lifecycle.d.ts.map +1 -0
- package/dist/engine/plugins/lifecycle.js +208 -0
- package/dist/engine/plugins/lifecycle.js.map +1 -0
- package/dist/engine/plugins/loader.d.ts +17 -0
- package/dist/engine/plugins/loader.d.ts.map +1 -0
- package/dist/engine/plugins/loader.js +113 -0
- package/dist/engine/plugins/loader.js.map +1 -0
- package/dist/engine/plugins/sandbox.d.ts +20 -0
- package/dist/engine/plugins/sandbox.d.ts.map +1 -0
- package/dist/engine/plugins/sandbox.js +111 -0
- package/dist/engine/plugins/sandbox.js.map +1 -0
- package/dist/engine/plugins/validator.d.ts +18 -0
- package/dist/engine/plugins/validator.d.ts.map +1 -0
- package/dist/engine/plugins/validator.js +125 -0
- package/dist/engine/plugins/validator.js.map +1 -0
- package/dist/engine/runtime-security/audit-logger.d.ts +7 -0
- package/dist/engine/runtime-security/audit-logger.d.ts.map +1 -0
- package/dist/engine/runtime-security/audit-logger.js +120 -0
- package/dist/engine/runtime-security/audit-logger.js.map +1 -0
- package/dist/engine/runtime-security/checkers/command-injection.d.ts +3 -0
- package/dist/engine/runtime-security/checkers/command-injection.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/command-injection.js +91 -0
- package/dist/engine/runtime-security/checkers/command-injection.js.map +1 -0
- package/dist/engine/runtime-security/checkers/content-security.d.ts +3 -0
- package/dist/engine/runtime-security/checkers/content-security.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/content-security.js +106 -0
- package/dist/engine/runtime-security/checkers/content-security.js.map +1 -0
- package/dist/engine/runtime-security/checkers/dependency-vuln.d.ts +4 -0
- package/dist/engine/runtime-security/checkers/dependency-vuln.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/dependency-vuln.js +93 -0
- package/dist/engine/runtime-security/checkers/dependency-vuln.js.map +1 -0
- package/dist/engine/runtime-security/checkers/file-permissions.d.ts +3 -0
- package/dist/engine/runtime-security/checkers/file-permissions.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/file-permissions.js +60 -0
- package/dist/engine/runtime-security/checkers/file-permissions.js.map +1 -0
- package/dist/engine/runtime-security/checkers/input-sanitizer.d.ts +4 -0
- package/dist/engine/runtime-security/checkers/input-sanitizer.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/input-sanitizer.js +101 -0
- package/dist/engine/runtime-security/checkers/input-sanitizer.js.map +1 -0
- package/dist/engine/runtime-security/checkers/path-traversal.d.ts +3 -0
- package/dist/engine/runtime-security/checkers/path-traversal.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/path-traversal.js +102 -0
- package/dist/engine/runtime-security/checkers/path-traversal.js.map +1 -0
- package/dist/engine/runtime-security/checkers/prompt-injection.d.ts +7 -0
- package/dist/engine/runtime-security/checkers/prompt-injection.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/prompt-injection.js +103 -0
- package/dist/engine/runtime-security/checkers/prompt-injection.js.map +1 -0
- package/dist/engine/runtime-security/checkers/sensitive-data.d.ts +3 -0
- package/dist/engine/runtime-security/checkers/sensitive-data.d.ts.map +1 -0
- package/dist/engine/runtime-security/checkers/sensitive-data.js +71 -0
- package/dist/engine/runtime-security/checkers/sensitive-data.js.map +1 -0
- package/dist/engine/runtime-security/index.d.ts +12 -0
- package/dist/engine/runtime-security/index.d.ts.map +1 -0
- package/dist/engine/runtime-security/index.js +13 -0
- package/dist/engine/runtime-security/index.js.map +1 -0
- package/dist/engine/runtime-security/rate-limiter.d.ts +5 -0
- package/dist/engine/runtime-security/rate-limiter.d.ts.map +1 -0
- package/dist/engine/runtime-security/rate-limiter.js +91 -0
- package/dist/engine/runtime-security/rate-limiter.js.map +1 -0
- package/dist/engine/runtime-security/validator.d.ts +9 -0
- package/dist/engine/runtime-security/validator.d.ts.map +1 -0
- package/dist/engine/runtime-security/validator.js +118 -0
- package/dist/engine/runtime-security/validator.js.map +1 -0
- package/dist/engine/session/auto-save.d.ts +18 -0
- package/dist/engine/session/auto-save.d.ts.map +1 -0
- package/dist/engine/session/auto-save.js +96 -0
- package/dist/engine/session/auto-save.js.map +1 -0
- package/dist/engine/session/context-snapshot.d.ts +8 -0
- package/dist/engine/session/context-snapshot.d.ts.map +1 -0
- package/dist/engine/session/context-snapshot.js +49 -0
- package/dist/engine/session/context-snapshot.js.map +1 -0
- package/dist/engine/session/index.d.ts +6 -0
- package/dist/engine/session/index.d.ts.map +1 -0
- package/dist/engine/session/index.js +7 -0
- package/dist/engine/session/index.js.map +1 -0
- package/dist/engine/session/memory-sync.d.ts +12 -0
- package/dist/engine/session/memory-sync.d.ts.map +1 -0
- package/dist/engine/session/memory-sync.js +34 -0
- package/dist/engine/session/memory-sync.js.map +1 -0
- package/dist/engine/session/session-diff.d.ts +11 -0
- package/dist/engine/session/session-diff.d.ts.map +1 -0
- package/dist/engine/session/session-diff.js +42 -0
- package/dist/engine/session/session-diff.js.map +1 -0
- package/dist/engine/session/session-merge.d.ts +12 -0
- package/dist/engine/session/session-merge.d.ts.map +1 -0
- package/dist/engine/session/session-merge.js +55 -0
- package/dist/engine/session/session-merge.js.map +1 -0
- package/dist/engine/token-optimizer/batcher.d.ts +34 -0
- package/dist/engine/token-optimizer/batcher.d.ts.map +1 -0
- package/dist/engine/token-optimizer/batcher.js +89 -0
- package/dist/engine/token-optimizer/batcher.js.map +1 -0
- package/dist/engine/token-optimizer/budget.d.ts +54 -0
- package/dist/engine/token-optimizer/budget.d.ts.map +1 -0
- package/dist/engine/token-optimizer/budget.js +102 -0
- package/dist/engine/token-optimizer/budget.js.map +1 -0
- package/dist/engine/token-optimizer/context-compressor.d.ts +16 -0
- package/dist/engine/token-optimizer/context-compressor.d.ts.map +1 -0
- package/dist/engine/token-optimizer/context-compressor.js +148 -0
- package/dist/engine/token-optimizer/context-compressor.js.map +1 -0
- package/dist/engine/token-optimizer/counter.d.ts +16 -0
- package/dist/engine/token-optimizer/counter.d.ts.map +1 -0
- package/dist/engine/token-optimizer/counter.js +68 -0
- package/dist/engine/token-optimizer/counter.js.map +1 -0
- package/dist/engine/token-optimizer/deduplicator.d.ts +32 -0
- package/dist/engine/token-optimizer/deduplicator.d.ts.map +1 -0
- package/dist/engine/token-optimizer/deduplicator.js +102 -0
- package/dist/engine/token-optimizer/deduplicator.js.map +1 -0
- package/dist/engine/token-optimizer/incremental.d.ts +30 -0
- package/dist/engine/token-optimizer/incremental.d.ts.map +1 -0
- package/dist/engine/token-optimizer/incremental.js +88 -0
- package/dist/engine/token-optimizer/incremental.js.map +1 -0
- package/dist/engine/token-optimizer/index.d.ts +10 -0
- package/dist/engine/token-optimizer/index.d.ts.map +1 -0
- package/dist/engine/token-optimizer/index.js +11 -0
- package/dist/engine/token-optimizer/index.js.map +1 -0
- package/dist/engine/token-optimizer/optimizer.d.ts +47 -0
- package/dist/engine/token-optimizer/optimizer.d.ts.map +1 -0
- package/dist/engine/token-optimizer/optimizer.js +126 -0
- package/dist/engine/token-optimizer/optimizer.js.map +1 -0
- package/dist/engine/token-optimizer/reporter.d.ts +51 -0
- package/dist/engine/token-optimizer/reporter.d.ts.map +1 -0
- package/dist/engine/token-optimizer/reporter.js +143 -0
- package/dist/engine/token-optimizer/reporter.js.map +1 -0
- package/dist/engine/token-optimizer/response-cache.d.ts +49 -0
- package/dist/engine/token-optimizer/response-cache.d.ts.map +1 -0
- package/dist/engine/token-optimizer/response-cache.js +158 -0
- package/dist/engine/token-optimizer/response-cache.js.map +1 -0
- package/dist/engine/workers/handlers/code-map.d.ts +3 -0
- package/dist/engine/workers/handlers/code-map.d.ts.map +1 -0
- package/dist/engine/workers/handlers/code-map.js +227 -0
- package/dist/engine/workers/handlers/code-map.js.map +1 -0
- package/dist/engine/workers/handlers/dependency-health.d.ts +3 -0
- package/dist/engine/workers/handlers/dependency-health.d.ts.map +1 -0
- package/dist/engine/workers/handlers/dependency-health.js +254 -0
- package/dist/engine/workers/handlers/dependency-health.js.map +1 -0
- package/dist/engine/workers/handlers/documentation.d.ts +3 -0
- package/dist/engine/workers/handlers/documentation.d.ts.map +1 -0
- package/dist/engine/workers/handlers/documentation.js +207 -0
- package/dist/engine/workers/handlers/documentation.js.map +1 -0
- package/dist/engine/workers/handlers/optimization.d.ts +3 -0
- package/dist/engine/workers/handlers/optimization.d.ts.map +1 -0
- package/dist/engine/workers/handlers/optimization.js +161 -0
- package/dist/engine/workers/handlers/optimization.js.map +1 -0
- package/dist/engine/workers/handlers/security-audit.d.ts +3 -0
- package/dist/engine/workers/handlers/security-audit.d.ts.map +1 -0
- package/dist/engine/workers/handlers/security-audit.js +222 -0
- package/dist/engine/workers/handlers/security-audit.js.map +1 -0
- package/dist/engine/workers/handlers/test-gaps.d.ts +3 -0
- package/dist/engine/workers/handlers/test-gaps.d.ts.map +1 -0
- package/dist/engine/workers/handlers/test-gaps.js +186 -0
- package/dist/engine/workers/handlers/test-gaps.js.map +1 -0
- package/dist/engine/workers/index.d.ts +8 -0
- package/dist/engine/workers/index.d.ts.map +1 -0
- package/dist/engine/workers/index.js +9 -0
- package/dist/engine/workers/index.js.map +1 -0
- package/dist/engine/workers/worker-engine.d.ts +24 -0
- package/dist/engine/workers/worker-engine.d.ts.map +1 -0
- package/dist/engine/workers/worker-engine.js +233 -0
- package/dist/engine/workers/worker-engine.js.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/process.js +1 -1
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/session-store.d.ts +20 -0
- package/dist/storage/session-store.d.ts.map +1 -0
- package/dist/storage/session-store.js +118 -0
- package/dist/storage/session-store.js.map +1 -0
- package/dist/storage/token-cache-store.d.ts +10 -0
- package/dist/storage/token-cache-store.d.ts.map +1 -0
- package/dist/storage/token-cache-store.js +67 -0
- package/dist/storage/token-cache-store.js.map +1 -0
- package/dist/storage/trash-store.d.ts +35 -0
- package/dist/storage/trash-store.d.ts.map +1 -0
- package/dist/storage/trash-store.js +163 -0
- package/dist/storage/trash-store.js.map +1 -0
- package/dist/storage/worker-store.d.ts +11 -0
- package/dist/storage/worker-store.d.ts.map +1 -0
- package/dist/storage/worker-store.js +120 -0
- package/dist/storage/worker-store.js.map +1 -0
- package/dist/tools/agent-swarm-status.d.ts +7 -0
- package/dist/tools/agent-swarm-status.d.ts.map +1 -0
- package/dist/tools/agent-swarm-status.js +94 -0
- package/dist/tools/agent-swarm-status.js.map +1 -0
- package/dist/tools/configure-llm-providers-handler.d.ts +18 -0
- package/dist/tools/configure-llm-providers-handler.d.ts.map +1 -0
- package/dist/tools/configure-llm-providers-handler.js +127 -0
- package/dist/tools/configure-llm-providers-handler.js.map +1 -0
- package/dist/tools/configure-workers-handler.d.ts +3 -0
- package/dist/tools/configure-workers-handler.d.ts.map +1 -0
- package/dist/tools/configure-workers-handler.js +116 -0
- package/dist/tools/configure-workers-handler.js.map +1 -0
- package/dist/tools/delete-decision.d.ts +7 -0
- package/dist/tools/delete-decision.d.ts.map +1 -0
- package/dist/tools/delete-decision.js +54 -0
- package/dist/tools/delete-decision.js.map +1 -0
- package/dist/tools/delete-pattern.d.ts +7 -0
- package/dist/tools/delete-pattern.d.ts.map +1 -0
- package/dist/tools/delete-pattern.js +54 -0
- package/dist/tools/delete-pattern.js.map +1 -0
- package/dist/tools/delete-project.d.ts +7 -0
- package/dist/tools/delete-project.d.ts.map +1 -0
- package/dist/tools/delete-project.js +53 -0
- package/dist/tools/delete-project.js.map +1 -0
- package/dist/tools/delete-spec.d.ts +7 -0
- package/dist/tools/delete-spec.d.ts.map +1 -0
- package/dist/tools/delete-spec.js +54 -0
- package/dist/tools/delete-spec.js.map +1 -0
- package/dist/tools/export-session.d.ts +3 -0
- package/dist/tools/export-session.d.ts.map +1 -0
- package/dist/tools/export-session.js +87 -0
- package/dist/tools/export-session.js.map +1 -0
- package/dist/tools/github-pr-handler.d.ts +13 -0
- package/dist/tools/github-pr-handler.d.ts.map +1 -0
- package/dist/tools/github-pr-handler.js +109 -0
- package/dist/tools/github-pr-handler.js.map +1 -0
- package/dist/tools/github-release-handler.d.ts +14 -0
- package/dist/tools/github-release-handler.d.ts.map +1 -0
- package/dist/tools/github-release-handler.js +55 -0
- package/dist/tools/github-release-handler.js.map +1 -0
- package/dist/tools/github-review-handler.d.ts +7 -0
- package/dist/tools/github-review-handler.d.ts.map +1 -0
- package/dist/tools/github-review-handler.js +61 -0
- package/dist/tools/github-review-handler.js.map +1 -0
- package/dist/tools/ide-config-handler.d.ts +11 -0
- package/dist/tools/ide-config-handler.d.ts.map +1 -0
- package/dist/tools/ide-config-handler.js +56 -0
- package/dist/tools/ide-config-handler.js.map +1 -0
- package/dist/tools/license-status.d.ts.map +1 -1
- package/dist/tools/license-status.js +17 -2
- package/dist/tools/license-status.js.map +1 -1
- package/dist/tools/list-sessions.d.ts +3 -0
- package/dist/tools/list-sessions.d.ts.map +1 -0
- package/dist/tools/list-sessions.js +28 -0
- package/dist/tools/list-sessions.js.map +1 -0
- package/dist/tools/llm-provider-status-handler.d.ts +7 -0
- package/dist/tools/llm-provider-status-handler.d.ts.map +1 -0
- package/dist/tools/llm-provider-status-handler.js +63 -0
- package/dist/tools/llm-provider-status-handler.js.map +1 -0
- package/dist/tools/manage-plugins-handler.d.ts +6 -0
- package/dist/tools/manage-plugins-handler.d.ts.map +1 -0
- package/dist/tools/manage-plugins-handler.js +128 -0
- package/dist/tools/manage-plugins-handler.js.map +1 -0
- package/dist/tools/manage-trash.d.ts +7 -0
- package/dist/tools/manage-trash.d.ts.map +1 -0
- package/dist/tools/manage-trash.js +54 -0
- package/dist/tools/manage-trash.js.map +1 -0
- package/dist/tools/orchestrate-runtime.d.ts +7 -0
- package/dist/tools/orchestrate-runtime.d.ts.map +1 -0
- package/dist/tools/orchestrate-runtime.js +72 -0
- package/dist/tools/orchestrate-runtime.js.map +1 -0
- package/dist/tools/register-delete-tools.d.ts +6 -0
- package/dist/tools/register-delete-tools.d.ts.map +1 -0
- package/dist/tools/register-delete-tools.js +95 -0
- package/dist/tools/register-delete-tools.js.map +1 -0
- package/dist/tools/register-github-tools.d.ts +3 -0
- package/dist/tools/register-github-tools.d.ts.map +1 -0
- package/dist/tools/register-github-tools.js +47 -0
- package/dist/tools/register-github-tools.js.map +1 -0
- package/dist/tools/register-ide-tools.d.ts +3 -0
- package/dist/tools/register-ide-tools.d.ts.map +1 -0
- package/dist/tools/register-ide-tools.js +28 -0
- package/dist/tools/register-ide-tools.js.map +1 -0
- package/dist/tools/register-llm-provider-tools.d.ts +3 -0
- package/dist/tools/register-llm-provider-tools.d.ts.map +1 -0
- package/dist/tools/register-llm-provider-tools.js +73 -0
- package/dist/tools/register-llm-provider-tools.js.map +1 -0
- package/dist/tools/register-orchestrator-tools.d.ts +3 -0
- package/dist/tools/register-orchestrator-tools.d.ts.map +1 -0
- package/dist/tools/register-orchestrator-tools.js +68 -0
- package/dist/tools/register-orchestrator-tools.js.map +1 -0
- package/dist/tools/register-plugin-tools.d.ts +3 -0
- package/dist/tools/register-plugin-tools.d.ts.map +1 -0
- package/dist/tools/register-plugin-tools.js +27 -0
- package/dist/tools/register-plugin-tools.js.map +1 -0
- package/dist/tools/register-runtime-security-tools.d.ts +3 -0
- package/dist/tools/register-runtime-security-tools.d.ts.map +1 -0
- package/dist/tools/register-runtime-security-tools.js +19 -0
- package/dist/tools/register-runtime-security-tools.js.map +1 -0
- package/dist/tools/register-session-tools.d.ts +3 -0
- package/dist/tools/register-session-tools.d.ts.map +1 -0
- package/dist/tools/register-session-tools.js +34 -0
- package/dist/tools/register-session-tools.js.map +1 -0
- package/dist/tools/register-token-tools.d.ts +3 -0
- package/dist/tools/register-token-tools.d.ts.map +1 -0
- package/dist/tools/register-token-tools.js +17 -0
- package/dist/tools/register-token-tools.js.map +1 -0
- package/dist/tools/register-worker-tools.d.ts +3 -0
- package/dist/tools/register-worker-tools.d.ts.map +1 -0
- package/dist/tools/register-worker-tools.js +31 -0
- package/dist/tools/register-worker-tools.js.map +1 -0
- package/dist/tools/restore-session.d.ts +3 -0
- package/dist/tools/restore-session.d.ts.map +1 -0
- package/dist/tools/restore-session.js +60 -0
- package/dist/tools/restore-session.js.map +1 -0
- package/dist/tools/scaffold-plugin-handler.d.ts +6 -0
- package/dist/tools/scaffold-plugin-handler.d.ts.map +1 -0
- package/dist/tools/scaffold-plugin-handler.js +208 -0
- package/dist/tools/scaffold-plugin-handler.js.map +1 -0
- package/dist/tools/schemas/delete.d.ts +19 -0
- package/dist/tools/schemas/delete.d.ts.map +1 -0
- package/dist/tools/schemas/delete.js +12 -0
- package/dist/tools/schemas/delete.js.map +1 -0
- package/dist/tools/schemas/github.d.ts +51 -0
- package/dist/tools/schemas/github.d.ts.map +1 -0
- package/dist/tools/schemas/github.js +52 -0
- package/dist/tools/schemas/github.js.map +1 -0
- package/dist/tools/schemas/ide-config.d.ts +36 -0
- package/dist/tools/schemas/ide-config.d.ts.map +1 -0
- package/dist/tools/schemas/ide-config.js +27 -0
- package/dist/tools/schemas/ide-config.js.map +1 -0
- package/dist/tools/schemas/index.d.ts +9 -0
- package/dist/tools/schemas/index.d.ts.map +1 -1
- package/dist/tools/schemas/index.js +9 -0
- package/dist/tools/schemas/index.js.map +1 -1
- package/dist/tools/schemas/llm-provider-schemas.d.ts +26 -0
- package/dist/tools/schemas/llm-provider-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/llm-provider-schemas.js +16 -0
- package/dist/tools/schemas/llm-provider-schemas.js.map +1 -0
- package/dist/tools/schemas/plugins-schemas.d.ts +40 -0
- package/dist/tools/schemas/plugins-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/plugins-schemas.js +29 -0
- package/dist/tools/schemas/plugins-schemas.js.map +1 -0
- package/dist/tools/schemas/runtime-security.d.ts +12 -0
- package/dist/tools/schemas/runtime-security.d.ts.map +1 -0
- package/dist/tools/schemas/runtime-security.js +9 -0
- package/dist/tools/schemas/runtime-security.js.map +1 -0
- package/dist/tools/schemas/session.d.ts +22 -0
- package/dist/tools/schemas/session.d.ts.map +1 -0
- package/dist/tools/schemas/session.js +25 -0
- package/dist/tools/schemas/session.js.map +1 -0
- package/dist/tools/schemas/token-optimization.d.ts +12 -0
- package/dist/tools/schemas/token-optimization.d.ts.map +1 -0
- package/dist/tools/schemas/token-optimization.js +9 -0
- package/dist/tools/schemas/token-optimization.js.map +1 -0
- package/dist/tools/schemas/workers-schema.d.ts +75 -0
- package/dist/tools/schemas/workers-schema.d.ts.map +1 -0
- package/dist/tools/schemas/workers-schema.js +63 -0
- package/dist/tools/schemas/workers-schema.js.map +1 -0
- package/dist/tools/security-report-handler.d.ts +3 -0
- package/dist/tools/security-report-handler.d.ts.map +1 -0
- package/dist/tools/security-report-handler.js +66 -0
- package/dist/tools/security-report-handler.js.map +1 -0
- package/dist/tools/token-usage-handler.d.ts +15 -0
- package/dist/tools/token-usage-handler.d.ts.map +1 -0
- package/dist/tools/token-usage-handler.js +53 -0
- package/dist/tools/token-usage-handler.js.map +1 -0
- package/dist/tools/worker-status-handler.d.ts +3 -0
- package/dist/tools/worker-status-handler.d.ts.map +1 -0
- package/dist/tools/worker-status-handler.js +93 -0
- package/dist/tools/worker-status-handler.js.map +1 -0
- package/dist/types/delete.d.ts +68 -0
- package/dist/types/delete.d.ts.map +1 -0
- package/dist/types/delete.js +3 -0
- package/dist/types/delete.js.map +1 -0
- package/dist/types/github.d.ts +156 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/github.js +11 -0
- package/dist/types/github.js.map +1 -0
- package/dist/types/ide.d.ts +70 -0
- package/dist/types/ide.d.ts.map +1 -0
- package/dist/types/ide.js +3 -0
- package/dist/types/ide.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/llm-providers.d.ts +140 -0
- package/dist/types/llm-providers.d.ts.map +1 -0
- package/dist/types/llm-providers.js +3 -0
- package/dist/types/llm-providers.js.map +1 -0
- package/dist/types/orchestration-runtime.d.ts +198 -0
- package/dist/types/orchestration-runtime.d.ts.map +1 -0
- package/dist/types/orchestration-runtime.js +4 -0
- package/dist/types/orchestration-runtime.js.map +1 -0
- package/dist/types/plugins.d.ts +144 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +3 -0
- package/dist/types/plugins.js.map +1 -0
- package/dist/types/runtime-security.d.ts +110 -0
- package/dist/types/runtime-security.d.ts.map +1 -0
- package/dist/types/runtime-security.js +4 -0
- package/dist/types/runtime-security.js.map +1 -0
- package/dist/types/session.d.ts +82 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +3 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/token-optimization.d.ts +121 -0
- package/dist/types/token-optimization.d.ts.map +1 -0
- package/dist/types/token-optimization.js +3 -0
- package/dist/types/token-optimization.js.map +1 -0
- package/dist/types/workers.d.ts +132 -0
- package/dist/types/workers.d.ts.map +1 -0
- package/dist/types/workers.js +3 -0
- package/dist/types/workers.js.map +1 -0
- package/package.json +1 -1
- package/src/config/ide-registry.json +204 -0
- package/src/config/injection-patterns.json +30 -0
- package/src/config/known-cves.json +41 -0
- package/src/config/license-plans.json +32 -2
- package/src/config/llm-providers.json +198 -0
- package/src/config/model-equivalences.json +41 -0
- package/src/config/model-language-affinity.json +16 -0
- package/src/config/orchestration-templates.json +76 -0
- package/src/config/orchestration-topologies.json +36 -0
- package/src/config/plugin-marketplace.json +59 -0
- package/src/config/security-runtime-config.json +26 -0
- package/src/config/workers-registry.json +100 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// orchestrator/topologies.ts — Topology strategy implementations (SPEC-079 AC-02)
|
|
2
|
+
// Each topology defines planExecution() returning a DAG of execution nodes.
|
|
3
|
+
/**
|
|
4
|
+
* Plan execution graph for mesh topology.
|
|
5
|
+
* All agents work in parallel — no dependencies between tasks.
|
|
6
|
+
* Results are reconciled at the end.
|
|
7
|
+
*/
|
|
8
|
+
export function planMeshExecution(tasks, agents) {
|
|
9
|
+
const agentIds = new Set(agents.map((a) => a.agentId));
|
|
10
|
+
const nodes = tasks
|
|
11
|
+
.filter((t) => agentIds.has(t.agentId))
|
|
12
|
+
.map((t) => ({
|
|
13
|
+
taskId: t.taskId,
|
|
14
|
+
agentId: t.agentId,
|
|
15
|
+
dependencies: [],
|
|
16
|
+
phase: 0,
|
|
17
|
+
}));
|
|
18
|
+
return { nodes, phases: nodes.length > 0 ? 1 : 0, topology: 'mesh' };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Plan execution graph for hierarchical topology.
|
|
22
|
+
* First agent is coordinator (phase 0), remaining are workers (phase 1).
|
|
23
|
+
* Workers depend on the coordinator task completing first.
|
|
24
|
+
*/
|
|
25
|
+
export function planHierarchicalExecution(tasks, agents) {
|
|
26
|
+
if (tasks.length === 0 || agents.length === 0) {
|
|
27
|
+
return { nodes: [], phases: 0, topology: 'hierarchical' };
|
|
28
|
+
}
|
|
29
|
+
const coordinatorTask = tasks[0];
|
|
30
|
+
const workerTasks = tasks.slice(1);
|
|
31
|
+
const nodes = [];
|
|
32
|
+
if (coordinatorTask) {
|
|
33
|
+
nodes.push({
|
|
34
|
+
taskId: coordinatorTask.taskId,
|
|
35
|
+
agentId: coordinatorTask.agentId,
|
|
36
|
+
dependencies: [],
|
|
37
|
+
phase: 0,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const coordId = coordinatorTask?.taskId ?? '';
|
|
41
|
+
for (const t of workerTasks) {
|
|
42
|
+
nodes.push({
|
|
43
|
+
taskId: t.taskId,
|
|
44
|
+
agentId: t.agentId,
|
|
45
|
+
dependencies: [coordId],
|
|
46
|
+
phase: 1,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return { nodes, phases: workerTasks.length > 0 ? 2 : 1, topology: 'hierarchical' };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Plan execution graph for pipeline topology.
|
|
53
|
+
* Tasks execute sequentially — each depends on the previous one.
|
|
54
|
+
*/
|
|
55
|
+
export function planPipelineExecution(tasks, _agents) {
|
|
56
|
+
const nodes = tasks.map((t, i) => ({
|
|
57
|
+
taskId: t.taskId,
|
|
58
|
+
agentId: t.agentId,
|
|
59
|
+
dependencies: i > 0 ? [tasks[i - 1]?.taskId ?? ''] : [],
|
|
60
|
+
phase: i,
|
|
61
|
+
}));
|
|
62
|
+
return { nodes, phases: tasks.length, topology: 'pipeline' };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Plan execution graph for star topology.
|
|
66
|
+
* First agent is the hub (phase 0), all others are spokes (phase 1).
|
|
67
|
+
* Spokes run in parallel but each depends on the hub.
|
|
68
|
+
*/
|
|
69
|
+
export function planStarExecution(tasks, agents) {
|
|
70
|
+
// Star is structurally similar to hierarchical but semantically different.
|
|
71
|
+
// Hub coordinates, spokes report only to hub (not to each other).
|
|
72
|
+
return planHierarchicalExecution(tasks, agents);
|
|
73
|
+
}
|
|
74
|
+
/** Topology planner registry. */
|
|
75
|
+
const TOPOLOGY_PLANNERS = {
|
|
76
|
+
mesh: planMeshExecution,
|
|
77
|
+
hierarchical: planHierarchicalExecution,
|
|
78
|
+
pipeline: planPipelineExecution,
|
|
79
|
+
star: planStarExecution,
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Plan execution for the given topology type.
|
|
83
|
+
* Delegates to the appropriate topology strategy.
|
|
84
|
+
*/
|
|
85
|
+
export function planExecution(topology, tasks, agents) {
|
|
86
|
+
const planner = TOPOLOGY_PLANNERS[topology];
|
|
87
|
+
return planner(tasks, agents);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=topologies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topologies.js","sourceRoot":"","sources":["../../../src/engine/orchestrator/topologies.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,4EAA4E;AAU5E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,MAA6B;IAE7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAA2B,KAAK;SACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE,CAAC;KACT,CAAC,CAAC,CAAC;IAEN,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAA8B,EAC9B,MAA6B;IAE7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,KAAK,GAA2B,EAAE,CAAC;IAEzC,IAAI,eAAe,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,EAAE,MAAM,IAAI,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,YAAY,EAAE,CAAC,OAAO,CAAC;YACvB,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAA8B,EAC9B,OAA8B;IAE9B,MAAM,KAAK,GAA2B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QACvD,KAAK,EAAE,CAAC;KACT,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,MAA6B;IAE7B,2EAA2E;IAC3E,kEAAkE;IAClE,OAAO,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,iCAAiC;AACjC,MAAM,iBAAiB,GAGnB;IACF,IAAI,EAAE,iBAAiB;IACvB,YAAY,EAAE,yBAAyB;IACvC,QAAQ,EAAE,qBAAqB;IAC/B,IAAI,EAAE,iBAAiB;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,QAA6B,EAC7B,KAA8B,EAC9B,MAA6B;IAE7B,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { PluginRegistration, ParsedSemver } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parses a semver string like "1.2.3" into numeric components.
|
|
4
|
+
* Returns null if invalid.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseSemver(version: string): ParsedSemver | null;
|
|
7
|
+
/**
|
|
8
|
+
* Evaluates a single semver condition like ">=1.2.0", "^1.2.0", "~1.2.0", "<2.0.0".
|
|
9
|
+
*/
|
|
10
|
+
export declare function evaluateCondition(condition: string, current: ParsedSemver): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a version satisfies a semver range string.
|
|
13
|
+
* Supports: ^, ~, >=, >, <=, <, exact match, space-separated AND, || for OR.
|
|
14
|
+
*/
|
|
15
|
+
export declare function satisfiesRange(version: string, range: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Checks if a plugin is compatible with the given Planu version.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isPluginCompatible(planuVersionRange: string, currentVersion: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Filters plugin registrations to only those compatible with the given version.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getCompatiblePlugins(plugins: readonly PluginRegistration[], currentVersion: string): PluginRegistration[];
|
|
24
|
+
//# sourceMappingURL=compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/engine/plugins/compatibility.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7E;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAmBhE;AAyED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CA2BnF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAYtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,kBAAkB,EAAE,EACtC,cAAc,EAAE,MAAM,GACrB,kBAAkB,EAAE,CAEtB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// engine/plugins/compatibility.ts — Semver range matching (SPEC-085 AC-13)
|
|
2
|
+
/**
|
|
3
|
+
* Parses a semver string like "1.2.3" into numeric components.
|
|
4
|
+
* Returns null if invalid.
|
|
5
|
+
*/
|
|
6
|
+
export function parseSemver(version) {
|
|
7
|
+
const clean = version.replace(/^v/, '');
|
|
8
|
+
const parts = clean.split('.');
|
|
9
|
+
if (parts.length !== 3) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const major = Number(parts[0]);
|
|
13
|
+
const minor = Number(parts[1]);
|
|
14
|
+
const patch = Number(parts[2]);
|
|
15
|
+
if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
if (major < 0 || minor < 0 || patch < 0) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return { major, minor, patch };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Compares two parsed versions.
|
|
25
|
+
* Returns -1 if a < b, 0 if a == b, 1 if a > b.
|
|
26
|
+
*/
|
|
27
|
+
function compareVersions(a, b) {
|
|
28
|
+
if (a.major !== b.major) {
|
|
29
|
+
return a.major < b.major ? -1 : 1;
|
|
30
|
+
}
|
|
31
|
+
if (a.minor !== b.minor) {
|
|
32
|
+
return a.minor < b.minor ? -1 : 1;
|
|
33
|
+
}
|
|
34
|
+
if (a.patch !== b.patch) {
|
|
35
|
+
return a.patch < b.patch ? -1 : 1;
|
|
36
|
+
}
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
/** Parses the version from a prefixed condition and compares it. */
|
|
40
|
+
function parseAndCompare(versionStr, current) {
|
|
41
|
+
const target = parseSemver(versionStr);
|
|
42
|
+
if (!target) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return { target, cmp: compareVersions(current, target) };
|
|
46
|
+
}
|
|
47
|
+
/** Evaluates caret (^) condition: compatible with major version. */
|
|
48
|
+
function evalCaret(versionStr, current) {
|
|
49
|
+
const result = parseAndCompare(versionStr, current);
|
|
50
|
+
if (!result) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return current.major === result.target.major && result.cmp >= 0;
|
|
54
|
+
}
|
|
55
|
+
/** Evaluates tilde (~) condition: compatible with minor version. */
|
|
56
|
+
function evalTilde(versionStr, current) {
|
|
57
|
+
const result = parseAndCompare(versionStr, current);
|
|
58
|
+
if (!result) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return (current.major === result.target.major &&
|
|
62
|
+
current.minor === result.target.minor &&
|
|
63
|
+
result.cmp >= 0);
|
|
64
|
+
}
|
|
65
|
+
/** Evaluates a comparison operator condition. */
|
|
66
|
+
function evalComparison(operator, versionStr, current) {
|
|
67
|
+
const result = parseAndCompare(versionStr, current);
|
|
68
|
+
if (!result) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
switch (operator) {
|
|
72
|
+
case '>=':
|
|
73
|
+
return result.cmp >= 0;
|
|
74
|
+
case '>':
|
|
75
|
+
return result.cmp > 0;
|
|
76
|
+
case '<=':
|
|
77
|
+
return result.cmp <= 0;
|
|
78
|
+
case '<':
|
|
79
|
+
return result.cmp < 0;
|
|
80
|
+
default:
|
|
81
|
+
return result.cmp === 0;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Evaluates a single semver condition like ">=1.2.0", "^1.2.0", "~1.2.0", "<2.0.0".
|
|
86
|
+
*/
|
|
87
|
+
export function evaluateCondition(condition, current) {
|
|
88
|
+
const trimmed = condition.trim();
|
|
89
|
+
if (!trimmed) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
if (trimmed.startsWith('^')) {
|
|
93
|
+
return evalCaret(trimmed.slice(1), current);
|
|
94
|
+
}
|
|
95
|
+
if (trimmed.startsWith('~')) {
|
|
96
|
+
return evalTilde(trimmed.slice(1), current);
|
|
97
|
+
}
|
|
98
|
+
if (trimmed.startsWith('>=')) {
|
|
99
|
+
return evalComparison('>=', trimmed.slice(2), current);
|
|
100
|
+
}
|
|
101
|
+
if (trimmed.startsWith('>')) {
|
|
102
|
+
return evalComparison('>', trimmed.slice(1), current);
|
|
103
|
+
}
|
|
104
|
+
if (trimmed.startsWith('<=')) {
|
|
105
|
+
return evalComparison('<=', trimmed.slice(2), current);
|
|
106
|
+
}
|
|
107
|
+
if (trimmed.startsWith('<')) {
|
|
108
|
+
return evalComparison('<', trimmed.slice(1), current);
|
|
109
|
+
}
|
|
110
|
+
const exactStr = trimmed.startsWith('=') ? trimmed.slice(1) : trimmed;
|
|
111
|
+
return evalComparison('=', exactStr, current);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Checks if a version satisfies a semver range string.
|
|
115
|
+
* Supports: ^, ~, >=, >, <=, <, exact match, space-separated AND, || for OR.
|
|
116
|
+
*/
|
|
117
|
+
export function satisfiesRange(version, range) {
|
|
118
|
+
const current = parseSemver(version);
|
|
119
|
+
if (!current) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
const orGroups = range.split('||').map((g) => g.trim());
|
|
123
|
+
return orGroups.some((group) => {
|
|
124
|
+
const conditions = group.split(/\s+/).filter(Boolean);
|
|
125
|
+
return conditions.every((cond) => evaluateCondition(cond, current));
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Checks if a plugin is compatible with the given Planu version.
|
|
130
|
+
*/
|
|
131
|
+
export function isPluginCompatible(planuVersionRange, currentVersion) {
|
|
132
|
+
return satisfiesRange(currentVersion, planuVersionRange);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Filters plugin registrations to only those compatible with the given version.
|
|
136
|
+
*/
|
|
137
|
+
export function getCompatiblePlugins(plugins, currentVersion) {
|
|
138
|
+
return plugins.filter((p) => isPluginCompatible(p.manifest.planuVersion, currentVersion));
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=compatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/engine/plugins/compatibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PluginManifest, PluginModule } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates Markdown documentation for a plugin based on its manifest and module.
|
|
4
|
+
*/
|
|
5
|
+
export declare function generatePluginDocs(manifest: PluginManifest, mod: PluginModule | undefined): string;
|
|
6
|
+
//# sourceMappingURL=doc-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/plugins/doc-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAKb,MAAM,sBAAsB,CAAC;AAyE9B;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,YAAY,GAAG,SAAS,GAC5B,MAAM,CAqBR"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// engine/plugins/doc-generator.ts — Plugin documentation generator (SPEC-085 AC-14)
|
|
2
|
+
function generateMetadataSection(manifest) {
|
|
3
|
+
return [
|
|
4
|
+
`# ${manifest.name}`,
|
|
5
|
+
'',
|
|
6
|
+
`> ${manifest.description}`,
|
|
7
|
+
'',
|
|
8
|
+
'## Metadata',
|
|
9
|
+
'',
|
|
10
|
+
`- **ID**: ${manifest.id}`,
|
|
11
|
+
`- **Version**: ${manifest.version}`,
|
|
12
|
+
`- **Author**: ${manifest.author}`,
|
|
13
|
+
`- **License**: ${manifest.license}`,
|
|
14
|
+
`- **Planu Version**: ${manifest.planuVersion}`,
|
|
15
|
+
`- **Permissions**: ${manifest.permissions.join(', ') || 'none'}`,
|
|
16
|
+
'',
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
function generateToolsSection(tools) {
|
|
20
|
+
const lines = ['## Tools', ''];
|
|
21
|
+
for (const tool of tools) {
|
|
22
|
+
lines.push(`### ${tool.name}`, '', tool.description, '');
|
|
23
|
+
if (Object.keys(tool.inputSchema).length > 0) {
|
|
24
|
+
lines.push('**Input Schema:**', '```json', JSON.stringify(tool.inputSchema, null, 2), '```', '');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return lines;
|
|
28
|
+
}
|
|
29
|
+
function generateWorkersSection(workers) {
|
|
30
|
+
const lines = ['## Workers', ''];
|
|
31
|
+
for (const worker of workers) {
|
|
32
|
+
lines.push(`### ${worker.name}`, '', `- **Trigger**: ${worker.trigger}`);
|
|
33
|
+
if (worker.interval) {
|
|
34
|
+
lines.push(`- **Interval**: ${String(worker.interval)}ms`);
|
|
35
|
+
}
|
|
36
|
+
if (worker.eventName) {
|
|
37
|
+
lines.push(`- **Event**: ${worker.eventName}`);
|
|
38
|
+
}
|
|
39
|
+
lines.push('');
|
|
40
|
+
}
|
|
41
|
+
return lines;
|
|
42
|
+
}
|
|
43
|
+
function generateAnalyzersSection(analyzers) {
|
|
44
|
+
const lines = ['## Analyzers', ''];
|
|
45
|
+
for (const analyzer of analyzers) {
|
|
46
|
+
lines.push(`### ${analyzer.name}`, '', `- **File Patterns**: ${analyzer.filePatterns.join(', ')}`, '');
|
|
47
|
+
}
|
|
48
|
+
return lines;
|
|
49
|
+
}
|
|
50
|
+
function generateTemplatesSection(templates) {
|
|
51
|
+
const lines = ['## Templates', ''];
|
|
52
|
+
for (const template of templates) {
|
|
53
|
+
lines.push(`### ${template.name}`, '', `- **Domain**: ${template.domain}`, '');
|
|
54
|
+
}
|
|
55
|
+
return lines;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Generates Markdown documentation for a plugin based on its manifest and module.
|
|
59
|
+
*/
|
|
60
|
+
export function generatePluginDocs(manifest, mod) {
|
|
61
|
+
const lines = [...generateMetadataSection(manifest)];
|
|
62
|
+
if (mod?.tools && mod.tools.length > 0) {
|
|
63
|
+
lines.push(...generateToolsSection(mod.tools));
|
|
64
|
+
}
|
|
65
|
+
if (mod?.workers && mod.workers.length > 0) {
|
|
66
|
+
lines.push(...generateWorkersSection(mod.workers));
|
|
67
|
+
}
|
|
68
|
+
if (mod?.analyzers && mod.analyzers.length > 0) {
|
|
69
|
+
lines.push(...generateAnalyzersSection(mod.analyzers));
|
|
70
|
+
}
|
|
71
|
+
if (mod?.templates && mod.templates.length > 0) {
|
|
72
|
+
lines.push(...generateTemplatesSection(mod.templates));
|
|
73
|
+
}
|
|
74
|
+
if (manifest.i18n && Object.keys(manifest.i18n).length > 0) {
|
|
75
|
+
lines.push('## Supported Languages', '', Object.keys(manifest.i18n).join(', '), '');
|
|
76
|
+
}
|
|
77
|
+
return lines.join('\n');
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=doc-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-generator.js","sourceRoot":"","sources":["../../../src/engine/plugins/doc-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PluginAnalyzerDefinition, PluginAnalysisResult } from '../../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registers analyzers from a plugin.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerPluginAnalyzers(pluginId: string, analyzers: readonly PluginAnalyzerDefinition[]): string[];
|
|
6
|
+
/**
|
|
7
|
+
* Unregisters all analyzers belonging to a plugin.
|
|
8
|
+
*/
|
|
9
|
+
export declare function unregisterPluginAnalyzers(pluginId: string): string[];
|
|
10
|
+
/**
|
|
11
|
+
* Runs all registered plugin analyzers against the given files.
|
|
12
|
+
* Results are tagged with [plugin:{pluginId}].
|
|
13
|
+
*/
|
|
14
|
+
export declare function runPluginAnalyzers(files: readonly string[]): Promise<{
|
|
15
|
+
pluginId: string;
|
|
16
|
+
results: PluginAnalysisResult[];
|
|
17
|
+
}[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the count of analyzers registered for a specific plugin.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getPluginAnalyzerCount(pluginId: string): number;
|
|
22
|
+
/**
|
|
23
|
+
* Clears all analyzer registrations (for testing).
|
|
24
|
+
*/
|
|
25
|
+
export declare function clearAnalyzerRegistry(): void;
|
|
26
|
+
//# sourceMappingURL=analyzer-extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer-extension.d.ts","sourceRoot":"","sources":["../../../../src/engine/plugins/extensions/analyzer-extension.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,yBAAyB,CAAC;AAUjC;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,wBAAwB,EAAE,GAC7C,MAAM,EAAE,CAeV;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAWpE;AAiBD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAAE,EAAE,CAAC,CAoClE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// engine/plugins/extensions/analyzer-extension.ts — Analyzer registration (SPEC-085 AC-06)
|
|
2
|
+
import { withPluginTimeout } from '../sandbox.js';
|
|
3
|
+
/** Registry of plugin analyzers keyed by `{pluginId}:{analyzerName}` */
|
|
4
|
+
const analyzerRegistry = new Map();
|
|
5
|
+
function analyzerKey(pluginId, analyzerName) {
|
|
6
|
+
return `${pluginId}:${analyzerName}`;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Registers analyzers from a plugin.
|
|
10
|
+
*/
|
|
11
|
+
export function registerPluginAnalyzers(pluginId, analyzers) {
|
|
12
|
+
const registered = [];
|
|
13
|
+
for (const analyzer of analyzers) {
|
|
14
|
+
const key = analyzerKey(pluginId, analyzer.name);
|
|
15
|
+
if (analyzerRegistry.has(key)) {
|
|
16
|
+
throw new Error(`Analyzer "${analyzer.name}" already registered for plugin "${pluginId}"`);
|
|
17
|
+
}
|
|
18
|
+
analyzerRegistry.set(key, { pluginId, definition: analyzer });
|
|
19
|
+
registered.push(key);
|
|
20
|
+
}
|
|
21
|
+
return registered;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Unregisters all analyzers belonging to a plugin.
|
|
25
|
+
*/
|
|
26
|
+
export function unregisterPluginAnalyzers(pluginId) {
|
|
27
|
+
const removed = [];
|
|
28
|
+
for (const [key, entry] of analyzerRegistry) {
|
|
29
|
+
if (entry.pluginId === pluginId) {
|
|
30
|
+
analyzerRegistry.delete(key);
|
|
31
|
+
removed.push(key);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return removed;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Simple glob matching: supports * and ** wildcards.
|
|
38
|
+
* `**` matches any number of path segments (including zero).
|
|
39
|
+
* `*` matches anything except `/`.
|
|
40
|
+
*/
|
|
41
|
+
function matchGlob(pattern, filePath) {
|
|
42
|
+
const regexStr = pattern
|
|
43
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
44
|
+
.replace(/\*\*\//g, '(?:.*/)?')
|
|
45
|
+
.replace(/\*\*/g, '.*')
|
|
46
|
+
.replace(/\*/g, '[^/]*');
|
|
47
|
+
const regex = new RegExp(`^${regexStr}$`);
|
|
48
|
+
return regex.test(filePath);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Runs all registered plugin analyzers against the given files.
|
|
52
|
+
* Results are tagged with [plugin:{pluginId}].
|
|
53
|
+
*/
|
|
54
|
+
export async function runPluginAnalyzers(files) {
|
|
55
|
+
const output = [];
|
|
56
|
+
for (const [, entry] of analyzerRegistry) {
|
|
57
|
+
const matchingFiles = files.filter((f) => entry.definition.filePatterns.some((pattern) => matchGlob(pattern, f)));
|
|
58
|
+
if (matchingFiles.length === 0) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const results = await withPluginTimeout(entry.pluginId, `analyzer:${entry.definition.name}`, () => entry.definition.analyze([...matchingFiles]));
|
|
63
|
+
output.push({ pluginId: entry.pluginId, results });
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
67
|
+
output.push({
|
|
68
|
+
pluginId: entry.pluginId,
|
|
69
|
+
results: [
|
|
70
|
+
{
|
|
71
|
+
file: '',
|
|
72
|
+
severity: 'error',
|
|
73
|
+
message: `Analyzer error: ${msg}`,
|
|
74
|
+
rule: `plugin:${entry.pluginId}:${entry.definition.name}`,
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return output;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Returns the count of analyzers registered for a specific plugin.
|
|
84
|
+
*/
|
|
85
|
+
export function getPluginAnalyzerCount(pluginId) {
|
|
86
|
+
let count = 0;
|
|
87
|
+
for (const entry of analyzerRegistry.values()) {
|
|
88
|
+
if (entry.pluginId === pluginId) {
|
|
89
|
+
count++;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return count;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Clears all analyzer registrations (for testing).
|
|
96
|
+
*/
|
|
97
|
+
export function clearAnalyzerRegistry() {
|
|
98
|
+
analyzerRegistry.clear();
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=analyzer-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer-extension.js","sourceRoot":"","sources":["../../../../src/engine/plugins/extensions/analyzer-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PluginTemplateDefinition } from '../../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registers templates from a plugin.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerPluginTemplates(pluginId: string, templates: readonly PluginTemplateDefinition[]): string[];
|
|
6
|
+
/**
|
|
7
|
+
* Unregisters all templates belonging to a plugin.
|
|
8
|
+
*/
|
|
9
|
+
export declare function unregisterPluginTemplates(pluginId: string): string[];
|
|
10
|
+
/**
|
|
11
|
+
* Returns all registered plugin templates, optionally filtered by domain.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getPluginTemplates(domain?: string): {
|
|
14
|
+
pluginId: string;
|
|
15
|
+
template: PluginTemplateDefinition;
|
|
16
|
+
}[];
|
|
17
|
+
/**
|
|
18
|
+
* Returns the count of templates registered for a specific plugin.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getPluginTemplateCount(pluginId: string): number;
|
|
21
|
+
/**
|
|
22
|
+
* Clears all template registrations (for testing).
|
|
23
|
+
*/
|
|
24
|
+
export declare function clearTemplateRegistry(): void;
|
|
25
|
+
//# sourceMappingURL=template-extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-extension.d.ts","sourceRoot":"","sources":["../../../../src/engine/plugins/extensions/template-extension.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAA4B,MAAM,yBAAyB,CAAC;AASlG;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,wBAAwB,EAAE,GAC7C,MAAM,EAAE,CAeV;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAWpE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,EAAE,CAU5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// engine/plugins/extensions/template-extension.ts — Template registration (SPEC-085 AC-07)
|
|
2
|
+
/** Registry of plugin templates keyed by `{pluginId}:{templateName}` */
|
|
3
|
+
const templateRegistry = new Map();
|
|
4
|
+
function templateKey(pluginId, templateName) {
|
|
5
|
+
return `${pluginId}:${templateName}`;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Registers templates from a plugin.
|
|
9
|
+
*/
|
|
10
|
+
export function registerPluginTemplates(pluginId, templates) {
|
|
11
|
+
const registered = [];
|
|
12
|
+
for (const template of templates) {
|
|
13
|
+
const key = templateKey(pluginId, template.name);
|
|
14
|
+
if (templateRegistry.has(key)) {
|
|
15
|
+
throw new Error(`Template "${template.name}" already registered for plugin "${pluginId}"`);
|
|
16
|
+
}
|
|
17
|
+
templateRegistry.set(key, { pluginId, definition: template });
|
|
18
|
+
registered.push(key);
|
|
19
|
+
}
|
|
20
|
+
return registered;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unregisters all templates belonging to a plugin.
|
|
24
|
+
*/
|
|
25
|
+
export function unregisterPluginTemplates(pluginId) {
|
|
26
|
+
const removed = [];
|
|
27
|
+
for (const [key, entry] of templateRegistry) {
|
|
28
|
+
if (entry.pluginId === pluginId) {
|
|
29
|
+
templateRegistry.delete(key);
|
|
30
|
+
removed.push(key);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return removed;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns all registered plugin templates, optionally filtered by domain.
|
|
37
|
+
*/
|
|
38
|
+
export function getPluginTemplates(domain) {
|
|
39
|
+
const results = [];
|
|
40
|
+
for (const entry of templateRegistry.values()) {
|
|
41
|
+
if (!domain || entry.definition.domain === domain) {
|
|
42
|
+
results.push({ pluginId: entry.pluginId, template: entry.definition });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return results;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns the count of templates registered for a specific plugin.
|
|
49
|
+
*/
|
|
50
|
+
export function getPluginTemplateCount(pluginId) {
|
|
51
|
+
let count = 0;
|
|
52
|
+
for (const entry of templateRegistry.values()) {
|
|
53
|
+
if (entry.pluginId === pluginId) {
|
|
54
|
+
count++;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return count;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Clears all template registrations (for testing).
|
|
61
|
+
*/
|
|
62
|
+
export function clearTemplateRegistry() {
|
|
63
|
+
templateRegistry.clear();
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=template-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-extension.js","sourceRoot":"","sources":["../../../../src/engine/plugins/extensions/template-extension.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAI3F,wEAAwE;AACxE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoC,CAAC;AAErE,SAAS,WAAW,CAAC,QAAgB,EAAE,YAAoB;IACzD,OAAO,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgB,EAChB,SAA8C;IAE9C,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,oCAAoC,QAAQ,GAAG,CAAC,CAAC;QAC7F,CAAC;QAED,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAe;IAEf,MAAM,OAAO,GAA+D,EAAE,CAAC;IAE/E,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChC,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PluginToolDefinition } from '../../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the prefixed tool name for a plugin tool.
|
|
4
|
+
*/
|
|
5
|
+
export declare function buildPluginToolName(pluginId: string, toolName: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Registers tools from a plugin. Each tool is prefixed with `plugin:{pluginId}:`.
|
|
8
|
+
* Returns the list of registered prefixed names.
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerPluginTools(pluginId: string, tools: readonly PluginToolDefinition[], builtInTools: ReadonlySet<string>): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Unregisters all tools belonging to a plugin.
|
|
13
|
+
*/
|
|
14
|
+
export declare function unregisterPluginTools(pluginId: string): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Invokes a plugin tool by its prefixed name, with timeout wrapping.
|
|
17
|
+
*/
|
|
18
|
+
export declare function invokePluginTool(prefixedName: string, input: unknown, timeoutMs?: number): Promise<unknown>;
|
|
19
|
+
/**
|
|
20
|
+
* Returns all registered plugin tools.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getRegisteredPluginTools(): Map<string, {
|
|
23
|
+
pluginId: string;
|
|
24
|
+
definition: PluginToolDefinition;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* Returns the count of tools registered for a specific plugin.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getPluginToolCount(pluginId: string): number;
|
|
30
|
+
/**
|
|
31
|
+
* Clears all plugin tools (for testing).
|
|
32
|
+
*/
|
|
33
|
+
export declare function clearPluginToolRegistry(): void;
|
|
34
|
+
//# sourceMappingURL=tool-extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-extension.d.ts","sourceRoot":"","sources":["../../../../src/engine/plugins/extensions/tool-extension.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AASpE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,oBAAoB,EAAE,EACtC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,MAAM,EAAE,CAwBV;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAWhE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,GAAG,CAC7C,MAAM,EACN;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,CACvD,CAEA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|