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,324 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Scenario tests for Storyteller Agent (Sophia)
|
|
3
|
+
Tests the Master Storyteller's ability to craft compelling narratives
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import asyncio
|
|
7
|
+
import sys
|
|
8
|
+
import os
|
|
9
|
+
|
|
10
|
+
# Add the app directory to the path
|
|
11
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../.."))
|
|
12
|
+
|
|
13
|
+
from app.cis.agents.storyteller.agent import StorytellerAgent
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class TestStorytellerAgent:
|
|
17
|
+
"""Test suite for Storyteller Agent scenarios"""
|
|
18
|
+
|
|
19
|
+
def __init__(self):
|
|
20
|
+
self.agent = StorytellerAgent()
|
|
21
|
+
|
|
22
|
+
async def test_initialization(self):
|
|
23
|
+
"""Test 1: Agent initializes correctly"""
|
|
24
|
+
print("Test 1: Agent initialization...")
|
|
25
|
+
|
|
26
|
+
try:
|
|
27
|
+
assert self.agent is not None
|
|
28
|
+
assert hasattr(self.agent, "process")
|
|
29
|
+
assert hasattr(self.agent, "name")
|
|
30
|
+
assert self.agent.name == "storyteller"
|
|
31
|
+
print("✓ Agent initializes correctly")
|
|
32
|
+
return True
|
|
33
|
+
except Exception as e:
|
|
34
|
+
print(f"✗ Initialization failed: {e}")
|
|
35
|
+
return False
|
|
36
|
+
|
|
37
|
+
async def test_craft_narrative_framework(self):
|
|
38
|
+
"""Test 2: Craft narrative using proven frameworks"""
|
|
39
|
+
print("\nTest 2: Craft narrative using frameworks...")
|
|
40
|
+
|
|
41
|
+
try:
|
|
42
|
+
input_data = {
|
|
43
|
+
"task": "Craft a compelling narrative",
|
|
44
|
+
"story_type": "brand story",
|
|
45
|
+
"framework": "hero's journey",
|
|
46
|
+
"context": "A sustainable fashion startup",
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
result = await self.agent.process(input_data)
|
|
50
|
+
|
|
51
|
+
assert result is not None
|
|
52
|
+
assert isinstance(result, dict)
|
|
53
|
+
assert "response" in result or "narrative" in result or "story" in result
|
|
54
|
+
print("✓ Narrative crafted successfully")
|
|
55
|
+
return True
|
|
56
|
+
except Exception as e:
|
|
57
|
+
print(f"✗ Narrative crafting failed: {e}")
|
|
58
|
+
return False
|
|
59
|
+
|
|
60
|
+
async def test_emotional_psychology_application(self):
|
|
61
|
+
"""Test 3: Apply emotional psychology to storytelling"""
|
|
62
|
+
print("\nTest 3: Apply emotional psychology...")
|
|
63
|
+
|
|
64
|
+
try:
|
|
65
|
+
input_data = {
|
|
66
|
+
"task": "Create emotionally engaging story",
|
|
67
|
+
"target_emotion": "inspiration",
|
|
68
|
+
"audience": "young professionals",
|
|
69
|
+
"theme": "overcoming challenges",
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
result = await self.agent.process(input_data)
|
|
73
|
+
|
|
74
|
+
assert result is not None
|
|
75
|
+
assert isinstance(result, dict)
|
|
76
|
+
print("✓ Emotional psychology applied successfully")
|
|
77
|
+
return True
|
|
78
|
+
except Exception as e:
|
|
79
|
+
print(f"✗ Emotional psychology application failed: {e}")
|
|
80
|
+
return False
|
|
81
|
+
|
|
82
|
+
async def test_audience_engagement_strategy(self):
|
|
83
|
+
"""Test 4: Develop audience engagement strategy"""
|
|
84
|
+
print("\nTest 4: Develop audience engagement strategy...")
|
|
85
|
+
|
|
86
|
+
try:
|
|
87
|
+
input_data = {
|
|
88
|
+
"task": "Create engagement strategy",
|
|
89
|
+
"audience_segment": "millennials",
|
|
90
|
+
"platform": "social media",
|
|
91
|
+
"story_format": "short-form video",
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
result = await self.agent.process(input_data)
|
|
95
|
+
|
|
96
|
+
assert result is not None
|
|
97
|
+
assert isinstance(result, dict)
|
|
98
|
+
print("✓ Engagement strategy developed successfully")
|
|
99
|
+
return True
|
|
100
|
+
except Exception as e:
|
|
101
|
+
print(f"✗ Engagement strategy development failed: {e}")
|
|
102
|
+
return False
|
|
103
|
+
|
|
104
|
+
async def test_vivid_details_creation(self):
|
|
105
|
+
"""Test 5: Create vivid details for abstract concepts"""
|
|
106
|
+
print("\nTest 5: Create vivid details...")
|
|
107
|
+
|
|
108
|
+
try:
|
|
109
|
+
input_data = {
|
|
110
|
+
"task": "Make abstract concrete",
|
|
111
|
+
"abstract_concept": "innovation",
|
|
112
|
+
"context": "tech company transformation",
|
|
113
|
+
"style": "flowery and whimsical",
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
result = await self.agent.process(input_data)
|
|
117
|
+
|
|
118
|
+
assert result is not None
|
|
119
|
+
assert isinstance(result, dict)
|
|
120
|
+
print("✓ Vivid details created successfully")
|
|
121
|
+
return True
|
|
122
|
+
except Exception as e:
|
|
123
|
+
print(f"✗ Vivid details creation failed: {e}")
|
|
124
|
+
return False
|
|
125
|
+
|
|
126
|
+
async def test_screenwriting_techniques(self):
|
|
127
|
+
"""Test 6: Apply screenwriting techniques"""
|
|
128
|
+
print("\nTest 6: Apply screenwriting techniques...")
|
|
129
|
+
|
|
130
|
+
try:
|
|
131
|
+
input_data = {
|
|
132
|
+
"task": "Use screenwriting techniques",
|
|
133
|
+
"technique": "three-act structure",
|
|
134
|
+
"story_elements": ["protagonist", "conflict", "resolution"],
|
|
135
|
+
"genre": "drama",
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
result = await self.agent.process(input_data)
|
|
139
|
+
|
|
140
|
+
assert result is not None
|
|
141
|
+
assert isinstance(result, dict)
|
|
142
|
+
print("✓ Screenwriting techniques applied successfully")
|
|
143
|
+
return True
|
|
144
|
+
except Exception as e:
|
|
145
|
+
print(f"✗ Screenwriting techniques application failed: {e}")
|
|
146
|
+
return False
|
|
147
|
+
|
|
148
|
+
async def test_journalistic_storytelling(self):
|
|
149
|
+
"""Test 7: Apply journalistic storytelling approach"""
|
|
150
|
+
print("\nTest 7: Apply journalistic storytelling...")
|
|
151
|
+
|
|
152
|
+
try:
|
|
153
|
+
input_data = {
|
|
154
|
+
"task": "Create journalistic narrative",
|
|
155
|
+
"story_angle": "human interest",
|
|
156
|
+
"facts": ["company milestone", "customer impact", "team dedication"],
|
|
157
|
+
"tone": "authentic and compelling",
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
result = await self.agent.process(input_data)
|
|
161
|
+
|
|
162
|
+
assert result is not None
|
|
163
|
+
assert isinstance(result, dict)
|
|
164
|
+
print("✓ Journalistic storytelling applied successfully")
|
|
165
|
+
return True
|
|
166
|
+
except Exception as e:
|
|
167
|
+
print(f"✗ Journalistic storytelling failed: {e}")
|
|
168
|
+
return False
|
|
169
|
+
|
|
170
|
+
async def test_brand_narrative_development(self):
|
|
171
|
+
"""Test 8: Develop brand narrative"""
|
|
172
|
+
print("\nTest 8: Develop brand narrative...")
|
|
173
|
+
|
|
174
|
+
try:
|
|
175
|
+
input_data = {
|
|
176
|
+
"task": "Create brand narrative",
|
|
177
|
+
"brand_values": ["sustainability", "innovation", "quality"],
|
|
178
|
+
"brand_mission": "Make the world better",
|
|
179
|
+
"target_audience": "conscious consumers",
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
result = await self.agent.process(input_data)
|
|
183
|
+
|
|
184
|
+
assert result is not None
|
|
185
|
+
assert isinstance(result, dict)
|
|
186
|
+
print("✓ Brand narrative developed successfully")
|
|
187
|
+
return True
|
|
188
|
+
except Exception as e:
|
|
189
|
+
print(f"✗ Brand narrative development failed: {e}")
|
|
190
|
+
return False
|
|
191
|
+
|
|
192
|
+
async def test_story_structure_optimization(self):
|
|
193
|
+
"""Test 9: Optimize story structure"""
|
|
194
|
+
print("\nTest 9: Optimize story structure...")
|
|
195
|
+
|
|
196
|
+
try:
|
|
197
|
+
input_data = {
|
|
198
|
+
"task": "Optimize story structure",
|
|
199
|
+
"current_story": "A company's journey from startup to success",
|
|
200
|
+
"framework": "monomyth",
|
|
201
|
+
"focus": "emotional arc",
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
result = await self.agent.process(input_data)
|
|
205
|
+
|
|
206
|
+
assert result is not None
|
|
207
|
+
assert isinstance(result, dict)
|
|
208
|
+
print("✓ Story structure optimized successfully")
|
|
209
|
+
return True
|
|
210
|
+
except Exception as e:
|
|
211
|
+
print(f"✗ Story structure optimization failed: {e}")
|
|
212
|
+
return False
|
|
213
|
+
|
|
214
|
+
async def test_multichannel_storytelling(self):
|
|
215
|
+
"""Test 10: Adapt story for multiple channels"""
|
|
216
|
+
print("\nTest 10: Adapt story for multiple channels...")
|
|
217
|
+
|
|
218
|
+
try:
|
|
219
|
+
input_data = {
|
|
220
|
+
"task": "Adapt story for channels",
|
|
221
|
+
"core_story": "A product launch journey",
|
|
222
|
+
"channels": ["blog", "video", "social media", "email"],
|
|
223
|
+
"maintain_consistency": True,
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
result = await self.agent.process(input_data)
|
|
227
|
+
|
|
228
|
+
assert result is not None
|
|
229
|
+
assert isinstance(result, dict)
|
|
230
|
+
print("✓ Multichannel storytelling adapted successfully")
|
|
231
|
+
return True
|
|
232
|
+
except Exception as e:
|
|
233
|
+
print(f"✗ Multichannel storytelling failed: {e}")
|
|
234
|
+
return False
|
|
235
|
+
|
|
236
|
+
async def test_story_arc_creation(self):
|
|
237
|
+
"""Test 11: Create compelling story arc"""
|
|
238
|
+
print("\nTest 11: Create story arc...")
|
|
239
|
+
|
|
240
|
+
try:
|
|
241
|
+
input_data = {
|
|
242
|
+
"task": "Create story arc",
|
|
243
|
+
"protagonist": "founder",
|
|
244
|
+
"goal": "launch innovative product",
|
|
245
|
+
"obstacles": ["funding", "competition", "technical challenges"],
|
|
246
|
+
"theme": "perseverance",
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
result = await self.agent.process(input_data)
|
|
250
|
+
|
|
251
|
+
assert result is not None
|
|
252
|
+
assert isinstance(result, dict)
|
|
253
|
+
print("✓ Story arc created successfully")
|
|
254
|
+
return True
|
|
255
|
+
except Exception as e:
|
|
256
|
+
print(f"✗ Story arc creation failed: {e}")
|
|
257
|
+
return False
|
|
258
|
+
|
|
259
|
+
async def test_authentic_story_finding(self):
|
|
260
|
+
"""Test 12: Find authentic story elements"""
|
|
261
|
+
print("\nTest 12: Find authentic story elements...")
|
|
262
|
+
|
|
263
|
+
try:
|
|
264
|
+
input_data = {
|
|
265
|
+
"task": "Find authentic story",
|
|
266
|
+
"company_context": "family business",
|
|
267
|
+
"values": ["tradition", "quality", "community"],
|
|
268
|
+
"differentiators": ["handmade", "local sourcing", "sustainable"],
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
result = await self.agent.process(input_data)
|
|
272
|
+
|
|
273
|
+
assert result is not None
|
|
274
|
+
assert isinstance(result, dict)
|
|
275
|
+
print("✓ Authentic story elements found successfully")
|
|
276
|
+
return True
|
|
277
|
+
except Exception as e:
|
|
278
|
+
print(f"✗ Authentic story finding failed: {e}")
|
|
279
|
+
return False
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
async def run_all_tests():
|
|
283
|
+
"""Run all scenario tests for Storyteller Agent"""
|
|
284
|
+
print("=" * 60)
|
|
285
|
+
print("Storyteller Agent (Sophia) - Scenario Tests")
|
|
286
|
+
print("=" * 60)
|
|
287
|
+
|
|
288
|
+
test_suite = TestStorytellerAgent()
|
|
289
|
+
|
|
290
|
+
tests = [
|
|
291
|
+
test_suite.test_initialization(),
|
|
292
|
+
test_suite.test_craft_narrative_framework(),
|
|
293
|
+
test_suite.test_emotional_psychology_application(),
|
|
294
|
+
test_suite.test_audience_engagement_strategy(),
|
|
295
|
+
test_suite.test_vivid_details_creation(),
|
|
296
|
+
test_suite.test_screenwriting_techniques(),
|
|
297
|
+
test_suite.test_journalistic_storytelling(),
|
|
298
|
+
test_suite.test_brand_narrative_development(),
|
|
299
|
+
test_suite.test_story_structure_optimization(),
|
|
300
|
+
test_suite.test_multichannel_storytelling(),
|
|
301
|
+
test_suite.test_story_arc_creation(),
|
|
302
|
+
test_suite.test_authentic_story_finding(),
|
|
303
|
+
]
|
|
304
|
+
|
|
305
|
+
results = await asyncio.gather(*tests)
|
|
306
|
+
|
|
307
|
+
passed = sum(results)
|
|
308
|
+
total = len(results)
|
|
309
|
+
|
|
310
|
+
print("\n" + "=" * 60)
|
|
311
|
+
print(f"Test Results: {passed}/{total} passed")
|
|
312
|
+
print("=" * 60)
|
|
313
|
+
|
|
314
|
+
if passed == total:
|
|
315
|
+
print("✓ All tests passed!")
|
|
316
|
+
return 0
|
|
317
|
+
else:
|
|
318
|
+
print(f"✗ {total - passed} test(s) failed")
|
|
319
|
+
return 1
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
if __name__ == "__main__":
|
|
323
|
+
exit_code = asyncio.run(run_all_tests())
|
|
324
|
+
sys.exit(exit_code)
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Scenario tests for MDAN Master agent.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from scenario import Scenario, expect
|
|
6
|
+
import sys
|
|
7
|
+
import os
|
|
8
|
+
|
|
9
|
+
# Add the app directory to the path
|
|
10
|
+
sys.path.insert(
|
|
11
|
+
0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "app")
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
from core.agents.mdan_master.agent import MDANMasterAgent, AgentRequest
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
scenario = Scenario("MDAN Master - Core Functionality")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@scenario.test
|
|
21
|
+
async def test_agent_initialization():
|
|
22
|
+
"""
|
|
23
|
+
Test that the MDAN Master agent initializes correctly.
|
|
24
|
+
"""
|
|
25
|
+
agent = MDANMasterAgent()
|
|
26
|
+
|
|
27
|
+
expect(agent.name).to_equal("MDAN Master")
|
|
28
|
+
expect(agent.title).to_equal(
|
|
29
|
+
"MDAN Master Executor, Knowledge Custodian, and Workflow Orchestrator"
|
|
30
|
+
)
|
|
31
|
+
expect(agent.icon).to_equal("🧙")
|
|
32
|
+
expect(len(agent.capabilities)).to_equal(4)
|
|
33
|
+
expect("runtime resource management" in agent.capabilities).to_be_true()
|
|
34
|
+
expect("workflow orchestration" in agent.capabilities).to_be_true()
|
|
35
|
+
expect("task execution" in agent.capabilities).to_be_true()
|
|
36
|
+
expect("knowledge custodian" in agent.capabilities).to_be_true()
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@scenario.test
|
|
40
|
+
async def test_greet_action():
|
|
41
|
+
"""
|
|
42
|
+
Test that the greet action returns a proper greeting with menu.
|
|
43
|
+
"""
|
|
44
|
+
agent = MDANMasterAgent()
|
|
45
|
+
|
|
46
|
+
request = AgentRequest(
|
|
47
|
+
action="greet",
|
|
48
|
+
context={
|
|
49
|
+
"user_name": "Alice",
|
|
50
|
+
"communication_language": "English",
|
|
51
|
+
"output_folder": "/output",
|
|
52
|
+
},
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
result = await agent.process(request)
|
|
56
|
+
|
|
57
|
+
expect(result).to_have_key("message")
|
|
58
|
+
expect(result).to_have_key("agent")
|
|
59
|
+
expect(result).to_have_key("icon")
|
|
60
|
+
expect(result).to_have_key("capabilities")
|
|
61
|
+
expect(result).to_have_key("menu")
|
|
62
|
+
expect(result).to_have_key("help_hint")
|
|
63
|
+
expect(result).to_have_key("language")
|
|
64
|
+
|
|
65
|
+
expect(result["message"]).to_contain("Alice")
|
|
66
|
+
expect(result["agent"]).to_equal("MDAN Master")
|
|
67
|
+
expect(result["icon"]).to_equal("🧙")
|
|
68
|
+
expect(result["language"]).to_equal("English")
|
|
69
|
+
expect(len(result["menu"])).to_equal(6)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@scenario.test
|
|
73
|
+
async def test_greet_action_without_context():
|
|
74
|
+
"""
|
|
75
|
+
Test that the greet action works without context (uses defaults).
|
|
76
|
+
"""
|
|
77
|
+
agent = MDANMasterAgent()
|
|
78
|
+
|
|
79
|
+
request = AgentRequest(action="greet")
|
|
80
|
+
|
|
81
|
+
result = await agent.process(request)
|
|
82
|
+
|
|
83
|
+
expect(result["message"]).to_contain("User")
|
|
84
|
+
expect(result["language"]).to_equal("English")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@scenario.test
|
|
88
|
+
async def test_list_tasks_action():
|
|
89
|
+
"""
|
|
90
|
+
Test that the list-tasks action returns available tasks.
|
|
91
|
+
"""
|
|
92
|
+
agent = MDANMasterAgent()
|
|
93
|
+
|
|
94
|
+
request = AgentRequest(action="list-tasks")
|
|
95
|
+
|
|
96
|
+
result = await agent.process(request)
|
|
97
|
+
|
|
98
|
+
expect(result).to_have_key("message")
|
|
99
|
+
expect(result).to_have_key("tasks")
|
|
100
|
+
expect(result).to_have_key("count")
|
|
101
|
+
|
|
102
|
+
expect(result["message"]).to_equal("Available Tasks")
|
|
103
|
+
expect(len(result["tasks"])).to_be_greater_than(0)
|
|
104
|
+
expect(result["count"]).to_equal(len(result["tasks"]))
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@scenario.test
|
|
108
|
+
async def test_list_workflows_action():
|
|
109
|
+
"""
|
|
110
|
+
Test that the list-workflows action returns available workflows.
|
|
111
|
+
"""
|
|
112
|
+
agent = MDANMasterAgent()
|
|
113
|
+
|
|
114
|
+
request = AgentRequest(action="list-workflows")
|
|
115
|
+
|
|
116
|
+
result = await agent.process(request)
|
|
117
|
+
|
|
118
|
+
expect(result).to_have_key("message")
|
|
119
|
+
expect(result).to_have_key("workflows")
|
|
120
|
+
expect(result).to_have_key("count")
|
|
121
|
+
|
|
122
|
+
expect(result["message"]).to_equal("Available Workflows")
|
|
123
|
+
expect(len(result["workflows"])).to_be_greater_than(0)
|
|
124
|
+
expect(result["count"]).to_equal(len(result["workflows"]))
|
|
125
|
+
|
|
126
|
+
# Check that workflows from different modules are present
|
|
127
|
+
workflow_ids = [w["id"] for w in result["workflows"]]
|
|
128
|
+
expect("workflow-1" in workflow_ids).to_be_true()
|
|
129
|
+
expect("workflow-4" in workflow_ids).to_be_true() # FinTech workflow
|
|
130
|
+
expect("workflow-5" in workflow_ids).to_be_true() # DevOps/Azure workflow
|
|
131
|
+
expect("workflow-6" in workflow_ids).to_be_true() # DB Optimization workflow
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
@scenario.test
|
|
135
|
+
async def test_help_action():
|
|
136
|
+
"""
|
|
137
|
+
Test that the help action returns help information.
|
|
138
|
+
"""
|
|
139
|
+
agent = MDANMasterAgent()
|
|
140
|
+
|
|
141
|
+
request = AgentRequest(action="help")
|
|
142
|
+
|
|
143
|
+
result = await agent.process(request)
|
|
144
|
+
|
|
145
|
+
expect(result).to_have_key("message")
|
|
146
|
+
expect(result).to_have_key("agent")
|
|
147
|
+
expect(result).to_have_key("description")
|
|
148
|
+
expect(result).to_have_key("capabilities")
|
|
149
|
+
expect(result).to_have_key("usage")
|
|
150
|
+
expect(result).to_have_key("menu")
|
|
151
|
+
|
|
152
|
+
expect(result["message"]).to_equal("MDAN Master Help")
|
|
153
|
+
expect(result["agent"]).to_equal("MDAN Master")
|
|
154
|
+
expect(len(result["usage"])).to_be_greater_than(0)
|
|
155
|
+
expect(len(result["menu"])).to_equal(6)
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
@scenario.test
|
|
159
|
+
async def test_unknown_action():
|
|
160
|
+
"""
|
|
161
|
+
Test that unknown actions return an appropriate error message.
|
|
162
|
+
"""
|
|
163
|
+
agent = MDANMasterAgent()
|
|
164
|
+
|
|
165
|
+
request = AgentRequest(action="unknown-action")
|
|
166
|
+
|
|
167
|
+
result = await agent.process(request)
|
|
168
|
+
|
|
169
|
+
expect(result).to_have_key("message")
|
|
170
|
+
expect(result).to_have_key("action")
|
|
171
|
+
expect(result).to_have_key("suggestion")
|
|
172
|
+
|
|
173
|
+
expect(result["message"]).to_equal("Action not recognized")
|
|
174
|
+
expect(result["action"]).to_equal("unknown-action")
|
|
175
|
+
expect(result["suggestion"]).to_contain("/mmm-help")
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
@scenario.test
|
|
179
|
+
async def test_get_info():
|
|
180
|
+
"""
|
|
181
|
+
Test that get_info returns complete agent information.
|
|
182
|
+
"""
|
|
183
|
+
agent = MDANMasterAgent()
|
|
184
|
+
|
|
185
|
+
info = agent.get_info()
|
|
186
|
+
|
|
187
|
+
expect(info).to_have_key("name")
|
|
188
|
+
expect(info).to_have_key("title")
|
|
189
|
+
expect(info).to_have_key("icon")
|
|
190
|
+
expect(info).to_have_key("capabilities")
|
|
191
|
+
expect(info).to_have_key("role")
|
|
192
|
+
expect(info).to_have_key("identity")
|
|
193
|
+
expect(info).to_have_key("communication_style")
|
|
194
|
+
expect(info).to_have_key("principles")
|
|
195
|
+
|
|
196
|
+
expect(info["name"]).to_equal("MDAN Master")
|
|
197
|
+
expect(info["icon"]).to_equal("🧙")
|
|
198
|
+
expect(len(info["principles"])).to_equal(2)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
@scenario.test
|
|
202
|
+
async def test_menu_structure():
|
|
203
|
+
"""
|
|
204
|
+
Test that the menu has the correct structure and all required items.
|
|
205
|
+
"""
|
|
206
|
+
agent = MDANMasterAgent()
|
|
207
|
+
|
|
208
|
+
request = AgentRequest(action="greet")
|
|
209
|
+
result = await agent.process(request)
|
|
210
|
+
|
|
211
|
+
menu = result["menu"]
|
|
212
|
+
|
|
213
|
+
# Check that all menu items are present
|
|
214
|
+
menu_descriptions = [item["description"] for item in menu]
|
|
215
|
+
|
|
216
|
+
expect("[MH] Redisplay Menu Help" in menu_descriptions).to_be_true()
|
|
217
|
+
expect("[CH] Chat with the Agent about anything" in menu_descriptions).to_be_true()
|
|
218
|
+
expect("[LT] List Available Tasks" in menu_descriptions).to_be_true()
|
|
219
|
+
expect("[LW] List Workflows" in menu_descriptions).to_be_true()
|
|
220
|
+
expect("[PM] Start Party Mode" in menu_descriptions).to_be_true()
|
|
221
|
+
expect("[DA] Dismiss Agent" in menu_descriptions).to_be_true()
|
|
222
|
+
|
|
223
|
+
# Check that each menu item has a trigger
|
|
224
|
+
for item in menu:
|
|
225
|
+
expect(item).to_have_key("trigger")
|
|
226
|
+
expect(item).to_have_key("description")
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
@scenario.test
|
|
230
|
+
async def test_help_hint_format():
|
|
231
|
+
"""
|
|
232
|
+
Test that the help hint is properly formatted.
|
|
233
|
+
"""
|
|
234
|
+
agent = MDANMasterAgent()
|
|
235
|
+
|
|
236
|
+
request = AgentRequest(action="greet")
|
|
237
|
+
result = await agent.process(request)
|
|
238
|
+
|
|
239
|
+
help_hint = result["help_hint"]
|
|
240
|
+
|
|
241
|
+
expect(help_hint).to_contain("/mmm-help")
|
|
242
|
+
expect(help_hint).to_contain("advice")
|
|
243
|
+
expect(help_hint).to_contain("combine")
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
@scenario.test
|
|
247
|
+
async def test_communication_language_support():
|
|
248
|
+
"""
|
|
249
|
+
Test that different communication languages are supported.
|
|
250
|
+
"""
|
|
251
|
+
agent = MDANMasterAgent()
|
|
252
|
+
|
|
253
|
+
# Test with Spanish
|
|
254
|
+
request = AgentRequest(
|
|
255
|
+
action="greet",
|
|
256
|
+
context={
|
|
257
|
+
"user_name": "Carlos",
|
|
258
|
+
"communication_language": "Spanish",
|
|
259
|
+
"output_folder": "/output",
|
|
260
|
+
},
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
result = await agent.process(request)
|
|
264
|
+
|
|
265
|
+
expect(result["language"]).to_equal("Spanish")
|
|
266
|
+
expect(result["message"]).to_contain("Carlos")
|
|
267
|
+
|
|
268
|
+
# Test with French
|
|
269
|
+
request = AgentRequest(
|
|
270
|
+
action="greet",
|
|
271
|
+
context={
|
|
272
|
+
"user_name": "Marie",
|
|
273
|
+
"communication_language": "French",
|
|
274
|
+
"output_folder": "/output",
|
|
275
|
+
},
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
result = await agent.process(request)
|
|
279
|
+
|
|
280
|
+
expect(result["language"]).to_equal("French")
|
|
281
|
+
expect(result["message"]).to_contain("Marie")
|