agent-devkit 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -2
- package/package.json +1 -1
- package/runtime/README.md +127 -6
- package/runtime/agent +5 -0
- package/runtime/agents/README.md +34 -0
- package/runtime/agents/agent-devkit-agent-builder/AGENTS.md +24 -0
- package/runtime/agents/agent-devkit-agent-builder/README.md +37 -0
- package/runtime/agents/agent-devkit-agent-builder/agent.yaml +46 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/plan-agent/capability.yaml +29 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/plan-agent/decision-rules.md +7 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/plan-agent/runner.py +33 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/plan-agent/workflow.md +8 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/scaffold-agent/capability.yaml +31 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/scaffold-agent/decision-rules.md +9 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/scaffold-agent/runner.py +39 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/scaffold-agent/workflow.md +8 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/validate-agent-contract/capability.yaml +28 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/validate-agent-contract/decision-rules.md +6 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/validate-agent-contract/runner.py +33 -0
- package/runtime/agents/agent-devkit-agent-builder/capabilities/validate-agent-contract/workflow.md +7 -0
- package/runtime/agents/agent-devkit-agent-builder/infra/integrations/agent-devkit/agent_builder_repository.py +527 -0
- package/runtime/agents/agent-devkit-agent-builder/knowledge/context.md +15 -0
- package/runtime/agents/agent-devkit-agent-builder/knowledge/policies.yaml +11 -0
- package/runtime/agents/agent-devkit-agent-builder/knowledge/system.md +11 -0
- package/runtime/agents/agent-devkit-agent-builder/templates/agent-plan-output.md +20 -0
- package/runtime/agents/agent-devkit-agent-builder/templates/scaffold-plan-output.md +13 -0
- package/runtime/agents/agent-devkit-agent-builder/templates/validation-report-output.md +13 -0
- package/runtime/agents/agent-devkit-agent-builder/tests/test_runners.py +188 -0
- package/runtime/agents/automation-architect/AGENTS.md +11 -0
- package/runtime/agents/automation-architect/README.md +27 -0
- package/runtime/agents/automation-architect/agent.yaml +57 -0
- package/runtime/agents/automation-architect/capabilities/classify-automation-request/capability.yaml +35 -0
- package/runtime/agents/automation-architect/capabilities/classify-automation-request/decision-rules.md +10 -0
- package/runtime/agents/automation-architect/capabilities/classify-automation-request/runner.py +37 -0
- package/runtime/agents/automation-architect/capabilities/classify-automation-request/workflow.md +7 -0
- package/runtime/agents/automation-architect/capabilities/delegate-automation-build/capability.yaml +34 -0
- package/runtime/agents/automation-architect/capabilities/delegate-automation-build/decision-rules.md +7 -0
- package/runtime/agents/automation-architect/capabilities/delegate-automation-build/runner.py +37 -0
- package/runtime/agents/automation-architect/capabilities/delegate-automation-build/workflow.md +6 -0
- package/runtime/agents/automation-architect/capabilities/plan-automation-solution/capability.yaml +35 -0
- package/runtime/agents/automation-architect/capabilities/plan-automation-solution/decision-rules.md +7 -0
- package/runtime/agents/automation-architect/capabilities/plan-automation-solution/runner.py +37 -0
- package/runtime/agents/automation-architect/capabilities/plan-automation-solution/workflow.md +7 -0
- package/runtime/agents/automation-architect/capabilities/review-automation-solution/capability.yaml +36 -0
- package/runtime/agents/automation-architect/capabilities/review-automation-solution/decision-rules.md +7 -0
- package/runtime/agents/automation-architect/capabilities/review-automation-solution/runner.py +39 -0
- package/runtime/agents/automation-architect/capabilities/review-automation-solution/workflow.md +7 -0
- package/runtime/agents/automation-architect/infra/integrations/automation-architecture/automation_architecture_repository.py +481 -0
- package/runtime/agents/automation-architect/knowledge/context.md +22 -0
- package/runtime/agents/automation-architect/knowledge/policies.yaml +20 -0
- package/runtime/agents/automation-architect/knowledge/system.md +8 -0
- package/runtime/agents/automation-architect/templates/automation-classification.md +6 -0
- package/runtime/agents/automation-architect/templates/automation-plan.md +5 -0
- package/runtime/agents/automation-architect/tests/test_runners.py +135 -0
- package/runtime/agents/aws-architecture-analyst/agent.yaml +17 -4
- package/runtime/agents/aws-cloudwatch-log-analyzer/agent.yaml +12 -2
- package/runtime/agents/aws-cloudwatch-log-analyzer/capabilities/analyze-service-error/capability.yaml +16 -0
- package/runtime/agents/aws-lambda-builder/AGENTS.md +27 -0
- package/runtime/agents/aws-lambda-builder/README.md +21 -0
- package/runtime/agents/aws-lambda-builder/agent.yaml +46 -0
- package/runtime/agents/aws-lambda-builder/capabilities/deploy-lambda-plan/capability.yaml +18 -0
- package/runtime/agents/aws-lambda-builder/capabilities/deploy-lambda-plan/decision-rules.md +6 -0
- package/runtime/agents/aws-lambda-builder/capabilities/deploy-lambda-plan/runner.py +33 -0
- package/runtime/agents/aws-lambda-builder/capabilities/deploy-lambda-plan/workflow.md +6 -0
- package/runtime/agents/aws-lambda-builder/capabilities/generate-lambda-project/capability.yaml +20 -0
- package/runtime/agents/aws-lambda-builder/capabilities/generate-lambda-project/decision-rules.md +6 -0
- package/runtime/agents/aws-lambda-builder/capabilities/generate-lambda-project/runner.py +39 -0
- package/runtime/agents/aws-lambda-builder/capabilities/generate-lambda-project/workflow.md +7 -0
- package/runtime/agents/aws-lambda-builder/capabilities/package-lambda/capability.yaml +22 -0
- package/runtime/agents/aws-lambda-builder/capabilities/package-lambda/decision-rules.md +6 -0
- package/runtime/agents/aws-lambda-builder/capabilities/package-lambda/runner.py +41 -0
- package/runtime/agents/aws-lambda-builder/capabilities/package-lambda/workflow.md +6 -0
- package/runtime/agents/aws-lambda-builder/capabilities/plan-lambda/capability.yaml +18 -0
- package/runtime/agents/aws-lambda-builder/capabilities/plan-lambda/decision-rules.md +7 -0
- package/runtime/agents/aws-lambda-builder/capabilities/plan-lambda/runner.py +33 -0
- package/runtime/agents/aws-lambda-builder/capabilities/plan-lambda/workflow.md +6 -0
- package/runtime/agents/aws-lambda-builder/capabilities/review-lambda-security/capability.yaml +18 -0
- package/runtime/agents/aws-lambda-builder/capabilities/review-lambda-security/decision-rules.md +7 -0
- package/runtime/agents/aws-lambda-builder/capabilities/review-lambda-security/runner.py +33 -0
- package/runtime/agents/aws-lambda-builder/capabilities/review-lambda-security/workflow.md +5 -0
- package/runtime/agents/aws-lambda-builder/infra/integrations/aws-lambda/aws_lambda_repository.py +688 -0
- package/runtime/agents/aws-lambda-builder/knowledge/context.md +12 -0
- package/runtime/agents/aws-lambda-builder/knowledge/policies.yaml +23 -0
- package/runtime/agents/aws-lambda-builder/knowledge/system.md +10 -0
- package/runtime/agents/aws-lambda-builder/templates/lambda-deploy-plan.md +3 -0
- package/runtime/agents/aws-lambda-builder/templates/lambda-package.md +3 -0
- package/runtime/agents/aws-lambda-builder/templates/lambda-plan.md +3 -0
- package/runtime/agents/aws-lambda-builder/templates/lambda-readme.md +3 -0
- package/runtime/agents/aws-lambda-builder/templates/lambda-security-review.md +3 -0
- package/runtime/agents/aws-lambda-builder/tests/test_runners.py +355 -0
- package/runtime/agents/aws-operations-operator/agent.yaml +18 -6
- package/runtime/agents/aws-security-governance-auditor/agent.yaml +17 -5
- package/runtime/agents/azure-devops-orchestrator/agent.yaml +15 -2
- package/runtime/agents/azure-devops-orchestrator/capabilities/read-card/capability.yaml +29 -0
- package/runtime/agents/bpo-analyser/agent.yaml +12 -2
- package/runtime/agents/bpo-analyser/knowledge/policies.yaml +2 -2
- package/runtime/agents/data-scientist-analyst/agent.yaml +16 -4
- package/runtime/agents/data-scientist-analyst/capabilities/generate-data-report/capability.yaml +1 -1
- package/runtime/agents/data-scientist-analyst/capabilities/generate-reconciliation-report/capability.yaml +1 -1
- package/runtime/agents/data-scientist-analyst/capabilities/run-data-pipeline/capability.yaml +1 -1
- package/runtime/agents/data-scientist-analyst/infra/integrations/agent-bridge/methods/analyze-sql-source.yaml +1 -1
- package/runtime/agents/data-scientist-analyst/knowledge/policies.yaml +4 -4
- package/runtime/agents/data-scientist-analyst/knowledge/system.md +1 -1
- package/runtime/agents/data-scientist-analyst/tests/test_runners.py +1 -1
- package/runtime/agents/database-change-operator/agent.yaml +12 -1
- package/runtime/agents/docker-container-builder/AGENTS.md +27 -0
- package/runtime/agents/docker-container-builder/README.md +21 -0
- package/runtime/agents/docker-container-builder/agent.yaml +52 -0
- package/runtime/agents/docker-container-builder/capabilities/analyze-containerization-target/capability.yaml +18 -0
- package/runtime/agents/docker-container-builder/capabilities/analyze-containerization-target/decision-rules.md +6 -0
- package/runtime/agents/docker-container-builder/capabilities/analyze-containerization-target/runner.py +32 -0
- package/runtime/agents/docker-container-builder/capabilities/analyze-containerization-target/workflow.md +6 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-compose/capability.yaml +18 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-compose/decision-rules.md +7 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-compose/runner.py +32 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-compose/workflow.md +6 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-container-project-files/capability.yaml +20 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-container-project-files/decision-rules.md +7 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-container-project-files/runner.py +38 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-container-project-files/workflow.md +7 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-dockerfile/capability.yaml +18 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-dockerfile/decision-rules.md +6 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-dockerfile/runner.py +32 -0
- package/runtime/agents/docker-container-builder/capabilities/generate-dockerfile/workflow.md +7 -0
- package/runtime/agents/docker-container-builder/capabilities/plan-image-build/capability.yaml +18 -0
- package/runtime/agents/docker-container-builder/capabilities/plan-image-build/decision-rules.md +6 -0
- package/runtime/agents/docker-container-builder/capabilities/plan-image-build/runner.py +32 -0
- package/runtime/agents/docker-container-builder/capabilities/plan-image-build/workflow.md +6 -0
- package/runtime/agents/docker-container-builder/capabilities/review-docker-security/capability.yaml +21 -0
- package/runtime/agents/docker-container-builder/capabilities/review-docker-security/decision-rules.md +6 -0
- package/runtime/agents/docker-container-builder/capabilities/review-docker-security/runner.py +43 -0
- package/runtime/agents/docker-container-builder/capabilities/review-docker-security/workflow.md +5 -0
- package/runtime/agents/docker-container-builder/infra/integrations/docker-container/docker_container_repository.py +837 -0
- package/runtime/agents/docker-container-builder/knowledge/context.md +21 -0
- package/runtime/agents/docker-container-builder/knowledge/policies.yaml +13 -0
- package/runtime/agents/docker-container-builder/knowledge/system.md +21 -0
- package/runtime/agents/docker-container-builder/templates/container-plan.md +4 -0
- package/runtime/agents/docker-container-builder/templates/container-review.md +4 -0
- package/runtime/agents/docker-container-builder/templates/docker-compose.md +5 -0
- package/runtime/agents/docker-container-builder/templates/docker-readme.md +3 -0
- package/runtime/agents/docker-container-builder/templates/dockerfile.md +5 -0
- package/runtime/agents/docker-container-builder/tests/test_runners.py +255 -0
- package/runtime/agents/drawio-diagram-builder/agent.yaml +11 -2
- package/runtime/agents/drawio-diagram-builder/capabilities/execute-diagram-delivery/capability.yaml +1 -1
- package/runtime/agents/drawio-diagram-builder/capabilities/read-azure-card-context/capability.yaml +1 -1
- package/runtime/agents/elasticsearch-log-analyzer/agent.yaml +14 -2
- package/runtime/agents/elasticsearch-log-analyzer/capabilities/analyze-service-errors/capability.yaml +14 -0
- package/runtime/agents/excel-workbook-builder/agent.yaml +10 -0
- package/runtime/agents/excel-workbook-builder/capabilities/create-template/capability.yaml +1 -1
- package/runtime/agents/excel-workbook-builder/capabilities/create-template/workflow.md +1 -1
- package/runtime/agents/excel-workbook-builder/capabilities/create-template-version/capability.yaml +1 -1
- package/runtime/agents/excel-workbook-builder/capabilities/generate-template-input-file/capability.yaml +1 -2
- package/runtime/agents/excel-workbook-builder/capabilities/refine-template/capability.yaml +1 -1
- package/runtime/agents/excel-workbook-builder/capabilities/register-template/capability.yaml +1 -2
- package/runtime/agents/excel-workbook-builder/capabilities/register-template/workflow.md +1 -1
- package/runtime/agents/execution-loop-builder/AGENTS.md +24 -0
- package/runtime/agents/execution-loop-builder/README.md +19 -0
- package/runtime/agents/execution-loop-builder/agent.yaml +49 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-project-files/capability.yaml +20 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-project-files/decision-rules.md +6 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-project-files/runner.py +38 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-project-files/workflow.md +7 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-runner/capability.yaml +18 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-runner/decision-rules.md +5 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-runner/runner.py +32 -0
- package/runtime/agents/execution-loop-builder/capabilities/generate-loop-runner/workflow.md +6 -0
- package/runtime/agents/execution-loop-builder/capabilities/plan-execution-loop/capability.yaml +18 -0
- package/runtime/agents/execution-loop-builder/capabilities/plan-execution-loop/decision-rules.md +6 -0
- package/runtime/agents/execution-loop-builder/capabilities/plan-execution-loop/runner.py +32 -0
- package/runtime/agents/execution-loop-builder/capabilities/plan-execution-loop/workflow.md +6 -0
- package/runtime/agents/execution-loop-builder/capabilities/register-loop-task/capability.yaml +19 -0
- package/runtime/agents/execution-loop-builder/capabilities/register-loop-task/decision-rules.md +6 -0
- package/runtime/agents/execution-loop-builder/capabilities/register-loop-task/runner.py +36 -0
- package/runtime/agents/execution-loop-builder/capabilities/register-loop-task/workflow.md +6 -0
- package/runtime/agents/execution-loop-builder/capabilities/review-loop-safety/capability.yaml +19 -0
- package/runtime/agents/execution-loop-builder/capabilities/review-loop-safety/decision-rules.md +6 -0
- package/runtime/agents/execution-loop-builder/capabilities/review-loop-safety/runner.py +39 -0
- package/runtime/agents/execution-loop-builder/capabilities/review-loop-safety/workflow.md +5 -0
- package/runtime/agents/execution-loop-builder/infra/integrations/execution-loop/execution_loop_repository.py +608 -0
- package/runtime/agents/execution-loop-builder/knowledge/context.md +26 -0
- package/runtime/agents/execution-loop-builder/knowledge/policies.yaml +13 -0
- package/runtime/agents/execution-loop-builder/knowledge/system.md +19 -0
- package/runtime/agents/execution-loop-builder/templates/loop-plan.md +3 -0
- package/runtime/agents/execution-loop-builder/templates/loop-readme.md +3 -0
- package/runtime/agents/execution-loop-builder/templates/loop-review.md +3 -0
- package/runtime/agents/execution-loop-builder/templates/loop-runner.py +2 -0
- package/runtime/agents/execution-loop-builder/tests/test_runners.py +274 -0
- package/runtime/agents/execution-reviewer/AGENTS.md +8 -0
- package/runtime/agents/execution-reviewer/README.md +13 -0
- package/runtime/agents/execution-reviewer/agent.yaml +27 -0
- package/runtime/agents/execution-reviewer/capabilities/review-agent-result/capability.yaml +14 -0
- package/runtime/agents/execution-reviewer/capabilities/review-agent-result/decision-rules.md +6 -0
- package/runtime/agents/execution-reviewer/capabilities/review-agent-result/workflow.md +7 -0
- package/runtime/agents/execution-reviewer/capabilities/review-final-output/capability.yaml +14 -0
- package/runtime/agents/execution-reviewer/capabilities/review-final-output/decision-rules.md +6 -0
- package/runtime/agents/execution-reviewer/capabilities/review-final-output/workflow.md +7 -0
- package/runtime/agents/execution-reviewer/capabilities/review-plan/capability.yaml +14 -0
- package/runtime/agents/execution-reviewer/capabilities/review-plan/decision-rules.md +6 -0
- package/runtime/agents/execution-reviewer/capabilities/review-plan/workflow.md +7 -0
- package/runtime/agents/execution-reviewer/infra/README.md +4 -0
- package/runtime/agents/execution-reviewer/knowledge/context.md +6 -0
- package/runtime/agents/execution-reviewer/knowledge/system.md +18 -0
- package/runtime/agents/execution-reviewer/templates/README.md +4 -0
- package/runtime/agents/figma-ui-ux-product-designer/agent.yaml +17 -5
- package/runtime/agents/figma-ui-ux-product-designer/capabilities/analyze-product-context/capability.yaml +1 -1
- package/runtime/agents/figma-ui-ux-product-designer/capabilities/conduct-design-interview/capability.yaml +1 -1
- package/runtime/agents/figma-ui-ux-product-designer/capabilities/conduct-design-review-session/capability.yaml +1 -1
- package/runtime/agents/figma-ui-ux-product-designer/capabilities/generate-dev-handoff/capability.yaml +1 -1
- package/runtime/agents/figma-ui-ux-product-designer/capabilities/generate-user-journey-diagram/capability.yaml +1 -1
- package/runtime/agents/figma-ui-ux-product-designer/capabilities/ingest-design-source/capability.yaml +1 -1
- package/runtime/agents/figma-ui-ux-product-designer/capabilities/triage-design-feedback/capability.yaml +1 -1
- package/runtime/agents/generic-agent-builder/AGENTS.md +20 -0
- package/runtime/agents/generic-agent-builder/README.md +40 -0
- package/runtime/agents/generic-agent-builder/agent.yaml +43 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-agent-instructions/capability.yaml +18 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-agent-instructions/decision-rules.md +5 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-agent-instructions/runner.py +33 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-agent-instructions/workflow.md +6 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-project-agent-files/capability.yaml +20 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-project-agent-files/decision-rules.md +6 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-project-agent-files/runner.py +39 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-project-agent-files/workflow.md +7 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-skill/capability.yaml +18 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-skill/decision-rules.md +5 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-skill/runner.py +33 -0
- package/runtime/agents/generic-agent-builder/capabilities/generate-skill/workflow.md +5 -0
- package/runtime/agents/generic-agent-builder/capabilities/plan-generic-agent/capability.yaml +18 -0
- package/runtime/agents/generic-agent-builder/capabilities/plan-generic-agent/decision-rules.md +6 -0
- package/runtime/agents/generic-agent-builder/capabilities/plan-generic-agent/runner.py +33 -0
- package/runtime/agents/generic-agent-builder/capabilities/plan-generic-agent/workflow.md +6 -0
- package/runtime/agents/generic-agent-builder/capabilities/review-generic-agent/capability.yaml +20 -0
- package/runtime/agents/generic-agent-builder/capabilities/review-generic-agent/decision-rules.md +6 -0
- package/runtime/agents/generic-agent-builder/capabilities/review-generic-agent/runner.py +40 -0
- package/runtime/agents/generic-agent-builder/capabilities/review-generic-agent/workflow.md +7 -0
- package/runtime/agents/generic-agent-builder/infra/integrations/generic-agent/generic_agent_repository.py +445 -0
- package/runtime/agents/generic-agent-builder/knowledge/context.md +11 -0
- package/runtime/agents/generic-agent-builder/knowledge/policies.yaml +12 -0
- package/runtime/agents/generic-agent-builder/knowledge/system.md +17 -0
- package/runtime/agents/generic-agent-builder/templates/generic-agent-instructions.md +17 -0
- package/runtime/agents/generic-agent-builder/templates/generic-review-report.md +13 -0
- package/runtime/agents/generic-agent-builder/templates/generic-skill.md +14 -0
- package/runtime/agents/generic-agent-builder/tests/test_runners.py +220 -0
- package/runtime/agents/github-pr-reviewer/agent.yaml +17 -5
- package/runtime/agents/github-pr-reviewer/capabilities/create-review-automation/capability.yaml +1 -1
- package/runtime/agents/github-pr-reviewer/capabilities/inspect-pr/capability.yaml +1 -1
- package/runtime/agents/github-pr-reviewer/capabilities/list-review-requests/capability.yaml +1 -1
- package/runtime/agents/github-pr-reviewer/capabilities/review-pr-diff/capability.yaml +1 -1
- package/runtime/agents/knowledge-generator/agent.yaml +13 -3
- package/runtime/agents/knowledge-generator/capabilities/generate-knowledge/capability.yaml +1 -1
- package/runtime/agents/local-llm-operator/AGENTS.md +8 -0
- package/runtime/agents/local-llm-operator/README.md +12 -0
- package/runtime/agents/local-llm-operator/agent.yaml +28 -0
- package/runtime/agents/local-llm-operator/capabilities/delegate-operational-task/capability.yaml +14 -0
- package/runtime/agents/local-llm-operator/capabilities/delegate-operational-task/decision-rules.md +6 -0
- package/runtime/agents/local-llm-operator/capabilities/delegate-operational-task/workflow.md +7 -0
- package/runtime/agents/local-llm-operator/capabilities/inspect-local-models/capability.yaml +14 -0
- package/runtime/agents/local-llm-operator/capabilities/inspect-local-models/decision-rules.md +5 -0
- package/runtime/agents/local-llm-operator/capabilities/inspect-local-models/workflow.md +6 -0
- package/runtime/agents/local-llm-operator/capabilities/select-local-worker/capability.yaml +14 -0
- package/runtime/agents/local-llm-operator/capabilities/select-local-worker/decision-rules.md +6 -0
- package/runtime/agents/local-llm-operator/capabilities/select-local-worker/workflow.md +7 -0
- package/runtime/agents/local-llm-operator/infra/README.md +4 -0
- package/runtime/agents/local-llm-operator/knowledge/context.md +6 -0
- package/runtime/agents/local-llm-operator/knowledge/system.md +18 -0
- package/runtime/agents/local-llm-operator/templates/README.md +4 -0
- package/runtime/agents/n1-support-agent/agent.yaml +40 -1
- package/runtime/agents/n2-support-agent/agent.yaml +41 -2
- package/runtime/agents/n2-support-agent/knowledge/policies.yaml +2 -2
- package/runtime/agents/notification-operator/AGENTS.md +11 -0
- package/runtime/agents/notification-operator/README.md +15 -0
- package/runtime/agents/notification-operator/agent.yaml +43 -0
- package/runtime/agents/notification-operator/capabilities/configure-notification-channel/capability.yaml +19 -0
- package/runtime/agents/notification-operator/capabilities/configure-notification-channel/decision-rules.md +6 -0
- package/runtime/agents/notification-operator/capabilities/configure-notification-channel/runner.py +33 -0
- package/runtime/agents/notification-operator/capabilities/configure-notification-channel/workflow.md +6 -0
- package/runtime/agents/notification-operator/capabilities/format-task-completion-notification/capability.yaml +25 -0
- package/runtime/agents/notification-operator/capabilities/format-task-completion-notification/decision-rules.md +7 -0
- package/runtime/agents/notification-operator/capabilities/format-task-completion-notification/runner.py +49 -0
- package/runtime/agents/notification-operator/capabilities/format-task-completion-notification/workflow.md +6 -0
- package/runtime/agents/notification-operator/capabilities/send-task-completion-notification/capability.yaml +27 -0
- package/runtime/agents/notification-operator/capabilities/send-task-completion-notification/decision-rules.md +6 -0
- package/runtime/agents/notification-operator/capabilities/send-task-completion-notification/runner.py +68 -0
- package/runtime/agents/notification-operator/capabilities/send-task-completion-notification/workflow.md +7 -0
- package/runtime/agents/notification-operator/infra/README.md +6 -0
- package/runtime/agents/notification-operator/knowledge/context.md +10 -0
- package/runtime/agents/notification-operator/knowledge/policies.yaml +9 -0
- package/runtime/agents/notification-operator/knowledge/system.md +7 -0
- package/runtime/agents/notification-operator/templates/README.md +6 -0
- package/runtime/agents/notification-operator/tests/test_runners.py +108 -0
- package/runtime/agents/playwright-automation-builder/AGENTS.md +23 -0
- package/runtime/agents/playwright-automation-builder/README.md +43 -0
- package/runtime/agents/playwright-automation-builder/agent.yaml +48 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-project-files/capability.yaml +20 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-project-files/decision-rules.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-project-files/runner.py +38 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-project-files/workflow.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-script/capability.yaml +18 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-script/decision-rules.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-script/runner.py +32 -0
- package/runtime/agents/playwright-automation-builder/capabilities/generate-playwright-script/workflow.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/plan-playwright-automation/capability.yaml +18 -0
- package/runtime/agents/playwright-automation-builder/capabilities/plan-playwright-automation/decision-rules.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/plan-playwright-automation/runner.py +32 -0
- package/runtime/agents/playwright-automation-builder/capabilities/plan-playwright-automation/workflow.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/review-playwright-artifacts/capability.yaml +19 -0
- package/runtime/agents/playwright-automation-builder/capabilities/review-playwright-artifacts/decision-rules.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/review-playwright-artifacts/runner.py +33 -0
- package/runtime/agents/playwright-automation-builder/capabilities/review-playwright-artifacts/workflow.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/run-playwright-check/capability.yaml +22 -0
- package/runtime/agents/playwright-automation-builder/capabilities/run-playwright-check/decision-rules.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/run-playwright-check/runner.py +40 -0
- package/runtime/agents/playwright-automation-builder/capabilities/run-playwright-check/workflow.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/wrap-playwright-as-capability/capability.yaml +22 -0
- package/runtime/agents/playwright-automation-builder/capabilities/wrap-playwright-as-capability/decision-rules.md +6 -0
- package/runtime/agents/playwright-automation-builder/capabilities/wrap-playwright-as-capability/runner.py +42 -0
- package/runtime/agents/playwright-automation-builder/capabilities/wrap-playwright-as-capability/workflow.md +6 -0
- package/runtime/agents/playwright-automation-builder/infra/integrations/playwright-automation/playwright_automation_repository.py +865 -0
- package/runtime/agents/playwright-automation-builder/knowledge/context.md +19 -0
- package/runtime/agents/playwright-automation-builder/knowledge/policies.yaml +25 -0
- package/runtime/agents/playwright-automation-builder/knowledge/system.md +19 -0
- package/runtime/agents/playwright-automation-builder/templates/capability-wrapper.md +4 -0
- package/runtime/agents/playwright-automation-builder/templates/playwright-automation.py +12 -0
- package/runtime/agents/playwright-automation-builder/templates/playwright-readme.md +13 -0
- package/runtime/agents/playwright-automation-builder/templates/playwright-review-report.md +9 -0
- package/runtime/agents/playwright-automation-builder/templates/playwright-test.py +2 -0
- package/runtime/agents/playwright-automation-builder/tests/test_runners.py +261 -0
- package/runtime/agents/postgres-data-analyzer/agent.yaml +13 -2
- package/runtime/agents/presentation-deck-builder/agent.yaml +14 -3
- package/runtime/agents/presentation-deck-builder/capabilities/create-template/capability.yaml +1 -1
- package/runtime/agents/presentation-deck-builder/capabilities/create-template-version/capability.yaml +1 -1
- package/runtime/agents/presentation-deck-builder/capabilities/generate-template-input-file/capability.yaml +1 -1
- package/runtime/agents/presentation-deck-builder/capabilities/refine-template/capability.yaml +1 -1
- package/runtime/agents/presentation-deck-builder/capabilities/register-template/capability.yaml +1 -1
- package/runtime/agents/presentation-deck-builder/knowledge/prompts/create-template.md +1 -1
- package/runtime/agents/presentation-deck-builder/knowledge/prompts/generate-template-input-file.md +1 -1
- package/runtime/agents/provider-configurator/AGENTS.md +8 -0
- package/runtime/agents/provider-configurator/README.md +5 -0
- package/runtime/agents/provider-configurator/agent.yaml +27 -0
- package/runtime/agents/provider-configurator/capabilities/collect-provider-credentials/capability.yaml +14 -0
- package/runtime/agents/provider-configurator/capabilities/collect-provider-credentials/decision-rules.md +6 -0
- package/runtime/agents/provider-configurator/capabilities/collect-provider-credentials/workflow.md +7 -0
- package/runtime/agents/provider-configurator/capabilities/configure-provider-source/capability.yaml +14 -0
- package/runtime/agents/provider-configurator/capabilities/configure-provider-source/decision-rules.md +6 -0
- package/runtime/agents/provider-configurator/capabilities/configure-provider-source/workflow.md +8 -0
- package/runtime/agents/provider-configurator/capabilities/validate-provider-readiness/capability.yaml +14 -0
- package/runtime/agents/provider-configurator/capabilities/validate-provider-readiness/decision-rules.md +6 -0
- package/runtime/agents/provider-configurator/capabilities/validate-provider-readiness/workflow.md +7 -0
- package/runtime/agents/provider-configurator/infra/README.md +5 -0
- package/runtime/agents/provider-configurator/knowledge/context.md +8 -0
- package/runtime/agents/provider-configurator/knowledge/system.md +19 -0
- package/runtime/agents/provider-configurator/templates/README.md +4 -0
- package/runtime/agents/pyautogui-automation-builder/AGENTS.md +32 -0
- package/runtime/agents/pyautogui-automation-builder/README.md +44 -0
- package/runtime/agents/pyautogui-automation-builder/agent.yaml +45 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-project-files/capability.yaml +20 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-project-files/decision-rules.md +6 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-project-files/runner.py +39 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-project-files/workflow.md +7 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-script/capability.yaml +18 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-script/decision-rules.md +7 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-script/runner.py +33 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/generate-pyautogui-script/workflow.md +7 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/plan-desktop-automation/capability.yaml +18 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/plan-desktop-automation/decision-rules.md +8 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/plan-desktop-automation/runner.py +33 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/plan-desktop-automation/workflow.md +9 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/review-pyautogui-script/capability.yaml +20 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/review-pyautogui-script/decision-rules.md +8 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/review-pyautogui-script/runner.py +43 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/review-pyautogui-script/workflow.md +7 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/wrap-pyautogui-as-capability/capability.yaml +22 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/wrap-pyautogui-as-capability/decision-rules.md +6 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/wrap-pyautogui-as-capability/runner.py +43 -0
- package/runtime/agents/pyautogui-automation-builder/capabilities/wrap-pyautogui-as-capability/workflow.md +7 -0
- package/runtime/agents/pyautogui-automation-builder/infra/integrations/pyautogui-automation/pyautogui_automation_repository.py +856 -0
- package/runtime/agents/pyautogui-automation-builder/knowledge/context.md +17 -0
- package/runtime/agents/pyautogui-automation-builder/knowledge/policies.yaml +24 -0
- package/runtime/agents/pyautogui-automation-builder/knowledge/system.md +13 -0
- package/runtime/agents/pyautogui-automation-builder/templates/capability-wrapper.md +3 -0
- package/runtime/agents/pyautogui-automation-builder/templates/pyautogui-automation.py +12 -0
- package/runtime/agents/pyautogui-automation-builder/templates/pyautogui-readme.md +3 -0
- package/runtime/agents/pyautogui-automation-builder/templates/pyautogui-review-report.md +3 -0
- package/runtime/agents/pyautogui-automation-builder/templates/pyautogui-test.py +2 -0
- package/runtime/agents/pyautogui-automation-builder/tests/test_runners.py +376 -0
- package/runtime/agents/python-automation-builder/AGENTS.md +25 -0
- package/runtime/agents/python-automation-builder/README.md +43 -0
- package/runtime/agents/python-automation-builder/agent.yaml +45 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-automation-project-files/capability.yaml +20 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-automation-project-files/decision-rules.md +6 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-automation-project-files/runner.py +39 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-automation-project-files/workflow.md +7 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-python-automation/capability.yaml +18 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-python-automation/decision-rules.md +5 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-python-automation/runner.py +33 -0
- package/runtime/agents/python-automation-builder/capabilities/generate-python-automation/workflow.md +5 -0
- package/runtime/agents/python-automation-builder/capabilities/plan-python-automation/capability.yaml +18 -0
- package/runtime/agents/python-automation-builder/capabilities/plan-python-automation/decision-rules.md +6 -0
- package/runtime/agents/python-automation-builder/capabilities/plan-python-automation/runner.py +33 -0
- package/runtime/agents/python-automation-builder/capabilities/plan-python-automation/workflow.md +6 -0
- package/runtime/agents/python-automation-builder/capabilities/review-python-automation/capability.yaml +20 -0
- package/runtime/agents/python-automation-builder/capabilities/review-python-automation/decision-rules.md +6 -0
- package/runtime/agents/python-automation-builder/capabilities/review-python-automation/runner.py +43 -0
- package/runtime/agents/python-automation-builder/capabilities/review-python-automation/workflow.md +5 -0
- package/runtime/agents/python-automation-builder/capabilities/wrap-automation-as-capability/capability.yaml +22 -0
- package/runtime/agents/python-automation-builder/capabilities/wrap-automation-as-capability/decision-rules.md +6 -0
- package/runtime/agents/python-automation-builder/capabilities/wrap-automation-as-capability/runner.py +43 -0
- package/runtime/agents/python-automation-builder/capabilities/wrap-automation-as-capability/workflow.md +6 -0
- package/runtime/agents/python-automation-builder/infra/integrations/python-automation/python_automation_repository.py +717 -0
- package/runtime/agents/python-automation-builder/knowledge/context.md +15 -0
- package/runtime/agents/python-automation-builder/knowledge/policies.yaml +12 -0
- package/runtime/agents/python-automation-builder/knowledge/system.md +19 -0
- package/runtime/agents/python-automation-builder/templates/automation-readme.md +13 -0
- package/runtime/agents/python-automation-builder/templates/automation-review-report.md +13 -0
- package/runtime/agents/python-automation-builder/templates/automation-test.py +9 -0
- package/runtime/agents/python-automation-builder/templates/automation.py +19 -0
- package/runtime/agents/python-automation-builder/templates/capability-wrapper.md +4 -0
- package/runtime/agents/python-automation-builder/tests/test_runners.py +292 -0
- package/runtime/agents/selenium-automation-builder/AGENTS.md +27 -0
- package/runtime/agents/selenium-automation-builder/README.md +40 -0
- package/runtime/agents/selenium-automation-builder/agent.yaml +45 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-project-files/capability.yaml +20 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-project-files/decision-rules.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-project-files/runner.py +39 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-project-files/workflow.md +7 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-script/capability.yaml +18 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-script/decision-rules.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-script/runner.py +33 -0
- package/runtime/agents/selenium-automation-builder/capabilities/generate-selenium-script/workflow.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/plan-selenium-automation/capability.yaml +18 -0
- package/runtime/agents/selenium-automation-builder/capabilities/plan-selenium-automation/decision-rules.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/plan-selenium-automation/runner.py +33 -0
- package/runtime/agents/selenium-automation-builder/capabilities/plan-selenium-automation/workflow.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/review-selenium-script/capability.yaml +20 -0
- package/runtime/agents/selenium-automation-builder/capabilities/review-selenium-script/decision-rules.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/review-selenium-script/runner.py +40 -0
- package/runtime/agents/selenium-automation-builder/capabilities/review-selenium-script/workflow.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/wrap-selenium-as-capability/capability.yaml +22 -0
- package/runtime/agents/selenium-automation-builder/capabilities/wrap-selenium-as-capability/decision-rules.md +6 -0
- package/runtime/agents/selenium-automation-builder/capabilities/wrap-selenium-as-capability/runner.py +43 -0
- package/runtime/agents/selenium-automation-builder/capabilities/wrap-selenium-as-capability/workflow.md +6 -0
- package/runtime/agents/selenium-automation-builder/infra/integrations/selenium-automation/selenium_automation_repository.py +793 -0
- package/runtime/agents/selenium-automation-builder/knowledge/context.md +15 -0
- package/runtime/agents/selenium-automation-builder/knowledge/policies.yaml +17 -0
- package/runtime/agents/selenium-automation-builder/knowledge/system.md +18 -0
- package/runtime/agents/selenium-automation-builder/templates/capability-wrapper.md +4 -0
- package/runtime/agents/selenium-automation-builder/templates/selenium-automation.py +20 -0
- package/runtime/agents/selenium-automation-builder/templates/selenium-readme.md +13 -0
- package/runtime/agents/selenium-automation-builder/templates/selenium-review-report.md +13 -0
- package/runtime/agents/selenium-automation-builder/templates/selenium-test.py +9 -0
- package/runtime/agents/selenium-automation-builder/tests/test_runners.py +282 -0
- package/runtime/agents/software-specification-analyst/agent.yaml +17 -4
- package/runtime/agents/software-specification-analyst/capabilities/analyze-multiple-projects/capability.yaml +1 -1
- package/runtime/agents/software-specification-analyst/capabilities/analyze-project-context/capability.yaml +1 -1
- package/runtime/agents/software-specification-analyst/capabilities/conduct-requirements-interview/capability.yaml +1 -1
- package/runtime/agents/software-specification-analyst/capabilities/create-complete-spec/capability.yaml +1 -1
- package/runtime/agents/software-specification-analyst/capabilities/create-final-spec-from-analysis/capability.yaml +1 -1
- package/runtime/agents/software-specification-analyst/capabilities/create-functional-spec/capability.yaml +11 -0
- package/runtime/agents/software-specification-analyst/capabilities/create-technical-spec/capability.yaml +12 -0
- package/runtime/agents/software-specification-analyst/capabilities/refine-analysis-with-feedback/capability.yaml +1 -1
- package/runtime/agents/software-specification-analyst/capabilities/write-user-stories/capability.yaml +12 -0
- package/runtime/agents/sqlserver-change-operator/agent.yaml +12 -1
- package/runtime/agents/sqlserver-data-analyzer/agent.yaml +13 -2
- package/runtime/agents/supabase-project-analyst/AGENTS.md +29 -0
- package/runtime/agents/supabase-project-analyst/README.md +23 -0
- package/runtime/agents/supabase-project-analyst/agent.yaml +53 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-auth-security/capability.yaml +18 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-auth-security/decision-rules.md +5 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-auth-security/runner.py +32 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-auth-security/workflow.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-rls-policies/capability.yaml +18 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-rls-policies/decision-rules.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-rls-policies/runner.py +32 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-rls-policies/workflow.md +7 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-storage-policies/capability.yaml +18 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-storage-policies/decision-rules.md +5 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-storage-policies/runner.py +32 -0
- package/runtime/agents/supabase-project-analyst/capabilities/audit-storage-policies/workflow.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/generate-supabase-report/capability.yaml +18 -0
- package/runtime/agents/supabase-project-analyst/capabilities/generate-supabase-report/decision-rules.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/generate-supabase-report/runner.py +32 -0
- package/runtime/agents/supabase-project-analyst/capabilities/generate-supabase-report/workflow.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/inspect-supabase-project/capability.yaml +19 -0
- package/runtime/agents/supabase-project-analyst/capabilities/inspect-supabase-project/decision-rules.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/inspect-supabase-project/runner.py +36 -0
- package/runtime/agents/supabase-project-analyst/capabilities/inspect-supabase-project/workflow.md +7 -0
- package/runtime/agents/supabase-project-analyst/capabilities/plan-supabase-fix/capability.yaml +18 -0
- package/runtime/agents/supabase-project-analyst/capabilities/plan-supabase-fix/decision-rules.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/plan-supabase-fix/runner.py +32 -0
- package/runtime/agents/supabase-project-analyst/capabilities/plan-supabase-fix/workflow.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/review-migrations/capability.yaml +18 -0
- package/runtime/agents/supabase-project-analyst/capabilities/review-migrations/decision-rules.md +6 -0
- package/runtime/agents/supabase-project-analyst/capabilities/review-migrations/runner.py +32 -0
- package/runtime/agents/supabase-project-analyst/capabilities/review-migrations/workflow.md +5 -0
- package/runtime/agents/supabase-project-analyst/infra/integrations/supabase-project/supabase_project_repository.py +589 -0
- package/runtime/agents/supabase-project-analyst/knowledge/context.md +11 -0
- package/runtime/agents/supabase-project-analyst/knowledge/policies.yaml +24 -0
- package/runtime/agents/supabase-project-analyst/knowledge/system.md +10 -0
- package/runtime/agents/supabase-project-analyst/templates/supabase-audit.md +3 -0
- package/runtime/agents/supabase-project-analyst/templates/supabase-fix-plan.md +3 -0
- package/runtime/agents/supabase-project-analyst/templates/supabase-inspection.md +3 -0
- package/runtime/agents/supabase-project-analyst/templates/supabase-report.md +3 -0
- package/runtime/agents/supabase-project-analyst/tests/test_runners.py +239 -0
- package/runtime/agents/task-orchestrator/AGENTS.md +8 -0
- package/runtime/agents/task-orchestrator/README.md +7 -0
- package/runtime/agents/task-orchestrator/agent.yaml +53 -0
- package/runtime/agents/task-orchestrator/capabilities/coordinate-execution/capability.yaml +15 -0
- package/runtime/agents/task-orchestrator/capabilities/coordinate-execution/decision-rules.md +6 -0
- package/runtime/agents/task-orchestrator/capabilities/coordinate-execution/workflow.md +7 -0
- package/runtime/agents/task-orchestrator/capabilities/plan-task/capability.yaml +14 -0
- package/runtime/agents/task-orchestrator/capabilities/plan-task/decision-rules.md +6 -0
- package/runtime/agents/task-orchestrator/capabilities/plan-task/workflow.md +8 -0
- package/runtime/agents/task-orchestrator/capabilities/select-specialists/capability.yaml +14 -0
- package/runtime/agents/task-orchestrator/capabilities/select-specialists/decision-rules.md +6 -0
- package/runtime/agents/task-orchestrator/capabilities/select-specialists/workflow.md +7 -0
- package/runtime/agents/task-orchestrator/infra/README.md +5 -0
- package/runtime/agents/task-orchestrator/knowledge/context.md +9 -0
- package/runtime/agents/task-orchestrator/knowledge/system.md +20 -0
- package/runtime/agents/task-orchestrator/templates/README.md +4 -0
- package/runtime/agents/technical-integration-analyst/agent.yaml +15 -2
- package/runtime/agents/topdesk-orchestrator/agent.yaml +10 -2
- package/runtime/cli/README.md +76 -11
- package/runtime/cli/aikit/__init__.py +1 -1
- package/runtime/cli/aikit/acceptance.py +166 -0
- package/runtime/cli/aikit/agent_executor.py +89 -0
- package/runtime/cli/aikit/agent_registry.py +319 -0
- package/runtime/cli/aikit/app_home.py +87 -2
- package/runtime/cli/aikit/architecture.py +84 -0
- package/runtime/cli/aikit/audit.py +216 -3
- package/runtime/cli/aikit/autonomy.py +237 -0
- package/runtime/cli/aikit/capability_runtime.py +522 -0
- package/runtime/cli/aikit/catalog.py +246 -0
- package/runtime/cli/aikit/cli_dispatch.py +1078 -0
- package/runtime/cli/aikit/cli_parser.py +409 -0
- package/runtime/cli/aikit/collaboration.py +359 -0
- package/runtime/cli/aikit/configuration_orchestrator.py +52 -26
- package/runtime/cli/aikit/contribution.py +105 -0
- package/runtime/cli/aikit/control_router.py +298 -0
- package/runtime/cli/aikit/core/__init__.py +1 -0
- package/runtime/cli/aikit/core/capability_contract.py +112 -0
- package/runtime/cli/aikit/core/requests.py +69 -0
- package/runtime/cli/aikit/core/runtime.py +64 -0
- package/runtime/cli/aikit/decision_store.py +17 -0
- package/runtime/cli/aikit/diagnostics.py +10 -3
- package/runtime/cli/aikit/doctor_runtime.py +79 -0
- package/runtime/cli/aikit/errors.py +7 -0
- package/runtime/cli/aikit/eval.py +158 -0
- package/runtime/cli/aikit/execution_reviewer.py +195 -0
- package/runtime/cli/aikit/extensions.py +140 -0
- package/runtime/cli/aikit/fallback.py +1 -0
- package/runtime/cli/aikit/github_pr.py +23 -0
- package/runtime/cli/aikit/guardrails.py +25 -10
- package/runtime/cli/aikit/human_output.py +1026 -0
- package/runtime/cli/aikit/impact_map.py +294 -0
- package/runtime/cli/aikit/install.py +4 -3
- package/runtime/cli/aikit/interactive_wizard.py +79 -0
- package/runtime/cli/aikit/local_llm_operator.py +146 -0
- package/runtime/cli/aikit/lock.py +4 -1
- package/runtime/cli/aikit/main.py +11 -2561
- package/runtime/cli/aikit/mcp_manifest.py +229 -0
- package/runtime/cli/aikit/mcp_server.py +132 -0
- package/runtime/cli/aikit/mcp_tools.py +262 -0
- package/runtime/cli/aikit/mini_brain.py +227 -0
- package/runtime/cli/aikit/model_router.py +193 -20
- package/runtime/cli/aikit/module_controller.py +335 -0
- package/runtime/cli/aikit/natural_prompt_runtime.py +538 -0
- package/runtime/cli/aikit/notifications.py +716 -2
- package/runtime/cli/aikit/ollama.py +1 -0
- package/runtime/cli/aikit/orchestrator.py +1225 -0
- package/runtime/cli/aikit/output.py +63 -2
- package/runtime/cli/aikit/permissions.py +14 -4
- package/runtime/cli/aikit/prompt_injection.py +57 -0
- package/runtime/cli/aikit/review_gate.py +38 -6
- package/runtime/cli/aikit/roadmap.py +195 -0
- package/runtime/cli/aikit/roadmap_cli.py +70 -0
- package/runtime/cli/aikit/router.py +41 -12
- package/runtime/cli/aikit/router_explain.py +152 -0
- package/runtime/cli/aikit/runtime_paths.py +11 -0
- package/runtime/cli/aikit/secrets.py +113 -0
- package/runtime/cli/aikit/sessions.py +125 -2
- package/runtime/cli/aikit/setup_wizard_payload.py +32 -0
- package/runtime/cli/aikit/sources.py +298 -46
- package/runtime/cli/aikit/tasks.py +449 -21
- package/runtime/cli/aikit/wizard_state.py +517 -0
- package/runtime/cli/aikit/workflows.py +115 -0
- package/runtime/cli/aikit/write_policy.py +108 -0
- package/runtime/plugins/claude-code-ai-devkit/README.md +17 -0
- package/runtime/plugins/claude-code-ai-devkit/agents/README.md +29 -2
- package/runtime/plugins/claude-code-ai-devkit/agents/agent-devkit-db-analyst.md +44 -0
- package/runtime/plugins/claude-code-ai-devkit/agents/agent-devkit-execution-reviewer.md +38 -0
- package/runtime/plugins/claude-code-ai-devkit/agents/agent-devkit-pr-reviewer.md +42 -0
- package/runtime/plugins/claude-code-ai-devkit/agents/agent-devkit-repo-explorer.md +40 -0
- package/runtime/plugins/claude-code-ai-devkit/agents/agent-devkit-support-triage.md +43 -0
- package/runtime/plugins/claude-code-ai-devkit/plugin.json +1 -1
- package/runtime/plugins/claude-code-ai-devkit/skills/ai-devkit-router/SKILL.md +16 -0
- package/runtime/plugins/claude-skill-ai-devkit/ai-devkit/SKILL.md +1 -0
- package/runtime/plugins/claude-skill-ai-devkit/ai-devkit/references/subagents.md +21 -0
- package/runtime/plugins/claude-skill-ai-devkit/plugin.json +1 -1
- package/runtime/providers/azure-devops.yaml +9 -0
- package/runtime/providers/github.yaml +4 -0
- package/runtime/providers/local-notification.yaml +5 -2
- package/runtime/providers/local-scheduler.yaml +1 -1
- package/runtime/providers/supabase.yaml +46 -0
- package/runtime/scripts/release-catalog-snapshot.json +543 -0
- package/runtime/scripts/release-gate.py +141 -1
- package/runtime/scripts/validate-repo.py +312 -0
- package/runtime/vendor/skills/napkin/napkin.md +15 -9
|
@@ -11,11 +11,14 @@ import sys
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
14
|
+
import yaml
|
|
15
|
+
|
|
14
16
|
|
|
15
17
|
ROOT = Path(__file__).resolve().parents[1]
|
|
16
18
|
AGENT = ROOT / "agent"
|
|
17
19
|
VALIDATE_REPO = ROOT / "scripts" / "validate-repo.py"
|
|
18
20
|
MVP_READINESS = ROOT / "scripts" / "mvp-readiness.py"
|
|
21
|
+
CATALOG_SNAPSHOT = ROOT / "scripts" / "release-catalog-snapshot.json"
|
|
19
22
|
CLAUDE_SKILL = ROOT / "plugins" / "claude-skill-ai-devkit" / "ai-devkit"
|
|
20
23
|
CODEX_HOME = Path(os.environ.get("CODEX_HOME", Path.home() / ".codex"))
|
|
21
24
|
SKILL_VALIDATOR = CODEX_HOME / "skills" / ".system" / "skill-creator" / "scripts" / "quick_validate.py"
|
|
@@ -39,7 +42,9 @@ def run_gate(*, quick: bool = False) -> dict[str, Any]:
|
|
|
39
42
|
checks = [
|
|
40
43
|
check_command("agent version", [sys.executable, str(AGENT), "--version"], validate_agent_version),
|
|
41
44
|
check_json("repo strict validation", [sys.executable, str(VALIDATE_REPO), "--strict", "--json"], validate_repo),
|
|
45
|
+
catalog_snapshot_check(),
|
|
42
46
|
check_json("mvp readiness", [sys.executable, str(MVP_READINESS), "--json"], validate_mvp_readiness),
|
|
47
|
+
check_json("v0.2.0 runtime evals", [sys.executable, str(AGENT), "eval", "run", "all", "--json"], validate_v020_evals),
|
|
43
48
|
skill_validation_check(),
|
|
44
49
|
]
|
|
45
50
|
if quick:
|
|
@@ -71,13 +76,21 @@ def unittest_command() -> list[str]:
|
|
|
71
76
|
paths = [
|
|
72
77
|
path
|
|
73
78
|
for path in ROOT.rglob("test*.py")
|
|
74
|
-
if
|
|
79
|
+
if include_unittest_path(path)
|
|
75
80
|
]
|
|
76
81
|
paths.sort(key=unittest_path_sort_key)
|
|
77
82
|
test_files = [str(path.relative_to(ROOT)) for path in paths]
|
|
78
83
|
return [sys.executable, "-m", "unittest", *test_files]
|
|
79
84
|
|
|
80
85
|
|
|
86
|
+
def include_unittest_path(path: Path) -> bool:
|
|
87
|
+
relative = path.relative_to(ROOT)
|
|
88
|
+
parts = relative.parts
|
|
89
|
+
if "vendor" in parts:
|
|
90
|
+
return False
|
|
91
|
+
return parts[:3] != ("tooling", "agent-devkit", "runtime")
|
|
92
|
+
|
|
93
|
+
|
|
81
94
|
def unittest_path_sort_key(path: Path) -> tuple[int, str]:
|
|
82
95
|
relative = path.relative_to(ROOT)
|
|
83
96
|
first = relative.parts[0] if relative.parts else ""
|
|
@@ -141,6 +154,104 @@ def validate_repo(payload: dict[str, Any]) -> str | None:
|
|
|
141
154
|
return None
|
|
142
155
|
|
|
143
156
|
|
|
157
|
+
def catalog_snapshot_check() -> dict[str, Any]:
|
|
158
|
+
name = "catalog snapshot"
|
|
159
|
+
if not CATALOG_SNAPSHOT.exists():
|
|
160
|
+
return failed_static_check(name, f"catalog snapshot not found: {CATALOG_SNAPSHOT}")
|
|
161
|
+
try:
|
|
162
|
+
expected = json.loads(CATALOG_SNAPSHOT.read_text(encoding="utf-8"))
|
|
163
|
+
except json.JSONDecodeError as exc:
|
|
164
|
+
return failed_static_check(name, f"invalid catalog snapshot json: {exc}")
|
|
165
|
+
current = build_catalog_snapshot()
|
|
166
|
+
message = validate_catalog_snapshot(expected, current)
|
|
167
|
+
if message:
|
|
168
|
+
check = failed_static_check(name, message)
|
|
169
|
+
check["summary"] = {"expected": summarize_snapshot(expected), "current": summarize_snapshot(current)}
|
|
170
|
+
return check
|
|
171
|
+
check = ok_static_check(name)
|
|
172
|
+
check["summary"] = summarize_snapshot(current)
|
|
173
|
+
return check
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def build_catalog_snapshot() -> dict[str, Any]:
|
|
177
|
+
agents: list[str] = []
|
|
178
|
+
capabilities_by_agent: dict[str, list[str]] = {}
|
|
179
|
+
for manifest_path in sorted(ROOT.glob("agents/*/agent.yaml")):
|
|
180
|
+
manifest = load_yaml(manifest_path)
|
|
181
|
+
agent_id = str(manifest.get("id") or manifest_path.parent.name)
|
|
182
|
+
agents.append(agent_id)
|
|
183
|
+
capabilities = []
|
|
184
|
+
for capability_path in sorted((manifest_path.parent / "capabilities").glob("*/capability.yaml")):
|
|
185
|
+
capability = load_yaml(capability_path)
|
|
186
|
+
capabilities.append(str(capability.get("id") or capability_path.parent.name).split(".")[-1])
|
|
187
|
+
capabilities_by_agent[agent_id] = sorted(capabilities)
|
|
188
|
+
|
|
189
|
+
providers = [
|
|
190
|
+
str(load_yaml(path).get("id") or path.stem)
|
|
191
|
+
for path in sorted(ROOT.glob("providers/*.yaml"))
|
|
192
|
+
]
|
|
193
|
+
plugins = [
|
|
194
|
+
str(load_json(plugin_manifest_path(path)).get("id") or path.name)
|
|
195
|
+
for path in sorted((ROOT / "plugins").iterdir())
|
|
196
|
+
if path.is_dir() and plugin_manifest_path(path).exists()
|
|
197
|
+
]
|
|
198
|
+
return {
|
|
199
|
+
"schema_version": "ai-devkit.release-catalog-snapshot/v1",
|
|
200
|
+
"version": expected_version(),
|
|
201
|
+
"summary": {
|
|
202
|
+
"agents": len(agents),
|
|
203
|
+
"capabilities": sum(len(items) for items in capabilities_by_agent.values()),
|
|
204
|
+
"providers": len(providers),
|
|
205
|
+
"plugins": len(plugins),
|
|
206
|
+
},
|
|
207
|
+
"agents": sorted(agents),
|
|
208
|
+
"providers": sorted(providers),
|
|
209
|
+
"plugins": sorted(plugins),
|
|
210
|
+
"capabilities_by_agent": capabilities_by_agent,
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def validate_catalog_snapshot(expected: dict[str, Any], current: dict[str, Any]) -> str | None:
|
|
215
|
+
if expected.get("schema_version") != current["schema_version"]:
|
|
216
|
+
return "catalog snapshot schema_version is not supported"
|
|
217
|
+
for key in ("version", "summary", "agents", "providers", "plugins", "capabilities_by_agent"):
|
|
218
|
+
if expected.get(key) != current.get(key):
|
|
219
|
+
return f"catalog snapshot mismatch in {key}; update scripts/release-catalog-snapshot.json intentionally for this release"
|
|
220
|
+
return None
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def summarize_snapshot(snapshot: dict[str, Any]) -> dict[str, Any]:
|
|
224
|
+
return {
|
|
225
|
+
"version": snapshot.get("version"),
|
|
226
|
+
"summary": snapshot.get("summary") or {},
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def expected_version() -> str:
|
|
231
|
+
result = run([sys.executable, str(AGENT), "--version"])
|
|
232
|
+
prefix = "agent "
|
|
233
|
+
if result.returncode == 0 and result.stdout.startswith(prefix):
|
|
234
|
+
return result.stdout.strip()[len(prefix) :]
|
|
235
|
+
return "unknown"
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def plugin_manifest_path(plugin_dir: Path) -> Path:
|
|
239
|
+
codex_manifest = plugin_dir / ".codex-plugin" / "plugin.json"
|
|
240
|
+
if codex_manifest.exists():
|
|
241
|
+
return codex_manifest
|
|
242
|
+
return plugin_dir / "plugin.json"
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def load_yaml(path: Path) -> dict[str, Any]:
|
|
246
|
+
payload = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
|
|
247
|
+
return payload if isinstance(payload, dict) else {}
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
def load_json(path: Path) -> dict[str, Any]:
|
|
251
|
+
payload = json.loads(path.read_text(encoding="utf-8"))
|
|
252
|
+
return payload if isinstance(payload, dict) else {}
|
|
253
|
+
|
|
254
|
+
|
|
144
255
|
def validate_mvp_readiness(payload: dict[str, Any]) -> str | None:
|
|
145
256
|
if payload.get("kind") != "mvp-readiness" or payload.get("status") != "ok":
|
|
146
257
|
return "mvp readiness is not ok"
|
|
@@ -149,6 +260,17 @@ def validate_mvp_readiness(payload: dict[str, Any]) -> str | None:
|
|
|
149
260
|
return None
|
|
150
261
|
|
|
151
262
|
|
|
263
|
+
def validate_v020_evals(payload: dict[str, Any]) -> str | None:
|
|
264
|
+
if payload.get("kind") != "eval-run" or payload.get("suite") != "all":
|
|
265
|
+
return "v0.2.0 eval command returned an unexpected payload"
|
|
266
|
+
if payload.get("status") != "passed":
|
|
267
|
+
return "v0.2.0 runtime evals did not pass"
|
|
268
|
+
checks = payload.get("checks") or []
|
|
269
|
+
if not isinstance(checks, list) or len(checks) < 5:
|
|
270
|
+
return "v0.2.0 runtime evals returned too few suites"
|
|
271
|
+
return None
|
|
272
|
+
|
|
273
|
+
|
|
152
274
|
def validate_skill_validation(result: subprocess.CompletedProcess[str]) -> str | None:
|
|
153
275
|
if "Skill is valid!" not in result.stdout:
|
|
154
276
|
return "Claude Desktop skill validation did not report success"
|
|
@@ -182,6 +304,15 @@ def ok_check(name: str, result: subprocess.CompletedProcess[str]) -> dict[str, A
|
|
|
182
304
|
}
|
|
183
305
|
|
|
184
306
|
|
|
307
|
+
def ok_static_check(name: str) -> dict[str, Any]:
|
|
308
|
+
return {
|
|
309
|
+
"name": name,
|
|
310
|
+
"status": "ok",
|
|
311
|
+
"returncode": None,
|
|
312
|
+
"message": "",
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
|
|
185
316
|
def failed_check(name: str, message: str, result: subprocess.CompletedProcess[str]) -> dict[str, Any]:
|
|
186
317
|
return {
|
|
187
318
|
"name": name,
|
|
@@ -193,6 +324,15 @@ def failed_check(name: str, message: str, result: subprocess.CompletedProcess[st
|
|
|
193
324
|
}
|
|
194
325
|
|
|
195
326
|
|
|
327
|
+
def failed_static_check(name: str, message: str) -> dict[str, Any]:
|
|
328
|
+
return {
|
|
329
|
+
"name": name,
|
|
330
|
+
"status": "failed",
|
|
331
|
+
"returncode": None,
|
|
332
|
+
"message": message,
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
|
|
196
336
|
def skipped_check(name: str, message: str) -> dict[str, Any]:
|
|
197
337
|
return {
|
|
198
338
|
"name": name,
|
|
@@ -11,8 +11,14 @@ from dataclasses import dataclass, field
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
14
|
+
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
15
|
+
if str(REPO_ROOT) not in sys.path:
|
|
16
|
+
sys.path.insert(0, str(REPO_ROOT))
|
|
17
|
+
|
|
14
18
|
import yaml
|
|
15
19
|
|
|
20
|
+
from cli.aikit.write_policy import canonical_write_policies, legacy_write_policy_aliases
|
|
21
|
+
|
|
16
22
|
|
|
17
23
|
KEBAB_CASE = re.compile(r"^[a-z0-9]+(?:-[a-z0-9]+)*$")
|
|
18
24
|
AGENT_REQUIRED_KEYS = {
|
|
@@ -71,6 +77,36 @@ CAPABILITY_PROVIDER_FALLBACKS = {
|
|
|
71
77
|
"skip_provider",
|
|
72
78
|
"blocked",
|
|
73
79
|
}
|
|
80
|
+
CAPABILITY_EXECUTION_FIELDS = {"modes", "idempotency", "timeout_seconds"}
|
|
81
|
+
CAPABILITY_EXECUTION_MODES = {"run", "dry-run"}
|
|
82
|
+
CAPABILITY_IDEMPOTENCY_VALUES = {
|
|
83
|
+
"safe-repeat",
|
|
84
|
+
"creates-artifact",
|
|
85
|
+
"external-read",
|
|
86
|
+
"external-write",
|
|
87
|
+
}
|
|
88
|
+
CAPABILITY_ARTIFACT_KINDS = {"markdown", "json", "xlsx", "pptx", "drawio", "log", "other"}
|
|
89
|
+
RUNTIME_SOURCE_FIELDS = {"enabled", "args", "env"}
|
|
90
|
+
SOURCE_CONTRACT_FIELDS = {"enabled", "supported", "args", "env", "mappings", "apply"}
|
|
91
|
+
SOURCE_MAPPING_FIELDS = {"field", "name", "arg", "env"}
|
|
92
|
+
RUNTIME_ROLE_KINDS = {"coordinator", "reviewer", "provider-configurator", "local-worker", "none"}
|
|
93
|
+
AGENT_MODE_TYPES = {"reactive", "workflow", "planner", "reviewer"}
|
|
94
|
+
AGENT_MODE_LLM_VALUES = {False, "optional", "required"}
|
|
95
|
+
AGENT_MODE_FIELDS = {
|
|
96
|
+
"type",
|
|
97
|
+
"max_steps",
|
|
98
|
+
"max_specialists",
|
|
99
|
+
"max_llm_calls",
|
|
100
|
+
"timeout_seconds",
|
|
101
|
+
"can_call_capabilities",
|
|
102
|
+
"can_call_llm",
|
|
103
|
+
"can_request_user_input",
|
|
104
|
+
"external_writes",
|
|
105
|
+
"allowed_capabilities",
|
|
106
|
+
"stop_conditions",
|
|
107
|
+
}
|
|
108
|
+
CANONICAL_WRITE_POLICIES = canonical_write_policies()
|
|
109
|
+
LEGACY_WRITE_POLICY_ALIASES = legacy_write_policy_aliases()
|
|
74
110
|
SECRET_MARKERS = ("SECRET", "TOKEN", "PASSWORD", "PAT", "API_KEY", "PRIVATE_KEY")
|
|
75
111
|
ROOT_ARTIFACT_NAMES = {"json", "markdown"}
|
|
76
112
|
ROOT_IGNORED_NAMES = {
|
|
@@ -138,6 +174,7 @@ class ValidationState:
|
|
|
138
174
|
"errors": self.errors,
|
|
139
175
|
"warnings": self.warnings,
|
|
140
176
|
"agents": self.agent_stats,
|
|
177
|
+
"providers": sorted(self.provider_ids),
|
|
141
178
|
"plugins": self.plugin_stats,
|
|
142
179
|
}
|
|
143
180
|
|
|
@@ -439,6 +476,10 @@ def validate_agent(state: ValidationState, agent_dir: Path, manifest_path: Path)
|
|
|
439
476
|
|
|
440
477
|
validate_status(state, manifest_path, manifest.get("status"))
|
|
441
478
|
validate_relative_refs(state, agent_dir, manifest.get("default_context", []), "default_context")
|
|
479
|
+
validate_agent_write_policy(state, manifest_path, manifest.get("write_policy"))
|
|
480
|
+
validate_routing(state, manifest_path, manifest.get("routing"))
|
|
481
|
+
validate_runtime_role(state, manifest_path, manifest.get("runtime_role"), agent_kind=manifest.get("kind"))
|
|
482
|
+
validate_agent_mode(state, manifest_path, manifest.get("agent_mode"), write_policy=manifest.get("write_policy"))
|
|
442
483
|
|
|
443
484
|
surface = manifest.get("agent_surface", {}) or {}
|
|
444
485
|
if isinstance(surface, dict):
|
|
@@ -498,6 +539,12 @@ def validate_capability(state: ValidationState, agent_dir: Path, manifest_path:
|
|
|
498
539
|
)
|
|
499
540
|
|
|
500
541
|
validate_status(state, manifest_path, manifest.get("status"))
|
|
542
|
+
validate_write_policy_value(state, manifest_path, manifest.get("write_policy"))
|
|
543
|
+
validate_routing(state, manifest_path, manifest.get("routing"))
|
|
544
|
+
validate_runtime_contract(state, manifest_path, manifest.get("runtime"))
|
|
545
|
+
validate_source_contract(state, manifest_path, manifest.get("source"), field_prefix="source")
|
|
546
|
+
validate_capability_execution(state, manifest_path, manifest.get("execution"))
|
|
547
|
+
validate_capability_outputs(state, manifest_path, manifest.get("outputs"))
|
|
501
548
|
|
|
502
549
|
entrypoint = manifest.get("entrypoint", {}) or {}
|
|
503
550
|
if isinstance(entrypoint, dict):
|
|
@@ -524,6 +571,220 @@ def validate_capability(state: ValidationState, agent_dir: Path, manifest_path:
|
|
|
524
571
|
validate_capability_provider_requirements(state, manifest_path, manifest.get("requires", {}))
|
|
525
572
|
|
|
526
573
|
|
|
574
|
+
def validate_capability_execution(state: ValidationState, manifest_path: Path, execution: Any) -> None:
|
|
575
|
+
if execution is None:
|
|
576
|
+
return
|
|
577
|
+
relative_manifest = rel(state, manifest_path)
|
|
578
|
+
if not isinstance(execution, dict):
|
|
579
|
+
state.error(f"{relative_manifest} execution must be a mapping")
|
|
580
|
+
return
|
|
581
|
+
for key in execution:
|
|
582
|
+
if key not in CAPABILITY_EXECUTION_FIELDS:
|
|
583
|
+
state.error(f"{relative_manifest} execution has unsupported field: {key}")
|
|
584
|
+
modes = execution.get("modes")
|
|
585
|
+
if modes is not None:
|
|
586
|
+
if not isinstance(modes, list):
|
|
587
|
+
state.error(f"{relative_manifest} execution.modes must be a list")
|
|
588
|
+
else:
|
|
589
|
+
for mode in modes:
|
|
590
|
+
if mode not in CAPABILITY_EXECUTION_MODES:
|
|
591
|
+
state.error(f"{relative_manifest} execution.modes has unsupported mode: {mode}")
|
|
592
|
+
idempotency = execution.get("idempotency")
|
|
593
|
+
if idempotency is not None and idempotency not in CAPABILITY_IDEMPOTENCY_VALUES:
|
|
594
|
+
state.error(f"{relative_manifest} execution.idempotency has unsupported value: {idempotency}")
|
|
595
|
+
timeout = execution.get("timeout_seconds")
|
|
596
|
+
if timeout is not None and (not isinstance(timeout, int) or timeout <= 0):
|
|
597
|
+
state.error(f"{relative_manifest} execution.timeout_seconds must be a positive integer")
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
def validate_capability_outputs(state: ValidationState, manifest_path: Path, outputs: Any) -> None:
|
|
601
|
+
if outputs is None:
|
|
602
|
+
return
|
|
603
|
+
relative_manifest = rel(state, manifest_path)
|
|
604
|
+
if not isinstance(outputs, dict):
|
|
605
|
+
state.error(f"{relative_manifest} outputs must be a mapping")
|
|
606
|
+
return
|
|
607
|
+
artifacts = outputs.get("artifacts")
|
|
608
|
+
if artifacts is None:
|
|
609
|
+
return
|
|
610
|
+
if not isinstance(artifacts, list):
|
|
611
|
+
state.error(f"{relative_manifest} outputs.artifacts must be a list")
|
|
612
|
+
return
|
|
613
|
+
for item in artifacts:
|
|
614
|
+
if isinstance(item, str):
|
|
615
|
+
continue
|
|
616
|
+
if not isinstance(item, dict):
|
|
617
|
+
state.error(f"{relative_manifest} outputs.artifacts entries must be strings or mappings")
|
|
618
|
+
continue
|
|
619
|
+
path = item.get("path") or item.get("ref")
|
|
620
|
+
if not isinstance(path, str) or not path.strip():
|
|
621
|
+
state.error(f"{relative_manifest} outputs.artifacts entry missing path")
|
|
622
|
+
kind = item.get("kind")
|
|
623
|
+
if kind is not None and kind not in CAPABILITY_ARTIFACT_KINDS:
|
|
624
|
+
state.error(f"{relative_manifest} outputs.artifacts has unsupported kind: {kind}")
|
|
625
|
+
sensitive = item.get("sensitive")
|
|
626
|
+
if sensitive is not None and not isinstance(sensitive, bool):
|
|
627
|
+
state.error(f"{relative_manifest} outputs.artifacts sensitive must be boolean")
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
def validate_runtime_contract(state: ValidationState, manifest_path: Path, runtime: Any) -> None:
|
|
631
|
+
if runtime is None:
|
|
632
|
+
return
|
|
633
|
+
relative_manifest = rel(state, manifest_path)
|
|
634
|
+
if not isinstance(runtime, dict):
|
|
635
|
+
state.error(f"{relative_manifest} runtime must be a mapping")
|
|
636
|
+
return
|
|
637
|
+
provider = runtime.get("provider")
|
|
638
|
+
if provider is not None:
|
|
639
|
+
provider_id = str(provider)
|
|
640
|
+
if not provider_id:
|
|
641
|
+
state.error(f"{relative_manifest} runtime.provider must be a non-empty string")
|
|
642
|
+
elif provider_id not in state.provider_ids:
|
|
643
|
+
state.error(f"{relative_manifest} runtime references unknown provider: {provider_id}")
|
|
644
|
+
source = runtime.get("source")
|
|
645
|
+
if source is None:
|
|
646
|
+
return
|
|
647
|
+
validate_source_contract(state, manifest_path, source, field_prefix="runtime.source", allowed_fields=RUNTIME_SOURCE_FIELDS)
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
def validate_source_contract(
|
|
651
|
+
state: ValidationState,
|
|
652
|
+
manifest_path: Path,
|
|
653
|
+
source: Any,
|
|
654
|
+
*,
|
|
655
|
+
field_prefix: str,
|
|
656
|
+
allowed_fields: set[str] = SOURCE_CONTRACT_FIELDS,
|
|
657
|
+
) -> None:
|
|
658
|
+
if source is None:
|
|
659
|
+
return
|
|
660
|
+
if not isinstance(source, dict):
|
|
661
|
+
state.error(f"{rel(state, manifest_path)} {field_prefix} must be a mapping")
|
|
662
|
+
return
|
|
663
|
+
relative_manifest = rel(state, manifest_path)
|
|
664
|
+
for key in source:
|
|
665
|
+
if key not in allowed_fields:
|
|
666
|
+
state.error(f"{relative_manifest} {field_prefix} has unsupported field: {key}")
|
|
667
|
+
for boolean_field in ("enabled", "supported"):
|
|
668
|
+
if boolean_field in source and not isinstance(source.get(boolean_field), bool):
|
|
669
|
+
state.error(f"{relative_manifest} {field_prefix}.{boolean_field} must be boolean")
|
|
670
|
+
for field in ("args", "env"):
|
|
671
|
+
mapping = source.get(field)
|
|
672
|
+
if mapping is None:
|
|
673
|
+
continue
|
|
674
|
+
if not isinstance(mapping, dict):
|
|
675
|
+
state.error(f"{relative_manifest} {field_prefix}.{field} must be a mapping")
|
|
676
|
+
continue
|
|
677
|
+
for name, value in mapping.items():
|
|
678
|
+
if not isinstance(name, str) or not name.strip() or not isinstance(value, str) or not value.strip():
|
|
679
|
+
state.error(f"{relative_manifest} {field_prefix}.{field} entries must be non-empty strings")
|
|
680
|
+
continue
|
|
681
|
+
if field == "args" and not value.startswith("--"):
|
|
682
|
+
state.error(f"{relative_manifest} {field_prefix}.args.{name} must map to a CLI flag")
|
|
683
|
+
if field == "env" and not re.match(r"^[A-Za-z_][A-Za-z0-9_]*$", value):
|
|
684
|
+
state.error(f"{relative_manifest} {field_prefix}.env.{name} must map to an environment variable")
|
|
685
|
+
for list_field in ("mappings", "apply"):
|
|
686
|
+
mappings = source.get(list_field)
|
|
687
|
+
if mappings is None:
|
|
688
|
+
continue
|
|
689
|
+
if not isinstance(mappings, list):
|
|
690
|
+
state.error(f"{relative_manifest} {field_prefix}.{list_field} must be a list")
|
|
691
|
+
continue
|
|
692
|
+
for index, item in enumerate(mappings):
|
|
693
|
+
item_prefix = f"{field_prefix}.{list_field}[{index}]"
|
|
694
|
+
if not isinstance(item, dict):
|
|
695
|
+
state.error(f"{relative_manifest} {item_prefix} entries must be mappings")
|
|
696
|
+
continue
|
|
697
|
+
for key in item:
|
|
698
|
+
if key not in SOURCE_MAPPING_FIELDS:
|
|
699
|
+
state.error(f"{relative_manifest} {item_prefix} has unsupported field: {key}")
|
|
700
|
+
field_name = item.get("field") or item.get("name")
|
|
701
|
+
if not isinstance(field_name, str) or not field_name.strip():
|
|
702
|
+
state.error(f"{relative_manifest} {item_prefix} missing field")
|
|
703
|
+
arg = item.get("arg")
|
|
704
|
+
if arg is not None and (not isinstance(arg, str) or not arg.startswith("--")):
|
|
705
|
+
state.error(f"{relative_manifest} {item_prefix}.arg must map to a CLI flag")
|
|
706
|
+
env = item.get("env")
|
|
707
|
+
if env is not None and (not isinstance(env, str) or not re.match(r"^[A-Za-z_][A-Za-z0-9_]*$", env)):
|
|
708
|
+
state.error(f"{relative_manifest} {item_prefix}.env must map to an environment variable")
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
def validate_runtime_role(state: ValidationState, manifest_path: Path, runtime_role: Any, *, agent_kind: Any) -> None:
|
|
712
|
+
relative_manifest = rel(state, manifest_path)
|
|
713
|
+
if agent_kind == "runtime-agent" and runtime_role is None:
|
|
714
|
+
state.error(f"{relative_manifest} runtime-agent must declare runtime_role")
|
|
715
|
+
return
|
|
716
|
+
if runtime_role is None:
|
|
717
|
+
return
|
|
718
|
+
if not isinstance(runtime_role, dict):
|
|
719
|
+
state.error(f"{relative_manifest} runtime_role must be a mapping")
|
|
720
|
+
return
|
|
721
|
+
role_kind = str(runtime_role.get("kind") or "")
|
|
722
|
+
if not role_kind:
|
|
723
|
+
state.error(f"{relative_manifest} runtime_role.kind must be a non-empty string")
|
|
724
|
+
elif role_kind not in RUNTIME_ROLE_KINDS:
|
|
725
|
+
state.error(f"{relative_manifest} runtime_role.kind has unsupported value: {role_kind}")
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
def validate_agent_mode(state: ValidationState, manifest_path: Path, agent_mode: Any, *, write_policy: Any) -> None:
|
|
729
|
+
if agent_mode is None:
|
|
730
|
+
return
|
|
731
|
+
relative_manifest = rel(state, manifest_path)
|
|
732
|
+
if not isinstance(agent_mode, dict):
|
|
733
|
+
state.error(f"{relative_manifest} agent_mode must be a mapping")
|
|
734
|
+
return
|
|
735
|
+
for key in agent_mode:
|
|
736
|
+
if key not in AGENT_MODE_FIELDS:
|
|
737
|
+
state.error(f"{relative_manifest} agent_mode has unsupported field: {key}")
|
|
738
|
+
mode_type = str(agent_mode.get("type") or "")
|
|
739
|
+
if not mode_type:
|
|
740
|
+
state.error(f"{relative_manifest} agent_mode.type must be a non-empty string")
|
|
741
|
+
elif mode_type not in AGENT_MODE_TYPES:
|
|
742
|
+
state.error(f"{relative_manifest} agent_mode.type has unsupported value: {mode_type}")
|
|
743
|
+
max_steps = agent_mode.get("max_steps")
|
|
744
|
+
if not isinstance(max_steps, int) or max_steps <= 0 or max_steps > 20:
|
|
745
|
+
state.error(f"{relative_manifest} agent_mode.max_steps must be an integer between 1 and 20")
|
|
746
|
+
max_specialists = agent_mode.get("max_specialists")
|
|
747
|
+
if max_specialists is not None and (not isinstance(max_specialists, int) or max_specialists <= 0 or max_specialists > 20):
|
|
748
|
+
state.error(f"{relative_manifest} agent_mode.max_specialists must be an integer between 1 and 20")
|
|
749
|
+
max_llm_calls = agent_mode.get("max_llm_calls")
|
|
750
|
+
if max_llm_calls is not None and (not isinstance(max_llm_calls, int) or max_llm_calls < 0 or max_llm_calls > 20):
|
|
751
|
+
state.error(f"{relative_manifest} agent_mode.max_llm_calls must be an integer between 0 and 20")
|
|
752
|
+
timeout = agent_mode.get("timeout_seconds")
|
|
753
|
+
if timeout is not None and (not isinstance(timeout, int) or timeout <= 0):
|
|
754
|
+
state.error(f"{relative_manifest} agent_mode.timeout_seconds must be a positive integer")
|
|
755
|
+
for boolean_field in ("can_call_capabilities", "can_request_user_input", "external_writes"):
|
|
756
|
+
if boolean_field in agent_mode and not isinstance(agent_mode.get(boolean_field), bool):
|
|
757
|
+
state.error(f"{relative_manifest} agent_mode.{boolean_field} must be boolean")
|
|
758
|
+
llm_value = agent_mode.get("can_call_llm")
|
|
759
|
+
if llm_value not in AGENT_MODE_LLM_VALUES:
|
|
760
|
+
state.error(f"{relative_manifest} agent_mode.can_call_llm must be false, optional, or required")
|
|
761
|
+
for list_field in ("allowed_capabilities", "stop_conditions"):
|
|
762
|
+
values = agent_mode.get(list_field)
|
|
763
|
+
if values is None:
|
|
764
|
+
continue
|
|
765
|
+
if not isinstance(values, list):
|
|
766
|
+
state.error(f"{relative_manifest} agent_mode.{list_field} must be a list")
|
|
767
|
+
continue
|
|
768
|
+
for item in values:
|
|
769
|
+
if not isinstance(item, str) or not item.strip():
|
|
770
|
+
state.error(f"{relative_manifest} agent_mode.{list_field} entries must be non-empty strings")
|
|
771
|
+
if agent_mode.get("external_writes") is True and not agent_write_policy_requires_confirmation(write_policy):
|
|
772
|
+
state.error(f"{relative_manifest} agent_mode.external_writes=true requires confirm, delegated, or blocked_by_default write_policy")
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
def agent_write_policy_requires_confirmation(write_policy: Any) -> bool:
|
|
776
|
+
if isinstance(write_policy, dict):
|
|
777
|
+
values = [normalize_write_policy_value(policy) for policy in write_policy.values()]
|
|
778
|
+
else:
|
|
779
|
+
values = [normalize_write_policy_value(write_policy)]
|
|
780
|
+
return any(value in {"confirm", "delegated", "blocked_by_default"} for value in values)
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
def normalize_write_policy_value(value: Any) -> str:
|
|
784
|
+
raw = str(value or "").strip()
|
|
785
|
+
return LEGACY_WRITE_POLICY_ALIASES.get(raw, raw)
|
|
786
|
+
|
|
787
|
+
|
|
527
788
|
def validate_capability_provider_requirements(state: ValidationState, manifest_path: Path, requires: Any) -> None:
|
|
528
789
|
if not requires:
|
|
529
790
|
return
|
|
@@ -576,6 +837,57 @@ def validate_status(state: ValidationState, path: Path, status: Any) -> None:
|
|
|
576
837
|
state.error(f"{rel(state, path)} has unsupported status: {status}")
|
|
577
838
|
|
|
578
839
|
|
|
840
|
+
def validate_agent_write_policy(state: ValidationState, path: Path, write_policy: Any) -> None:
|
|
841
|
+
if write_policy is None:
|
|
842
|
+
return
|
|
843
|
+
if isinstance(write_policy, dict):
|
|
844
|
+
for name, value in sorted(write_policy.items()):
|
|
845
|
+
validate_write_policy_value(state, path, value, field=f"write_policy.{name}")
|
|
846
|
+
return
|
|
847
|
+
validate_write_policy_value(state, path, write_policy)
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
def validate_write_policy_value(
|
|
851
|
+
state: ValidationState,
|
|
852
|
+
path: Path,
|
|
853
|
+
write_policy: Any,
|
|
854
|
+
*,
|
|
855
|
+
field: str = "write_policy",
|
|
856
|
+
) -> None:
|
|
857
|
+
if write_policy is None:
|
|
858
|
+
return
|
|
859
|
+
policy = str(write_policy)
|
|
860
|
+
if policy in CANONICAL_WRITE_POLICIES:
|
|
861
|
+
return
|
|
862
|
+
if policy in LEGACY_WRITE_POLICY_ALIASES:
|
|
863
|
+
state.warn(
|
|
864
|
+
f"{rel(state, path)} uses legacy {field}: {policy!r}; use {LEGACY_WRITE_POLICY_ALIASES[policy]!r}"
|
|
865
|
+
)
|
|
866
|
+
return
|
|
867
|
+
state.error(f"{rel(state, path)} has unsupported {field}: {policy!r}")
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
def validate_routing(state: ValidationState, path: Path, routing: Any) -> None:
|
|
871
|
+
if routing is None:
|
|
872
|
+
return
|
|
873
|
+
relative = rel(state, path)
|
|
874
|
+
if not isinstance(routing, dict):
|
|
875
|
+
state.error(f"{relative} routing must be a mapping")
|
|
876
|
+
return
|
|
877
|
+
for field in ("aliases", "anchors", "domains", "entities", "intents", "keywords", "examples"):
|
|
878
|
+
value = routing.get(field)
|
|
879
|
+
if value is None:
|
|
880
|
+
continue
|
|
881
|
+
if not isinstance(value, list):
|
|
882
|
+
state.error(f"{relative} routing.{field} must be a list")
|
|
883
|
+
continue
|
|
884
|
+
for item in value:
|
|
885
|
+
if not isinstance(item, str) or not item.strip():
|
|
886
|
+
state.error(f"{relative} routing.{field} entries must be non-empty strings")
|
|
887
|
+
if "priority" in routing and not isinstance(routing.get("priority"), int):
|
|
888
|
+
state.error(f"{relative} routing.priority must be an integer")
|
|
889
|
+
|
|
890
|
+
|
|
579
891
|
def validate_relative_refs(state: ValidationState, base: Path, refs: Any, field: str) -> None:
|
|
580
892
|
if refs is None:
|
|
581
893
|
return
|
|
@@ -25,23 +25,29 @@
|
|
|
25
25
|
Do instead: intercept `--source` only for capabilities that explicitly support Agent DevKit source registry injection; otherwise leave it for the runner domain contract.
|
|
26
26
|
|
|
27
27
|
## Domain Behavior Guardrails
|
|
28
|
-
1. **[2026-06-28]
|
|
28
|
+
1. **[2026-06-28] `write_policy` usa vocabulário canônico**
|
|
29
|
+
Do instead: usar apenas `read_only`, `dry_run`, `output_only`, `local_write`, `local_config_write`, `confirm`, `blocked_by_default` ou `delegated`; aliases antigos devem ser aceitos só em runtime e rejeitados como warning pelo validator.
|
|
30
|
+
2. **[2026-06-28] Exemplos de roteamento nao sao evidencia por alias**
|
|
31
|
+
Do instead: ao usar `routing.examples`, comparar tokens reais ou frase exata; anchors/intents carregam aliases, exemplos nao devem promover matches genericos como apenas "analise".
|
|
32
|
+
3. **[2026-06-28] Agentes devem ser agnosticos de cliente/projeto**
|
|
29
33
|
Do instead: mover nomes de produto, cliente, URLs, paths locais, regras de elegibilidade e campos XML especificos para provider/config/env antes de versionar o agente.
|
|
30
|
-
|
|
34
|
+
4. **[2026-06-28] Sessao ativa nao deve vazar contexto entre projetos**
|
|
31
35
|
Do instead: ao persistir contexto de conversa, reutilizar automaticamente apenas sessoes do mesmo projeto; para outro projeto, criar nova sessao ou exigir retomada explicita.
|
|
32
|
-
|
|
36
|
+
5. **[2026-06-28] Roteamento de PR deve usar tokens reais**
|
|
33
37
|
Do instead: detectar `pr`, `prs` ou `pull request` como tokens/expressao, nao substring ampla que captura palavras como `problema`.
|
|
34
|
-
|
|
38
|
+
6. **[2026-06-28] Tasks com escrita externa devem bloquear por padrao**
|
|
35
39
|
Do instead: permitir `dry-run`, mas bloquear execucao real quando `action.external_writes=true` sem permissao explicita de escrita externa.
|
|
36
|
-
|
|
40
|
+
7. **[2026-06-20] Azure card descriptions may include sensitive production log data**
|
|
37
41
|
Do instead: retrieve the complete card for validation, but summarize PII-heavy log payloads in user-facing responses unless raw content is explicitly required.
|
|
38
|
-
|
|
42
|
+
8. **[2026-06-21] N1 restrictive-base uses a scoped SQL Server override**
|
|
39
43
|
Do instead: when the N1 agent checks the restrictive base, prefer `DB_RESTRICTIVE_CONN_STRING` only in the subprocess environment for `sqlserver-data-analyzer`, without changing the global SQL Server analyzer default.
|
|
40
44
|
|
|
41
45
|
## User Directives
|
|
42
|
-
1. **[2026-06-
|
|
46
|
+
1. **[2026-06-28] Rodar testes focados durante patches**
|
|
47
|
+
Do instead: para melhorias intermediarias, executar apenas testes necessarios para validar o patch; reservar suite completa para o fechamento do conjunto de melhorias.
|
|
48
|
+
2. **[2026-06-22] Implement agentic specs individually**
|
|
43
49
|
Do instead: process one `docs/agentic/*_plan.md` spec at a time with agent-specific analysis, tests, implementation, and review; do not use broad multi-agent waves or mechanical generation.
|
|
44
|
-
|
|
50
|
+
3. **[2026-06-22] Use Agent DevKit agents for work**
|
|
45
51
|
Do instead: route every current and future activity through the relevant Agent DevKit agent/capability before doing direct ad-hoc work.
|
|
46
|
-
|
|
52
|
+
4. **[2026-06-20] Keep generated docs out of final project versioning**
|
|
47
53
|
Do instead: treat `docs/` as local development/generated artifact space and keep it ignored.
|