mdan-method 2.6.3
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/.mdan/config/config.yaml +36 -0
- package/.mdan/state/MDAN-STATE.template.json +39 -0
- package/AGENTS.md +308 -0
- package/AGENTS_LIST.md +946 -0
- package/ARCHITECTURE.md +590 -0
- package/CHANGELOG.md +1770 -0
- package/CONTRIBUTING.md +512 -0
- package/INSTALL.md +246 -0
- package/LICENSE +30 -0
- package/MDAN.fr.md +259 -0
- package/README.md +233 -0
- package/SECURITY.md +85 -0
- package/USAGE.md +368 -0
- package/app/__init__.py +5 -0
- package/app/cis/agents/__init__.py +31 -0
- package/app/cis/agents/brainstorming-coach/__init__.py +3 -0
- package/app/cis/agents/brainstorming-coach/agent.py +162 -0
- package/app/cis/agents/brainstorming-coach/prompt.yaml +53 -0
- package/app/cis/agents/creative-problem-solver/__init__.py +3 -0
- package/app/cis/agents/creative-problem-solver/agent.py +233 -0
- package/app/cis/agents/creative-problem-solver/prompt.yaml +74 -0
- package/app/cis/agents/design-thinking-coach/__init__.py +3 -0
- package/app/cis/agents/design-thinking-coach/agent.py +241 -0
- package/app/cis/agents/design-thinking-coach/prompt.yaml +77 -0
- package/app/cis/agents/innovation-strategist/__init__.py +3 -0
- package/app/cis/agents/innovation-strategist/agent.py +271 -0
- package/app/cis/agents/innovation-strategist/prompt.yaml +70 -0
- package/app/cis/agents/presentation-master/__init__.py +3 -0
- package/app/cis/agents/presentation-master/agent.py +420 -0
- package/app/cis/agents/presentation-master/prompt.yaml +62 -0
- package/app/cis/agents/storyteller/__init__.py +3 -0
- package/app/cis/agents/storyteller/agent.py +303 -0
- package/app/cis/agents/storyteller/prompt.yaml +99 -0
- package/app/core/__init__.py +5 -0
- package/app/core/agents/__init__.py +5 -0
- package/app/core/agents/mdan-master/__init__.py +7 -0
- package/app/core/agents/mdan-master/agent.py +302 -0
- package/app/core/agents/mdan-master/prompt.yaml +105 -0
- package/app/mmb/agents/__init__.py +24 -0
- package/app/mmb/agents/agent-builder/__init__.py +5 -0
- package/app/mmb/agents/agent-builder/agent.py +261 -0
- package/app/mmb/agents/agent-builder/prompt.yaml +48 -0
- package/app/mmb/agents/module-builder/__init__.py +5 -0
- package/app/mmb/agents/module-builder/agent.py +299 -0
- package/app/mmb/agents/module-builder/prompt.yaml +50 -0
- package/app/mmb/agents/workflow-builder/__init__.py +5 -0
- package/app/mmb/agents/workflow-builder/agent.py +318 -0
- package/app/mmb/agents/workflow-builder/prompt.yaml +52 -0
- package/app/mmm/agents/__init__.py +48 -0
- package/app/mmm/agents/analyst/__init__.py +7 -0
- package/app/mmm/agents/analyst/agent.py +384 -0
- package/app/mmm/agents/analyst/prompt.yaml +62 -0
- package/app/mmm/agents/architect/__init__.py +7 -0
- package/app/mmm/agents/architect/agent.py +300 -0
- package/app/mmm/agents/architect/prompt.yaml +66 -0
- package/app/mmm/agents/dev/__init__.py +7 -0
- package/app/mmm/agents/dev/agent.py +285 -0
- package/app/mmm/agents/dev/prompt.yaml +62 -0
- package/app/mmm/agents/pm/__init__.py +7 -0
- package/app/mmm/agents/pm/agent.py +417 -0
- package/app/mmm/agents/pm/prompt.yaml +64 -0
- package/app/mmm/agents/qa/__init__.py +7 -0
- package/app/mmm/agents/qa/agent.py +267 -0
- package/app/mmm/agents/qa/prompt.yaml +67 -0
- package/app/mmm/agents/quick-flow-solo-dev/__init__.py +7 -0
- package/app/mmm/agents/quick-flow-solo-dev/agent.py +319 -0
- package/app/mmm/agents/quick-flow-solo-dev/prompt.yaml +60 -0
- package/app/mmm/agents/sm/__init__.py +7 -0
- package/app/mmm/agents/sm/agent.py +357 -0
- package/app/mmm/agents/sm/prompt.yaml +61 -0
- package/app/mmm/agents/tech-writer/__init__.py +7 -0
- package/app/mmm/agents/tech-writer/agent.py +420 -0
- package/app/mmm/agents/tech-writer/prompt.yaml +70 -0
- package/app/mmm/agents/ux-designer/__init__.py +14 -0
- package/app/mmm/agents/ux-designer/agent.py +412 -0
- package/app/mmm/agents/ux-designer/prompt.yaml +37 -0
- package/app/packs/__init__.py +32 -0
- package/app/packs/db-optimization/__init__.py +13 -0
- package/app/packs/db-optimization/agents/__init__.py +11 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/__init__.py +5 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/agent.py +559 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/prompt.yaml +63 -0
- package/app/packs/db-optimization/agents/indexing-specialist/__init__.py +5 -0
- package/app/packs/db-optimization/agents/indexing-specialist/agent.py +713 -0
- package/app/packs/db-optimization/agents/indexing-specialist/prompt.yaml +92 -0
- package/app/packs/db-optimization/agents/query-optimizer/__init__.py +5 -0
- package/app/packs/db-optimization/agents/query-optimizer/agent.py +566 -0
- package/app/packs/db-optimization/agents/query-optimizer/prompt.yaml +74 -0
- package/app/packs/devops-azure/__init__.py +13 -0
- package/app/packs/devops-azure/agents/__init__.py +11 -0
- package/app/packs/devops-azure/agents/azure-specialist/__init__.py +5 -0
- package/app/packs/devops-azure/agents/azure-specialist/agent.py +584 -0
- package/app/packs/devops-azure/agents/azure-specialist/prompt.yaml +301 -0
- package/app/packs/devops-azure/agents/cicd-architect/__init__.py +5 -0
- package/app/packs/devops-azure/agents/cicd-architect/agent.py +665 -0
- package/app/packs/devops-azure/agents/cicd-architect/prompt.yaml +409 -0
- package/app/packs/devops-azure/agents/devops-engineer/__init__.py +5 -0
- package/app/packs/devops-azure/agents/devops-engineer/agent.py +545 -0
- package/app/packs/devops-azure/agents/devops-engineer/prompt.yaml +263 -0
- package/app/packs/fintech/__init__.py +13 -0
- package/app/packs/fintech/agents/__init__.py +11 -0
- package/app/packs/fintech/agents/compliance-officer/__init__.py +5 -0
- package/app/packs/fintech/agents/compliance-officer/agent.py +449 -0
- package/app/packs/fintech/agents/compliance-officer/prompt.yaml +135 -0
- package/app/packs/fintech/agents/financial-analyst/__init__.py +5 -0
- package/app/packs/fintech/agents/financial-analyst/agent.py +392 -0
- package/app/packs/fintech/agents/financial-analyst/prompt.yaml +143 -0
- package/app/packs/fintech/agents/risk-manager/__init__.py +5 -0
- package/app/packs/fintech/agents/risk-manager/agent.py +664 -0
- package/app/packs/fintech/agents/risk-manager/prompt.yaml +240 -0
- package/app/tea/agents/tea/__init__.py +9 -0
- package/app/tea/agents/tea/agent.py +689 -0
- package/app/tea/agents/tea/prompt.yaml +100 -0
- package/cli/v1/mdan.py +421 -0
- package/cli/v1/mdan.sh +724 -0
- package/cli/v1/mdan_crewai.py +539 -0
- package/docs/404.md +9 -0
- package/docs/_STYLE_GUIDE.md +370 -0
- package/docs/explanation/advanced-elicitation.md +49 -0
- package/docs/explanation/adversarial-review.md +59 -0
- package/docs/explanation/brainstorming.md +33 -0
- package/docs/explanation/established-projects-faq.md +50 -0
- package/docs/explanation/party-mode.md +59 -0
- package/docs/explanation/preventing-agent-conflicts.md +112 -0
- package/docs/explanation/project-context.md +157 -0
- package/docs/explanation/quick-flow.md +73 -0
- package/docs/explanation/why-solutioning-matters.md +77 -0
- package/docs/how-to/customize-mdan.md +172 -0
- package/docs/how-to/established-projects.md +117 -0
- package/docs/how-to/get-answers-about-mdan.md +134 -0
- package/docs/how-to/install-mdan.md +97 -0
- package/docs/how-to/non-interactive-installation.md +171 -0
- package/docs/how-to/project-context.md +136 -0
- package/docs/how-to/quick-fixes.md +123 -0
- package/docs/how-to/shard-large-documents.md +78 -0
- package/docs/how-to/upgrade-to-v6.md +97 -0
- package/docs/index.md +59 -0
- package/docs/reference/agents.md +28 -0
- package/docs/reference/commands.md +151 -0
- package/docs/reference/modules.md +76 -0
- package/docs/reference/testing.md +106 -0
- package/docs/reference/workflow-map.md +89 -0
- package/docs/roadmap.mdx +136 -0
- package/docs/tutorials/getting-started.md +286 -0
- package/examples/crewai/crewai_auto_mode.py +62 -0
- package/examples/crewai/crewai_custom_crew.py +85 -0
- package/examples/crewai/crewai_debate.py +57 -0
- package/examples/crewai/crewai_with_serper.py +82 -0
- package/examples/crewai/crewai_with_sql.py +117 -0
- package/integrations/__init__.py +33 -0
- package/integrations/crewai/__init__.py +27 -0
- package/integrations/crewai/agents/__init__.py +21 -0
- package/integrations/crewai/agents/architect_agent.py +264 -0
- package/integrations/crewai/agents/dev_agent.py +271 -0
- package/integrations/crewai/agents/devops_agent.py +421 -0
- package/integrations/crewai/agents/doc_agent.py +388 -0
- package/integrations/crewai/agents/product_agent.py +203 -0
- package/integrations/crewai/agents/security_agent.py +386 -0
- package/integrations/crewai/agents/test_agent.py +358 -0
- package/integrations/crewai/agents/ux_agent.py +257 -0
- package/integrations/crewai/flows/__init__.py +13 -0
- package/integrations/crewai/flows/auto_flow.py +451 -0
- package/integrations/crewai/flows/build_flow.py +297 -0
- package/integrations/crewai/flows/debate_flow.py +422 -0
- package/integrations/crewai/flows/discovery_flow.py +267 -0
- package/integrations/crewai/orchestrator.py +558 -0
- package/integrations/crewai/skills/__init__.py +8 -0
- package/integrations/crewai/skills/skill_router.py +534 -0
- package/integrations/crewai/tools/__init__.py +11 -0
- package/integrations/crewai/tools/file_tool.py +355 -0
- package/integrations/crewai/tools/serper_tool.py +169 -0
- package/integrations/crewai/tools/sql_tool.py +435 -0
- package/integrations/docs/all-integrations.md +300 -0
- package/integrations/docs/cursor.md +74 -0
- package/integrations/docs/mcp.md +153 -0
- package/integrations/docs/windsurf.md +48 -0
- package/package.json +119 -0
- package/prompts/cis/brainstorming-coach.yaml +53 -0
- package/prompts/cis/creative-problem-solver.yaml +74 -0
- package/prompts/cis/design-thinking-coach.yaml +77 -0
- package/prompts/cis/innovation-strategist.yaml +70 -0
- package/prompts/cis/presentation-master.yaml +62 -0
- package/prompts/cis/storyteller.yaml +99 -0
- package/prompts/core/mdan-master.yaml +105 -0
- package/prompts/mmb/agent-builder.yaml +48 -0
- package/prompts/mmb/module-builder.yaml +50 -0
- package/prompts/mmb/workflow-builder.yaml +52 -0
- package/prompts/mmm/analyst.yaml +62 -0
- package/prompts/mmm/architect.yaml +66 -0
- package/prompts/mmm/dev.yaml +62 -0
- package/prompts/mmm/pm.yaml +64 -0
- package/prompts/mmm/qa.yaml +67 -0
- package/prompts/mmm/quick-flow-solo-dev.yaml +60 -0
- package/prompts/mmm/sm.yaml +61 -0
- package/prompts/mmm/tech-writer.yaml +70 -0
- package/prompts/mmm/ux-designer.yaml +33 -0
- package/prompts/packs/db-optimization/db-performance-analyst.yaml +63 -0
- package/prompts/packs/db-optimization/indexing-specialist.yaml +92 -0
- package/prompts/packs/db-optimization/query-optimizer.yaml +74 -0
- package/prompts/packs/devops-azure/azure-specialist.yaml +301 -0
- package/prompts/packs/devops-azure/cicd-architect.yaml +409 -0
- package/prompts/packs/devops-azure/devops-engineer.yaml +263 -0
- package/prompts/packs/fintech/compliance-officer.yaml +135 -0
- package/prompts/packs/fintech/financial-analyst.yaml +143 -0
- package/prompts/packs/fintech/risk-manager.yaml +240 -0
- package/prompts/tea/tea.yaml +100 -0
- package/requirements.txt +5 -0
- package/requirements_crewai.txt +37 -0
- package/src/agents/module-help.csv +31 -0
- package/src/agents/module.yaml +50 -0
- package/src/agents/team/analyst.agent.yaml +43 -0
- package/src/agents/team/architect.agent.yaml +29 -0
- package/src/agents/team/dev.agent.yaml +38 -0
- package/src/agents/team/pm.agent.yaml +44 -0
- package/src/agents/team/qa.agent.yaml +58 -0
- package/src/agents/team/quick-flow-solo-dev.agent.yaml +32 -0
- package/src/agents/team/sm.agent.yaml +37 -0
- package/src/agents/team/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
- package/src/agents/team/tech-writer/tech-writer.agent.yaml +46 -0
- package/src/agents/team/ux-designer.agent.yaml +27 -0
- package/src/agents/teams/default-party.csv +20 -0
- package/src/agents/teams/team-fullstack.yaml +12 -0
- package/src/core/WIZARD-ENGINE.md +94 -0
- package/src/core/agents/mdan-master.agent.yaml +133 -0
- package/src/core/tasks/editorial-review-prose.xml +102 -0
- package/src/core/tasks/editorial-review-structure.xml +208 -0
- package/src/core/tasks/help.md +86 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/review-adversarial-general.xml +49 -0
- package/src/core/tasks/shard-doc.xml +108 -0
- package/src/core/tasks/workflow.xml +235 -0
- package/src/memory/MEMORY-AUTO.json +66 -0
- package/src/memory/MEMORY-SYSTEM.md +61 -0
- package/src/memory/v1-memory-system.md +197 -0
- package/src/memory/v1-resume-protocol.md +379 -0
- package/src/packs/db-optimization/agents/prompt.yaml +63 -0
- package/src/packs/devops-azure/agents/prompt.yaml +301 -0
- package/src/packs/fintech/agents/prompt.yaml +135 -0
- package/src/phases/auto/auto-01-load.md +165 -0
- package/src/phases/auto/auto-02-discover.md +207 -0
- package/src/phases/auto/auto-03-plan.md +509 -0
- package/src/phases/auto/auto-04-architect.md +567 -0
- package/src/phases/auto/auto-05-implement.md +713 -0
- package/src/phases/auto/auto-06-test.md +559 -0
- package/src/phases/auto/auto-07-deploy.md +510 -0
- package/src/phases/auto/auto-08-doc.md +970 -0
- package/src/phases/manual/01-discover.md +136 -0
- package/src/phases/manual/02-design.md +147 -0
- package/src/phases/manual/03-build.md +113 -0
- package/src/phases/manual/04-verify.md +107 -0
- package/src/phases/manual/05-ship.md +156 -0
- package/src/protocols/debate-protocol.md +58 -0
- package/src/protocols/universal-envelope.md +42 -0
- package/src/protocols/v1-debate-protocol.md +454 -0
- package/src/protocols/v1-universal-envelope.md +273 -0
- package/src/utility/agent-components/activation-rules.txt +6 -0
- package/src/utility/agent-components/activation-steps.txt +14 -0
- package/src/utility/agent-components/agent-command-header.md +1 -0
- package/src/utility/agent-components/agent.customize.template.yaml +41 -0
- package/src/utility/agent-components/handler-action.txt +4 -0
- package/src/utility/agent-components/handler-data.txt +5 -0
- package/src/utility/agent-components/handler-exec.txt +6 -0
- package/src/utility/agent-components/handler-multi.txt +14 -0
- package/src/utility/agent-components/handler-tmpl.txt +5 -0
- package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
- package/src/utility/agent-components/handler-workflow.txt +10 -0
- package/src/utility/agent-components/menu-handlers.txt +6 -0
- package/src/wizards/01-discover/create-product-brief/steps/step-01-init.md +7 -0
- package/src/wizards/01-discover/create-product-brief/steps/step-02-vision.md +7 -0
- package/src/wizards/01-discover/create-product-brief/steps/step-03-users.md +7 -0
- package/src/wizards/01-discover/create-product-brief/steps/step-04-scope.md +7 -0
- package/src/wizards/01-discover/create-product-brief/steps/step-05-metrics.md +7 -0
- package/src/wizards/01-discover/create-product-brief/steps/step-06-complete.md +7 -0
- package/src/wizards/01-discover/create-product-brief/templates/product-brief.template.md +14 -0
- package/src/wizards/01-discover/create-product-brief/wizard.md +105 -0
- package/src/wizards/01-discover/research/domain-steps/step-01-init.md +137 -0
- package/src/wizards/01-discover/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/src/wizards/01-discover/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/src/wizards/01-discover/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/src/wizards/01-discover/research/domain-steps/step-05-technical-trends.md +234 -0
- package/src/wizards/01-discover/research/domain-steps/step-06-research-synthesis.md +444 -0
- package/src/wizards/01-discover/research/market-steps/step-01-init.md +182 -0
- package/src/wizards/01-discover/research/market-steps/step-02-customer-behavior.md +237 -0
- package/src/wizards/01-discover/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/src/wizards/01-discover/research/market-steps/step-04-customer-decisions.md +259 -0
- package/src/wizards/01-discover/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/src/wizards/01-discover/research/market-steps/step-06-research-completion.md +476 -0
- package/src/wizards/01-discover/research/technical-steps/step-01-init.md +137 -0
- package/src/wizards/01-discover/research/technical-steps/step-02-technical-overview.md +239 -0
- package/src/wizards/01-discover/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/src/wizards/01-discover/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/src/wizards/01-discover/research/technical-steps/step-05-implementation-research.md +233 -0
- package/src/wizards/01-discover/research/technical-steps/step-06-research-synthesis.md +487 -0
- package/src/wizards/01-discover/research/templates/research.template.md +29 -0
- package/src/wizards/01-discover/research/workflow-domain-research.md +54 -0
- package/src/wizards/01-discover/research/workflow-market-research.md +54 -0
- package/src/wizards/01-discover/research/workflow-technical-research.md +54 -0
- package/src/wizards/02-plan/create-prd/data/domain-complexity.csv +15 -0
- package/src/wizards/02-plan/create-prd/data/prd-purpose.md +197 -0
- package/src/wizards/02-plan/create-prd/data/project-types.csv +11 -0
- package/src/wizards/02-plan/create-prd/steps/step-01-init.md +191 -0
- package/src/wizards/02-plan/create-prd/steps/step-01b-continue.md +152 -0
- package/src/wizards/02-plan/create-prd/steps/step-02-discovery.md +224 -0
- package/src/wizards/02-plan/create-prd/steps/step-02b-vision.md +154 -0
- package/src/wizards/02-plan/create-prd/steps/step-02c-executive-summary.md +170 -0
- package/src/wizards/02-plan/create-prd/steps/step-03-success.md +226 -0
- package/src/wizards/02-plan/create-prd/steps/step-04-journeys.md +213 -0
- package/src/wizards/02-plan/create-prd/steps/step-05-domain.md +207 -0
- package/src/wizards/02-plan/create-prd/steps/step-06-innovation.md +226 -0
- package/src/wizards/02-plan/create-prd/steps/step-07-project-type.md +237 -0
- package/src/wizards/02-plan/create-prd/steps/step-08-scoping.md +228 -0
- package/src/wizards/02-plan/create-prd/steps/step-09-functional.md +231 -0
- package/src/wizards/02-plan/create-prd/steps/step-10-nonfunctional.md +242 -0
- package/src/wizards/02-plan/create-prd/steps/step-11-polish.md +217 -0
- package/src/wizards/02-plan/create-prd/steps/step-12-complete.md +124 -0
- package/src/wizards/02-plan/create-prd/templates/prd-template.md +10 -0
- package/src/wizards/02-plan/create-prd/wizard.md +63 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-01-init.md +135 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-01b-continue.md +127 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-02-discovery.md +190 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-06-design-system.md +252 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/src/wizards/02-plan/create-ux-design/steps/step-14-complete.md +171 -0
- package/src/wizards/02-plan/create-ux-design/templates/ux-design-template.md +13 -0
- package/src/wizards/02-plan/create-ux-design/wizard.md +42 -0
- package/src/wizards/03-architect/create-architecture/data/domain-complexity.csv +13 -0
- package/src/wizards/03-architect/create-architecture/data/project-types.csv +7 -0
- package/src/wizards/03-architect/create-architecture/steps/step-01-init.md +153 -0
- package/src/wizards/03-architect/create-architecture/steps/step-01b-continue.md +173 -0
- package/src/wizards/03-architect/create-architecture/steps/step-02-context.md +224 -0
- package/src/wizards/03-architect/create-architecture/steps/step-03-starter.md +329 -0
- package/src/wizards/03-architect/create-architecture/steps/step-04-decisions.md +318 -0
- package/src/wizards/03-architect/create-architecture/steps/step-05-patterns.md +359 -0
- package/src/wizards/03-architect/create-architecture/steps/step-06-structure.md +379 -0
- package/src/wizards/03-architect/create-architecture/steps/step-07-validation.md +359 -0
- package/src/wizards/03-architect/create-architecture/steps/step-08-complete.md +76 -0
- package/src/wizards/03-architect/create-architecture/templates/architecture-decision-template.md +12 -0
- package/src/wizards/03-architect/create-architecture/wizard.md +49 -0
- package/src/wizards/03-architect/create-epics/steps/step-01-validate-prerequisites.md +259 -0
- package/src/wizards/03-architect/create-epics/steps/step-02-design-epics.md +233 -0
- package/src/wizards/03-architect/create-epics/steps/step-03-create-stories.md +272 -0
- package/src/wizards/03-architect/create-epics/steps/step-04-final-validation.md +149 -0
- package/src/wizards/03-architect/create-epics/templates/epics-template.md +57 -0
- package/src/wizards/03-architect/create-epics/wizard.md +58 -0
- package/src/wizards/04-build/code-review/checklist.md +23 -0
- package/src/wizards/04-build/code-review/instructions.xml +227 -0
- package/src/wizards/04-build/code-review/workflow.yaml +43 -0
- package/src/wizards/04-build/dev-story/checklist.md +80 -0
- package/src/wizards/04-build/dev-story/instructions.xml +410 -0
- package/src/wizards/04-build/dev-story/workflow.yaml +20 -0
- package/src/wizards/04-build/sprint-planning/checklist.md +33 -0
- package/src/wizards/04-build/sprint-planning/instructions.md +226 -0
- package/src/wizards/04-build/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/wizards/04-build/sprint-planning/workflow.yaml +47 -0
- package/src/wizards/05-ship/document-project/templates/deep-dive-template.md +345 -0
- package/src/wizards/05-ship/document-project/templates/index-template.md +169 -0
- package/src/wizards/05-ship/document-project/templates/project-overview-template.md +103 -0
- package/src/wizards/05-ship/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/wizards/05-ship/document-project/templates/source-tree-template.md +135 -0
- package/src/wizards/05-ship/document-project/wizard.md +130 -0
- package/src/wizards/quick/quick-dev/steps/step-01-mode-detection.md +174 -0
- package/src/wizards/quick/quick-dev/steps/step-02-context-gathering.md +118 -0
- package/src/wizards/quick/quick-dev/steps/step-03-execute.md +111 -0
- package/src/wizards/quick/quick-dev/steps/step-04-self-check.md +111 -0
- package/src/wizards/quick/quick-dev/steps/step-05-adversarial-review.md +104 -0
- package/src/wizards/quick/quick-dev/steps/step-06-resolve-findings.md +146 -0
- package/src/wizards/quick/quick-dev/wizard.md +50 -0
- package/src/wizards/quick/quick-spec/steps/step-01-understand.md +189 -0
- package/src/wizards/quick/quick-spec/steps/step-02-investigate.md +143 -0
- package/src/wizards/quick/quick-spec/steps/step-03-generate.md +126 -0
- package/src/wizards/quick/quick-spec/steps/step-04-review.md +200 -0
- package/src/wizards/quick/quick-spec/templates/tech-spec-template.md +74 -0
- package/src/wizards/quick/quick-spec/wizard.md +79 -0
- package/src/wizards/special/brainstorming/methods/brain-methods.csv +62 -0
- package/src/wizards/special/brainstorming/steps/step-01-session-setup.md +197 -0
- package/src/wizards/special/brainstorming/steps/step-01b-continue.md +122 -0
- package/src/wizards/special/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/src/wizards/special/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/src/wizards/special/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/src/wizards/special/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/src/wizards/special/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/src/wizards/special/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/src/wizards/special/brainstorming/wizard.md +58 -0
- package/src/wizards/special/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/wizards/special/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/src/wizards/special/party-mode/steps/step-03-graceful-exit.md +168 -0
- package/src/wizards/special/party-mode/wizard.md +194 -0
- package/test/README.md +295 -0
- package/test/adversarial-review-tests/README.md +56 -0
- package/test/adversarial-review-tests/sample-content.md +46 -0
- package/test/adversarial-review-tests/test-cases.yaml +103 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
- package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
- package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/empty-data.csv +1 -0
- package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/bmm-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/core-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/minimal.csv +2 -0
- package/test/test-agent-schema.js +387 -0
- package/test/test-cli-integration.sh +159 -0
- package/test/test-file-refs-csv.js +133 -0
- package/test/test-installation-components.js +212 -0
- package/test/test-rehype-plugins.mjs +1050 -0
- package/test/unit-test-schema.js +133 -0
- package/tests/run_all_tests.py +80 -0
- package/tests/scenarios/cis/brainstorming-coach.test.py +150 -0
- package/tests/scenarios/cis/creative-problem-solver.test.py +167 -0
- package/tests/scenarios/cis/design-thinking-coach.test.py +177 -0
- package/tests/scenarios/cis/innovation-strategist.test.py +191 -0
- package/tests/scenarios/cis/presentation-master.test.py +240 -0
- package/tests/scenarios/cis/storyteller.test.py +324 -0
- package/tests/scenarios/core/mdan-master.test.py +281 -0
- package/tests/scenarios/mmb/agent-builder.test.py +124 -0
- package/tests/scenarios/mmb/module-builder.test.py +124 -0
- package/tests/scenarios/mmb/workflow-builder.test.py +124 -0
- package/tests/scenarios/mmm/analyst.test.py +138 -0
- package/tests/scenarios/mmm/architect.test.py +138 -0
- package/tests/scenarios/mmm/dev.test.py +138 -0
- package/tests/scenarios/mmm/pm.test.py +138 -0
- package/tests/scenarios/mmm/qa.test.py +138 -0
- package/tests/scenarios/mmm/quick-flow-solo-dev.test.py +138 -0
- package/tests/scenarios/mmm/sm.test.py +138 -0
- package/tests/scenarios/mmm/tech-writer.test.py +138 -0
- package/tests/scenarios/mmm/ux-designer.test.py +294 -0
- package/tests/scenarios/packs/db-optimization/db-performance-analyst.test.py +108 -0
- package/tests/scenarios/packs/db-optimization/indexing-specialist.test.py +108 -0
- package/tests/scenarios/packs/db-optimization/query-optimizer.test.py +106 -0
- package/tests/scenarios/packs/devops-azure/azure-specialist.test.py +125 -0
- package/tests/scenarios/packs/devops-azure/cicd-architect.test.py +122 -0
- package/tests/scenarios/packs/devops-azure/devops-engineer.test.py +128 -0
- package/tests/scenarios/packs/fintech/compliance-officer.test.py +165 -0
- package/tests/scenarios/packs/fintech/financial-analyst.test.py +184 -0
- package/tests/scenarios/packs/fintech/risk-manager.test.py +171 -0
- package/tests/scenarios/tea/tea.test.py +346 -0
- package/tests/simple_cis_test.py +285 -0
- package/tests/simple_db_optimization_test.py +199 -0
- package/tests/simple_devops_test.py +193 -0
- package/tests/simple_fintech_test.py +205 -0
- package/tests/simple_mmb_test.py +103 -0
- package/tests/simple_mmm_test.py +159 -0
- package/tests/simple_tea_test.py +80 -0
- package/tests/simple_test.py +111 -0
- package/tests/simple_ux_designer_test.py +144 -0
- package/tests/validate_yaml.py +86 -0
- package/tools/build-docs.mjs +463 -0
- package/tools/cli/README.md +60 -0
- package/tools/cli/commands/install.js +87 -0
- package/tools/cli/commands/status.js +65 -0
- package/tools/cli/commands/uninstall.js +167 -0
- package/tools/cli/external-official-modules.yaml +53 -0
- package/tools/cli/installers/install-messages.yaml +39 -0
- package/tools/cli/installers/lib/core/config-collector.js +1285 -0
- package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +743 -0
- package/tools/cli/installers/lib/core/detector.js +223 -0
- package/tools/cli/installers/lib/core/ide-config-manager.js +157 -0
- package/tools/cli/installers/lib/core/installer.js +3162 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +1081 -0
- package/tools/cli/installers/lib/core/manifest.js +1038 -0
- package/tools/cli/installers/lib/custom/handler.js +358 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +665 -0
- package/tools/cli/installers/lib/ide/_config-driven.js +634 -0
- package/tools/cli/installers/lib/ide/codex.js +440 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +699 -0
- package/tools/cli/installers/lib/ide/kilo.js +269 -0
- package/tools/cli/installers/lib/ide/manager.js +342 -0
- package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
- package/tools/cli/installers/lib/ide/platform-codes.yaml +243 -0
- package/tools/cli/installers/lib/ide/rovodev.js +257 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +180 -0
- package/tools/cli/installers/lib/ide/shared/mdan-artifacts.js +174 -0
- package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
- package/tools/cli/installers/lib/ide/shared/path-utils.js +299 -0
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +366 -0
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +318 -0
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +13 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +13 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
- package/tools/cli/installers/lib/ide/templates/split/.gitkeep +0 -0
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
- package/tools/cli/installers/lib/message-loader.js +83 -0
- package/tools/cli/installers/lib/modules/external-manager.js +136 -0
- package/tools/cli/installers/lib/modules/manager.js +1498 -0
- package/tools/cli/lib/activation-builder.js +165 -0
- package/tools/cli/lib/agent/compiler.js +525 -0
- package/tools/cli/lib/agent/installer.js +680 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/agent-analyzer.js +109 -0
- package/tools/cli/lib/agent-party-generator.js +194 -0
- package/tools/cli/lib/cli-utils.js +182 -0
- package/tools/cli/lib/config.js +213 -0
- package/tools/cli/lib/file-ops.js +204 -0
- package/tools/cli/lib/platform-codes.js +116 -0
- package/tools/cli/lib/project-root.js +77 -0
- package/tools/cli/lib/prompts.js +809 -0
- package/tools/cli/lib/ui.js +1936 -0
- package/tools/cli/lib/xml-handler.js +177 -0
- package/tools/cli/lib/xml-to-markdown.js +82 -0
- package/tools/cli/lib/yaml-format.js +245 -0
- package/tools/cli/lib/yaml-xml-builder.js +587 -0
- package/tools/cli/mdan-cli.js +106 -0
- package/tools/docs/_prompt-external-modules-page.md +59 -0
- package/tools/docs/fix-refs.md +91 -0
- package/tools/fix-doc-links.js +285 -0
- package/tools/format-workflow-md.js +263 -0
- package/tools/lib/xml-utils.js +13 -0
- package/tools/mdan-npx-wrapper.js +38 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/tools/platform-codes.yaml +157 -0
- package/tools/schema/agent.js +491 -0
- package/tools/validate-agent-schema.js +110 -0
- package/tools/validate-doc-links.js +407 -0
- package/tools/validate-file-refs.js +554 -0
- package/tools/validate-svg-changes.sh +356 -0
- package/website/README.md +75 -0
- package/website/astro.config.mjs +136 -0
- package/website/public/favicon.ico +0 -0
- package/website/public/workflow-map-diagram.html +361 -0
- package/website/src/components/Banner.astro +62 -0
- package/website/src/components/Header.astro +96 -0
- package/website/src/components/MobileMenuFooter.astro +33 -0
- package/website/src/content/config.ts +6 -0
- package/website/src/lib/site-url.mjs +25 -0
- package/website/src/pages/404.astro +11 -0
- package/website/src/pages/robots.txt.ts +48 -0
- package/website/src/rehype-base-paths.js +112 -0
- package/website/src/rehype-markdown-links.js +119 -0
- package/website/src/styles/custom.css +805 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"""Simple test script for FinTech pack agents."""
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
import asyncio
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
|
9
|
+
|
|
10
|
+
# Import agents directly from their modules
|
|
11
|
+
import importlib.util
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def load_agent(module_path, class_name):
|
|
15
|
+
"""Load an agent class from a file path."""
|
|
16
|
+
spec = importlib.util.spec_from_file_location("agent_module", module_path)
|
|
17
|
+
if spec is None:
|
|
18
|
+
raise ImportError(f"Could not load spec from {module_path}")
|
|
19
|
+
module = importlib.util.module_from_spec(spec)
|
|
20
|
+
spec.loader.exec_module(module)
|
|
21
|
+
return getattr(module, class_name)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# Load agents
|
|
25
|
+
FinancialAnalystAgent = load_agent(
|
|
26
|
+
os.path.join(
|
|
27
|
+
os.path.dirname(__file__),
|
|
28
|
+
"../app/packs/fintech/agents/financial-analyst/agent.py",
|
|
29
|
+
),
|
|
30
|
+
"FinancialAnalystAgent",
|
|
31
|
+
)
|
|
32
|
+
ComplianceOfficerAgent = load_agent(
|
|
33
|
+
os.path.join(
|
|
34
|
+
os.path.dirname(__file__),
|
|
35
|
+
"../app/packs/fintech/agents/compliance-officer/agent.py",
|
|
36
|
+
),
|
|
37
|
+
"ComplianceOfficerAgent",
|
|
38
|
+
)
|
|
39
|
+
RiskManagerAgent = load_agent(
|
|
40
|
+
os.path.join(
|
|
41
|
+
os.path.dirname(__file__), "../app/packs/fintech/agents/risk-manager/agent.py"
|
|
42
|
+
),
|
|
43
|
+
"RiskManagerAgent",
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
async def test_financial_analyst():
|
|
48
|
+
"""Test Financial Analyst agent."""
|
|
49
|
+
print("Testing Financial Analyst agent...")
|
|
50
|
+
agent = FinancialAnalystAgent()
|
|
51
|
+
|
|
52
|
+
# Test get_info method
|
|
53
|
+
info = agent.get_info()
|
|
54
|
+
assert info is not None
|
|
55
|
+
assert "name" in info
|
|
56
|
+
assert info["name"] == "Financial Analyst"
|
|
57
|
+
assert "capabilities" in info
|
|
58
|
+
assert len(info["capabilities"]) > 0
|
|
59
|
+
|
|
60
|
+
# Test process method with a simple request
|
|
61
|
+
from dataclasses import dataclass
|
|
62
|
+
|
|
63
|
+
@dataclass
|
|
64
|
+
class FinancialAnalysisRequest:
|
|
65
|
+
action: str
|
|
66
|
+
financial_data: dict = None
|
|
67
|
+
analysis_type: str = None
|
|
68
|
+
time_period: str = None
|
|
69
|
+
metrics: list = None
|
|
70
|
+
|
|
71
|
+
request = FinancialAnalysisRequest(
|
|
72
|
+
action="analyze",
|
|
73
|
+
financial_data={"revenue": "5,000,000"},
|
|
74
|
+
analysis_type="performance",
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
result = await agent.process(request)
|
|
78
|
+
assert result is not None
|
|
79
|
+
assert len(result) > 0
|
|
80
|
+
print("✓ Financial Analyst agent test passed")
|
|
81
|
+
return True
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
async def test_compliance_officer():
|
|
85
|
+
"""Test Compliance Officer agent."""
|
|
86
|
+
print("Testing Compliance Officer agent...")
|
|
87
|
+
agent = ComplianceOfficerAgent()
|
|
88
|
+
|
|
89
|
+
# Test get_info method
|
|
90
|
+
info = agent.get_info()
|
|
91
|
+
assert info is not None
|
|
92
|
+
assert "name" in info
|
|
93
|
+
assert info["name"] == "Compliance Officer"
|
|
94
|
+
assert "capabilities" in info
|
|
95
|
+
assert len(info["capabilities"]) > 0
|
|
96
|
+
|
|
97
|
+
# Test process method with a simple request
|
|
98
|
+
from dataclasses import dataclass
|
|
99
|
+
|
|
100
|
+
@dataclass
|
|
101
|
+
class ComplianceRequest:
|
|
102
|
+
action: str
|
|
103
|
+
compliance_area: str = None
|
|
104
|
+
jurisdiction: str = None
|
|
105
|
+
data: dict = None
|
|
106
|
+
requirements: list = None
|
|
107
|
+
|
|
108
|
+
request = ComplianceRequest(
|
|
109
|
+
action="assess", compliance_area="data_protection", jurisdiction="EU"
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
result = await agent.process(request)
|
|
113
|
+
assert result is not None
|
|
114
|
+
assert len(result) > 0
|
|
115
|
+
print("✓ Compliance Officer agent test passed")
|
|
116
|
+
return True
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
async def test_risk_manager():
|
|
120
|
+
"""Test Risk Manager agent."""
|
|
121
|
+
print("Testing Risk Manager agent...")
|
|
122
|
+
agent = RiskManagerAgent()
|
|
123
|
+
|
|
124
|
+
# Test get_info method
|
|
125
|
+
info = agent.get_info()
|
|
126
|
+
assert info is not None
|
|
127
|
+
assert "name" in info
|
|
128
|
+
assert info["name"] == "Risk Manager"
|
|
129
|
+
assert "capabilities" in info
|
|
130
|
+
assert len(info["capabilities"]) > 0
|
|
131
|
+
|
|
132
|
+
# Test process method with a simple request
|
|
133
|
+
from dataclasses import dataclass
|
|
134
|
+
|
|
135
|
+
@dataclass
|
|
136
|
+
class RiskManagementRequest:
|
|
137
|
+
action: str
|
|
138
|
+
risk_category: str = None
|
|
139
|
+
risk_data: dict = None
|
|
140
|
+
time_horizon: str = None
|
|
141
|
+
tolerance_level: str = None
|
|
142
|
+
|
|
143
|
+
request = RiskManagementRequest(action="identify", risk_category="market")
|
|
144
|
+
|
|
145
|
+
result = await agent.process(request)
|
|
146
|
+
assert result is not None
|
|
147
|
+
assert len(result) > 0
|
|
148
|
+
print("✓ Risk Manager agent test passed")
|
|
149
|
+
return True
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
async def main():
|
|
153
|
+
"""Run all tests."""
|
|
154
|
+
print("=" * 60)
|
|
155
|
+
print("FinTech Pack - Simple Agent Tests")
|
|
156
|
+
print("=" * 60)
|
|
157
|
+
print()
|
|
158
|
+
|
|
159
|
+
all_passed = True
|
|
160
|
+
|
|
161
|
+
try:
|
|
162
|
+
all_passed &= await test_financial_analyst()
|
|
163
|
+
except Exception as e:
|
|
164
|
+
print(f"✗ Financial Analyst agent test failed: {e}")
|
|
165
|
+
import traceback
|
|
166
|
+
|
|
167
|
+
traceback.print_exc()
|
|
168
|
+
all_passed = False
|
|
169
|
+
|
|
170
|
+
print()
|
|
171
|
+
|
|
172
|
+
try:
|
|
173
|
+
all_passed &= await test_compliance_officer()
|
|
174
|
+
except Exception as e:
|
|
175
|
+
print(f"✗ Compliance Officer agent test failed: {e}")
|
|
176
|
+
import traceback
|
|
177
|
+
|
|
178
|
+
traceback.print_exc()
|
|
179
|
+
all_passed = False
|
|
180
|
+
|
|
181
|
+
print()
|
|
182
|
+
|
|
183
|
+
try:
|
|
184
|
+
all_passed &= await test_risk_manager()
|
|
185
|
+
except Exception as e:
|
|
186
|
+
print(f"✗ Risk Manager agent test failed: {e}")
|
|
187
|
+
import traceback
|
|
188
|
+
|
|
189
|
+
traceback.print_exc()
|
|
190
|
+
all_passed = False
|
|
191
|
+
|
|
192
|
+
print()
|
|
193
|
+
print("=" * 60)
|
|
194
|
+
if all_passed:
|
|
195
|
+
print("All FinTech pack tests passed! ✓")
|
|
196
|
+
else:
|
|
197
|
+
print("Some tests failed! ✗")
|
|
198
|
+
print("=" * 60)
|
|
199
|
+
|
|
200
|
+
return all_passed
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
if __name__ == "__main__":
|
|
204
|
+
all_passed = asyncio.run(main())
|
|
205
|
+
sys.exit(0 if all_passed else 1)
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""Simple test script for all mmb module agents."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent.parent / "app"))
|
|
9
|
+
|
|
10
|
+
# Import agents directly from their modules
|
|
11
|
+
import importlib.util
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def load_agent(module_path, class_name):
|
|
15
|
+
"""Load an agent class from a file path."""
|
|
16
|
+
spec = importlib.util.spec_from_file_location("agent_module", module_path)
|
|
17
|
+
module = importlib.util.module_from_spec(spec)
|
|
18
|
+
spec.loader.exec_module(module)
|
|
19
|
+
return getattr(module, class_name)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Load all agents
|
|
23
|
+
AgentBuilderAgent = load_agent(
|
|
24
|
+
"app/mmb/agents/agent-builder/agent.py", "AgentBuilderAgent"
|
|
25
|
+
)
|
|
26
|
+
ModuleBuilderAgent = load_agent(
|
|
27
|
+
"app/mmb/agents/module-builder/agent.py", "ModuleBuilderAgent"
|
|
28
|
+
)
|
|
29
|
+
WorkflowBuilderAgent = load_agent(
|
|
30
|
+
"app/mmb/agents/workflow-builder/agent.py", "WorkflowBuilderAgent"
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
async def test_agent_builder():
|
|
35
|
+
"""Test Agent Builder agent."""
|
|
36
|
+
print("Testing Agent Builder agent...")
|
|
37
|
+
agent = AgentBuilderAgent()
|
|
38
|
+
result = await agent.process("menu")
|
|
39
|
+
assert result is not None
|
|
40
|
+
assert len(result) > 0
|
|
41
|
+
print("✓ Agent Builder agent works correctly\n")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
async def test_module_builder():
|
|
45
|
+
"""Test Module Builder agent."""
|
|
46
|
+
print("Testing Module Builder agent...")
|
|
47
|
+
agent = ModuleBuilderAgent()
|
|
48
|
+
result = await agent.process("menu")
|
|
49
|
+
assert result is not None
|
|
50
|
+
assert len(result) > 0
|
|
51
|
+
print("✓ Module Builder agent works correctly\n")
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
async def test_workflow_builder():
|
|
55
|
+
"""Test Workflow Builder agent."""
|
|
56
|
+
print("Testing Workflow Builder agent...")
|
|
57
|
+
agent = WorkflowBuilderAgent()
|
|
58
|
+
result = await agent.process("menu")
|
|
59
|
+
assert result is not None
|
|
60
|
+
assert len(result) > 0
|
|
61
|
+
print("✓ Workflow Builder agent works correctly\n")
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
async def main():
|
|
65
|
+
"""Run all tests."""
|
|
66
|
+
print("=" * 60)
|
|
67
|
+
print("Testing all mmb module agents")
|
|
68
|
+
print("=" * 60)
|
|
69
|
+
print()
|
|
70
|
+
|
|
71
|
+
tests = [
|
|
72
|
+
test_agent_builder,
|
|
73
|
+
test_module_builder,
|
|
74
|
+
test_workflow_builder,
|
|
75
|
+
]
|
|
76
|
+
|
|
77
|
+
passed = 0
|
|
78
|
+
failed = 0
|
|
79
|
+
|
|
80
|
+
for test in tests:
|
|
81
|
+
try:
|
|
82
|
+
await test()
|
|
83
|
+
passed += 1
|
|
84
|
+
except Exception as e:
|
|
85
|
+
print(f"✗ {test.__name__} failed: {e}\n")
|
|
86
|
+
import traceback
|
|
87
|
+
|
|
88
|
+
traceback.print_exc()
|
|
89
|
+
print()
|
|
90
|
+
failed += 1
|
|
91
|
+
|
|
92
|
+
print("=" * 60)
|
|
93
|
+
print(f"Test Results: {passed} passed, {failed} failed")
|
|
94
|
+
print("=" * 60)
|
|
95
|
+
|
|
96
|
+
if failed == 0:
|
|
97
|
+
print("\n🎉 All mmb module agents are working correctly!")
|
|
98
|
+
else:
|
|
99
|
+
print(f"\n⚠️ {failed} agent(s) failed the tests")
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
if __name__ == "__main__":
|
|
103
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""Simple test script for all mmm module agents."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent.parent / "app"))
|
|
9
|
+
|
|
10
|
+
# Import agents directly from their modules
|
|
11
|
+
import importlib.util
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def load_agent(module_path, class_name):
|
|
15
|
+
"""Load an agent class from a file path."""
|
|
16
|
+
spec = importlib.util.spec_from_file_location("agent_module", module_path)
|
|
17
|
+
module = importlib.util.module_from_spec(spec)
|
|
18
|
+
spec.loader.exec_module(module)
|
|
19
|
+
return getattr(module, class_name)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Load all agents
|
|
23
|
+
AnalystAgent = load_agent("app/mmm/agents/analyst/agent.py", "AnalystAgent")
|
|
24
|
+
ArchitectAgent = load_agent("app/mmm/agents/architect/agent.py", "ArchitectAgent")
|
|
25
|
+
DevAgent = load_agent("app/mmm/agents/dev/agent.py", "DevAgent")
|
|
26
|
+
PMAgent = load_agent("app/mmm/agents/pm/agent.py", "PMAgent")
|
|
27
|
+
QAAgent = load_agent("app/mmm/agents/qa/agent.py", "QAAgent")
|
|
28
|
+
QuickFlowSoloDevAgent = load_agent(
|
|
29
|
+
"app/mmm/agents/quick-flow-solo-dev/agent.py", "QuickFlowSoloDevAgent"
|
|
30
|
+
)
|
|
31
|
+
SMAgent = load_agent("app/mmm/agents/sm/agent.py", "SMAgent")
|
|
32
|
+
TechWriterAgent = load_agent("app/mmm/agents/tech-writer/agent.py", "TechWriterAgent")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
async def test_analyst():
|
|
36
|
+
"""Test Analyst agent."""
|
|
37
|
+
print("Testing Analyst agent...")
|
|
38
|
+
agent = AnalystAgent()
|
|
39
|
+
result = await agent.process("Analyze requirements for a task management app")
|
|
40
|
+
assert result is not None
|
|
41
|
+
assert len(result) > 0
|
|
42
|
+
print("✓ Analyst agent works correctly\n")
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
async def test_architect():
|
|
46
|
+
"""Test Architect agent."""
|
|
47
|
+
print("Testing Architect agent...")
|
|
48
|
+
agent = ArchitectAgent()
|
|
49
|
+
result = await agent.process("Design architecture for a microservices app")
|
|
50
|
+
assert result is not None
|
|
51
|
+
assert len(result) > 0
|
|
52
|
+
print("✓ Architect agent works correctly\n")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async def test_dev():
|
|
56
|
+
"""Test Dev agent."""
|
|
57
|
+
print("Testing Dev agent...")
|
|
58
|
+
agent = DevAgent()
|
|
59
|
+
result = await agent.process("Implement a user authentication feature")
|
|
60
|
+
assert result is not None
|
|
61
|
+
assert len(result) > 0
|
|
62
|
+
print("✓ Dev agent works correctly\n")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
async def test_pm():
|
|
66
|
+
"""Test PM agent."""
|
|
67
|
+
print("Testing PM agent...")
|
|
68
|
+
agent = PMAgent()
|
|
69
|
+
result = await agent.process("Create a project plan for a 6-month project")
|
|
70
|
+
assert result is not None
|
|
71
|
+
assert len(result) > 0
|
|
72
|
+
print("✓ PM agent works correctly\n")
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
async def test_qa():
|
|
76
|
+
"""Test QA agent."""
|
|
77
|
+
print("Testing QA agent...")
|
|
78
|
+
agent = QAAgent()
|
|
79
|
+
result = await agent.process("Create a test plan for an authentication system")
|
|
80
|
+
assert result is not None
|
|
81
|
+
assert len(result) > 0
|
|
82
|
+
print("✓ QA agent works correctly\n")
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
async def test_quick_flow_solo_dev():
|
|
86
|
+
"""Test Quick Flow Solo Dev agent."""
|
|
87
|
+
print("Testing Quick Flow Solo Dev agent...")
|
|
88
|
+
agent = QuickFlowSoloDevAgent()
|
|
89
|
+
result = await agent.process("Build a complete user authentication feature")
|
|
90
|
+
assert result is not None
|
|
91
|
+
assert len(result) > 0
|
|
92
|
+
print("✓ Quick Flow Solo Dev agent works correctly\n")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
async def test_sm():
|
|
96
|
+
"""Test Scrum Master agent."""
|
|
97
|
+
print("Testing Scrum Master agent...")
|
|
98
|
+
agent = SMAgent()
|
|
99
|
+
result = await agent.process("Facilitate a sprint planning meeting")
|
|
100
|
+
assert result is not None
|
|
101
|
+
assert len(result) > 0
|
|
102
|
+
print("✓ Scrum Master agent works correctly\n")
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
async def test_tech_writer():
|
|
106
|
+
"""Test Tech Writer agent."""
|
|
107
|
+
print("Testing Tech Writer agent...")
|
|
108
|
+
agent = TechWriterAgent()
|
|
109
|
+
result = await agent.process("Create API documentation for a REST service")
|
|
110
|
+
assert result is not None
|
|
111
|
+
assert len(result) > 0
|
|
112
|
+
print("✓ Tech Writer agent works correctly\n")
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
async def main():
|
|
116
|
+
"""Run all tests."""
|
|
117
|
+
print("=" * 60)
|
|
118
|
+
print("Testing all mmm module agents")
|
|
119
|
+
print("=" * 60)
|
|
120
|
+
print()
|
|
121
|
+
|
|
122
|
+
tests = [
|
|
123
|
+
test_analyst,
|
|
124
|
+
test_architect,
|
|
125
|
+
test_dev,
|
|
126
|
+
test_pm,
|
|
127
|
+
test_qa,
|
|
128
|
+
test_quick_flow_solo_dev,
|
|
129
|
+
test_sm,
|
|
130
|
+
test_tech_writer,
|
|
131
|
+
]
|
|
132
|
+
|
|
133
|
+
passed = 0
|
|
134
|
+
failed = 0
|
|
135
|
+
|
|
136
|
+
for test in tests:
|
|
137
|
+
try:
|
|
138
|
+
await test()
|
|
139
|
+
passed += 1
|
|
140
|
+
except Exception as e:
|
|
141
|
+
print(f"✗ {test.__name__} failed: {e}\n")
|
|
142
|
+
import traceback
|
|
143
|
+
|
|
144
|
+
traceback.print_exc()
|
|
145
|
+
print()
|
|
146
|
+
failed += 1
|
|
147
|
+
|
|
148
|
+
print("=" * 60)
|
|
149
|
+
print(f"Test Results: {passed} passed, {failed} failed")
|
|
150
|
+
print("=" * 60)
|
|
151
|
+
|
|
152
|
+
if failed == 0:
|
|
153
|
+
print("\n🎉 All mmm module agents are working correctly!")
|
|
154
|
+
else:
|
|
155
|
+
print(f"\n⚠️ {failed} agent(s) failed the tests")
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
if __name__ == "__main__":
|
|
159
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Simple integration test for tea module agent
|
|
3
|
+
Tests that the TEA agent can be imported and instantiated correctly
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import asyncio
|
|
7
|
+
import sys
|
|
8
|
+
import os
|
|
9
|
+
import importlib.util
|
|
10
|
+
|
|
11
|
+
# Add the app directory to the path
|
|
12
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
async def test_tea_agent():
|
|
16
|
+
"""Test TEA Agent"""
|
|
17
|
+
print("Testing TEA Agent (Murat)...")
|
|
18
|
+
|
|
19
|
+
try:
|
|
20
|
+
agent_path = os.path.join(
|
|
21
|
+
os.path.dirname(__file__), "../app/tea/agents/tea/agent.py"
|
|
22
|
+
)
|
|
23
|
+
module = importlib.util.spec_from_file_location("agent_module", agent_path)
|
|
24
|
+
if module is None or module.loader is None:
|
|
25
|
+
raise ImportError(f"Could not load spec from {agent_path}")
|
|
26
|
+
agent_module = importlib.util.module_from_spec(module)
|
|
27
|
+
module.loader.exec_module(agent_module)
|
|
28
|
+
|
|
29
|
+
TEA = agent_module.TEA
|
|
30
|
+
TEARequest = agent_module.TEARequest
|
|
31
|
+
|
|
32
|
+
agent = TEA()
|
|
33
|
+
|
|
34
|
+
# Test basic processing
|
|
35
|
+
request = TEARequest(task="teach-me-testing", context="I want to learn testing")
|
|
36
|
+
result = await agent.process(request)
|
|
37
|
+
|
|
38
|
+
assert result is not None
|
|
39
|
+
assert isinstance(result, dict)
|
|
40
|
+
assert result["success"] == True
|
|
41
|
+
print("✓ TEA Agent works correctly")
|
|
42
|
+
return True
|
|
43
|
+
except Exception as e:
|
|
44
|
+
print(f"✗ TEA Agent failed: {e}")
|
|
45
|
+
import traceback
|
|
46
|
+
|
|
47
|
+
traceback.print_exc()
|
|
48
|
+
return False
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
async def run_all_tests():
|
|
52
|
+
"""Run all tea module agent tests"""
|
|
53
|
+
print("=" * 60)
|
|
54
|
+
print("TEA Module - Integration Tests")
|
|
55
|
+
print("=" * 60)
|
|
56
|
+
|
|
57
|
+
tests = [
|
|
58
|
+
test_tea_agent(),
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
results = await asyncio.gather(*tests)
|
|
62
|
+
|
|
63
|
+
passed = sum(results)
|
|
64
|
+
total = len(results)
|
|
65
|
+
|
|
66
|
+
print("\n" + "=" * 60)
|
|
67
|
+
print(f"Test Results: {passed}/{total} agents passed")
|
|
68
|
+
print("=" * 60)
|
|
69
|
+
|
|
70
|
+
if passed == total:
|
|
71
|
+
print("✓ All TEA agents work correctly!")
|
|
72
|
+
return 0
|
|
73
|
+
else:
|
|
74
|
+
print(f"✗ {total - passed} agent(s) failed")
|
|
75
|
+
return 1
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
if __name__ == "__main__":
|
|
79
|
+
exit_code = asyncio.run(run_all_tests())
|
|
80
|
+
sys.exit(exit_code)
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Simple test script to verify MDAN Master agent works without the scenario framework.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
import os
|
|
7
|
+
import asyncio
|
|
8
|
+
|
|
9
|
+
# Add the app directory to the path
|
|
10
|
+
app_path = os.path.join(os.path.dirname(__file__), "..", "app")
|
|
11
|
+
sys.path.insert(0, app_path)
|
|
12
|
+
|
|
13
|
+
# Import directly from the file
|
|
14
|
+
import importlib.util
|
|
15
|
+
|
|
16
|
+
agent_file = os.path.join(app_path, "core", "agents", "mdan-master", "agent.py")
|
|
17
|
+
spec = importlib.util.spec_from_file_location("mdan_master_agent", agent_file)
|
|
18
|
+
if spec and spec.loader:
|
|
19
|
+
mdan_master_module = importlib.util.module_from_spec(spec)
|
|
20
|
+
spec.loader.exec_module(mdan_master_module)
|
|
21
|
+
MDANMasterAgent = mdan_master_module.MDANMasterAgent
|
|
22
|
+
AgentRequest = mdan_master_module.AgentRequest
|
|
23
|
+
else:
|
|
24
|
+
raise ImportError(f"Could not load agent from {agent_file}")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def test_agent():
|
|
28
|
+
"""Test the MDAN Master agent."""
|
|
29
|
+
print("=" * 60)
|
|
30
|
+
print("Testing MDAN Master Agent")
|
|
31
|
+
print("=" * 60)
|
|
32
|
+
|
|
33
|
+
# Test 1: Agent initialization
|
|
34
|
+
print("\n[Test 1] Agent Initialization")
|
|
35
|
+
agent = MDANMasterAgent()
|
|
36
|
+
print(f" Name: {agent.name}")
|
|
37
|
+
print(f" Title: {agent.title}")
|
|
38
|
+
print(f" Icon: {agent.icon}")
|
|
39
|
+
print(f" Capabilities: {', '.join(agent.capabilities)}")
|
|
40
|
+
print(" ✓ Agent initialized successfully")
|
|
41
|
+
|
|
42
|
+
# Test 2: Greet action with context
|
|
43
|
+
print("\n[Test 2] Greet Action with Context")
|
|
44
|
+
request = AgentRequest(
|
|
45
|
+
action="greet",
|
|
46
|
+
context={
|
|
47
|
+
"user_name": "Alice",
|
|
48
|
+
"communication_language": "English",
|
|
49
|
+
"output_folder": "/output",
|
|
50
|
+
},
|
|
51
|
+
)
|
|
52
|
+
result = await agent.process(request)
|
|
53
|
+
print(f" Message: {result['message']}")
|
|
54
|
+
print(f" Agent: {result['agent']}")
|
|
55
|
+
print(f" Language: {result['language']}")
|
|
56
|
+
print(f" Menu items: {len(result['menu'])}")
|
|
57
|
+
print(" ✓ Greet action works correctly")
|
|
58
|
+
|
|
59
|
+
# Test 3: List tasks
|
|
60
|
+
print("\n[Test 3] List Tasks")
|
|
61
|
+
request = AgentRequest(action="list-tasks")
|
|
62
|
+
result = await agent.process(request)
|
|
63
|
+
print(f" Message: {result['message']}")
|
|
64
|
+
print(f" Tasks count: {result['count']}")
|
|
65
|
+
for task in result["tasks"]:
|
|
66
|
+
print(f" - {task['name']} ({task['module']})")
|
|
67
|
+
print(" ✓ List tasks works correctly")
|
|
68
|
+
|
|
69
|
+
# Test 4: List workflows
|
|
70
|
+
print("\n[Test 4] List Workflows")
|
|
71
|
+
request = AgentRequest(action="list-workflows")
|
|
72
|
+
result = await agent.process(request)
|
|
73
|
+
print(f" Message: {result['message']}")
|
|
74
|
+
print(f" Workflows count: {result['count']}")
|
|
75
|
+
for workflow in result["workflows"]:
|
|
76
|
+
print(f" - {workflow['name']} ({workflow['module']})")
|
|
77
|
+
print(" ✓ List workflows works correctly")
|
|
78
|
+
|
|
79
|
+
# Test 5: Help action
|
|
80
|
+
print("\n[Test 5] Help Action")
|
|
81
|
+
request = AgentRequest(action="help")
|
|
82
|
+
result = await agent.process(request)
|
|
83
|
+
print(f" Message: {result['message']}")
|
|
84
|
+
print(f" Agent: {result['agent']}")
|
|
85
|
+
print(f" Usage items: {len(result['usage'])}")
|
|
86
|
+
print(" ✓ Help action works correctly")
|
|
87
|
+
|
|
88
|
+
# Test 6: Unknown action
|
|
89
|
+
print("\n[Test 6] Unknown Action")
|
|
90
|
+
request = AgentRequest(action="unknown-action")
|
|
91
|
+
result = await agent.process(request)
|
|
92
|
+
print(f" Message: {result['message']}")
|
|
93
|
+
print(f" Action: {result['action']}")
|
|
94
|
+
print(f" Suggestion: {result['suggestion']}")
|
|
95
|
+
print(" ✓ Unknown action handled correctly")
|
|
96
|
+
|
|
97
|
+
# Test 7: Get info
|
|
98
|
+
print("\n[Test 7] Get Agent Info")
|
|
99
|
+
info = agent.get_info()
|
|
100
|
+
print(f" Name: {info['name']}")
|
|
101
|
+
print(f" Role: {info['role']}")
|
|
102
|
+
print(f" Principles: {len(info['principles'])}")
|
|
103
|
+
print(" ✓ Get info works correctly")
|
|
104
|
+
|
|
105
|
+
print("\n" + "=" * 60)
|
|
106
|
+
print("All tests passed! ✓")
|
|
107
|
+
print("=" * 60)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
if __name__ == "__main__":
|
|
111
|
+
asyncio.run(test_agent())
|