@planu/cli 0.63.6 → 0.64.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/license-plans.json +16 -1
- package/dist/engine/a2a/capability-card.d.ts +16 -0
- package/dist/engine/a2a/capability-card.d.ts.map +1 -0
- package/dist/engine/a2a/capability-card.js +69 -0
- package/dist/engine/a2a/capability-card.js.map +1 -0
- package/dist/engine/a2a/delegate.d.ts +15 -0
- package/dist/engine/a2a/delegate.d.ts.map +1 -0
- package/dist/engine/a2a/delegate.js +47 -0
- package/dist/engine/a2a/delegate.js.map +1 -0
- package/dist/engine/a2a/fallback.d.ts +12 -0
- package/dist/engine/a2a/fallback.d.ts.map +1 -0
- package/dist/engine/a2a/fallback.js +52 -0
- package/dist/engine/a2a/fallback.js.map +1 -0
- package/dist/engine/a2a/index.d.ts +5 -0
- package/dist/engine/a2a/index.d.ts.map +1 -0
- package/dist/engine/a2a/index.js +6 -0
- package/dist/engine/a2a/index.js.map +1 -0
- package/dist/engine/a2a/task-manager.d.ts +39 -0
- package/dist/engine/a2a/task-manager.d.ts.map +1 -0
- package/dist/engine/a2a/task-manager.js +84 -0
- package/dist/engine/a2a/task-manager.js.map +1 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.d.ts +13 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.js +43 -0
- package/dist/engine/ac-gap-detector/analyze-gaps.js.map +1 -0
- package/dist/engine/ac-gap-detector/constants.d.ts +22 -0
- package/dist/engine/ac-gap-detector/constants.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/constants.js +143 -0
- package/dist/engine/ac-gap-detector/constants.js.map +1 -0
- package/dist/engine/ac-gap-detector/gap-rules.d.ts +16 -0
- package/dist/engine/ac-gap-detector/gap-rules.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/gap-rules.js +180 -0
- package/dist/engine/ac-gap-detector/gap-rules.js.map +1 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.d.ts +16 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.js +62 -0
- package/dist/engine/ac-gap-detector/pattern-matcher.js.map +1 -0
- package/dist/engine/ac-gap-detector.d.ts +3 -0
- package/dist/engine/ac-gap-detector.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector.js +5 -0
- package/dist/engine/ac-gap-detector.js.map +1 -0
- package/dist/engine/analyzer/analyze-project.js +1 -1
- package/dist/engine/analyzer/analyze-project.js.map +1 -1
- package/dist/engine/analyzer/completeness-checker.js +1 -1
- package/dist/engine/analyzer/completeness-checker.js.map +1 -1
- package/dist/engine/analyzer/detectors.js +2 -2
- package/dist/engine/analyzer/detectors.js.map +1 -1
- package/dist/engine/audit-trail/attestation.d.ts +11 -0
- package/dist/engine/audit-trail/attestation.d.ts.map +1 -0
- package/dist/engine/audit-trail/attestation.js +47 -0
- package/dist/engine/audit-trail/attestation.js.map +1 -0
- package/dist/engine/audit-trail/index.d.ts +6 -0
- package/dist/engine/audit-trail/index.d.ts.map +1 -0
- package/dist/engine/audit-trail/index.js +6 -0
- package/dist/engine/audit-trail/index.js.map +1 -0
- package/dist/engine/audit-trail/logger.d.ts +17 -0
- package/dist/engine/audit-trail/logger.d.ts.map +1 -0
- package/dist/engine/audit-trail/logger.js +78 -0
- package/dist/engine/audit-trail/logger.js.map +1 -0
- package/dist/engine/audit-trail/query.d.ts +7 -0
- package/dist/engine/audit-trail/query.d.ts.map +1 -0
- package/dist/engine/audit-trail/query.js +61 -0
- package/dist/engine/audit-trail/query.js.map +1 -0
- package/dist/engine/audit-trail/utils.d.ts +18 -0
- package/dist/engine/audit-trail/utils.d.ts.map +1 -0
- package/dist/engine/audit-trail/utils.js +44 -0
- package/dist/engine/audit-trail/utils.js.map +1 -0
- package/dist/engine/audit-trail/verifier.d.ts +10 -0
- package/dist/engine/audit-trail/verifier.d.ts.map +1 -0
- package/dist/engine/audit-trail/verifier.js +78 -0
- package/dist/engine/audit-trail/verifier.js.map +1 -0
- package/dist/engine/auth/config.d.ts +20 -0
- package/dist/engine/auth/config.d.ts.map +1 -0
- package/dist/engine/auth/config.js +49 -0
- package/dist/engine/auth/config.js.map +1 -0
- package/dist/engine/auth/index.d.ts +6 -0
- package/dist/engine/auth/index.d.ts.map +1 -0
- package/dist/engine/auth/index.js +7 -0
- package/dist/engine/auth/index.js.map +1 -0
- package/dist/engine/auth/middleware.d.ts +19 -0
- package/dist/engine/auth/middleware.d.ts.map +1 -0
- package/dist/engine/auth/middleware.js +64 -0
- package/dist/engine/auth/middleware.js.map +1 -0
- package/dist/engine/auth/pkce.d.ts +17 -0
- package/dist/engine/auth/pkce.d.ts.map +1 -0
- package/dist/engine/auth/pkce.js +33 -0
- package/dist/engine/auth/pkce.js.map +1 -0
- package/dist/engine/auth/scope-mapper.d.ts +21 -0
- package/dist/engine/auth/scope-mapper.d.ts.map +1 -0
- package/dist/engine/auth/scope-mapper.js +124 -0
- package/dist/engine/auth/scope-mapper.js.map +1 -0
- package/dist/engine/auth/token-validator.d.ts +15 -0
- package/dist/engine/auth/token-validator.d.ts.map +1 -0
- package/dist/engine/auth/token-validator.js +121 -0
- package/dist/engine/auth/token-validator.js.map +1 -0
- package/dist/engine/ci-generator/index.d.ts.map +1 -1
- package/dist/engine/ci-generator/index.js +8 -2
- package/dist/engine/ci-generator/index.js.map +1 -1
- package/dist/engine/ci-generator/yaml-builder.d.ts +7 -2
- package/dist/engine/ci-generator/yaml-builder.d.ts.map +1 -1
- package/dist/engine/ci-generator/yaml-builder.js +49 -1
- package/dist/engine/ci-generator/yaml-builder.js.map +1 -1
- package/dist/engine/code-transforms/typescript/ast-utils.js +1 -1
- package/dist/engine/code-transforms/typescript/ast-utils.js.map +1 -1
- package/dist/engine/design-to-spec/ac-generator.d.ts +21 -0
- package/dist/engine/design-to-spec/ac-generator.d.ts.map +1 -0
- package/dist/engine/design-to-spec/ac-generator.js +185 -0
- package/dist/engine/design-to-spec/ac-generator.js.map +1 -0
- package/dist/engine/design-to-spec/index.d.ts +11 -0
- package/dist/engine/design-to-spec/index.d.ts.map +1 -0
- package/dist/engine/design-to-spec/index.js +19 -0
- package/dist/engine/design-to-spec/index.js.map +1 -0
- package/dist/engine/design-to-spec/parser.d.ts +7 -0
- package/dist/engine/design-to-spec/parser.d.ts.map +1 -0
- package/dist/engine/design-to-spec/parser.js +290 -0
- package/dist/engine/design-to-spec/parser.js.map +1 -0
- package/dist/engine/design-to-spec/spec-builder.d.ts +12 -0
- package/dist/engine/design-to-spec/spec-builder.d.ts.map +1 -0
- package/dist/engine/design-to-spec/spec-builder.js +148 -0
- package/dist/engine/design-to-spec/spec-builder.js.map +1 -0
- package/dist/engine/design-to-spec/ui-contract-builder.d.ts +17 -0
- package/dist/engine/design-to-spec/ui-contract-builder.d.ts.map +1 -0
- package/dist/engine/design-to-spec/ui-contract-builder.js +175 -0
- package/dist/engine/design-to-spec/ui-contract-builder.js.map +1 -0
- package/dist/engine/detectors/css-framework-detector.js +9 -9
- package/dist/engine/detectors/css-framework-detector.js.map +1 -1
- package/dist/engine/detectors/mcp-server-detector.js +2 -2
- package/dist/engine/detectors/mcp-server-detector.js.map +1 -1
- package/dist/engine/docs-site-generator/markdown-renderer.js +1 -1
- package/dist/engine/docs-site-generator/markdown-renderer.js.map +1 -1
- package/dist/engine/elicitation/builder.d.ts +37 -0
- package/dist/engine/elicitation/builder.d.ts.map +1 -0
- package/dist/engine/elicitation/builder.js +115 -0
- package/dist/engine/elicitation/builder.js.map +1 -0
- package/dist/engine/elicitation/fallback.d.ts +20 -0
- package/dist/engine/elicitation/fallback.d.ts.map +1 -0
- package/dist/engine/elicitation/fallback.js +72 -0
- package/dist/engine/elicitation/fallback.js.map +1 -0
- package/dist/engine/elicitation/index.d.ts +4 -0
- package/dist/engine/elicitation/index.d.ts.map +1 -0
- package/dist/engine/elicitation/index.js +5 -0
- package/dist/engine/elicitation/index.js.map +1 -0
- package/dist/engine/elicitation/response-parser.d.ts +9 -0
- package/dist/engine/elicitation/response-parser.d.ts.map +1 -0
- package/dist/engine/elicitation/response-parser.js +163 -0
- package/dist/engine/elicitation/response-parser.js.map +1 -0
- package/dist/engine/federation/cross-repo-resolver.d.ts +21 -0
- package/dist/engine/federation/cross-repo-resolver.d.ts.map +1 -0
- package/dist/engine/federation/cross-repo-resolver.js +75 -0
- package/dist/engine/federation/cross-repo-resolver.js.map +1 -0
- package/dist/engine/federation/drift-checker.d.ts +19 -0
- package/dist/engine/federation/drift-checker.d.ts.map +1 -0
- package/dist/engine/federation/drift-checker.js +114 -0
- package/dist/engine/federation/drift-checker.js.map +1 -0
- package/dist/engine/federation/federation-store.d.ts +25 -0
- package/dist/engine/federation/federation-store.d.ts.map +1 -0
- package/dist/engine/federation/federation-store.js +58 -0
- package/dist/engine/federation/federation-store.js.map +1 -0
- package/dist/engine/federation/index.d.ts +4 -0
- package/dist/engine/federation/index.d.ts.map +1 -0
- package/dist/engine/federation/index.js +5 -0
- package/dist/engine/federation/index.js.map +1 -0
- package/dist/engine/github/spec-ac-analyzer.d.ts +40 -0
- package/dist/engine/github/spec-ac-analyzer.d.ts.map +1 -0
- package/dist/engine/github/spec-ac-analyzer.js +181 -0
- package/dist/engine/github/spec-ac-analyzer.js.map +1 -0
- package/dist/engine/hooks/handlers/on-impl-change.d.ts +3 -1
- package/dist/engine/hooks/handlers/on-impl-change.d.ts.map +1 -1
- package/dist/engine/hooks/handlers/on-impl-change.js +25 -1
- package/dist/engine/hooks/handlers/on-impl-change.js.map +1 -1
- package/dist/engine/infrastructure/component-mapper.d.ts +9 -0
- package/dist/engine/infrastructure/component-mapper.d.ts.map +1 -0
- package/dist/engine/infrastructure/component-mapper.js +162 -0
- package/dist/engine/infrastructure/component-mapper.js.map +1 -0
- package/dist/engine/infrastructure/cost-estimator.d.ts +6 -0
- package/dist/engine/infrastructure/cost-estimator.d.ts.map +1 -0
- package/dist/engine/infrastructure/cost-estimator.js +48 -0
- package/dist/engine/infrastructure/cost-estimator.js.map +1 -0
- package/dist/engine/infrastructure/docker-compose-generator.d.ts +6 -0
- package/dist/engine/infrastructure/docker-compose-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/docker-compose-generator.js +201 -0
- package/dist/engine/infrastructure/docker-compose-generator.js.map +1 -0
- package/dist/engine/infrastructure/index.d.ts +15 -0
- package/dist/engine/infrastructure/index.d.ts.map +1 -0
- package/dist/engine/infrastructure/index.js +67 -0
- package/dist/engine/infrastructure/index.js.map +1 -0
- package/dist/engine/infrastructure/kubernetes-generator.d.ts +6 -0
- package/dist/engine/infrastructure/kubernetes-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/kubernetes-generator.js +141 -0
- package/dist/engine/infrastructure/kubernetes-generator.js.map +1 -0
- package/dist/engine/infrastructure/railway-generator.d.ts +6 -0
- package/dist/engine/infrastructure/railway-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/railway-generator.js +87 -0
- package/dist/engine/infrastructure/railway-generator.js.map +1 -0
- package/dist/engine/infrastructure/signal-detector.d.ts +7 -0
- package/dist/engine/infrastructure/signal-detector.d.ts.map +1 -0
- package/dist/engine/infrastructure/signal-detector.js +174 -0
- package/dist/engine/infrastructure/signal-detector.js.map +1 -0
- package/dist/engine/infrastructure/terraform-generator.d.ts +6 -0
- package/dist/engine/infrastructure/terraform-generator.d.ts.map +1 -0
- package/dist/engine/infrastructure/terraform-generator.js +241 -0
- package/dist/engine/infrastructure/terraform-generator.js.map +1 -0
- package/dist/engine/legal-compliance/detector.js +1 -1
- package/dist/engine/legal-compliance/detector.js.map +1 -1
- package/dist/engine/living-spec/annotation-parser.d.ts.map +1 -1
- package/dist/engine/living-spec/annotation-parser.js.map +1 -1
- package/dist/engine/living-spec/auto-updater.d.ts +58 -0
- package/dist/engine/living-spec/auto-updater.d.ts.map +1 -0
- package/dist/engine/living-spec/auto-updater.js +311 -0
- package/dist/engine/living-spec/auto-updater.js.map +1 -0
- package/dist/engine/living-spec/bidirectional-sync.d.ts +10 -0
- package/dist/engine/living-spec/bidirectional-sync.d.ts.map +1 -1
- package/dist/engine/living-spec/bidirectional-sync.js +11 -3
- package/dist/engine/living-spec/bidirectional-sync.js.map +1 -1
- package/dist/engine/living-spec/conflict-resolver.d.ts +46 -0
- package/dist/engine/living-spec/conflict-resolver.d.ts.map +1 -0
- package/dist/engine/living-spec/conflict-resolver.js +301 -0
- package/dist/engine/living-spec/conflict-resolver.js.map +1 -0
- package/dist/engine/living-spec/hash-tracker.d.ts.map +1 -1
- package/dist/engine/living-spec/hash-tracker.js.map +1 -1
- package/dist/engine/living-spec/index.d.ts +1 -0
- package/dist/engine/living-spec/index.d.ts.map +1 -1
- package/dist/engine/living-spec/index.js +1 -0
- package/dist/engine/living-spec/index.js.map +1 -1
- package/dist/engine/living-spec/signature-tracker.d.ts.map +1 -1
- package/dist/engine/living-spec/signature-tracker.js.map +1 -1
- package/dist/engine/observability/config.d.ts +16 -0
- package/dist/engine/observability/config.d.ts.map +1 -0
- package/dist/engine/observability/config.js +44 -0
- package/dist/engine/observability/config.js.map +1 -0
- package/dist/engine/observability/index.d.ts +7 -0
- package/dist/engine/observability/index.d.ts.map +1 -0
- package/dist/engine/observability/index.js +8 -0
- package/dist/engine/observability/index.js.map +1 -0
- package/dist/engine/observability/metrics.d.ts +12 -0
- package/dist/engine/observability/metrics.d.ts.map +1 -0
- package/dist/engine/observability/metrics.js +61 -0
- package/dist/engine/observability/metrics.js.map +1 -0
- package/dist/engine/observability/noop-tracer.d.ts +13 -0
- package/dist/engine/observability/noop-tracer.d.ts.map +1 -0
- package/dist/engine/observability/noop-tracer.js +41 -0
- package/dist/engine/observability/noop-tracer.js.map +1 -0
- package/dist/engine/observability/otel-tracer.d.ts +19 -0
- package/dist/engine/observability/otel-tracer.d.ts.map +1 -0
- package/dist/engine/observability/otel-tracer.js +134 -0
- package/dist/engine/observability/otel-tracer.js.map +1 -0
- package/dist/engine/observability/span-helpers.d.ts +28 -0
- package/dist/engine/observability/span-helpers.d.ts.map +1 -0
- package/dist/engine/observability/span-helpers.js +68 -0
- package/dist/engine/observability/span-helpers.js.map +1 -0
- package/dist/engine/observability/tracer.d.ts +26 -0
- package/dist/engine/observability/tracer.d.ts.map +1 -0
- package/dist/engine/observability/tracer.js +45 -0
- package/dist/engine/observability/tracer.js.map +1 -0
- package/dist/engine/rbac/index.d.ts +3 -0
- package/dist/engine/rbac/index.d.ts.map +1 -0
- package/dist/engine/rbac/index.js +4 -0
- package/dist/engine/rbac/index.js.map +1 -0
- package/dist/engine/rbac/permission-checker.d.ts +21 -0
- package/dist/engine/rbac/permission-checker.d.ts.map +1 -0
- package/dist/engine/rbac/permission-checker.js +74 -0
- package/dist/engine/rbac/permission-checker.js.map +1 -0
- package/dist/engine/rbac/roles.d.ts +12 -0
- package/dist/engine/rbac/roles.d.ts.map +1 -0
- package/dist/engine/rbac/roles.js +37 -0
- package/dist/engine/rbac/roles.js.map +1 -0
- package/dist/engine/shared/ac-extractor.d.ts +9 -0
- package/dist/engine/shared/ac-extractor.d.ts.map +1 -0
- package/dist/engine/shared/ac-extractor.js +36 -0
- package/dist/engine/shared/ac-extractor.js.map +1 -0
- package/dist/engine/shared/line-diff.d.ts +11 -0
- package/dist/engine/shared/line-diff.d.ts.map +1 -0
- package/dist/engine/shared/line-diff.js +32 -0
- package/dist/engine/shared/line-diff.js.map +1 -0
- package/dist/engine/skill-generator/sections-platform.d.ts.map +1 -1
- package/dist/engine/skill-generator/sections-platform.js +13 -37
- package/dist/engine/skill-generator/sections-platform.js.map +1 -1
- package/dist/engine/skill-registry/agentskill-adapter.d.ts +1 -2
- package/dist/engine/skill-registry/agentskill-adapter.d.ts.map +1 -1
- package/dist/engine/skill-registry/agentskill-adapter.js +1 -2
- package/dist/engine/skill-registry/agentskill-adapter.js.map +1 -1
- package/dist/engine/source-resolver.d.ts +1 -1
- package/dist/engine/source-resolver.d.ts.map +1 -1
- package/dist/engine/source-resolver.js +3 -2
- package/dist/engine/source-resolver.js.map +1 -1
- package/dist/engine/spec-decomposer/analyzer.d.ts +18 -0
- package/dist/engine/spec-decomposer/analyzer.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/analyzer.js +263 -0
- package/dist/engine/spec-decomposer/analyzer.js.map +1 -0
- package/dist/engine/spec-decomposer/file-mapper.d.ts +17 -0
- package/dist/engine/spec-decomposer/file-mapper.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/file-mapper.js +96 -0
- package/dist/engine/spec-decomposer/file-mapper.js.map +1 -0
- package/dist/engine/spec-decomposer/index.d.ts +14 -0
- package/dist/engine/spec-decomposer/index.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/index.js +50 -0
- package/dist/engine/spec-decomposer/index.js.map +1 -0
- package/dist/engine/spec-decomposer/ownership-resolver.d.ts +7 -0
- package/dist/engine/spec-decomposer/ownership-resolver.d.ts.map +1 -0
- package/dist/engine/spec-decomposer/ownership-resolver.js +169 -0
- package/dist/engine/spec-decomposer/ownership-resolver.js.map +1 -0
- package/dist/engine/spec-observability/index.d.ts +4 -0
- package/dist/engine/spec-observability/index.d.ts.map +1 -0
- package/dist/engine/spec-observability/index.js +4 -0
- package/dist/engine/spec-observability/index.js.map +1 -0
- package/dist/engine/spec-observability/metrics.d.ts +8 -0
- package/dist/engine/spec-observability/metrics.d.ts.map +1 -0
- package/dist/engine/spec-observability/metrics.js +116 -0
- package/dist/engine/spec-observability/metrics.js.map +1 -0
- package/dist/engine/spec-observability/tracker.d.ts +22 -0
- package/dist/engine/spec-observability/tracker.d.ts.map +1 -0
- package/dist/engine/spec-observability/tracker.js +77 -0
- package/dist/engine/spec-observability/tracker.js.map +1 -0
- package/dist/engine/spec-reader.d.ts +7 -0
- package/dist/engine/spec-reader.d.ts.map +1 -0
- package/dist/engine/spec-reader.js +23 -0
- package/dist/engine/spec-reader.js.map +1 -0
- package/dist/engine/spec-repair.d.ts +10 -0
- package/dist/engine/spec-repair.d.ts.map +1 -0
- package/dist/engine/spec-repair.js +388 -0
- package/dist/engine/spec-repair.js.map +1 -0
- package/dist/engine/spec-summary-html.js +2 -2
- package/dist/engine/spec-versioning/brancher.d.ts +17 -0
- package/dist/engine/spec-versioning/brancher.d.ts.map +1 -0
- package/dist/engine/spec-versioning/brancher.js +113 -0
- package/dist/engine/spec-versioning/brancher.js.map +1 -0
- package/dist/engine/spec-versioning/differ.d.ts +19 -0
- package/dist/engine/spec-versioning/differ.d.ts.map +1 -0
- package/dist/engine/spec-versioning/differ.js +151 -0
- package/dist/engine/spec-versioning/differ.js.map +1 -0
- package/dist/engine/spec-versioning/index.d.ts +5 -0
- package/dist/engine/spec-versioning/index.d.ts.map +1 -0
- package/dist/engine/spec-versioning/index.js +6 -0
- package/dist/engine/spec-versioning/index.js.map +1 -0
- package/dist/engine/spec-versioning/merger.d.ts +18 -0
- package/dist/engine/spec-versioning/merger.d.ts.map +1 -0
- package/dist/engine/spec-versioning/merger.js +113 -0
- package/dist/engine/spec-versioning/merger.js.map +1 -0
- package/dist/engine/spec-versioning/version-store.d.ts +18 -0
- package/dist/engine/spec-versioning/version-store.d.ts.map +1 -0
- package/dist/engine/spec-versioning/version-store.js +96 -0
- package/dist/engine/spec-versioning/version-store.js.map +1 -0
- package/dist/engine/web-fetcher/stack-advisor.d.ts.map +1 -1
- package/dist/engine/web-fetcher/stack-advisor.js +5 -6
- package/dist/engine/web-fetcher/stack-advisor.js.map +1 -1
- package/dist/engine/well-known/discovery.d.ts +7 -0
- package/dist/engine/well-known/discovery.d.ts.map +1 -0
- package/dist/engine/well-known/discovery.js +109 -0
- package/dist/engine/well-known/discovery.js.map +1 -0
- package/dist/engine/well-known/index.d.ts +6 -0
- package/dist/engine/well-known/index.d.ts.map +1 -0
- package/dist/engine/well-known/index.js +5 -0
- package/dist/engine/well-known/index.js.map +1 -0
- package/dist/engine/well-known/manifest-generator.d.ts +7 -0
- package/dist/engine/well-known/manifest-generator.d.ts.map +1 -0
- package/dist/engine/well-known/manifest-generator.js +60 -0
- package/dist/engine/well-known/manifest-generator.js.map +1 -0
- package/dist/engine/well-known/manifest-schema.d.ts +92 -0
- package/dist/engine/well-known/manifest-schema.d.ts.map +1 -0
- package/dist/engine/well-known/manifest-schema.js +70 -0
- package/dist/engine/well-known/manifest-schema.js.map +1 -0
- package/dist/resources/spec-granular.d.ts +33 -0
- package/dist/resources/spec-granular.d.ts.map +1 -0
- package/dist/resources/spec-granular.js +299 -0
- package/dist/resources/spec-granular.js.map +1 -0
- package/dist/storage/federation-store.d.ts +29 -0
- package/dist/storage/federation-store.d.ts.map +1 -0
- package/dist/storage/federation-store.js +111 -0
- package/dist/storage/federation-store.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +3 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/rbac-store.d.ts +8 -0
- package/dist/storage/rbac-store.d.ts.map +1 -0
- package/dist/storage/rbac-store.js +75 -0
- package/dist/storage/rbac-store.js.map +1 -0
- package/dist/storage/spec-observability-store.d.ts +16 -0
- package/dist/storage/spec-observability-store.d.ts.map +1 -0
- package/dist/storage/spec-observability-store.js +55 -0
- package/dist/storage/spec-observability-store.js.map +1 -0
- package/dist/tools/a2a-handler.d.ts +14 -0
- package/dist/tools/a2a-handler.d.ts.map +1 -0
- package/dist/tools/a2a-handler.js +100 -0
- package/dist/tools/a2a-handler.js.map +1 -0
- package/dist/tools/assign-role-handler.d.ts +3 -0
- package/dist/tools/assign-role-handler.d.ts.map +1 -0
- package/dist/tools/assign-role-handler.js +25 -0
- package/dist/tools/assign-role-handler.js.map +1 -0
- package/dist/tools/audit-trail-handler.d.ts +4 -0
- package/dist/tools/audit-trail-handler.d.ts.map +1 -0
- package/dist/tools/audit-trail-handler.js +91 -0
- package/dist/tools/audit-trail-handler.js.map +1 -0
- package/dist/tools/audit.js +2 -2
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/auto-update-spec.d.ts +3 -0
- package/dist/tools/auto-update-spec.d.ts.map +1 -0
- package/dist/tools/auto-update-spec.js +43 -0
- package/dist/tools/auto-update-spec.js.map +1 -0
- package/dist/tools/branch-spec.d.ts +3 -0
- package/dist/tools/branch-spec.d.ts.map +1 -0
- package/dist/tools/branch-spec.js +68 -0
- package/dist/tools/branch-spec.js.map +1 -0
- package/dist/tools/challenge-spec/platform-challenge-scenarios-b.js +1 -1
- package/dist/tools/challenge-spec/platform-challenge-scenarios-b.js.map +1 -1
- package/dist/tools/challenge-spec/platform-challenge-scenarios.js +1 -1
- package/dist/tools/challenge-spec/platform-challenge-scenarios.js.map +1 -1
- package/dist/tools/configure-auth-handler.d.ts +15 -0
- package/dist/tools/configure-auth-handler.d.ts.map +1 -0
- package/dist/tools/configure-auth-handler.js +113 -0
- package/dist/tools/configure-auth-handler.js.map +1 -0
- package/dist/tools/configure-observability.d.ts +14 -0
- package/dist/tools/configure-observability.d.ts.map +1 -0
- package/dist/tools/configure-observability.js +96 -0
- package/dist/tools/configure-observability.js.map +1 -0
- package/dist/tools/configure-roles-handler.d.ts +4 -0
- package/dist/tools/configure-roles-handler.d.ts.map +1 -0
- package/dist/tools/configure-roles-handler.js +36 -0
- package/dist/tools/configure-roles-handler.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js +114 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.js +48 -0
- package/dist/tools/create-spec-hu/ac-adapters/database-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.d.ts +14 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.js +28 -0
- package/dist/tools/create-spec-hu/ac-adapters/index.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.js +99 -0
- package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.d.ts +7 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.js +62 -0
- package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu/ai-testing-governance-adapter.js +4 -4
- package/dist/tools/create-spec-hu/ai-testing-governance-adapter.js.map +1 -1
- package/dist/tools/create-spec-hu/hu-body-generators.d.ts.map +1 -1
- package/dist/tools/create-spec-hu/hu-body-generators.js +41 -19
- package/dist/tools/create-spec-hu/hu-body-generators.js.map +1 -1
- package/dist/tools/create-spec-hu/llm-security-hu-adapter.js +1 -1
- package/dist/tools/create-spec-hu/llm-security-hu-adapter.js.map +1 -1
- package/dist/tools/create-spec-hu/quality-helpers.d.ts.map +1 -1
- package/dist/tools/create-spec-hu/quality-helpers.js +2 -3
- package/dist/tools/create-spec-hu/quality-helpers.js.map +1 -1
- package/dist/tools/create-spec-hu/swift-android-hu-adapter.js +1 -1
- package/dist/tools/create-spec-hu/swift-android-hu-adapter.js.map +1 -1
- package/dist/tools/create-spec-tech/ficha-content.d.ts.map +1 -1
- package/dist/tools/create-spec-tech/ficha-content.js +236 -6
- package/dist/tools/create-spec-tech/ficha-content.js.map +1 -1
- package/dist/tools/decompose-spec.d.ts +7 -0
- package/dist/tools/decompose-spec.d.ts.map +1 -0
- package/dist/tools/decompose-spec.js +49 -0
- package/dist/tools/decompose-spec.js.map +1 -0
- package/dist/tools/design-to-spec.d.ts +12 -0
- package/dist/tools/design-to-spec.d.ts.map +1 -0
- package/dist/tools/design-to-spec.js +73 -0
- package/dist/tools/design-to-spec.js.map +1 -0
- package/dist/tools/detect-ac-gaps.d.ts +7 -0
- package/dist/tools/detect-ac-gaps.d.ts.map +1 -0
- package/dist/tools/detect-ac-gaps.js +63 -0
- package/dist/tools/detect-ac-gaps.js.map +1 -0
- package/dist/tools/discover-registry.d.ts +8 -0
- package/dist/tools/discover-registry.d.ts.map +1 -0
- package/dist/tools/discover-registry.js +79 -0
- package/dist/tools/discover-registry.js.map +1 -0
- package/dist/tools/federate-specs.d.ts +6 -0
- package/dist/tools/federate-specs.d.ts.map +1 -0
- package/dist/tools/federate-specs.js +41 -0
- package/dist/tools/federate-specs.js.map +1 -0
- package/dist/tools/federation-status.d.ts +6 -0
- package/dist/tools/federation-status.d.ts.map +1 -0
- package/dist/tools/federation-status.js +56 -0
- package/dist/tools/federation-status.js.map +1 -0
- package/dist/tools/generate-annotations.d.ts.map +1 -1
- package/dist/tools/generate-annotations.js +3 -1
- package/dist/tools/generate-annotations.js.map +1 -1
- package/dist/tools/generate-docs/agent-docs-generator.js +1 -1
- package/dist/tools/generate-docs/agent-docs-generator.js.map +1 -1
- package/dist/tools/generate-infrastructure.d.ts +3 -0
- package/dist/tools/generate-infrastructure.d.ts.map +1 -0
- package/dist/tools/generate-infrastructure.js +60 -0
- package/dist/tools/generate-infrastructure.js.map +1 -0
- package/dist/tools/generate-tests/generators/advanced-testing-generator.d.ts.map +1 -1
- package/dist/tools/generate-tests/generators/advanced-testing-generator.js +5 -4
- package/dist/tools/generate-tests/generators/advanced-testing-generator.js.map +1 -1
- package/dist/tools/merge-spec-branch.d.ts +3 -0
- package/dist/tools/merge-spec-branch.d.ts.map +1 -0
- package/dist/tools/merge-spec-branch.js +103 -0
- package/dist/tools/merge-spec-branch.js.map +1 -0
- package/dist/tools/publish-registry.d.ts +8 -0
- package/dist/tools/publish-registry.d.ts.map +1 -0
- package/dist/tools/publish-registry.js +76 -0
- package/dist/tools/publish-registry.js.map +1 -0
- package/dist/tools/register-a2a-tools.d.ts +3 -0
- package/dist/tools/register-a2a-tools.d.ts.map +1 -0
- package/dist/tools/register-a2a-tools.js +66 -0
- package/dist/tools/register-a2a-tools.js.map +1 -0
- package/dist/tools/register-audit-trail-tools.d.ts +3 -0
- package/dist/tools/register-audit-trail-tools.d.ts.map +1 -0
- package/dist/tools/register-audit-trail-tools.js +62 -0
- package/dist/tools/register-audit-trail-tools.js.map +1 -0
- package/dist/tools/register-decompose-tools.d.ts +3 -0
- package/dist/tools/register-decompose-tools.d.ts.map +1 -0
- package/dist/tools/register-decompose-tools.js +31 -0
- package/dist/tools/register-decompose-tools.js.map +1 -0
- package/dist/tools/register-federation-tools.d.ts +6 -0
- package/dist/tools/register-federation-tools.d.ts.map +1 -0
- package/dist/tools/register-federation-tools.js +48 -0
- package/dist/tools/register-federation-tools.js.map +1 -0
- package/dist/tools/register-infrastructure-tools.d.ts +3 -0
- package/dist/tools/register-infrastructure-tools.d.ts.map +1 -0
- package/dist/tools/register-infrastructure-tools.js +34 -0
- package/dist/tools/register-infrastructure-tools.js.map +1 -0
- package/dist/tools/register-living-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-living-spec-tools.js +2 -8
- package/dist/tools/register-living-spec-tools.js.map +1 -1
- package/dist/tools/register-observability-tools.d.ts +3 -0
- package/dist/tools/register-observability-tools.d.ts.map +1 -0
- package/dist/tools/register-observability-tools.js +48 -0
- package/dist/tools/register-observability-tools.js.map +1 -0
- package/dist/tools/register-rbac-tools.d.ts +3 -0
- package/dist/tools/register-rbac-tools.d.ts.map +1 -0
- package/dist/tools/register-rbac-tools.js +36 -0
- package/dist/tools/register-rbac-tools.js.map +1 -0
- package/dist/tools/register-spec-observability-tools.d.ts +3 -0
- package/dist/tools/register-spec-observability-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-observability-tools.js +24 -0
- package/dist/tools/register-spec-observability-tools.js.map +1 -0
- package/dist/tools/register-versioning-tools.d.ts +3 -0
- package/dist/tools/register-versioning-tools.d.ts.map +1 -0
- package/dist/tools/register-versioning-tools.js +93 -0
- package/dist/tools/register-versioning-tools.js.map +1 -0
- package/dist/tools/register-well-known-tools.d.ts +3 -0
- package/dist/tools/register-well-known-tools.d.ts.map +1 -0
- package/dist/tools/register-well-known-tools.js +36 -0
- package/dist/tools/register-well-known-tools.js.map +1 -0
- package/dist/tools/repair-spec.d.ts +9 -0
- package/dist/tools/repair-spec.d.ts.map +1 -0
- package/dist/tools/repair-spec.js +93 -0
- package/dist/tools/repair-spec.js.map +1 -0
- package/dist/tools/resolve-spec-conflict.d.ts +7 -0
- package/dist/tools/resolve-spec-conflict.d.ts.map +1 -0
- package/dist/tools/resolve-spec-conflict.js +63 -0
- package/dist/tools/resolve-spec-conflict.js.map +1 -0
- package/dist/tools/response-helpers.d.ts +42 -0
- package/dist/tools/response-helpers.d.ts.map +1 -1
- package/dist/tools/response-helpers.js +29 -0
- package/dist/tools/response-helpers.js.map +1 -1
- package/dist/tools/schemas/auth-schema.d.ts +12 -0
- package/dist/tools/schemas/auth-schema.d.ts.map +1 -0
- package/dist/tools/schemas/auth-schema.js +38 -0
- package/dist/tools/schemas/auth-schema.js.map +1 -0
- package/dist/tools/schemas/rbac.d.ts +26 -0
- package/dist/tools/schemas/rbac.d.ts.map +1 -0
- package/dist/tools/schemas/rbac.js +25 -0
- package/dist/tools/schemas/rbac.js.map +1 -0
- package/dist/tools/schemas/well-known.d.ts +12 -0
- package/dist/tools/schemas/well-known.d.ts.map +1 -0
- package/dist/tools/schemas/well-known.js +31 -0
- package/dist/tools/schemas/well-known.js.map +1 -0
- package/dist/tools/snapshot-spec-hashes.d.ts.map +1 -1
- package/dist/tools/snapshot-spec-hashes.js.map +1 -1
- package/dist/tools/spec-usage-report.d.ts +3 -0
- package/dist/tools/spec-usage-report.d.ts.map +1 -0
- package/dist/tools/spec-usage-report.js +95 -0
- package/dist/tools/spec-usage-report.js.map +1 -0
- package/dist/tools/start-hooks.d.ts.map +1 -1
- package/dist/tools/start-hooks.js +93 -16
- package/dist/tools/start-hooks.js.map +1 -1
- package/dist/tools/suggest-tooling/advanced-testing-catalog.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/advanced-testing-catalog.js +8 -5
- package/dist/tools/suggest-tooling/advanced-testing-catalog.js.map +1 -1
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +2 -0
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/version-spec.d.ts +3 -0
- package/dist/tools/version-spec.d.ts.map +1 -0
- package/dist/tools/version-spec.js +54 -0
- package/dist/tools/version-spec.js.map +1 -0
- package/dist/types/a2a.d.ts +125 -0
- package/dist/types/a2a.d.ts.map +1 -0
- package/dist/types/a2a.js +3 -0
- package/dist/types/a2a.js.map +1 -0
- package/dist/types/ac-gap.d.ts +57 -0
- package/dist/types/ac-gap.d.ts.map +1 -0
- package/dist/types/ac-gap.js +3 -0
- package/dist/types/ac-gap.js.map +1 -0
- package/dist/types/audit-trail.d.ts +77 -0
- package/dist/types/audit-trail.d.ts.map +1 -0
- package/dist/types/audit-trail.js +3 -0
- package/dist/types/audit-trail.js.map +1 -0
- package/dist/types/auth.d.ts +82 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +3 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/ci.d.ts +10 -25
- package/dist/types/ci.d.ts.map +1 -1
- package/dist/types/design-to-spec.d.ts +89 -0
- package/dist/types/design-to-spec.d.ts.map +1 -0
- package/dist/types/design-to-spec.js +3 -0
- package/dist/types/design-to-spec.js.map +1 -0
- package/dist/types/elicitation.d.ts +109 -0
- package/dist/types/elicitation.d.ts.map +1 -0
- package/dist/types/elicitation.js +3 -0
- package/dist/types/elicitation.js.map +1 -0
- package/dist/types/federation.d.ts +95 -0
- package/dist/types/federation.d.ts.map +1 -0
- package/dist/types/federation.js +3 -0
- package/dist/types/federation.js.map +1 -0
- package/dist/types/file-hooks.d.ts +8 -6
- package/dist/types/file-hooks.d.ts.map +1 -1
- package/dist/types/github.d.ts +17 -0
- package/dist/types/github.d.ts.map +1 -1
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/infrastructure.d.ts +71 -0
- package/dist/types/infrastructure.d.ts.map +1 -0
- package/dist/types/infrastructure.js +3 -0
- package/dist/types/infrastructure.js.map +1 -0
- package/dist/types/living-spec.d.ts +100 -0
- package/dist/types/living-spec.d.ts.map +1 -1
- package/dist/types/observability.d.ts +105 -0
- package/dist/types/observability.d.ts.map +1 -0
- package/dist/types/observability.js +3 -0
- package/dist/types/observability.js.map +1 -0
- package/dist/types/rbac.d.ts +51 -0
- package/dist/types/rbac.d.ts.map +1 -0
- package/dist/types/rbac.js +4 -0
- package/dist/types/rbac.js.map +1 -0
- package/dist/types/resources.d.ts +20 -0
- package/dist/types/resources.d.ts.map +1 -0
- package/dist/types/resources.js +3 -0
- package/dist/types/resources.js.map +1 -0
- package/dist/types/safe-schemas.js +1 -1
- package/dist/types/safe-schemas.js.map +1 -1
- package/dist/types/spec/repair.d.ts +33 -0
- package/dist/types/spec/repair.d.ts.map +1 -0
- package/dist/types/spec/repair.js +3 -0
- package/dist/types/spec/repair.js.map +1 -0
- package/dist/types/spec-decomposer.d.ts +108 -0
- package/dist/types/spec-decomposer.d.ts.map +1 -0
- package/dist/types/spec-decomposer.js +4 -0
- package/dist/types/spec-decomposer.js.map +1 -0
- package/dist/types/spec-observability.d.ts +71 -0
- package/dist/types/spec-observability.d.ts.map +1 -0
- package/dist/types/spec-observability.js +4 -0
- package/dist/types/spec-observability.js.map +1 -0
- package/dist/types/spec-versioning.d.ts +117 -0
- package/dist/types/spec-versioning.d.ts.map +1 -0
- package/dist/types/spec-versioning.js +3 -0
- package/dist/types/spec-versioning.js.map +1 -0
- package/dist/types/well-known.d.ts +70 -0
- package/dist/types/well-known.d.ts.map +1 -0
- package/dist/types/well-known.js +3 -0
- package/dist/types/well-known.js.map +1 -0
- package/package.json +1 -1
- package/src/config/license-plans.json +16 -1
|
@@ -122,10 +122,13 @@
|
|
|
122
122
|
"export_session",
|
|
123
123
|
"security_report",
|
|
124
124
|
"configure_workers",
|
|
125
|
+
"configure_roles",
|
|
126
|
+
"assign_role",
|
|
125
127
|
"orchestrate_runtime",
|
|
126
128
|
"agent_swarm_status",
|
|
127
129
|
"configure_llm_providers",
|
|
128
130
|
"llm_provider_status",
|
|
131
|
+
"configure_observability",
|
|
129
132
|
"manage_plugins",
|
|
130
133
|
"scaffold_plugin",
|
|
131
134
|
"create_pr_from_spec",
|
|
@@ -155,7 +158,19 @@
|
|
|
155
158
|
"registry_logout",
|
|
156
159
|
"registry_whoami",
|
|
157
160
|
"scan_project",
|
|
158
|
-
"ecosystem_status"
|
|
161
|
+
"ecosystem_status",
|
|
162
|
+
"audit_trail",
|
|
163
|
+
"generate_attestation",
|
|
164
|
+
"branch_spec",
|
|
165
|
+
"merge_spec_branch",
|
|
166
|
+
"version_spec",
|
|
167
|
+
"decompose_spec",
|
|
168
|
+
"federate_specs",
|
|
169
|
+
"federation_status",
|
|
170
|
+
"discover_registry",
|
|
171
|
+
"publish_registry",
|
|
172
|
+
"generate_infrastructure",
|
|
173
|
+
"spec_usage_report"
|
|
159
174
|
],
|
|
160
175
|
"alwaysAllowed": [
|
|
161
176
|
"activate_license",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { A2ACapabilityCard } from '../../types/a2a.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generate Planu's A2A capability card, optionally filtered to a subset of skills.
|
|
4
|
+
*
|
|
5
|
+
* @param agentId - Unique agent identifier to embed in the card.
|
|
6
|
+
* @param version - Planu version string.
|
|
7
|
+
* @param projectId - Optional project scope for the card.
|
|
8
|
+
* @param skillFilter - Optional list of skill IDs to include. If omitted, all skills are included.
|
|
9
|
+
* @param customName - Optional custom display name.
|
|
10
|
+
*/
|
|
11
|
+
export declare function generateCapabilityCard(agentId: string, version: string, projectId?: string, skillFilter?: string[], customName?: string): A2ACapabilityCard;
|
|
12
|
+
/**
|
|
13
|
+
* Return the list of all built-in skill IDs available to advertise.
|
|
14
|
+
*/
|
|
15
|
+
export declare function listBuiltInSkillIds(): string[];
|
|
16
|
+
//# sourceMappingURL=capability-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-card.d.ts","sourceRoot":"","sources":["../../../src/engine/a2a/capability-card.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,oBAAoB,CAAC;AA0CtE;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,iBAAiB,CAkBnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The built-in set of skills Planu exposes as an A2A agent.
|
|
3
|
+
* Each entry maps to an MCP tool capability.
|
|
4
|
+
*/
|
|
5
|
+
const BUILT_IN_SKILLS = [
|
|
6
|
+
{
|
|
7
|
+
id: 'create-spec',
|
|
8
|
+
name: 'Create Specification',
|
|
9
|
+
description: 'Create a structured spec for a feature, bugfix, or refactor using SDD methodology.',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: 'generate-tests',
|
|
13
|
+
name: 'Generate Tests',
|
|
14
|
+
description: 'Generate unit, integration, and e2e tests for a given specification.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 'estimate',
|
|
18
|
+
name: 'Estimate Effort',
|
|
19
|
+
description: 'Estimate development effort (hours, cost, model recommendation) for a spec.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: 'validate',
|
|
23
|
+
name: 'Validate Spec',
|
|
24
|
+
description: 'Validate that a spec is complete, consistent, and implementation-ready.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'analyze-stack',
|
|
28
|
+
name: 'Analyze Stack',
|
|
29
|
+
description: 'Detect frameworks, languages, and tooling from a project codebase.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'generate-docs',
|
|
33
|
+
name: 'Generate Documentation',
|
|
34
|
+
description: 'Generate markdown or HTML documentation from specs and code.',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
const SUPPORTED_SPEC_TYPES = ['feature', 'bugfix', 'refactor', 'architecture', 'migration'];
|
|
38
|
+
/**
|
|
39
|
+
* Generate Planu's A2A capability card, optionally filtered to a subset of skills.
|
|
40
|
+
*
|
|
41
|
+
* @param agentId - Unique agent identifier to embed in the card.
|
|
42
|
+
* @param version - Planu version string.
|
|
43
|
+
* @param projectId - Optional project scope for the card.
|
|
44
|
+
* @param skillFilter - Optional list of skill IDs to include. If omitted, all skills are included.
|
|
45
|
+
* @param customName - Optional custom display name.
|
|
46
|
+
*/
|
|
47
|
+
export function generateCapabilityCard(agentId, version, projectId, skillFilter, customName) {
|
|
48
|
+
const skills = skillFilter && skillFilter.length > 0
|
|
49
|
+
? BUILT_IN_SKILLS.filter((s) => skillFilter.includes(s.id))
|
|
50
|
+
: BUILT_IN_SKILLS;
|
|
51
|
+
return {
|
|
52
|
+
agentId,
|
|
53
|
+
name: customName ?? 'Planu SDD Agent',
|
|
54
|
+
version,
|
|
55
|
+
description: 'Planu is a Spec-Driven Development assistant that manages the full SDD lifecycle — ' +
|
|
56
|
+
'from spec creation and estimation to test generation and validation.',
|
|
57
|
+
skills,
|
|
58
|
+
supportedSpecTypes: SUPPORTED_SPEC_TYPES,
|
|
59
|
+
registeredAt: new Date().toISOString(),
|
|
60
|
+
projectId,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Return the list of all built-in skill IDs available to advertise.
|
|
65
|
+
*/
|
|
66
|
+
export function listBuiltInSkillIds() {
|
|
67
|
+
return BUILT_IN_SKILLS.map((s) => s.id);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=capability-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-card.js","sourceRoot":"","sources":["../../../src/engine/a2a/capability-card.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,eAAe,GAAe;IAClC;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,oFAAoF;KACvF;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sEAAsE;KACpF;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,6EAA6E;KAC3F;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,yEAAyE;KACvF;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,oEAAoE;KAClF;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,8DAA8D;KAC5E;CACF,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;AAE5F;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,OAAe,EACf,SAAkB,EAClB,WAAsB,EACtB,UAAmB;IAEnB,MAAM,MAAM,GACV,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACnC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,eAAe,CAAC;IAEtB,OAAO;QACL,OAAO;QACP,IAAI,EAAE,UAAU,IAAI,iBAAiB;QACrC,OAAO;QACP,WAAW,EACT,qFAAqF;YACrF,sEAAsE;QACxE,MAAM;QACN,kBAAkB,EAAE,oBAAoB;QACxC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { A2ATask, A2ADelegation } from '../../types/a2a.js';
|
|
2
|
+
/**
|
|
3
|
+
* Attempt to delegate a task to the target endpoint specified in the task.
|
|
4
|
+
* Because A2A network delegation is not yet available, this always falls back
|
|
5
|
+
* to local execution and records the delegation attempt in the audit trail.
|
|
6
|
+
*
|
|
7
|
+
* Task lifecycle: pending -> running -> completed | failed
|
|
8
|
+
*
|
|
9
|
+
* When real A2A HTTP support is added, replace the body of this function
|
|
10
|
+
* with a proper fetch() call to `task.targetEndpoint.url`.
|
|
11
|
+
*
|
|
12
|
+
* @returns The A2A delegation record for audit purposes.
|
|
13
|
+
*/
|
|
14
|
+
export declare function delegateTask(task: A2ATask): A2ADelegation;
|
|
15
|
+
//# sourceMappingURL=delegate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../../src/engine/a2a/delegate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AAIhF;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAuBzD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { updateTaskStatus } from './task-manager.js';
|
|
2
|
+
import { executeFallback } from './fallback.js';
|
|
3
|
+
/**
|
|
4
|
+
* Attempt to delegate a task to the target endpoint specified in the task.
|
|
5
|
+
* Because A2A network delegation is not yet available, this always falls back
|
|
6
|
+
* to local execution and records the delegation attempt in the audit trail.
|
|
7
|
+
*
|
|
8
|
+
* Task lifecycle: pending -> running -> completed | failed
|
|
9
|
+
*
|
|
10
|
+
* When real A2A HTTP support is added, replace the body of this function
|
|
11
|
+
* with a proper fetch() call to `task.targetEndpoint.url`.
|
|
12
|
+
*
|
|
13
|
+
* @returns The A2A delegation record for audit purposes.
|
|
14
|
+
*/
|
|
15
|
+
export function delegateTask(task) {
|
|
16
|
+
const now = new Date().toISOString();
|
|
17
|
+
// Transition to 'running' before attempting execution
|
|
18
|
+
updateTaskStatus(task.taskId, 'running');
|
|
19
|
+
if (!task.targetEndpoint) {
|
|
20
|
+
// No remote endpoint — go straight to local fallback.
|
|
21
|
+
const result = executeFallback(task);
|
|
22
|
+
// Fallback provides guidance only (success: false) — mark as failed so the task is not lost.
|
|
23
|
+
updateTaskStatus(task.taskId, result.success ? 'completed' : 'failed');
|
|
24
|
+
return buildDelegation(task, now, 'No agentEndpoint specified — using local execution', result);
|
|
25
|
+
}
|
|
26
|
+
// A2A network delegation is not yet available.
|
|
27
|
+
// Future: replace with real HTTP call to task.targetEndpoint.url
|
|
28
|
+
const stubReason = `A2A network delegation not yet available for endpoint "${task.targetEndpoint.url}". ` +
|
|
29
|
+
'Falling back to local execution.';
|
|
30
|
+
const result = executeFallback(task);
|
|
31
|
+
updateTaskStatus(task.taskId, result.success ? 'completed' : 'failed');
|
|
32
|
+
return buildDelegation(task, now, stubReason, result);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build a delegation record for the audit trail, including the fallback result.
|
|
36
|
+
*/
|
|
37
|
+
function buildDelegation(task, delegatedAt, fallbackReason, fallbackResult) {
|
|
38
|
+
return {
|
|
39
|
+
taskId: task.taskId,
|
|
40
|
+
targetEndpoint: task.targetEndpoint,
|
|
41
|
+
outcome: 'fallback',
|
|
42
|
+
fallbackReason,
|
|
43
|
+
delegatedAt,
|
|
44
|
+
fallbackResult,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=delegate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../../src/engine/a2a/delegate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,sDAAsD;IACtD,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACzB,sDAAsD;QACtD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,6FAA6F;QAC7F,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvE,OAAO,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,oDAAoD,EAAE,MAAM,CAAC,CAAC;IAClG,CAAC;IAED,+CAA+C;IAC/C,iEAAiE;IACjE,MAAM,UAAU,GACd,0DAA0D,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK;QACtF,kCAAkC,CAAC;IAErC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvE,OAAO,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,IAAa,EACb,WAAmB,EACnB,cAAsB,EACtB,cAA6B;IAE7B,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,OAAO,EAAE,UAAU;QACnB,cAAc;QACd,WAAW;QACX,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { A2ATask, A2ATaskResult } from '../../types/a2a.js';
|
|
2
|
+
/**
|
|
3
|
+
* Execute a task locally as a fallback when the remote A2A agent is unavailable
|
|
4
|
+
* or when the A2A protocol is not yet implemented.
|
|
5
|
+
*
|
|
6
|
+
* The local execution produces a structured result that explains the fallback
|
|
7
|
+
* and provides guidance on how the task should be handled manually via MCP tools.
|
|
8
|
+
*
|
|
9
|
+
* Future: when specific local MCP tool adapters are added, route by task intent.
|
|
10
|
+
*/
|
|
11
|
+
export declare function executeFallback(task: A2ATask): A2ATaskResult;
|
|
12
|
+
//# sourceMappingURL=fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../../src/engine/a2a/fallback.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAkB5D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execute a task locally as a fallback when the remote A2A agent is unavailable
|
|
3
|
+
* or when the A2A protocol is not yet implemented.
|
|
4
|
+
*
|
|
5
|
+
* The local execution produces a structured result that explains the fallback
|
|
6
|
+
* and provides guidance on how the task should be handled manually via MCP tools.
|
|
7
|
+
*
|
|
8
|
+
* Future: when specific local MCP tool adapters are added, route by task intent.
|
|
9
|
+
*/
|
|
10
|
+
export function executeFallback(task) {
|
|
11
|
+
const guidance = resolveFallbackGuidance(task.taskDescription);
|
|
12
|
+
// success: false — the task was NOT executed; only guidance was provided.
|
|
13
|
+
// Callers should treat this result as "pending human/tool action", not as a completed task.
|
|
14
|
+
return {
|
|
15
|
+
success: false,
|
|
16
|
+
output: {
|
|
17
|
+
fallback: true,
|
|
18
|
+
message: 'A2A network delegation not yet available. Guidance provided for local execution.',
|
|
19
|
+
taskId: task.taskId,
|
|
20
|
+
taskDescription: task.taskDescription,
|
|
21
|
+
localGuidance: guidance,
|
|
22
|
+
hint: 'Use the MCP tools listed in localGuidance to complete this task locally.',
|
|
23
|
+
},
|
|
24
|
+
source: 'guidance',
|
|
25
|
+
completedAt: new Date().toISOString(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Map a task description to suggested local MCP tools that can accomplish it.
|
|
30
|
+
* This is a simple keyword-based resolver — not a full NLI engine.
|
|
31
|
+
*/
|
|
32
|
+
function resolveFallbackGuidance(taskDescription) {
|
|
33
|
+
const desc = taskDescription.toLowerCase();
|
|
34
|
+
if (desc.includes('test') || desc.includes('spec coverage')) {
|
|
35
|
+
return 'Use generate_tests to create tests for the spec locally.';
|
|
36
|
+
}
|
|
37
|
+
if (desc.includes('estimate') || desc.includes('cost') || desc.includes('hours')) {
|
|
38
|
+
return 'Use estimate to compute effort and cost for the spec locally.';
|
|
39
|
+
}
|
|
40
|
+
if (desc.includes('validate') || desc.includes('check') || desc.includes('verify')) {
|
|
41
|
+
return 'Use validate to check spec completeness and consistency locally.';
|
|
42
|
+
}
|
|
43
|
+
if (desc.includes('document') || desc.includes('docs')) {
|
|
44
|
+
return 'Use generate_docs to produce documentation locally.';
|
|
45
|
+
}
|
|
46
|
+
if (desc.includes('spec') || desc.includes('create') || desc.includes('feature')) {
|
|
47
|
+
return 'Use create_spec to author a spec for this task locally.';
|
|
48
|
+
}
|
|
49
|
+
return ('No specific local tool matched. Consider using create_spec, generate_tests, ' +
|
|
50
|
+
'estimate, or validate depending on the task goal.');
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../../src/engine/a2a/fallback.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE/D,0EAA0E;IAC1E,4FAA4F;IAC5F,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE;YACN,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,kFAAkF;YAC3F,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,aAAa,EAAE,QAAQ;YACvB,IAAI,EAAE,0EAA0E;SACjF;QACD,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,eAAuB;IACtD,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5D,OAAO,0DAA0D,CAAC;IACpE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjF,OAAO,+DAA+D,CAAC;IACzE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnF,OAAO,kEAAkE,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjF,OAAO,yDAAyD,CAAC;IACnE,CAAC;IAED,OAAO,CACL,8EAA8E;QAC9E,mDAAmD,CACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { generateCapabilityCard, listBuiltInSkillIds } from './capability-card.js';
|
|
2
|
+
export { createTask, updateTaskStatus, getTask, listTasks, cancelTask, loadTasks, clearTaskStore, } from './task-manager.js';
|
|
3
|
+
export { delegateTask } from './delegate.js';
|
|
4
|
+
export { executeFallback } from './fallback.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/a2a/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,UAAU,EACV,SAAS,EACT,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// engine/a2a/index.ts — Barrel re-export for SPEC-169 A2A engine modules
|
|
2
|
+
export { generateCapabilityCard, listBuiltInSkillIds } from './capability-card.js';
|
|
3
|
+
export { createTask, updateTaskStatus, getTask, listTasks, cancelTask, loadTasks, clearTaskStore, } from './task-manager.js';
|
|
4
|
+
export { delegateTask } from './delegate.js';
|
|
5
|
+
export { executeFallback } from './fallback.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/a2a/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,UAAU,EACV,SAAS,EACT,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { A2ATask, A2ATaskStatus, A2AAgentEndpoint } from '../../types/a2a.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new A2A task in 'pending' state.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createTask(projectId: string, taskDescription: string, specId?: string, targetEndpoint?: A2AAgentEndpoint): A2ATask;
|
|
6
|
+
/**
|
|
7
|
+
* Transition a task to a new status. Returns the updated task, or undefined
|
|
8
|
+
* if the taskId does not exist.
|
|
9
|
+
*
|
|
10
|
+
* Valid transitions:
|
|
11
|
+
* - pending -> running | cancelled
|
|
12
|
+
* - running -> completed | failed | cancelled
|
|
13
|
+
* - completed -> (terminal — no further transitions allowed)
|
|
14
|
+
* - failed -> (terminal)
|
|
15
|
+
* - cancelled -> (terminal)
|
|
16
|
+
*/
|
|
17
|
+
export declare function updateTaskStatus(taskId: string, status: A2ATaskStatus): A2ATask | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Retrieve a task by ID.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getTask(taskId: string): A2ATask | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* List all tasks for a given project.
|
|
24
|
+
*/
|
|
25
|
+
export declare function listTasks(projectId: string): A2ATask[];
|
|
26
|
+
/**
|
|
27
|
+
* Cancel a task. Returns the updated task, or undefined if the taskId is unknown.
|
|
28
|
+
*/
|
|
29
|
+
export declare function cancelTask(taskId: string): A2ATask | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Load tasks from a persisted array into the in-memory store.
|
|
32
|
+
* Used when the tool handler restores state from disk.
|
|
33
|
+
*/
|
|
34
|
+
export declare function loadTasks(tasks: A2ATask[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Clear the in-memory store — useful in tests.
|
|
37
|
+
*/
|
|
38
|
+
export declare function clearTaskStore(): void;
|
|
39
|
+
//# sourceMappingURL=task-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../../src/engine/a2a/task-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAQnF;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,gBAAgB,GAChC,OAAO,CAcT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,CAe3F;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE3D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAEtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE9D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// engine/a2a/task-manager.ts — A2ATaskManager: create/monitor/cancel delegated tasks (SPEC-169)
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
/**
|
|
4
|
+
* In-memory task store — tasks are also persisted to disk by the tool handler.
|
|
5
|
+
* The manager provides lifecycle operations; persistence is handled externally.
|
|
6
|
+
*/
|
|
7
|
+
const taskStore = new Map();
|
|
8
|
+
/**
|
|
9
|
+
* Create a new A2A task in 'pending' state.
|
|
10
|
+
*/
|
|
11
|
+
export function createTask(projectId, taskDescription, specId, targetEndpoint) {
|
|
12
|
+
const now = new Date().toISOString();
|
|
13
|
+
const task = {
|
|
14
|
+
taskId: randomUUID(),
|
|
15
|
+
projectId,
|
|
16
|
+
specId,
|
|
17
|
+
taskDescription,
|
|
18
|
+
status: 'pending',
|
|
19
|
+
createdAt: now,
|
|
20
|
+
updatedAt: now,
|
|
21
|
+
targetEndpoint,
|
|
22
|
+
};
|
|
23
|
+
taskStore.set(task.taskId, task);
|
|
24
|
+
return task;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Transition a task to a new status. Returns the updated task, or undefined
|
|
28
|
+
* if the taskId does not exist.
|
|
29
|
+
*
|
|
30
|
+
* Valid transitions:
|
|
31
|
+
* - pending -> running | cancelled
|
|
32
|
+
* - running -> completed | failed | cancelled
|
|
33
|
+
* - completed -> (terminal — no further transitions allowed)
|
|
34
|
+
* - failed -> (terminal)
|
|
35
|
+
* - cancelled -> (terminal)
|
|
36
|
+
*/
|
|
37
|
+
export function updateTaskStatus(taskId, status) {
|
|
38
|
+
const task = taskStore.get(taskId);
|
|
39
|
+
if (!task) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const TERMINAL = ['completed', 'failed', 'cancelled'];
|
|
43
|
+
if (TERMINAL.includes(task.status)) {
|
|
44
|
+
// Already terminal — return as-is without modification.
|
|
45
|
+
return task;
|
|
46
|
+
}
|
|
47
|
+
const updated = { ...task, status, updatedAt: new Date().toISOString() };
|
|
48
|
+
taskStore.set(taskId, updated);
|
|
49
|
+
return updated;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Retrieve a task by ID.
|
|
53
|
+
*/
|
|
54
|
+
export function getTask(taskId) {
|
|
55
|
+
return taskStore.get(taskId);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* List all tasks for a given project.
|
|
59
|
+
*/
|
|
60
|
+
export function listTasks(projectId) {
|
|
61
|
+
return Array.from(taskStore.values()).filter((t) => t.projectId === projectId);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Cancel a task. Returns the updated task, or undefined if the taskId is unknown.
|
|
65
|
+
*/
|
|
66
|
+
export function cancelTask(taskId) {
|
|
67
|
+
return updateTaskStatus(taskId, 'cancelled');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Load tasks from a persisted array into the in-memory store.
|
|
71
|
+
* Used when the tool handler restores state from disk.
|
|
72
|
+
*/
|
|
73
|
+
export function loadTasks(tasks) {
|
|
74
|
+
for (const task of tasks) {
|
|
75
|
+
taskStore.set(task.taskId, task);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Clear the in-memory store — useful in tests.
|
|
80
|
+
*/
|
|
81
|
+
export function clearTaskStore() {
|
|
82
|
+
taskStore.clear();
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=task-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../../src/engine/a2a/task-manager.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;GAGG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,eAAuB,EACvB,MAAe,EACf,cAAiC;IAEjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,IAAI,GAAY;QACpB,MAAM,EAAE,UAAU,EAAE;QACpB,SAAS;QACT,MAAM;QACN,eAAe;QACf,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,cAAc;KACf,CAAC;IACF,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,MAAqB;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvE,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,wDAAwD;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAY,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAClF,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AcGapReport, AcGapCategory, AcGapPriority } from '../../types/ac-gap.js';
|
|
2
|
+
/**
|
|
3
|
+
* Analyzes the provided spec text for missing acceptance criteria.
|
|
4
|
+
*
|
|
5
|
+
* @param specId - Spec identifier (for the report).
|
|
6
|
+
* @param specText - Raw text of spec.md (may include frontmatter).
|
|
7
|
+
* @param technicalText - Raw text of technical.md (optional, pass empty string if unavailable).
|
|
8
|
+
* @param categories - Optional list of categories to focus on (default: all).
|
|
9
|
+
* @param minPriority - Minimum priority to include in results (default: medium).
|
|
10
|
+
* @returns AcGapReport with suggested missing ACs.
|
|
11
|
+
*/
|
|
12
|
+
export declare function analyzeAcGaps(specId: string, specText: string, technicalText: string, categories?: AcGapCategory[], minPriority?: AcGapPriority): AcGapReport;
|
|
13
|
+
//# sourceMappingURL=analyze-gaps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-gaps.d.ts","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/analyze-gaps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQvF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,aAAa,EAAE,EAC5B,WAAW,GAAE,aAAoC,GAChD,WAAW,CAoCb"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { extractAcLines, computeCoverageScore, containsAny } from './pattern-matcher.js';
|
|
2
|
+
import { selectRules } from './gap-rules.js';
|
|
3
|
+
import { PRIORITY_ORDER, WEB_UI_KEYWORDS } from './constants.js';
|
|
4
|
+
/** Minimum priority filter: only include suggestions at or above this level. */
|
|
5
|
+
const DEFAULT_MIN_PRIORITY = 'medium';
|
|
6
|
+
/**
|
|
7
|
+
* Analyzes the provided spec text for missing acceptance criteria.
|
|
8
|
+
*
|
|
9
|
+
* @param specId - Spec identifier (for the report).
|
|
10
|
+
* @param specText - Raw text of spec.md (may include frontmatter).
|
|
11
|
+
* @param technicalText - Raw text of technical.md (optional, pass empty string if unavailable).
|
|
12
|
+
* @param categories - Optional list of categories to focus on (default: all).
|
|
13
|
+
* @param minPriority - Minimum priority to include in results (default: medium).
|
|
14
|
+
* @returns AcGapReport with suggested missing ACs.
|
|
15
|
+
*/
|
|
16
|
+
export function analyzeAcGaps(specId, specText, technicalText, categories, minPriority = DEFAULT_MIN_PRIORITY) {
|
|
17
|
+
const combined = `${specText}\n${technicalText}`;
|
|
18
|
+
const fullText = combined.toLowerCase();
|
|
19
|
+
const acLines = extractAcLines(combined);
|
|
20
|
+
const hasWebUi = containsAny(fullText, WEB_UI_KEYWORDS);
|
|
21
|
+
const idCounter = { value: 0 };
|
|
22
|
+
const ctx = { fullText, acLines, hasWebUi, idCounter };
|
|
23
|
+
const rules = selectRules(categories);
|
|
24
|
+
const allGaps = rules
|
|
25
|
+
.map((rule) => rule(ctx))
|
|
26
|
+
.filter((g) => g !== null);
|
|
27
|
+
const minWeight = PRIORITY_ORDER[minPriority];
|
|
28
|
+
const filtered = allGaps.filter((g) => PRIORITY_ORDER[g.priority] >= minWeight);
|
|
29
|
+
// Sort by priority descending
|
|
30
|
+
filtered.sort((a, b) => PRIORITY_ORDER[b.priority] - PRIORITY_ORDER[a.priority]);
|
|
31
|
+
// Coverage score: ratio of rule categories that produced no gap
|
|
32
|
+
const gappedCategories = new Set(filtered.map((g) => g.category));
|
|
33
|
+
const coveredCount = rules.length - gappedCategories.size;
|
|
34
|
+
const coverageScore = computeCoverageScore(new Set(Array.from({ length: Math.max(0, coveredCount) }, (_, i) => String(i))), rules.length);
|
|
35
|
+
return {
|
|
36
|
+
specId,
|
|
37
|
+
existingAcCount: acLines.length,
|
|
38
|
+
gaps: filtered,
|
|
39
|
+
coverageScore,
|
|
40
|
+
analyzedAt: new Date().toISOString(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=analyze-gaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-gaps.js","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/analyze-gaps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjE,gFAAgF;AAChF,MAAM,oBAAoB,GAAkB,QAAQ,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,QAAgB,EAChB,aAAqB,EACrB,UAA4B,EAC5B,cAA6B,oBAAoB;IAEjD,MAAM,QAAQ,GAAG,GAAG,QAAQ,KAAK,aAAa,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAEvD,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK;SAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzD,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC;IAEhF,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjF,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAC1D,MAAM,aAAa,GAAG,oBAAoB,CACxC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/E,KAAK,CAAC,MAAM,CACb,CAAC;IAEF,OAAO;QACL,MAAM;QACN,eAAe,EAAE,OAAO,CAAC,MAAM;QAC/B,IAAI,EAAE,QAAQ;QACd,aAAa;QACb,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AcGapPriority } from '../../types/ac-gap.js';
|
|
2
|
+
/** Numeric weight per priority (higher = more important). Used for sorting and scoring. */
|
|
3
|
+
export declare const PRIORITY_ORDER: Record<AcGapPriority, number>;
|
|
4
|
+
/** Keywords that indicate an existing AC already covers error handling. */
|
|
5
|
+
export declare const ERROR_HANDLING_KEYWORDS: readonly string[];
|
|
6
|
+
/** Keywords that indicate existing ACs cover security concerns. */
|
|
7
|
+
export declare const SECURITY_KEYWORDS: readonly string[];
|
|
8
|
+
/** Keywords that indicate existing ACs cover performance concerns. */
|
|
9
|
+
export declare const PERFORMANCE_KEYWORDS: readonly string[];
|
|
10
|
+
/** Keywords that indicate existing ACs cover accessibility. */
|
|
11
|
+
export declare const ACCESSIBILITY_KEYWORDS: readonly string[];
|
|
12
|
+
/** Keywords that indicate existing ACs cover input/data validation. */
|
|
13
|
+
export declare const DATA_VALIDATION_KEYWORDS: readonly string[];
|
|
14
|
+
/** Keywords that indicate existing ACs cover observability. */
|
|
15
|
+
export declare const OBSERVABILITY_KEYWORDS: readonly string[];
|
|
16
|
+
/** Keywords that indicate existing ACs cover edge cases broadly. */
|
|
17
|
+
export declare const EDGE_CASE_KEYWORDS: readonly string[];
|
|
18
|
+
/** Keywords that indicate existing ACs cover rollback / undo. */
|
|
19
|
+
export declare const ROLLBACK_KEYWORDS: readonly string[];
|
|
20
|
+
/** Signal words that suggest this spec likely has UI / frontend components. */
|
|
21
|
+
export declare const WEB_UI_KEYWORDS: readonly string[];
|
|
22
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,2FAA2F;AAC3F,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAKxD,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAepD,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAiB9C,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAcjD,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAUnD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAYrD,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAUnD,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAY/C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAS9C,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAkB5C,CAAC"}
|