#
tokens: 48140/50000 5/1179 files (page 18/24)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 18 of 24. Use http://codebase.md/sparesparrow/mcp-project-orchestrator?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .cursorrules
├── .env.example
├── .github
│   └── workflows
│       ├── build.yml
│       ├── ci-cd.yml
│       ├── ci.yml
│       ├── deploy.yml
│       ├── ecosystem-monitor.yml
│       ├── fan-out-orchestrator.yml
│       └── release.yml
├── .gitignore
├── .pre-commit-config.yaml
├── AUTOMOTIVE_CAMERA_SYSTEM_SUMMARY.md
├── automotive-camera-system
│   ├── docs
│   │   └── IMPLEMENTACE_CS.md
│   └── README.md
├── AWS_MCP_IMPLEMENTATION_SUMMARY.md
├── AWS_MCP_QUICKSTART.md
├── AWS_SIP_TRUNK_DEPLOYMENT_COMPLETE.md
├── aws-sip-trunk
│   ├── .gitignore
│   ├── config
│   │   ├── extensions.conf.j2
│   │   └── pjsip.conf.j2
│   ├── DEPLOYMENT_SUMMARY.md
│   ├── docs
│   │   ├── DEPLOYMENT.md
│   │   └── TROUBLESHOOTING.md
│   ├── PROJECT_INDEX.md
│   ├── pyproject.toml
│   ├── QUICKSTART.md
│   ├── README.md
│   ├── scripts
│   │   ├── deploy-asterisk-aws.sh
│   │   └── user-data.sh
│   ├── terraform
│   │   ├── ec2.tf
│   │   ├── main.tf
│   │   ├── monitoring.tf
│   │   ├── networking.tf
│   │   ├── outputs.tf
│   │   ├── storage.tf
│   │   ├── terraform.tfvars.example
│   │   └── variables.tf
│   ├── tests
│   │   └── test_sip_connectivity.py
│   └── VERIFICATION_CHECKLIST.md
├── CLAUDE.md
├── component_templates.json
├── conanfile.py
├── config
│   ├── default.json
│   └── project_orchestration.json
├── Containerfile
├── cursor-templates
│   └── openssl
│       ├── linux-dev.mdc.jinja2
│       └── shared.mdc.jinja2
├── data
│   └── prompts
│       └── templates
│           ├── advanced-multi-server-template.json
│           ├── analysis-assistant.json
│           ├── analyze-mermaid-diagram.json
│           ├── architecture-design-assistant.json
│           ├── code-diagram-documentation-creator.json
│           ├── code-refactoring-assistant.json
│           ├── code-review-assistant.json
│           ├── collaborative-development.json
│           ├── consolidated-interfaces-template.json
│           ├── could-you-interpret-the-assumed-applicat.json
│           ├── data-analysis-template.json
│           ├── database-query-assistant.json
│           ├── debugging-assistant.json
│           ├── development-system-prompt-zcna0.json
│           ├── development-system-prompt.json
│           ├── development-workflow.json
│           ├── docker-compose-prompt-combiner.json
│           ├── docker-containerization-guide.json
│           ├── docker-mcp-servers-orchestration.json
│           ├── foresight-assistant.json
│           ├── generate-different-types-of-questions-ab.json
│           ├── generate-mermaid-diagram.json
│           ├── image-1-describe-the-icon-in-one-sen.json
│           ├── initialize-project-setup-for-a-new-micro.json
│           ├── install-dependencies-build-run-test.json
│           ├── mcp-code-generator.json
│           ├── mcp-integration-assistant.json
│           ├── mcp-resources-explorer.json
│           ├── mcp-resources-integration.json
│           ├── mcp-server-configurator.json
│           ├── mcp-server-dev-prompt-combiner.json
│           ├── mcp-server-integration-template.json
│           ├── mcp-template-system.json
│           ├── mermaid-analysis-expert.json
│           ├── mermaid-class-diagram-generator.json
│           ├── mermaid-diagram-generator.json
│           ├── mermaid-diagram-modifier.json
│           ├── modify-mermaid-diagram.json
│           ├── monorepo-migration-guide.json
│           ├── multi-resource-context.json
│           ├── project-analysis-assistant.json
│           ├── prompt-combiner-interface.json
│           ├── prompt-templates.json
│           ├── repository-explorer.json
│           ├── research-assistant.json
│           ├── sequential-data-analysis.json
│           ├── solid-code-analysis-visualizer.json
│           ├── task-list-helper-8ithy.json
│           ├── template-based-mcp-integration.json
│           ├── templates.json
│           ├── test-prompt.json
│           └── you-are-limited-to-respond-yes-or-no-onl.json
├── docs
│   ├── AWS_MCP.md
│   ├── AWS.md
│   ├── CONAN.md
│   └── integration.md
├── elevenlabs-agents
│   ├── agent-prompts.json
│   └── README.md
├── IMPLEMENTATION_STATUS.md
├── integration_plan.md
├── LICENSE
├── MANIFEST.in
├── mcp-project-orchestrator
│   └── openssl
│       ├── .github
│       │   └── workflows
│       │       └── validate-cursor-config.yml
│       ├── conanfile.py
│       ├── CURSOR_DEPLOYMENT_POLISH.md
│       ├── cursor-rules
│       │   ├── mcp.json.jinja2
│       │   ├── prompts
│       │   │   ├── fips-compliance.md.jinja2
│       │   │   ├── openssl-coding-standards.md.jinja2
│       │   │   └── pr-review.md.jinja2
│       │   └── rules
│       │       ├── ci-linux.mdc.jinja2
│       │       ├── linux-dev.mdc.jinja2
│       │       ├── macos-dev.mdc.jinja2
│       │       ├── shared.mdc.jinja2
│       │       └── windows-dev.mdc.jinja2
│       ├── docs
│       │   └── cursor-configuration-management.md
│       ├── examples
│       │   └── example-workspace
│       │       ├── .cursor
│       │       │   ├── mcp.json
│       │       │   └── rules
│       │       │       ├── linux-dev.mdc
│       │       │       └── shared.mdc
│       │       ├── .gitignore
│       │       ├── CMakeLists.txt
│       │       ├── conanfile.py
│       │       ├── profiles
│       │       │   ├── linux-gcc-debug.profile
│       │       │   └── linux-gcc-release.profile
│       │       ├── README.md
│       │       └── src
│       │           ├── crypto_utils.cpp
│       │           ├── crypto_utils.h
│       │           └── main.cpp
│       ├── IMPLEMENTATION_SUMMARY.md
│       ├── mcp_orchestrator
│       │   ├── __init__.py
│       │   ├── cli.py
│       │   ├── conan_integration.py
│       │   ├── cursor_config.py
│       │   ├── cursor_deployer.py
│       │   ├── deploy_cursor.py
│       │   ├── env_config.py
│       │   ├── platform_detector.py
│       │   └── yaml_validator.py
│       ├── openssl-cursor-example-workspace-20251014_121133.zip
│       ├── pyproject.toml
│       ├── README.md
│       ├── requirements.txt
│       ├── scripts
│       │   └── create_example_workspace.py
│       ├── setup.py
│       ├── test_deployment.py
│       └── tests
│           ├── __init__.py
│           ├── test_cursor_deployer.py
│           └── test_template_validation.py
├── printcast-agent
│   ├── .env.example
│   ├── config
│   │   └── asterisk
│   │       └── extensions.conf
│   ├── Containerfile
│   ├── docker-compose.yml
│   ├── pyproject.toml
│   ├── README.md
│   ├── scripts
│   │   └── docker-entrypoint.sh
│   ├── src
│   │   ├── integrations
│   │   │   ├── __init__.py
│   │   │   ├── asterisk.py
│   │   │   ├── content.py
│   │   │   ├── delivery.py
│   │   │   ├── elevenlabs.py
│   │   │   └── printing.py
│   │   ├── mcp_server
│   │   │   ├── __init__.py
│   │   │   ├── main.py
│   │   │   └── server.py
│   │   └── orchestration
│   │       ├── __init__.py
│   │       └── workflow.py
│   └── tests
│       └── test_mcp_server.py
├── project_orchestration.json
├── project_templates.json
├── pyproject.toml
├── README.md
├── REFACTORING_COMPLETED.md
├── REFACTORING_RECOMMENDATIONS.md
├── requirements.txt
├── scripts
│   ├── archive
│   │   ├── init_claude_test.sh
│   │   ├── init_postgres.sh
│   │   ├── start_mcp_servers.sh
│   │   └── test_claude_desktop.sh
│   ├── consolidate_mermaid.py
│   ├── consolidate_prompts.py
│   ├── consolidate_resources.py
│   ├── consolidate_templates.py
│   ├── INSTRUCTIONS.md
│   ├── README.md
│   ├── setup_aws_mcp.sh
│   ├── setup_mcp.sh
│   ├── setup_orchestrator.sh
│   ├── setup_project.py
│   └── test_mcp.sh
├── src
│   └── mcp_project_orchestrator
│       ├── __init__.py
│       ├── __main__.py
│       ├── aws_mcp.py
│       ├── cli
│       │   └── __init__.py
│       ├── cli.py
│       ├── commands
│       │   └── openssl_cli.py
│       ├── core
│       │   ├── __init__.py
│       │   ├── base.py
│       │   ├── config.py
│       │   ├── exceptions.py
│       │   ├── fastmcp.py
│       │   ├── logging.py
│       │   └── managers.py
│       ├── cursor_deployer.py
│       ├── ecosystem_monitor.py
│       ├── fan_out_orchestrator.py
│       ├── fastmcp.py
│       ├── mcp-py
│       │   ├── AggregateVersions.py
│       │   ├── CustomBashTool.py
│       │   ├── FileAnnotator.py
│       │   ├── mcp-client.py
│       │   ├── mcp-server.py
│       │   ├── MermaidDiagramGenerator.py
│       │   ├── NamingAgent.py
│       │   └── solid-analyzer-agent.py
│       ├── mermaid
│       │   ├── __init__.py
│       │   ├── generator.py
│       │   ├── mermaid_orchestrator.py
│       │   ├── renderer.py
│       │   ├── templates
│       │   │   ├── AbstractFactory-diagram.json
│       │   │   ├── Adapter-diagram.json
│       │   │   ├── Analyze_Mermaid_Diagram.json
│       │   │   ├── Builder-diagram.json
│       │   │   ├── Chain-diagram.json
│       │   │   ├── Code_Diagram_Documentation_Creator.json
│       │   │   ├── Command-diagram.json
│       │   │   ├── Decorator-diagram.json
│       │   │   ├── Facade-diagram.json
│       │   │   ├── Factory-diagram.json
│       │   │   ├── flowchart
│       │   │   │   ├── AbstractFactory-diagram.json
│       │   │   │   ├── Adapter-diagram.json
│       │   │   │   ├── Analyze_Mermaid_Diagram.json
│       │   │   │   ├── Builder-diagram.json
│       │   │   │   ├── Chain-diagram.json
│       │   │   │   ├── Code_Diagram_Documentation_Creator.json
│       │   │   │   ├── Command-diagram.json
│       │   │   │   ├── Decorator-diagram.json
│       │   │   │   ├── Facade-diagram.json
│       │   │   │   ├── Factory-diagram.json
│       │   │   │   ├── Generate_Mermaid_Diagram.json
│       │   │   │   ├── generated_diagram.json
│       │   │   │   ├── integration.json
│       │   │   │   ├── Iterator-diagram.json
│       │   │   │   ├── Mediator-diagram.json
│       │   │   │   ├── Memento-diagram.json
│       │   │   │   ├── Mermaid_Analysis_Expert.json
│       │   │   │   ├── Mermaid_Class_Diagram_Generator.json
│       │   │   │   ├── Mermaid_Diagram_Generator.json
│       │   │   │   ├── Mermaid_Diagram_Modifier.json
│       │   │   │   ├── Modify_Mermaid_Diagram.json
│       │   │   │   ├── Observer-diagram.json
│       │   │   │   ├── Prototype-diagram.json
│       │   │   │   ├── Proxy-diagram.json
│       │   │   │   ├── README.json
│       │   │   │   ├── Singleton-diagram.json
│       │   │   │   ├── State-diagram.json
│       │   │   │   ├── Strategy-diagram.json
│       │   │   │   ├── TemplateMethod-diagram.json
│       │   │   │   ├── theme_dark.json
│       │   │   │   ├── theme_default.json
│       │   │   │   ├── theme_pastel.json
│       │   │   │   ├── theme_vibrant.json
│       │   │   │   └── Visitor-diagram.json
│       │   │   ├── Generate_Mermaid_Diagram.json
│       │   │   ├── generated_diagram.json
│       │   │   ├── index.json
│       │   │   ├── integration.json
│       │   │   ├── Iterator-diagram.json
│       │   │   ├── Mediator-diagram.json
│       │   │   ├── Memento-diagram.json
│       │   │   ├── Mermaid_Analysis_Expert.json
│       │   │   ├── Mermaid_Class_Diagram_Generator.json
│       │   │   ├── Mermaid_Diagram_Generator.json
│       │   │   ├── Mermaid_Diagram_Modifier.json
│       │   │   ├── Modify_Mermaid_Diagram.json
│       │   │   ├── Observer-diagram.json
│       │   │   ├── Prototype-diagram.json
│       │   │   ├── Proxy-diagram.json
│       │   │   ├── README.json
│       │   │   ├── Singleton-diagram.json
│       │   │   ├── State-diagram.json
│       │   │   ├── Strategy-diagram.json
│       │   │   ├── TemplateMethod-diagram.json
│       │   │   ├── theme_dark.json
│       │   │   ├── theme_default.json
│       │   │   ├── theme_pastel.json
│       │   │   ├── theme_vibrant.json
│       │   │   └── Visitor-diagram.json
│       │   └── types.py
│       ├── project_orchestration.py
│       ├── prompt_manager
│       │   ├── __init__.py
│       │   ├── loader.py
│       │   ├── manager.py
│       │   └── template.py
│       ├── prompts
│       │   ├── __dirname.json
│       │   ├── __image_1___describe_the_icon_in_one_sen___.json
│       │   ├── __init__.py
│       │   ├── __type.json
│       │   ├── _.json
│       │   ├── _DEFAULT_OPEN_DELIMITER.json
│       │   ├── _emojiRegex.json
│       │   ├── _UUID_CHARS.json
│       │   ├── a.json
│       │   ├── A.json
│       │   ├── Aa.json
│       │   ├── aAnnotationPadding.json
│       │   ├── absoluteThresholdGroup.json
│       │   ├── add.json
│       │   ├── ADDITIONAL_PROPERTY_FLAG.json
│       │   ├── Advanced_Multi-Server_Integration_Template.json
│       │   ├── allOptionsList.json
│       │   ├── analysis
│       │   │   ├── Data_Analysis_Template.json
│       │   │   ├── index.json
│       │   │   ├── Mermaid_Analysis_Expert.json
│       │   │   ├── Sequential_Data_Analysis_with_MCP_Integration.json
│       │   │   └── SOLID_Code_Analysis_Visualizer.json
│       │   ├── Analysis_Assistant.json
│       │   ├── Analyze_Mermaid_Diagram.json
│       │   ├── ANDROID_EVERGREEN_FIRST.json
│       │   ├── ANSI_ESCAPE_BELL.json
│       │   ├── architecture
│       │   │   ├── index.json
│       │   │   └── PromptCombiner_Interface.json
│       │   ├── Architecture_Design_Assistant.json
│       │   ├── argsTag.json
│       │   ├── ARROW.json
│       │   ├── assistant
│       │   │   ├── Analysis_Assistant.json
│       │   │   ├── Architecture_Design_Assistant.json
│       │   │   ├── Code_Refactoring_Assistant.json
│       │   │   ├── Code_Review_Assistant.json
│       │   │   ├── Database_Query_Assistant.json
│       │   │   ├── Debugging_Assistant.json
│       │   │   ├── Foresight_Assistant.json
│       │   │   ├── index.json
│       │   │   ├── MCP_Integration_Assistant.json
│       │   │   ├── Project_Analysis_Assistant.json
│       │   │   └── Research_Assistant.json
│       │   ├── astralRange.json
│       │   ├── at.json
│       │   ├── authorization_endpoint.json
│       │   ├── b.json
│       │   ├── BABELIGNORE_FILENAME.json
│       │   ├── BACKSLASH.json
│       │   ├── backupId.json
│       │   ├── BANG.json
│       │   ├── BASE64_MAP.json
│       │   ├── baseFlags.json
│       │   ├── Basic_Template.json
│       │   ├── bgModel.json
│       │   ├── bignum.json
│       │   ├── blockKeywordsStr.json
│       │   ├── BOMChar.json
│       │   ├── boundary.json
│       │   ├── brackets.json
│       │   ├── BROWSER_VAR.json
│       │   ├── bt.json
│       │   ├── BUILTIN.json
│       │   ├── BULLET.json
│       │   ├── c.json
│       │   ├── C.json
│       │   ├── CACHE_VERSION.json
│       │   ├── cacheControl.json
│       │   ├── cacheProp.json
│       │   ├── category.py
│       │   ├── CHANGE_EVENT.json
│       │   ├── CHAR_CODE_0.json
│       │   ├── chars.json
│       │   ├── cjsPattern.json
│       │   ├── cKeywords.json
│       │   ├── classForPercent.json
│       │   ├── classStr.json
│       │   ├── clientFirstMessageBare.json
│       │   ├── cmd.json
│       │   ├── Code_Diagram_Documentation_Creator.json
│       │   ├── Code_Refactoring_Assistant.json
│       │   ├── Code_Review_Assistant.json
│       │   ├── code.json
│       │   ├── coding
│       │   │   ├── __dirname.json
│       │   │   ├── _.json
│       │   │   ├── _DEFAULT_OPEN_DELIMITER.json
│       │   │   ├── _emojiRegex.json
│       │   │   ├── _UUID_CHARS.json
│       │   │   ├── a.json
│       │   │   ├── A.json
│       │   │   ├── aAnnotationPadding.json
│       │   │   ├── absoluteThresholdGroup.json
│       │   │   ├── add.json
│       │   │   ├── ADDITIONAL_PROPERTY_FLAG.json
│       │   │   ├── allOptionsList.json
│       │   │   ├── ANDROID_EVERGREEN_FIRST.json
│       │   │   ├── ANSI_ESCAPE_BELL.json
│       │   │   ├── argsTag.json
│       │   │   ├── ARROW.json
│       │   │   ├── astralRange.json
│       │   │   ├── at.json
│       │   │   ├── authorization_endpoint.json
│       │   │   ├── BABELIGNORE_FILENAME.json
│       │   │   ├── BACKSLASH.json
│       │   │   ├── BANG.json
│       │   │   ├── BASE64_MAP.json
│       │   │   ├── baseFlags.json
│       │   │   ├── bgModel.json
│       │   │   ├── bignum.json
│       │   │   ├── blockKeywordsStr.json
│       │   │   ├── BOMChar.json
│       │   │   ├── boundary.json
│       │   │   ├── brackets.json
│       │   │   ├── BROWSER_VAR.json
│       │   │   ├── bt.json
│       │   │   ├── BUILTIN.json
│       │   │   ├── BULLET.json
│       │   │   ├── c.json
│       │   │   ├── C.json
│       │   │   ├── CACHE_VERSION.json
│       │   │   ├── cacheControl.json
│       │   │   ├── cacheProp.json
│       │   │   ├── CHANGE_EVENT.json
│       │   │   ├── CHAR_CODE_0.json
│       │   │   ├── chars.json
│       │   │   ├── cjsPattern.json
│       │   │   ├── cKeywords.json
│       │   │   ├── classForPercent.json
│       │   │   ├── classStr.json
│       │   │   ├── clientFirstMessageBare.json
│       │   │   ├── cmd.json
│       │   │   ├── code.json
│       │   │   ├── colorCode.json
│       │   │   ├── comma.json
│       │   │   ├── command.json
│       │   │   ├── configJsContent.json
│       │   │   ├── connectionString.json
│       │   │   ├── cssClassStr.json
│       │   │   ├── currentBoundaryParse.json
│       │   │   ├── d.json
│       │   │   ├── data.json
│       │   │   ├── DATA.json
│       │   │   ├── dataWebpackPrefix.json
│       │   │   ├── debug.json
│       │   │   ├── decodeStateVectorV2.json
│       │   │   ├── DEFAULT_DELIMITER.json
│       │   │   ├── DEFAULT_DIAGRAM_DIRECTION.json
│       │   │   ├── DEFAULT_JS_PATTERN.json
│       │   │   ├── DEFAULT_LOG_TARGET.json
│       │   │   ├── defaultHelpOpt.json
│       │   │   ├── defaultHost.json
│       │   │   ├── deferY18nLookupPrefix.json
│       │   │   ├── DELIM.json
│       │   │   ├── delimiter.json
│       │   │   ├── DEPRECATION.json
│       │   │   ├── destMain.json
│       │   │   ├── DID_NOT_THROW.json
│       │   │   ├── direction.json
│       │   │   ├── displayValue.json
│       │   │   ├── DNS.json
│       │   │   ├── doc.json
│       │   │   ├── DOCUMENTATION_NOTE.json
│       │   │   ├── DOT.json
│       │   │   ├── DOTS.json
│       │   │   ├── dummyCompoundId.json
│       │   │   ├── e.json
│       │   │   ├── E.json
│       │   │   ├── earlyHintsLink.json
│       │   │   ├── elide.json
│       │   │   ├── EMPTY.json
│       │   │   ├── end.json
│       │   │   ├── endpoint.json
│       │   │   ├── environment.json
│       │   │   ├── ERR_CODE.json
│       │   │   ├── errMessage.json
│       │   │   ├── errMsg.json
│       │   │   ├── ERROR_MESSAGE.json
│       │   │   ├── error.json
│       │   │   ├── ERROR.json
│       │   │   ├── ERRORCLASS.json
│       │   │   ├── errorMessage.json
│       │   │   ├── es6Default.json
│       │   │   ├── ESC.json
│       │   │   ├── Escapable.json
│       │   │   ├── escapedChar.json
│       │   │   ├── escapeFuncStr.json
│       │   │   ├── escSlash.json
│       │   │   ├── ev.json
│       │   │   ├── event.json
│       │   │   ├── execaMessage.json
│       │   │   ├── EXPECTED_LABEL.json
│       │   │   ├── expected.json
│       │   │   ├── expectedString.json
│       │   │   ├── expression1.json
│       │   │   ├── EXTENSION.json
│       │   │   ├── f.json
│       │   │   ├── FAIL_TEXT.json
│       │   │   ├── FILE_BROWSER_FACTORY.json
│       │   │   ├── fill.json
│       │   │   ├── findPackageJson.json
│       │   │   ├── fnKey.json
│       │   │   ├── FORMAT.json
│       │   │   ├── formatted.json
│       │   │   ├── from.json
│       │   │   ├── fullpaths.json
│       │   │   ├── FUNC_ERROR_TEXT.json
│       │   │   ├── GenStateSuspendedStart.json
│       │   │   ├── GENSYNC_EXPECTED_START.json
│       │   │   ├── gutter.json
│       │   │   ├── h.json
│       │   │   ├── handlerFuncName.json
│       │   │   ├── HASH_UNDEFINED.json
│       │   │   ├── head.json
│       │   │   ├── helpMessage.json
│       │   │   ├── HINT_ARG.json
│       │   │   ├── HOOK_RETURNED_NOTHING_ERROR_MESSAGE.json
│       │   │   ├── i.json
│       │   │   ├── id.json
│       │   │   ├── identifier.json
│       │   │   ├── Identifier.json
│       │   │   ├── INDENT.json
│       │   │   ├── indentation.json
│       │   │   ├── index.json
│       │   │   ├── INDIRECTION_FRAGMENT.json
│       │   │   ├── input.json
│       │   │   ├── inputText.json
│       │   │   ├── insert.json
│       │   │   ├── insertPromptQuery.json
│       │   │   ├── INSPECT_MAX_BYTES.json
│       │   │   ├── intToCharMap.json
│       │   │   ├── IS_ITERABLE_SENTINEL.json
│       │   │   ├── IS_KEYED_SENTINEL.json
│       │   │   ├── isConfigType.json
│       │   │   ├── isoSentinel.json
│       │   │   ├── isSourceNode.json
│       │   │   ├── j.json
│       │   │   ├── JAKE_CMD.json
│       │   │   ├── JEST_GLOBAL_NAME.json
│       │   │   ├── JEST_GLOBALS_MODULE_NAME.json
│       │   │   ├── JSON_SYNTAX_CHAR.json
│       │   │   ├── json.json
│       │   │   ├── jsonType.json
│       │   │   ├── jupyter_namespaceObject.json
│       │   │   ├── JUPYTERLAB_DOCMANAGER_PLUGIN_ID.json
│       │   │   ├── k.json
│       │   │   ├── KERNEL_STATUS_ERROR_CLASS.json
│       │   │   ├── key.json
│       │   │   ├── l.json
│       │   │   ├── labelId.json
│       │   │   ├── LATEST_PROTOCOL_VERSION.json
│       │   │   ├── LETTERDASHNUMBER.json
│       │   │   ├── LF.json
│       │   │   ├── LIMIT_REPLACE_NODE.json
│       │   │   ├── logTime.json
│       │   │   ├── lstatkey.json
│       │   │   ├── lt.json
│       │   │   ├── m.json
│       │   │   ├── maliciousPayload.json
│       │   │   ├── mask.json
│       │   │   ├── match.json
│       │   │   ├── matchingDelim.json
│       │   │   ├── MAXIMUM_MESSAGE_SIZE.json
│       │   │   ├── mdcContent.json
│       │   │   ├── MERMAID_DOM_ID_PREFIX.json
│       │   │   ├── message.json
│       │   │   ├── messages.json
│       │   │   ├── meth.json
│       │   │   ├── minimatch.json
│       │   │   ├── MOCK_CONSTRUCTOR_NAME.json
│       │   │   ├── MOCKS_PATTERN.json
│       │   │   ├── moduleDirectory.json
│       │   │   ├── msg.json
│       │   │   ├── mtr.json
│       │   │   ├── multipartType.json
│       │   │   ├── n.json
│       │   │   ├── N.json
│       │   │   ├── name.json
│       │   │   ├── NATIVE_PLATFORM.json
│       │   │   ├── newUrl.json
│       │   │   ├── NM.json
│       │   │   ├── NO_ARGUMENTS.json
│       │   │   ├── NO_DIFF_MESSAGE.json
│       │   │   ├── NODE_MODULES.json
│       │   │   ├── nodeInternalPrefix.json
│       │   │   ├── nonASCIIidentifierStartChars.json
│       │   │   ├── nonKey.json
│       │   │   ├── NOT_A_DOT.json
│       │   │   ├── notCharacterOrDash.json
│       │   │   ├── notebookURL.json
│       │   │   ├── notSelector.json
│       │   │   ├── nullTag.json
│       │   │   ├── num.json
│       │   │   ├── NUMBER.json
│       │   │   ├── o.json
│       │   │   ├── O.json
│       │   │   ├── octChar.json
│       │   │   ├── octetStreamType.json
│       │   │   ├── operators.json
│       │   │   ├── out.json
│       │   │   ├── OUTSIDE_JEST_VM_PROTOCOL.json
│       │   │   ├── override.json
│       │   │   ├── p.json
│       │   │   ├── PACKAGE_FILENAME.json
│       │   │   ├── PACKAGE_JSON.json
│       │   │   ├── packageVersion.json
│       │   │   ├── paddedNumber.json
│       │   │   ├── page.json
│       │   │   ├── parseClass.json
│       │   │   ├── path.json
│       │   │   ├── pathExt.json
│       │   │   ├── pattern.json
│       │   │   ├── PatternBoolean.json
│       │   │   ├── pBuiltins.json
│       │   │   ├── pFloatForm.json
│       │   │   ├── pkg.json
│       │   │   ├── PLUGIN_ID_DOC_MANAGER.json
│       │   │   ├── plusChar.json
│       │   │   ├── PN_CHARS.json
│       │   │   ├── point.json
│       │   │   ├── prefix.json
│       │   │   ├── PRETTY_PLACEHOLDER.json
│       │   │   ├── property_prefix.json
│       │   │   ├── pubkey256.json
│       │   │   ├── Q.json
│       │   │   ├── qmark.json
│       │   │   ├── QO.json
│       │   │   ├── query.json
│       │   │   ├── querystringType.json
│       │   │   ├── queryText.json
│       │   │   ├── r.json
│       │   │   ├── R.json
│       │   │   ├── rangeStart.json
│       │   │   ├── re.json
│       │   │   ├── reI.json
│       │   │   ├── REQUIRED_FIELD_SYMBOL.json
│       │   │   ├── reserve.json
│       │   │   ├── resolvedDestination.json
│       │   │   ├── resolverDir.json
│       │   │   ├── responseType.json
│       │   │   ├── result.json
│       │   │   ├── ROOT_DESCRIBE_BLOCK_NAME.json
│       │   │   ├── ROOT_NAMESPACE_NAME.json
│       │   │   ├── ROOT_TASK_NAME.json
│       │   │   ├── route.json
│       │   │   ├── RUNNING_TEXT.json
│       │   │   ├── s.json
│       │   │   ├── SCHEMA_PATH.json
│       │   │   ├── se.json
│       │   │   ├── SEARCHABLE_CLASS.json
│       │   │   ├── secret.json
│       │   │   ├── selector.json
│       │   │   ├── SEMVER_SPEC_VERSION.json
│       │   │   ├── sensitiveHeaders.json
│       │   │   ├── sep.json
│       │   │   ├── separator.json
│       │   │   ├── SHAPE_STATE.json
│       │   │   ├── shape.json
│       │   │   ├── SHARED.json
│       │   │   ├── short.json
│       │   │   ├── side.json
│       │   │   ├── SNAPSHOT_VERSION.json
│       │   │   ├── SOURCE_MAPPING_PREFIX.json
│       │   │   ├── source.json
│       │   │   ├── sourceMapContent.json
│       │   │   ├── SPACE_SYMBOL.json
│       │   │   ├── SPACE.json
│       │   │   ├── sqlKeywords.json
│       │   │   ├── sranges.json
│       │   │   ├── st.json
│       │   │   ├── ST.json
│       │   │   ├── stack.json
│       │   │   ├── START_HIDING.json
│       │   │   ├── START_OF_LINE.json
│       │   │   ├── startNoTraversal.json
│       │   │   ├── STATES.json
│       │   │   ├── stats.json
│       │   │   ├── statSync.json
│       │   │   ├── storageStatus.json
│       │   │   ├── storageType.json
│       │   │   ├── str.json
│       │   │   ├── stringifiedObject.json
│       │   │   ├── stringPath.json
│       │   │   ├── stringResult.json
│       │   │   ├── stringTag.json
│       │   │   ├── strValue.json
│       │   │   ├── style.json
│       │   │   ├── SUB_NAME.json
│       │   │   ├── subkey.json
│       │   │   ├── SUBPROTOCOL.json
│       │   │   ├── SUITE_NAME.json
│       │   │   ├── symbolPattern.json
│       │   │   ├── symbolTag.json
│       │   │   ├── t.json
│       │   │   ├── T.json
│       │   │   ├── templateDir.json
│       │   │   ├── tempName.json
│       │   │   ├── text.json
│       │   │   ├── time.json
│       │   │   ├── titleSeparator.json
│       │   │   ├── tmpl.json
│       │   │   ├── tn.json
│       │   │   ├── toValue.json
│       │   │   ├── transform.json
│       │   │   ├── trustProxyDefaultSymbol.json
│       │   │   ├── typeArgumentsKey.json
│       │   │   ├── typeKey.json
│       │   │   ├── typeMessage.json
│       │   │   ├── typesRegistryPackageName.json
│       │   │   ├── u.json
│       │   │   ├── UNDEFINED.json
│       │   │   ├── unit.json
│       │   │   ├── UNMATCHED_SURROGATE_PAIR_REPLACE.json
│       │   │   ├── ur.json
│       │   │   ├── USAGE.json
│       │   │   ├── value.json
│       │   │   ├── Vr.json
│       │   │   ├── watchmanURL.json
│       │   │   ├── webkit.json
│       │   │   ├── xhtml.json
│       │   │   ├── XP_DEFAULT_PATHEXT.json
│       │   │   └── y.json
│       │   ├── Collaborative_Development_with_MCP_Integration.json
│       │   ├── colorCode.json
│       │   ├── comma.json
│       │   ├── command.json
│       │   ├── completionShTemplate.json
│       │   ├── configJsContent.json
│       │   ├── connectionString.json
│       │   ├── Consolidated_TypeScript_Interfaces_Template.json
│       │   ├── Could_you_interpret_the_assumed_applicat___.json
│       │   ├── cssClassStr.json
│       │   ├── currentBoundaryParse.json
│       │   ├── d.json
│       │   ├── Data_Analysis_Template.json
│       │   ├── data.json
│       │   ├── DATA.json
│       │   ├── Database_Query_Assistant.json
│       │   ├── dataWebpackPrefix.json
│       │   ├── debug.json
│       │   ├── Debugging_Assistant.json
│       │   ├── decodeStateVectorV2.json
│       │   ├── DEFAULT_DELIMITER.json
│       │   ├── DEFAULT_DIAGRAM_DIRECTION.json
│       │   ├── DEFAULT_INDENT.json
│       │   ├── DEFAULT_JS_PATTERN.json
│       │   ├── DEFAULT_LOG_TARGET.json
│       │   ├── defaultHelpOpt.json
│       │   ├── defaultHost.json
│       │   ├── deferY18nLookupPrefix.json
│       │   ├── DELIM.json
│       │   ├── delimiter.json
│       │   ├── DEPRECATION.json
│       │   ├── DESCENDING.json
│       │   ├── destMain.json
│       │   ├── development
│       │   │   ├── Collaborative_Development_with_MCP_Integration.json
│       │   │   ├── Consolidated_TypeScript_Interfaces_Template.json
│       │   │   ├── Development_Workflow.json
│       │   │   ├── index.json
│       │   │   ├── MCP_Server_Development_Prompt_Combiner.json
│       │   │   └── Monorepo_Migration_and_Code_Organization_Guide.json
│       │   ├── Development_System_Prompt.json
│       │   ├── Development_Workflow.json
│       │   ├── devops
│       │   │   ├── Docker_Compose_Prompt_Combiner.json
│       │   │   ├── Docker_Containerization_Guide.json
│       │   │   └── index.json
│       │   ├── DID_NOT_THROW.json
│       │   ├── direction.json
│       │   ├── displayValue.json
│       │   ├── DNS.json
│       │   ├── doc.json
│       │   ├── Docker_Compose_Prompt_Combiner.json
│       │   ├── Docker_Containerization_Guide.json
│       │   ├── Docker_MCP_Servers_Orchestration_Guide.json
│       │   ├── DOCUMENTATION_NOTE.json
│       │   ├── DOT.json
│       │   ├── DOTS.json
│       │   ├── dummyCompoundId.json
│       │   ├── e.json
│       │   ├── E.json
│       │   ├── earlyHintsLink.json
│       │   ├── elide.json
│       │   ├── EMPTY.json
│       │   ├── encoded.json
│       │   ├── end.json
│       │   ├── endpoint.json
│       │   ├── environment.json
│       │   ├── ERR_CODE.json
│       │   ├── errMessage.json
│       │   ├── errMsg.json
│       │   ├── ERROR_MESSAGE.json
│       │   ├── error.json
│       │   ├── ERROR.json
│       │   ├── ERRORCLASS.json
│       │   ├── errorMessage.json
│       │   ├── es6Default.json
│       │   ├── ESC.json
│       │   ├── Escapable.json
│       │   ├── escapedChar.json
│       │   ├── escapeFuncStr.json
│       │   ├── escSlash.json
│       │   ├── ev.json
│       │   ├── event.json
│       │   ├── execaMessage.json
│       │   ├── EXPECTED_LABEL.json
│       │   ├── expected.json
│       │   ├── expectedString.json
│       │   ├── expression1.json
│       │   ├── EXTENSION.json
│       │   ├── f.json
│       │   ├── FAIL_TEXT.json
│       │   ├── FILE_BROWSER_FACTORY.json
│       │   ├── fill.json
│       │   ├── findPackageJson.json
│       │   ├── fnKey.json
│       │   ├── Foresight_Assistant.json
│       │   ├── FORMAT.json
│       │   ├── formatted.json
│       │   ├── from.json
│       │   ├── fullpaths.json
│       │   ├── FUNC_ERROR_TEXT.json
│       │   ├── general
│       │   │   └── index.json
│       │   ├── Generate_different_types_of_questions_ab___.json
│       │   ├── Generate_Mermaid_Diagram.json
│       │   ├── GenStateSuspendedStart.json
│       │   ├── GENSYNC_EXPECTED_START.json
│       │   ├── GitHub_Repository_Explorer.json
│       │   ├── gutter.json
│       │   ├── h.json
│       │   ├── handlerFuncName.json
│       │   ├── HASH_UNDEFINED.json
│       │   ├── head.json
│       │   ├── helpMessage.json
│       │   ├── HINT_ARG.json
│       │   ├── HOOK_RETURNED_NOTHING_ERROR_MESSAGE.json
│       │   ├── i.json
│       │   ├── id.json
│       │   ├── identifier.json
│       │   ├── Identifier.json
│       │   ├── INDENT.json
│       │   ├── indentation.json
│       │   ├── index.json
│       │   ├── INDIRECTION_FRAGMENT.json
│       │   ├── Initialize_project_setup_for_a_new_micro___.json
│       │   ├── input.json
│       │   ├── inputText.json
│       │   ├── insert.json
│       │   ├── insertPromptQuery.json
│       │   ├── INSPECT_MAX_BYTES.json
│       │   ├── install_dependencies__build__run__test____.json
│       │   ├── intToCharMap.json
│       │   ├── IS_ITERABLE_SENTINEL.json
│       │   ├── IS_KEYED_SENTINEL.json
│       │   ├── isConfigType.json
│       │   ├── isoSentinel.json
│       │   ├── isSourceNode.json
│       │   ├── j.json
│       │   ├── J.json
│       │   ├── JAKE_CMD.json
│       │   ├── JEST_GLOBAL_NAME.json
│       │   ├── JEST_GLOBALS_MODULE_NAME.json
│       │   ├── JSON_SYNTAX_CHAR.json
│       │   ├── json.json
│       │   ├── jsonType.json
│       │   ├── jupyter_namespaceObject.json
│       │   ├── JUPYTERLAB_DOCMANAGER_PLUGIN_ID.json
│       │   ├── k.json
│       │   ├── KERNEL_STATUS_ERROR_CLASS.json
│       │   ├── key.json
│       │   ├── l.json
│       │   ├── labelId.json
│       │   ├── LATEST_PROTOCOL_VERSION.json
│       │   ├── LETTERDASHNUMBER.json
│       │   ├── LF.json
│       │   ├── LIMIT_REPLACE_NODE.json
│       │   ├── LINE_FEED.json
│       │   ├── logTime.json
│       │   ├── lstatkey.json
│       │   ├── lt.json
│       │   ├── m.json
│       │   ├── maliciousPayload.json
│       │   ├── manager.py
│       │   ├── marker.json
│       │   ├── mask.json
│       │   ├── match.json
│       │   ├── matchingDelim.json
│       │   ├── MAXIMUM_MESSAGE_SIZE.json
│       │   ├── MCP_Integration_Assistant.json
│       │   ├── MCP_Resources_Explorer.json
│       │   ├── MCP_Resources_Integration_Guide.json
│       │   ├── MCP_Server_Development_Prompt_Combiner.json
│       │   ├── MCP_Server_Integration_Guide.json
│       │   ├── mcp-code-generator.json
│       │   ├── mdcContent.json
│       │   ├── Mermaid_Analysis_Expert.json
│       │   ├── Mermaid_Class_Diagram_Generator.json
│       │   ├── Mermaid_Diagram_Generator.json
│       │   ├── Mermaid_Diagram_Modifier.json
│       │   ├── MERMAID_DOM_ID_PREFIX.json
│       │   ├── message.json
│       │   ├── messages.json
│       │   ├── meth.json
│       │   ├── minimatch.json
│       │   ├── MOBILE_QUERY.json
│       │   ├── MOCK_CONSTRUCTOR_NAME.json
│       │   ├── MOCKS_PATTERN.json
│       │   ├── Modify_Mermaid_Diagram.json
│       │   ├── moduleDirectory.json
│       │   ├── Monorepo_Migration_and_Code_Organization_Guide.json
│       │   ├── msg.json
│       │   ├── mtr.json
│       │   ├── Multi-Resource_Context_Assistant.json
│       │   ├── multipartType.json
│       │   ├── n.json
│       │   ├── N.json
│       │   ├── name.json
│       │   ├── NATIVE_PLATFORM.json
│       │   ├── newUrl.json
│       │   ├── NM.json
│       │   ├── NO_ARGUMENTS.json
│       │   ├── NO_DIFF_MESSAGE.json
│       │   ├── NODE_MODULES.json
│       │   ├── nodeInternalPrefix.json
│       │   ├── nonASCIIidentifierStartChars.json
│       │   ├── nonKey.json
│       │   ├── NOT_A_DOT.json
│       │   ├── notCharacterOrDash.json
│       │   ├── notebookURL.json
│       │   ├── notSelector.json
│       │   ├── nullTag.json
│       │   ├── num.json
│       │   ├── NUMBER.json
│       │   ├── o.json
│       │   ├── O.json
│       │   ├── octChar.json
│       │   ├── octetStreamType.json
│       │   ├── operators.json
│       │   ├── other
│       │   │   ├── __image_1___describe_the_icon_in_one_sen___.json
│       │   │   ├── __type.json
│       │   │   ├── Advanced_Multi-Server_Integration_Template.json
│       │   │   ├── Analyze_Mermaid_Diagram.json
│       │   │   ├── Basic_Template.json
│       │   │   ├── Code_Diagram_Documentation_Creator.json
│       │   │   ├── Collaborative_Development_with_MCP_Integration.json
│       │   │   ├── completionShTemplate.json
│       │   │   ├── Could_you_interpret_the_assumed_applicat___.json
│       │   │   ├── DEFAULT_INDENT.json
│       │   │   ├── Docker_MCP_Servers_Orchestration_Guide.json
│       │   │   ├── Generate_different_types_of_questions_ab___.json
│       │   │   ├── Generate_Mermaid_Diagram.json
│       │   │   ├── GitHub_Repository_Explorer.json
│       │   │   ├── index.json
│       │   │   ├── Initialize_project_setup_for_a_new_micro___.json
│       │   │   ├── install_dependencies__build__run__test____.json
│       │   │   ├── LINE_FEED.json
│       │   │   ├── MCP_Resources_Explorer.json
│       │   │   ├── MCP_Resources_Integration_Guide.json
│       │   │   ├── MCP_Server_Integration_Guide.json
│       │   │   ├── mcp-code-generator.json
│       │   │   ├── Mermaid_Class_Diagram_Generator.json
│       │   │   ├── Mermaid_Diagram_Generator.json
│       │   │   ├── Mermaid_Diagram_Modifier.json
│       │   │   ├── Modify_Mermaid_Diagram.json
│       │   │   ├── Multi-Resource_Context_Assistant.json
│       │   │   ├── output.json
│       │   │   ├── sseUrl.json
│       │   │   ├── string.json
│       │   │   ├── Task_List_Helper.json
│       │   │   ├── Template-Based_MCP_Integration.json
│       │   │   ├── Test_Prompt.json
│       │   │   ├── type.json
│       │   │   ├── VERSION.json
│       │   │   ├── WIN_SLASH.json
│       │   │   └── You_are_limited_to_respond_Yes_or_No_onl___.json
│       │   ├── out.json
│       │   ├── output.json
│       │   ├── OUTSIDE_JEST_VM_PROTOCOL.json
│       │   ├── override.json
│       │   ├── p.json
│       │   ├── PACKAGE_FILENAME.json
│       │   ├── PACKAGE_JSON.json
│       │   ├── packageVersion.json
│       │   ├── paddedNumber.json
│       │   ├── page.json
│       │   ├── parseClass.json
│       │   ├── PATH_NODE_MODULES.json
│       │   ├── path.json
│       │   ├── pathExt.json
│       │   ├── pattern.json
│       │   ├── PatternBoolean.json
│       │   ├── pBuiltins.json
│       │   ├── pFloatForm.json
│       │   ├── pkg.json
│       │   ├── PLUGIN_ID_DOC_MANAGER.json
│       │   ├── plusChar.json
│       │   ├── PN_CHARS.json
│       │   ├── point.json
│       │   ├── prefix.json
│       │   ├── PRETTY_PLACEHOLDER.json
│       │   ├── Project_Analysis_Assistant.json
│       │   ├── ProjectsUpdatedInBackgroundEvent.json
│       │   ├── PromptCombiner_Interface.json
│       │   ├── promptId.json
│       │   ├── property_prefix.json
│       │   ├── pubkey256.json
│       │   ├── Q.json
│       │   ├── qmark.json
│       │   ├── QO.json
│       │   ├── query.json
│       │   ├── querystringType.json
│       │   ├── queryText.json
│       │   ├── r.json
│       │   ├── R.json
│       │   ├── rangeStart.json
│       │   ├── re.json
│       │   ├── reI.json
│       │   ├── REQUIRED_FIELD_SYMBOL.json
│       │   ├── Research_Assistant.json
│       │   ├── reserve.json
│       │   ├── resolvedDestination.json
│       │   ├── resolverDir.json
│       │   ├── responseType.json
│       │   ├── result.json
│       │   ├── ROOT_DESCRIBE_BLOCK_NAME.json
│       │   ├── ROOT_NAMESPACE_NAME.json
│       │   ├── ROOT_TASK_NAME.json
│       │   ├── route.json
│       │   ├── RUNNING_TEXT.json
│       │   ├── RXstyle.json
│       │   ├── s.json
│       │   ├── SCHEMA_PATH.json
│       │   ├── schemaQuery.json
│       │   ├── se.json
│       │   ├── SEARCHABLE_CLASS.json
│       │   ├── secret.json
│       │   ├── selector.json
│       │   ├── SEMVER_SPEC_VERSION.json
│       │   ├── sensitiveHeaders.json
│       │   ├── sep.json
│       │   ├── separator.json
│       │   ├── Sequential_Data_Analysis_with_MCP_Integration.json
│       │   ├── SHAPE_STATE.json
│       │   ├── shape.json
│       │   ├── SHARED.json
│       │   ├── short.json
│       │   ├── side.json
│       │   ├── SNAPSHOT_VERSION.json
│       │   ├── SOLID_Code_Analysis_Visualizer.json
│       │   ├── SOURCE_MAPPING_PREFIX.json
│       │   ├── source.json
│       │   ├── sourceMapContent.json
│       │   ├── SPACE_SYMBOL.json
│       │   ├── SPACE.json
│       │   ├── sqlKeywords.json
│       │   ├── sranges.json
│       │   ├── sseUrl.json
│       │   ├── st.json
│       │   ├── ST.json
│       │   ├── stack.json
│       │   ├── START_HIDING.json
│       │   ├── START_OF_LINE.json
│       │   ├── startNoTraversal.json
│       │   ├── STATES.json
│       │   ├── stats.json
│       │   ├── statSync.json
│       │   ├── status.json
│       │   ├── storageStatus.json
│       │   ├── storageType.json
│       │   ├── str.json
│       │   ├── string.json
│       │   ├── stringifiedObject.json
│       │   ├── stringPath.json
│       │   ├── stringResult.json
│       │   ├── stringTag.json
│       │   ├── strValue.json
│       │   ├── style.json
│       │   ├── SUB_NAME.json
│       │   ├── subkey.json
│       │   ├── SUBPROTOCOL.json
│       │   ├── SUITE_NAME.json
│       │   ├── symbolPattern.json
│       │   ├── symbolTag.json
│       │   ├── system
│       │   │   ├── Aa.json
│       │   │   ├── b.json
│       │   │   ├── Development_System_Prompt.json
│       │   │   ├── index.json
│       │   │   ├── marker.json
│       │   │   ├── PATH_NODE_MODULES.json
│       │   │   ├── ProjectsUpdatedInBackgroundEvent.json
│       │   │   ├── RXstyle.json
│       │   │   ├── status.json
│       │   │   └── versionMajorMinor.json
│       │   ├── t.json
│       │   ├── T.json
│       │   ├── Task_List_Helper.json
│       │   ├── Template-Based_MCP_Integration.json
│       │   ├── template.py
│       │   ├── templateDir.json
│       │   ├── tempName.json
│       │   ├── Test_Prompt.json
│       │   ├── text.json
│       │   ├── time.json
│       │   ├── titleSeparator.json
│       │   ├── tmpl.json
│       │   ├── tn.json
│       │   ├── TOPBAR_FACTORY.json
│       │   ├── toValue.json
│       │   ├── transform.json
│       │   ├── trustProxyDefaultSymbol.json
│       │   ├── txt.json
│       │   ├── type.json
│       │   ├── typeArgumentsKey.json
│       │   ├── typeKey.json
│       │   ├── typeMessage.json
│       │   ├── typesRegistryPackageName.json
│       │   ├── u.json
│       │   ├── UNDEFINED.json
│       │   ├── unit.json
│       │   ├── UNMATCHED_SURROGATE_PAIR_REPLACE.json
│       │   ├── ur.json
│       │   ├── usage.json
│       │   ├── USAGE.json
│       │   ├── user
│       │   │   ├── backupId.json
│       │   │   ├── DESCENDING.json
│       │   │   ├── encoded.json
│       │   │   ├── index.json
│       │   │   ├── J.json
│       │   │   ├── MOBILE_QUERY.json
│       │   │   ├── promptId.json
│       │   │   ├── schemaQuery.json
│       │   │   ├── TOPBAR_FACTORY.json
│       │   │   ├── txt.json
│       │   │   └── usage.json
│       │   ├── value.json
│       │   ├── VERSION.json
│       │   ├── version.py
│       │   ├── versionMajorMinor.json
│       │   ├── Vr.json
│       │   ├── watchmanURL.json
│       │   ├── webkit.json
│       │   ├── WIN_SLASH.json
│       │   ├── xhtml.json
│       │   ├── XP_DEFAULT_PATHEXT.json
│       │   ├── y.json
│       │   └── You_are_limited_to_respond_Yes_or_No_onl___.json
│       ├── resources
│       │   ├── __init__.py
│       │   ├── code_examples
│       │   │   └── index.json
│       │   ├── config
│       │   │   └── index.json
│       │   ├── documentation
│       │   │   └── index.json
│       │   ├── images
│       │   │   └── index.json
│       │   ├── index.json
│       │   └── other
│       │       └── index.json
│       ├── server.py
│       ├── templates
│       │   ├── __init__.py
│       │   ├── AbstractFactory.json
│       │   ├── Adapter.json
│       │   ├── base.py
│       │   ├── Builder.json
│       │   ├── Chain.json
│       │   ├── Command.json
│       │   ├── component
│       │   │   ├── AbstractFactory.json
│       │   │   ├── Adapter.json
│       │   │   ├── Builder.json
│       │   │   ├── Chain.json
│       │   │   ├── Command.json
│       │   │   ├── Decorator.json
│       │   │   ├── Facade.json
│       │   │   ├── Factory.json
│       │   │   ├── Iterator.json
│       │   │   ├── Mediator.json
│       │   │   ├── Memento.json
│       │   │   ├── Observer.json
│       │   │   ├── Prototype.json
│       │   │   ├── Proxy.json
│       │   │   ├── Singleton.json
│       │   │   ├── State.json
│       │   │   ├── Strategy.json
│       │   │   ├── TemplateMethod.json
│       │   │   └── Visitor.json
│       │   ├── component.py
│       │   ├── Decorator.json
│       │   ├── Facade.json
│       │   ├── Factory.json
│       │   ├── index.json
│       │   ├── Iterator.json
│       │   ├── manager.py
│       │   ├── Mediator.json
│       │   ├── Memento.json
│       │   ├── Observer.json
│       │   ├── project.py
│       │   ├── Prototype.json
│       │   ├── Proxy.json
│       │   ├── renderer.py
│       │   ├── Singleton.json
│       │   ├── State.json
│       │   ├── Strategy.json
│       │   ├── template_manager.py
│       │   ├── TemplateMethod.json
│       │   ├── types.py
│       │   └── Visitor.json
│       └── utils
│           └── __init__.py
├── SUMMARY.md
├── TASK_COMPLETION_SUMMARY.md
├── templates
│   └── openssl
│       ├── files
│       │   ├── CMakeLists.txt.jinja2
│       │   ├── conanfile.py.jinja2
│       │   ├── main.cpp.jinja2
│       │   └── README.md.jinja2
│       ├── openssl-consumer.json
│       └── template.json
├── test_openssl_integration.sh
├── test_package
│   └── conanfile.py
└── tests
    ├── __init__.py
    ├── conftest.py
    ├── integration
    │   ├── test_core_integration.py
    │   ├── test_mermaid_integration.py
    │   ├── test_prompt_manager_integration.py
    │   └── test_server_integration.py
    ├── test_aws_mcp.py
    ├── test_base_classes.py
    ├── test_config.py
    ├── test_exceptions.py
    ├── test_mermaid.py
    ├── test_prompts.py
    └── test_templates.py
```

# Files

--------------------------------------------------------------------------------
/src/mcp_project_orchestrator/prompts/Docker_MCP_Servers_Orchestration_Guide.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "Docker MCP Servers Orchestration Guide",
 3 |   "description": "A comprehensive guide for setting up, configuring, and orchestrating multiple MCP servers in a Docker environment",
 4 |   "type": "prompt",
 5 |   "category": "other",
 6 |   "content": "# Docker MCP Servers Orchestration Guide\\n\\n## Overview\\n\\nThis guide will help you set up a containerized environment with multiple integrated MCP servers for {{use_case}}. The architecture leverages Docker Compose to orchestrate these servers, providing a robust foundation for AI-powered applications with enhanced context capabilities.\\n\\n## Prerequisites\\n\\n- Docker and Docker Compose installed\\n- Basic understanding of containerization concepts\\n- Git for cloning repositories\\n- {{additional_prerequisites}}\\n\\n## Core MCP Servers Architecture\\n\\n```mermaid\\ngraph TD\\n    subgraph \\\\\\\"Docker Compose Network\\\\\\\"\\n        subgraph \\\\\\\"Core Service\\\\\\\"\\n            MCP[MCP Prompts Server]\\n        end\\n        \\n        subgraph \\\\\\\"MCP Resource Servers\\\\\\\"\\n            FS[Filesystem Server]\\n            MEM[Memory Server]\\n            GH[GitHub Server]\\n            ST[Sequential Thinking]\\n            EL[ElevenLabs Server]\\n            {{additional_servers}}\\n        end\\n        \\n        subgraph \\\\\\\"Storage Options\\\\\\\"\\n            File[(File Storage)]\\n            PG[(PostgreSQL)]\\n            PGAI[(PGAI/TimescaleDB)]\\n        end\\n    end\\n    \\n    Client[AI Client] -->|Requests| MCP\\n    MCP -->|Resource URI Requests| FS\\n    MCP -->|Resource URI Requests| MEM\\n    MCP -->|Resource URI Requests| GH\\n    MCP -->|Resource URI Requests| ST\\n    MCP -->|Resource URI Requests| EL\\n    \\n    MCP -->|Storage| File\\n    MCP -->|Storage| PG\\n    MCP -->|Storage| PGAI\\n    \\n    FS -->|Access| LocalFiles[(Local Files)]\\n    GH -->|API Calls| GitHub[(GitHub API)]\\n    EL -->|API Calls| ElevenLabsAPI[(ElevenLabs API)]\\n    \\n    classDef core fill:#f9a,stroke:#d87,stroke-width:2px\\n    classDef server fill:#adf,stroke:#7ad,stroke-width:1px\\n    classDef storage fill:#ad8,stroke:#7a6,stroke-width:1px\\n    classDef external fill:#ddd,stroke:#999,stroke-width:1px\\n    \\n    class MCP core\\n    class FS,MEM,GH,ST,EL server\\n    class File,PG,PGAI storage\\n    class Client,LocalFiles,GitHub,ElevenLabsAPI external\\n```\\n\\n## Setting Up Your Environment\\n\\n### 1. Base Docker Compose Configuration\\n\\nCreate a base Docker Compose file (`docker-compose.base.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  mcp-prompts:\\n    image: {{registry}}/mcp-prompts:latest\\n    container_name: mcp-prompts\\n    environment:\\n      - NODE_ENV=production\\n      - PORT=3000\\n      - HOST=0.0.0.0\\n      - STORAGE_TYPE=file\\n      - PROMPTS_DIR=/app/data/prompts\\n      - BACKUPS_DIR=/app/data/backups\\n      - LOG_LEVEL=info\\n    volumes:\\n      - mcp-data:/app/data\\n    ports:\\n      - \\\\\\\"3000:3000\\\\\\\"\\n    healthcheck:\\n      test: [\\\\\\\"CMD\\\\\\\", \\\\\\\"node\\\\\\\", \\\\\\\"-e\\\\\\\", \\\\\\\"require('http').request({hostname: 'localhost', port: 3000, path: '/health', timeout: 2000}, (res) => process.exit(res.statusCode !== 200)).end()\\\\\\\"]\\n      interval: 30s\\n      timeout: 10s\\n      retries: 3\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nnetworks:\\n  mcp-network:\\n    driver: bridge\\n\\nvolumes:\\n  mcp-data:\\n    name: mcp-data\\n```\\n\\n### 2. Resource Servers Configuration\\n\\nCreate an integration configuration file (`docker-compose.integration.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  # Override the base service with integration configuration\\n  mcp-prompts:\\n    environment:\\n      - MCP_INTEGRATION=true\\n      - MCP_MEMORY_URL=http://mcp-memory:3000\\n      - MCP_FILESYSTEM_URL=http://mcp-filesystem:3000\\n      - MCP_GITHUB_URL=http://mcp-github:3000\\n      - MCP_THINKING_URL=http://mcp-sequential-thinking:3000\\n      - MCP_ELEVENLABS_URL=http://mcp-elevenlabs:3000\\n    depends_on:\\n      - mcp-memory\\n      - mcp-filesystem\\n      - mcp-github\\n      - mcp-sequential-thinking\\n      - mcp-elevenlabs\\n\\n  # MCP Memory Server\\n  mcp-memory:\\n    image: node:20-alpine\\n    container_name: mcp-memory\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-memory && npx -y @modelcontextprotocol/server-memory\\\\\\\"\\n    ports:\\n      - \\\\\\\"3020:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP Filesystem Server\\n  mcp-filesystem:\\n    image: node:20-alpine\\n    container_name: mcp-filesystem\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-filesystem && npx -y @modelcontextprotocol/server-filesystem /data\\\\\\\"\\n    volumes:\\n      - mcp-filesystem-data:/data\\n    ports:\\n      - \\\\\\\"3021:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP GitHub Server\\n  mcp-github:\\n    image: node:20-alpine\\n    container_name: mcp-github\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-github && npx -y @modelcontextprotocol/server-github\\\\\\\"\\n    environment:\\n      - GITHUB_PERSONAL_ACCESS_TOKEN={{github_token}}\\n    ports:\\n      - \\\\\\\"3022:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP Sequential Thinking Server\\n  mcp-sequential-thinking:\\n    image: node:20-alpine\\n    container_name: mcp-sequential-thinking\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-sequential-thinking && npx -y @modelcontextprotocol/server-sequential-thinking\\\\\\\"\\n    ports:\\n      - \\\\\\\"3023:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP ElevenLabs Server\\n  mcp-elevenlabs:\\n    image: node:20-alpine\\n    container_name: mcp-elevenlabs\\n    command: sh -c \\\\\\\"npm install -g elevenlabs-mcp-server && npx -y elevenlabs-mcp-server\\\\\\\"\\n    environment:\\n      - ELEVENLABS_API_KEY={{elevenlabs_api_key}}\\n      - ELEVENLABS_VOICE_ID={{elevenlabs_voice_id}}\\n      - ELEVENLABS_MODEL_ID={{elevenlabs_model_id}}\\n      - ELEVENLABS_OUTPUT_DIR=/data/audio\\n    volumes:\\n      - mcp-elevenlabs-data:/data\\n    ports:\\n      - \\\\\\\"3024:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nvolumes:\\n  mcp-filesystem-data:\\n    name: mcp-filesystem-data\\n  mcp-elevenlabs-data:\\n    name: mcp-elevenlabs-data\\n```\\n\\n### 3. Storage Options\\n\\n#### File Storage (Default)\\nUses the default file storage mounted as a Docker volume.\\n\\n#### PostgreSQL Storage\\nCreate a PostgreSQL configuration file (`docker-compose.postgres.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  # Override the base service to use PostgreSQL\\n  mcp-prompts:\\n    environment:\\n      - STORAGE_TYPE=postgres\\n      - POSTGRES_HOST=postgres\\n      - POSTGRES_PORT=5432\\n      - POSTGRES_USER={{postgres_user}}\\n      - POSTGRES_PASSWORD={{postgres_password}}\\n      - POSTGRES_DATABASE={{postgres_database}}\\n    depends_on:\\n      postgres:\\n        condition: service_healthy\\n\\n  # PostgreSQL Database\\n  postgres:\\n    image: postgres:14-alpine\\n    container_name: mcp-prompts-postgres\\n    environment:\\n      - POSTGRES_USER={{postgres_user}}\\n      - POSTGRES_PASSWORD={{postgres_password}}\\n      - POSTGRES_DB={{postgres_database}}\\n    volumes:\\n      - mcp-prompts-postgres-data:/var/lib/postgresql/data\\n      - ./postgres/init:/docker-entrypoint-initdb.d\\n    ports:\\n      - \\\\\\\"5432:5432\\\\\\\"\\n    healthcheck:\\n      test: [\\\\\\\"CMD-SHELL\\\\\\\", \\\\\\\"pg_isready -U {{postgres_user}}\\\\\\\"]\\n      interval: 10s\\n      timeout: 5s\\n      retries: 5\\n      start_period: 10s\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # Adminer for database management\\n  adminer:\\n    image: adminer:latest\\n    container_name: mcp-prompts-adminer\\n    ports:\\n      - \\\\\\\"8080:8080\\\\\\\"\\n    depends_on:\\n      - postgres\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nvolumes:\\n  mcp-prompts-postgres-data:\\n    name: mcp-prompts-postgres-data\\n```\\n\\n#### PGAI/TimescaleDB (Vector Storage)\\nCreate a PGAI configuration file (`docker-compose.pgai.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  # Override the base service to use PGAI\\n  mcp-prompts:\\n    environment:\\n      - STORAGE_TYPE=pgai\\n      - PGAI_HOST=pgai\\n      - PGAI_PORT=5432\\n      - PGAI_USER=postgres\\n      - PGAI_PASSWORD=postgres\\n      - PGAI_DATABASE=mcp_prompts\\n      - PGAI_API_KEY={{pgai_api_key}}\\n      - PGAI_COLLECTION=mcp_prompts\\n    depends_on:\\n      pgai:\\n        condition: service_healthy\\n\\n  # TimescaleDB with PGAI extension\\n  pgai:\\n    image: timescale/timescaledb-pgai:pg15\\n    container_name: mcp-prompts-pgai\\n    environment:\\n      - POSTGRES_USER=postgres\\n      - POSTGRES_PASSWORD=postgres\\n      - POSTGRES_DB=mcp_prompts\\n    volumes:\\n      - mcp-prompts-pgai-data:/var/lib/postgresql/data\\n      - ./postgres/pgai-init:/docker-entrypoint-initdb.d\\n    ports:\\n      - \\\\\\\"5433:5432\\\\\\\"\\n    healthcheck:\\n      test: [\\\\\\\"CMD-SHELL\\\\\\\", \\\\\\\"pg_isready -U postgres\\\\\\\"]\\n      interval: 10s\\n      timeout: 5s\\n      retries: 5\\n      start_period: 30s\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # Adminer for PGAI database management\\n  pgai-adminer:\\n    image: adminer:latest\\n    container_name: mcp-prompts-pgai-adminer\\n    ports:\\n      - \\\\\\\"8081:8080\\\\\\\"\\n    environment:\\n      - ADMINER_DEFAULT_SERVER=pgai\\n    depends_on:\\n      - pgai\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nvolumes:\\n  mcp-prompts-pgai-data:\\n    name: mcp-prompts-pgai-data\\n```\\n\\n## Deployment and Management\\n\\n### Docker Compose Manager Script\\n\\nCreate a management script (`docker-compose-manager.sh`) for easier orchestration:\\n\\n```bash\\n#!/bin/bash\\n\\n# Colors for output\\nGREEN=\\\\\\\"\\\\\\\\033[0;32m\\\\\\\"\\nYELLOW=\\\\\\\"\\\\\\\\033[1;33m\\\\\\\"\\nBLUE=\\\\\\\"\\\\\\\\033[0;34m\\\\\\\"\\nRED=\\\\\\\"\\\\\\\\033[0;31m\\\\\\\"\\nNC=\\\\\\\"\\\\\\\\033[0m\\\\\\\" # No Color\\n\\n# Base directory for Docker Compose files\\nCOMPOSE_DIR=\\\\\\\"docker/compose\\\\\\\"\\nBASE_COMPOSE=\\\\\\\"$COMPOSE_DIR/docker-compose.base.yml\\\\\\\"\\n\\n# Display help message\\nfunction show_help {\\n  echo -e \\\\\\\"${BLUE}MCP Prompts Docker Compose Manager${NC}\\\\\\\"\\n  echo -e \\\\\\\"${YELLOW}Usage:${NC} $0 [command] [environment] [options]\\\\\\\"\\n  echo\\n  echo -e \\\\\\\"${YELLOW}Commands:${NC}\\\\\\\"\\n  echo -e \\\\\\\"  up        Start services\\\\\\\"\\n  echo -e \\\\\\\"  down      Stop services and remove containers\\\\\\\"\\n  echo -e \\\\\\\"  ps        List running services\\\\\\\"\\n  echo -e \\\\\\\"  logs      View logs\\\\\\\"\\n  echo -e \\\\\\\"  restart   Restart services\\\\\\\"\\n  echo -e \\\\\\\"  image     Build Docker images\\\\\\\"\\n  echo -e \\\\\\\"  publish   Build and publish Docker images\\\\\\\"\\n  echo\\n  echo -e \\\\\\\"${YELLOW}Environments:${NC}\\\\\\\"\\n  echo -e \\\\\\\"  base       Base MCP Prompts service\\\\\\\"\\n  echo -e \\\\\\\"  development Development environment with hot-reloading\\\\\\\"\\n  echo -e \\\\\\\"  postgres   PostgreSQL storage\\\\\\\"\\n  echo -e \\\\\\\"  pgai       PGAI TimescaleDB storage\\\\\\\"\\n  echo -e \\\\\\\"  test       Testing environment\\\\\\\"\\n  echo -e \\\\\\\"  integration Multiple MCP servers integration\\\\\\\"\\n  echo -e \\\\\\\"  sse        Server-Sent Events transport\\\\\\\"\\n  echo\\n  echo -e \\\\\\\"${YELLOW}Options:${NC}\\\\\\\"\\n  echo -e \\\\\\\"  -d, --detach     Run in detached mode\\\\\\\"\\n  echo -e \\\\\\\"  -t, --tag TAG    Specify tag for Docker images\\\\\\\"\\n  echo -e \\\\\\\"  -h, --help       Show this help message\\\\\\\"\\n}\\n\\n# Default values\\nDETACHED=\\\\\\\"\\\\\\\"\\nTAG=\\\\\\\"latest\\\\\\\"\\n\\n# Parse options\\nwhile [[ $# -gt 0 ]]; do\\n  case $1 in\\n    -h|--help)\\n      show_help\\n      exit 0\\n      ;;\\n    -d|--detach)\\n      DETACHED=\\\\\\\"-d\\\\\\\"\\n      shift\\n      ;;\\n    -t|--tag)\\n      TAG=\\\\\\\"$2\\\\\\\"\\n      shift 2\\n      ;;\\n    *)\\n      break\\n      ;;\\n  esac\\ndone\\n\\n# Check if at least command and environment are provided\\nif [ $# -lt 2 ]; then\\n  show_help\\n  exit 1\\nfi\\n\\nCOMMAND=$1\\nENV=$2\\n\\n# Validate environment\\nCOMPOSE_FILE=\\\\\\\"\\\\\\\"\\ncase $ENV in\\n  base)\\n    COMPOSE_FILE=\\\\\\\"$BASE_COMPOSE\\\\\\\"\\n    ;;\\n  development)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.development.yml\\\\\\\"\\n    ;;\\n  postgres)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.postgres.yml\\\\\\\"\\n    ;;\\n  pgai)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.pgai.yml\\\\\\\"\\n    ;;\\n  test)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.test.yml\\\\\\\"\\n    ;;\\n  integration)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.integration.yml\\\\\\\"\\n    ;;\\n  sse)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.sse.yml\\\\\\\"\\n    ;;\\n  *)\\n    echo -e \\\\\\\"${RED}Invalid environment: $ENV${NC}\\\\\\\"\\n    show_help\\n    exit 1\\n    ;;\\nesac\\n\\n# Execute the appropriate command\\ncase $COMMAND in\\n  up)\\n    echo -e \\\\\\\"${GREEN}Starting MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE up $DETACHED\\n    ;;\\n  down)\\n    echo -e \\\\\\\"${GREEN}Stopping MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE down\\n    ;;\\n  ps)\\n    echo -e \\\\\\\"${GREEN}Listing MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE ps\\n    ;;\\n  logs)\\n    echo -e \\\\\\\"${GREEN}Showing logs for MCP Prompts services in environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE logs -f\\n    ;;\\n  restart)\\n    echo -e \\\\\\\"${GREEN}Restarting MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE restart\\n    ;;\\n  image)\\n    echo -e \\\\\\\"${GREEN}Building Docker image for environment: $ENV with tag: $TAG${NC}\\\\\\\"\\n    case $ENV in\\n      base|production)\\n        docker build -t {{registry}}/mcp-prompts:$TAG -f docker/Dockerfile.prod .\\n        echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG${NC}\\\\\\\"\\n        ;;\\n      development)\\n        docker build -t {{registry}}/mcp-prompts:$TAG-dev -f docker/Dockerfile.development .\\n        echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG-dev${NC}\\\\\\\"\\n        ;;\\n      test)\\n        docker build -t {{registry}}/mcp-prompts:$TAG-test -f docker/Dockerfile.testing .\\n        echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG-test${NC}\\\\\\\"\\n        ;;\\n      *)\\n        echo -e \\\\\\\"${RED}Image building not supported for environment: $ENV${NC}\\\\\\\"\\n        exit 1\\n        ;;\\n    esac\\n    ;;\\n  publish)\\n    echo -e \\\\\\\"${GREEN}Building and publishing Docker images with tag: $TAG${NC}\\\\\\\"\\n    \\n    # Build images\\n    docker build -t {{registry}}/mcp-prompts:$TAG -f docker/Dockerfile.prod .\\n    docker build -t {{registry}}/mcp-prompts:$TAG-dev -f docker/Dockerfile.development .\\n    docker build -t {{registry}}/mcp-prompts:$TAG-test -f docker/Dockerfile.testing .\\n    \\n    # Push images\\n    echo -e \\\\\\\"${GREEN}Publishing images to Docker registry${NC}\\\\\\\"\\n    docker push {{registry}}/mcp-prompts:$TAG\\n    docker push {{registry}}/mcp-prompts:$TAG-dev\\n    docker push {{registry}}/mcp-prompts:$TAG-test\\n    \\n    echo -e \\\\\\\"${GREEN}Published images:${NC}\\\\\\\"\\n    echo -e \\\\\\\"  {{registry}}/mcp-prompts:$TAG\\\\\\\"\\n    echo -e \\\\\\\"  {{registry}}/mcp-prompts:$TAG-dev\\\\\\\"\\n    echo -e \\\\\\\"  {{registry}}/mcp-prompts:$TAG-test\\\\\\\"\\n    ;;\\n  *)\\n    echo -e \\\\\\\"${RED}Invalid command: $COMMAND${NC}\\\\\\\"\\n    show_help\\n    exit 1\\n    ;;\\nesac\\n```\\n\\nMake the script executable:\\n\\n```bash\\nchmod +x docker-compose-manager.sh\\n```\\n\\n## Launching the Environment\\n\\n### 1. Start the Base Environment\\n\\n```bash\\n./docker-compose-manager.sh up base -d\\n```\\n\\n### 2. Start with MCP Integration\\n\\n```bash\\n./docker-compose-manager.sh up integration -d\\n```\\n\\n### 3. Start with PostgreSQL Storage\\n\\n```bash\\n./docker-compose-manager.sh up postgres -d\\n```\\n\\n### 4. Start with PGAI Vector Storage\\n\\n```bash\\n./docker-compose-manager.sh up pgai -d\\n```\\n\\n## Environment Configuration\\n\\n### Core Services Configuration\\n\\n1. **MCP Prompts Server Configuration**\\n   ```\\n   # Server Configuration\\n   PORT=3000\\n   HOST=0.0.0.0\\n   NODE_ENV=production\\n   LOG_LEVEL=info\\n   \\n   # Storage Configuration\\n   STORAGE_TYPE=file  # Options: file, postgres, pgai\\n   PROMPTS_DIR=/app/data/prompts\\n   BACKUPS_DIR=/app/data/backups\\n   \\n   # Integration Configuration\\n   MCP_INTEGRATION=true\\n   MCP_MEMORY_URL=http://mcp-memory:3000\\n   MCP_FILESYSTEM_URL=http://mcp-filesystem:3000\\n   MCP_GITHUB_URL=http://mcp-github:3000\\n   MCP_THINKING_URL=http://mcp-sequential-thinking:3000\\n   MCP_ELEVENLABS_URL=http://mcp-elevenlabs:3000\\n   ```\\n\\n2. **GitHub Integration**\\n   ```\\n   # GitHub API Configuration\\n   GITHUB_PERSONAL_ACCESS_TOKEN=your_token_here\\n   ```\\n\\n3. **ElevenLabs Integration**\\n   ```\\n   # ElevenLabs API Configuration\\n   ELEVENLABS_API_KEY=your_api_key_here\\n   ELEVENLABS_VOICE_ID=your_voice_id\\n   ELEVENLABS_MODEL_ID=eleven_monolingual_v1\\n   ELEVENLABS_OUTPUT_DIR=/data/audio\\n   ```\\n\\n### PostgreSQL Configuration\\n\\n```\\n# PostgreSQL Configuration\\nPOSTGRES_USER=postgres\\nPOSTGRES_PASSWORD=secure_password_here\\nPOSTGRES_DATABASE=mcp_prompts\\n```\\n\\n### PGAI/TimescaleDB Configuration\\n\\n```\\n# PGAI Configuration\\nPGAI_HOST=pgai\\nPGAI_PORT=5432\\nPGAI_USER=postgres\\nPGAI_PASSWORD=postgres\\nPGAI_DATABASE=mcp_prompts\\nPGAI_API_KEY=your_pgai_key_here\\nPGAI_COLLECTION=mcp_prompts\\n```\\n\\n## Integration Verification\\n\\n### 1. Health Check\\n\\nCheck if all services are running:\\n\\n```bash\\n./docker-compose-manager.sh ps integration\\n```\\n\\n### 2. Test MCP Prompts Server\\n\\n```bash\\ncurl http://localhost:3000/health\\n```\\n\\n### 3. Test Resource Servers\\n\\n```bash\\n# Test Memory Server\\ncurl http://localhost:3020/health\\n\\n# Test Filesystem Server\\ncurl http://localhost:3021/health\\n\\n# Test GitHub Server\\ncurl http://localhost:3022/health\\n\\n# Test Sequential Thinking Server\\ncurl http://localhost:3023/health\\n\\n# Test ElevenLabs Server\\ncurl http://localhost:3024/health\\n```\\n\\n## Troubleshooting Common Issues\\n\\n### Container Startup Issues\\n\\n1. **Container fails to start**\\n   - Check logs: `./docker-compose-manager.sh logs integration`\\n   - Verify environment variables are correctly set\\n   - Ensure ports are not already in use\\n\\n2. **Network connectivity issues**\\n   - Verify all containers are on the same network\\n   - Check Docker network configuration: `docker network inspect mcp-network`\\n\\n3. **Storage issues**\\n   - Ensure volume permissions are correctly set\\n   - Verify database initialization scripts are valid\\n\\n## Resource Management\\n\\n### Clean Up Unused Resources\\n\\n```bash\\n# Remove stopped containers\\ndocker container prune\\n\\n# Remove unused volumes\\ndocker volume prune\\n\\n# Remove unused networks\\ndocker network prune\\n\\n# Remove dangling images\\ndocker image prune\\n```\\n\\n### Data Persistence\\n\\nDocker volumes ensure your data persists across container restarts:\\n\\n```\\nvolumes:\\n  mcp-data:              # MCP Prompts data\\n  mcp-filesystem-data:   # Filesystem server data\\n  mcp-elevenlabs-data:   # Audio output data\\n  mcp-prompts-postgres-data:  # PostgreSQL data\\n  mcp-prompts-pgai-data:      # PGAI/TimescaleDB data\\n```\\n\\n## Best Practices for Production\\n\\n1. **Security Considerations**\\n   - Use environment files for secrets\\n   - Configure proper network isolation\\n   - Set up user permissions for service accounts\\n   - Enable HTTPS with proper certificates\\n\\n2. **High Availability**\\n   - Implement container restart policies\\n   - Consider Docker Swarm or Kubernetes for clustering\\n   - Set up monitoring and alerting\\n   - Establish backup and recovery procedures\\n\\n3. **Performance Optimization**\\n   - Tune PostgreSQL/PGAI for your workload\\n   - Configure appropriate resource limits\\n   - Implement caching strategies\\n   - Monitor resource usage\\n\\n## Advanced Customization\\n\\n### Adding Custom MCP Servers\\n\\n1. Create a Dockerfile for your custom server\\n2. Add the service to your Docker Compose file\\n3. Configure environment variables for integration\\n4. Update the MCP Prompts server configuration\\n\\n### Extending with Additional Services\\n\\n```yaml\\nservices:\\n  # Your custom MCP server\\n  mcp-custom:\\n    image: node:20-alpine\\n    container_name: mcp-custom\\n    command: sh -c \\\\\\\"npm install -g your-custom-mcp-server && npx -y your-custom-mcp-server\\\\\\\"\\n    environment:\\n      - CUSTOM_API_KEY={{custom_api_key}}\\n    ports:\\n      - \\\\\\\"3025:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n```\\n\\n## Next Steps\\n\\n1. Explore integration with AI clients like Claude Desktop, Zed, and LibreChat\\n2. Implement monitoring and logging solutions\\n3. Set up CI/CD pipelines for deployment\\n4. Explore advanced use cases for your specific domain\\n\\n## Additional Resources\\n\\n- [MCP Protocol Documentation](https://modelcontextprotocol.io/)\\n- [Docker Documentation](https://docs.docker.com/)\\n- [MCP Servers Repository](https://github.com/modelcontextprotocol/servers)\\n- {{additional_resources}}\\n\\nWhat specific aspect of this Docker-based MCP integration would you like me to elaborate on further?\\\",\\n  \\\"isTemplate\\\": true,\\n  \\\"variables\\\": [\\n    \\\"use_case\\\",\\n    \\\"additional_prerequisites\\\",\\n    \\\"additional_servers\\\",\\n    \\\"registry\\\",\\n    \\\"github_token\\\",\\n    \\\"elevenlabs_api_key\\\",\\n    \\\"elevenlabs_voice_id\\\",\\n    \\\"elevenlabs_model_id\\\",\\n    \\\"postgres_user\\\",\\n    \\\"postgres_password\\\",\\n    \\\"postgres_database\\\",\\n    \\\"pgai_api_key\\\",\\n    \\\"custom_api_key\\\",\\n    \\\"additional_resources\\\"\\n  ],\\n  \\\"tags\\\": [\\n    \\\"docker\\\",\\n    \\\"mcp-integration\\\",\\n    \\\"multi-server\\\",\\n    \\\"orchestration\\\",\\n    \\\"containerization\\\",\\n    \\\"devops\\\",\\n    \\\"tutorial\\\"\\n  ],\\n  \\\"createdAt\\\": \\\"2025-03-15T21:00:00.000Z\\\",\\n  \\\"updatedAt\\\": \\\"2025-03-15T21:00:00.000Z\\\",\\n  \\\"version\\\": 1,\\n  \\\"metadata\\\": {\\n    \\\"recommended_servers\\\": [\\n      \\\"@modelcontextprotocol/server-filesystem\\\",\\n      \\\"@modelcontextprotocol/server-memory\\\",\\n      \\\"@modelcontextprotocol/server-github\\\",\\n      \\\"@modelcontextprotocol/server-sequential-thinking\\\",\\n      \\\"elevenlabs-mcp-server\\\"\\n    ],\\n    \\\"example_values\\\": {\\n      \\\"use_case\\\": \\\"AI-powered code analysis and documentation\\\",\\n      \\\"additional_prerequisites\\\": \\\"Node.js 18+ for local development\\\",\\n      \\\"registry\\\": \\\"sparesparrow\\\",\\n      \\\"postgres_user\\\": \\\"postgres\\\",\\n      \\\"postgres_password\\\": \\\"secure_password_here\\\",\\n      \\\"postgres_database\\\": \\\"mcp_prompts",
 7 |   "variables": {},
 8 |   "metadata": {
 9 |     "source": "/home/sparrow/projects/mcp-prompts/prompts/docker-mcp-servers-orchestration.json",
10 |     "imported": true
11 |   }
12 | }
```

--------------------------------------------------------------------------------
/src/mcp_project_orchestrator/prompts/other/Docker_MCP_Servers_Orchestration_Guide.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "Docker MCP Servers Orchestration Guide",
 3 |   "description": "A comprehensive guide for setting up, configuring, and orchestrating multiple MCP servers in a Docker environment",
 4 |   "type": "prompt",
 5 |   "category": "other",
 6 |   "content": "# Docker MCP Servers Orchestration Guide\\n\\n## Overview\\n\\nThis guide will help you set up a containerized environment with multiple integrated MCP servers for {{use_case}}. The architecture leverages Docker Compose to orchestrate these servers, providing a robust foundation for AI-powered applications with enhanced context capabilities.\\n\\n## Prerequisites\\n\\n- Docker and Docker Compose installed\\n- Basic understanding of containerization concepts\\n- Git for cloning repositories\\n- {{additional_prerequisites}}\\n\\n## Core MCP Servers Architecture\\n\\n```mermaid\\ngraph TD\\n    subgraph \\\\\\\"Docker Compose Network\\\\\\\"\\n        subgraph \\\\\\\"Core Service\\\\\\\"\\n            MCP[MCP Prompts Server]\\n        end\\n        \\n        subgraph \\\\\\\"MCP Resource Servers\\\\\\\"\\n            FS[Filesystem Server]\\n            MEM[Memory Server]\\n            GH[GitHub Server]\\n            ST[Sequential Thinking]\\n            EL[ElevenLabs Server]\\n            {{additional_servers}}\\n        end\\n        \\n        subgraph \\\\\\\"Storage Options\\\\\\\"\\n            File[(File Storage)]\\n            PG[(PostgreSQL)]\\n            PGAI[(PGAI/TimescaleDB)]\\n        end\\n    end\\n    \\n    Client[AI Client] -->|Requests| MCP\\n    MCP -->|Resource URI Requests| FS\\n    MCP -->|Resource URI Requests| MEM\\n    MCP -->|Resource URI Requests| GH\\n    MCP -->|Resource URI Requests| ST\\n    MCP -->|Resource URI Requests| EL\\n    \\n    MCP -->|Storage| File\\n    MCP -->|Storage| PG\\n    MCP -->|Storage| PGAI\\n    \\n    FS -->|Access| LocalFiles[(Local Files)]\\n    GH -->|API Calls| GitHub[(GitHub API)]\\n    EL -->|API Calls| ElevenLabsAPI[(ElevenLabs API)]\\n    \\n    classDef core fill:#f9a,stroke:#d87,stroke-width:2px\\n    classDef server fill:#adf,stroke:#7ad,stroke-width:1px\\n    classDef storage fill:#ad8,stroke:#7a6,stroke-width:1px\\n    classDef external fill:#ddd,stroke:#999,stroke-width:1px\\n    \\n    class MCP core\\n    class FS,MEM,GH,ST,EL server\\n    class File,PG,PGAI storage\\n    class Client,LocalFiles,GitHub,ElevenLabsAPI external\\n```\\n\\n## Setting Up Your Environment\\n\\n### 1. Base Docker Compose Configuration\\n\\nCreate a base Docker Compose file (`docker-compose.base.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  mcp-prompts:\\n    image: {{registry}}/mcp-prompts:latest\\n    container_name: mcp-prompts\\n    environment:\\n      - NODE_ENV=production\\n      - PORT=3000\\n      - HOST=0.0.0.0\\n      - STORAGE_TYPE=file\\n      - PROMPTS_DIR=/app/data/prompts\\n      - BACKUPS_DIR=/app/data/backups\\n      - LOG_LEVEL=info\\n    volumes:\\n      - mcp-data:/app/data\\n    ports:\\n      - \\\\\\\"3000:3000\\\\\\\"\\n    healthcheck:\\n      test: [\\\\\\\"CMD\\\\\\\", \\\\\\\"node\\\\\\\", \\\\\\\"-e\\\\\\\", \\\\\\\"require('http').request({hostname: 'localhost', port: 3000, path: '/health', timeout: 2000}, (res) => process.exit(res.statusCode !== 200)).end()\\\\\\\"]\\n      interval: 30s\\n      timeout: 10s\\n      retries: 3\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nnetworks:\\n  mcp-network:\\n    driver: bridge\\n\\nvolumes:\\n  mcp-data:\\n    name: mcp-data\\n```\\n\\n### 2. Resource Servers Configuration\\n\\nCreate an integration configuration file (`docker-compose.integration.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  # Override the base service with integration configuration\\n  mcp-prompts:\\n    environment:\\n      - MCP_INTEGRATION=true\\n      - MCP_MEMORY_URL=http://mcp-memory:3000\\n      - MCP_FILESYSTEM_URL=http://mcp-filesystem:3000\\n      - MCP_GITHUB_URL=http://mcp-github:3000\\n      - MCP_THINKING_URL=http://mcp-sequential-thinking:3000\\n      - MCP_ELEVENLABS_URL=http://mcp-elevenlabs:3000\\n    depends_on:\\n      - mcp-memory\\n      - mcp-filesystem\\n      - mcp-github\\n      - mcp-sequential-thinking\\n      - mcp-elevenlabs\\n\\n  # MCP Memory Server\\n  mcp-memory:\\n    image: node:20-alpine\\n    container_name: mcp-memory\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-memory && npx -y @modelcontextprotocol/server-memory\\\\\\\"\\n    ports:\\n      - \\\\\\\"3020:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP Filesystem Server\\n  mcp-filesystem:\\n    image: node:20-alpine\\n    container_name: mcp-filesystem\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-filesystem && npx -y @modelcontextprotocol/server-filesystem /data\\\\\\\"\\n    volumes:\\n      - mcp-filesystem-data:/data\\n    ports:\\n      - \\\\\\\"3021:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP GitHub Server\\n  mcp-github:\\n    image: node:20-alpine\\n    container_name: mcp-github\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-github && npx -y @modelcontextprotocol/server-github\\\\\\\"\\n    environment:\\n      - GITHUB_PERSONAL_ACCESS_TOKEN={{github_token}}\\n    ports:\\n      - \\\\\\\"3022:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP Sequential Thinking Server\\n  mcp-sequential-thinking:\\n    image: node:20-alpine\\n    container_name: mcp-sequential-thinking\\n    command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-sequential-thinking && npx -y @modelcontextprotocol/server-sequential-thinking\\\\\\\"\\n    ports:\\n      - \\\\\\\"3023:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # MCP ElevenLabs Server\\n  mcp-elevenlabs:\\n    image: node:20-alpine\\n    container_name: mcp-elevenlabs\\n    command: sh -c \\\\\\\"npm install -g elevenlabs-mcp-server && npx -y elevenlabs-mcp-server\\\\\\\"\\n    environment:\\n      - ELEVENLABS_API_KEY={{elevenlabs_api_key}}\\n      - ELEVENLABS_VOICE_ID={{elevenlabs_voice_id}}\\n      - ELEVENLABS_MODEL_ID={{elevenlabs_model_id}}\\n      - ELEVENLABS_OUTPUT_DIR=/data/audio\\n    volumes:\\n      - mcp-elevenlabs-data:/data\\n    ports:\\n      - \\\\\\\"3024:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nvolumes:\\n  mcp-filesystem-data:\\n    name: mcp-filesystem-data\\n  mcp-elevenlabs-data:\\n    name: mcp-elevenlabs-data\\n```\\n\\n### 3. Storage Options\\n\\n#### File Storage (Default)\\nUses the default file storage mounted as a Docker volume.\\n\\n#### PostgreSQL Storage\\nCreate a PostgreSQL configuration file (`docker-compose.postgres.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  # Override the base service to use PostgreSQL\\n  mcp-prompts:\\n    environment:\\n      - STORAGE_TYPE=postgres\\n      - POSTGRES_HOST=postgres\\n      - POSTGRES_PORT=5432\\n      - POSTGRES_USER={{postgres_user}}\\n      - POSTGRES_PASSWORD={{postgres_password}}\\n      - POSTGRES_DATABASE={{postgres_database}}\\n    depends_on:\\n      postgres:\\n        condition: service_healthy\\n\\n  # PostgreSQL Database\\n  postgres:\\n    image: postgres:14-alpine\\n    container_name: mcp-prompts-postgres\\n    environment:\\n      - POSTGRES_USER={{postgres_user}}\\n      - POSTGRES_PASSWORD={{postgres_password}}\\n      - POSTGRES_DB={{postgres_database}}\\n    volumes:\\n      - mcp-prompts-postgres-data:/var/lib/postgresql/data\\n      - ./postgres/init:/docker-entrypoint-initdb.d\\n    ports:\\n      - \\\\\\\"5432:5432\\\\\\\"\\n    healthcheck:\\n      test: [\\\\\\\"CMD-SHELL\\\\\\\", \\\\\\\"pg_isready -U {{postgres_user}}\\\\\\\"]\\n      interval: 10s\\n      timeout: 5s\\n      retries: 5\\n      start_period: 10s\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # Adminer for database management\\n  adminer:\\n    image: adminer:latest\\n    container_name: mcp-prompts-adminer\\n    ports:\\n      - \\\\\\\"8080:8080\\\\\\\"\\n    depends_on:\\n      - postgres\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nvolumes:\\n  mcp-prompts-postgres-data:\\n    name: mcp-prompts-postgres-data\\n```\\n\\n#### PGAI/TimescaleDB (Vector Storage)\\nCreate a PGAI configuration file (`docker-compose.pgai.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n  # Override the base service to use PGAI\\n  mcp-prompts:\\n    environment:\\n      - STORAGE_TYPE=pgai\\n      - PGAI_HOST=pgai\\n      - PGAI_PORT=5432\\n      - PGAI_USER=postgres\\n      - PGAI_PASSWORD=postgres\\n      - PGAI_DATABASE=mcp_prompts\\n      - PGAI_API_KEY={{pgai_api_key}}\\n      - PGAI_COLLECTION=mcp_prompts\\n    depends_on:\\n      pgai:\\n        condition: service_healthy\\n\\n  # TimescaleDB with PGAI extension\\n  pgai:\\n    image: timescale/timescaledb-pgai:pg15\\n    container_name: mcp-prompts-pgai\\n    environment:\\n      - POSTGRES_USER=postgres\\n      - POSTGRES_PASSWORD=postgres\\n      - POSTGRES_DB=mcp_prompts\\n    volumes:\\n      - mcp-prompts-pgai-data:/var/lib/postgresql/data\\n      - ./postgres/pgai-init:/docker-entrypoint-initdb.d\\n    ports:\\n      - \\\\\\\"5433:5432\\\\\\\"\\n    healthcheck:\\n      test: [\\\\\\\"CMD-SHELL\\\\\\\", \\\\\\\"pg_isready -U postgres\\\\\\\"]\\n      interval: 10s\\n      timeout: 5s\\n      retries: 5\\n      start_period: 30s\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\n  # Adminer for PGAI database management\\n  pgai-adminer:\\n    image: adminer:latest\\n    container_name: mcp-prompts-pgai-adminer\\n    ports:\\n      - \\\\\\\"8081:8080\\\\\\\"\\n    environment:\\n      - ADMINER_DEFAULT_SERVER=pgai\\n    depends_on:\\n      - pgai\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n\\nvolumes:\\n  mcp-prompts-pgai-data:\\n    name: mcp-prompts-pgai-data\\n```\\n\\n## Deployment and Management\\n\\n### Docker Compose Manager Script\\n\\nCreate a management script (`docker-compose-manager.sh`) for easier orchestration:\\n\\n```bash\\n#!/bin/bash\\n\\n# Colors for output\\nGREEN=\\\\\\\"\\\\\\\\033[0;32m\\\\\\\"\\nYELLOW=\\\\\\\"\\\\\\\\033[1;33m\\\\\\\"\\nBLUE=\\\\\\\"\\\\\\\\033[0;34m\\\\\\\"\\nRED=\\\\\\\"\\\\\\\\033[0;31m\\\\\\\"\\nNC=\\\\\\\"\\\\\\\\033[0m\\\\\\\" # No Color\\n\\n# Base directory for Docker Compose files\\nCOMPOSE_DIR=\\\\\\\"docker/compose\\\\\\\"\\nBASE_COMPOSE=\\\\\\\"$COMPOSE_DIR/docker-compose.base.yml\\\\\\\"\\n\\n# Display help message\\nfunction show_help {\\n  echo -e \\\\\\\"${BLUE}MCP Prompts Docker Compose Manager${NC}\\\\\\\"\\n  echo -e \\\\\\\"${YELLOW}Usage:${NC} $0 [command] [environment] [options]\\\\\\\"\\n  echo\\n  echo -e \\\\\\\"${YELLOW}Commands:${NC}\\\\\\\"\\n  echo -e \\\\\\\"  up        Start services\\\\\\\"\\n  echo -e \\\\\\\"  down      Stop services and remove containers\\\\\\\"\\n  echo -e \\\\\\\"  ps        List running services\\\\\\\"\\n  echo -e \\\\\\\"  logs      View logs\\\\\\\"\\n  echo -e \\\\\\\"  restart   Restart services\\\\\\\"\\n  echo -e \\\\\\\"  image     Build Docker images\\\\\\\"\\n  echo -e \\\\\\\"  publish   Build and publish Docker images\\\\\\\"\\n  echo\\n  echo -e \\\\\\\"${YELLOW}Environments:${NC}\\\\\\\"\\n  echo -e \\\\\\\"  base       Base MCP Prompts service\\\\\\\"\\n  echo -e \\\\\\\"  development Development environment with hot-reloading\\\\\\\"\\n  echo -e \\\\\\\"  postgres   PostgreSQL storage\\\\\\\"\\n  echo -e \\\\\\\"  pgai       PGAI TimescaleDB storage\\\\\\\"\\n  echo -e \\\\\\\"  test       Testing environment\\\\\\\"\\n  echo -e \\\\\\\"  integration Multiple MCP servers integration\\\\\\\"\\n  echo -e \\\\\\\"  sse        Server-Sent Events transport\\\\\\\"\\n  echo\\n  echo -e \\\\\\\"${YELLOW}Options:${NC}\\\\\\\"\\n  echo -e \\\\\\\"  -d, --detach     Run in detached mode\\\\\\\"\\n  echo -e \\\\\\\"  -t, --tag TAG    Specify tag for Docker images\\\\\\\"\\n  echo -e \\\\\\\"  -h, --help       Show this help message\\\\\\\"\\n}\\n\\n# Default values\\nDETACHED=\\\\\\\"\\\\\\\"\\nTAG=\\\\\\\"latest\\\\\\\"\\n\\n# Parse options\\nwhile [[ $# -gt 0 ]]; do\\n  case $1 in\\n    -h|--help)\\n      show_help\\n      exit 0\\n      ;;\\n    -d|--detach)\\n      DETACHED=\\\\\\\"-d\\\\\\\"\\n      shift\\n      ;;\\n    -t|--tag)\\n      TAG=\\\\\\\"$2\\\\\\\"\\n      shift 2\\n      ;;\\n    *)\\n      break\\n      ;;\\n  esac\\ndone\\n\\n# Check if at least command and environment are provided\\nif [ $# -lt 2 ]; then\\n  show_help\\n  exit 1\\nfi\\n\\nCOMMAND=$1\\nENV=$2\\n\\n# Validate environment\\nCOMPOSE_FILE=\\\\\\\"\\\\\\\"\\ncase $ENV in\\n  base)\\n    COMPOSE_FILE=\\\\\\\"$BASE_COMPOSE\\\\\\\"\\n    ;;\\n  development)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.development.yml\\\\\\\"\\n    ;;\\n  postgres)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.postgres.yml\\\\\\\"\\n    ;;\\n  pgai)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.pgai.yml\\\\\\\"\\n    ;;\\n  test)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.test.yml\\\\\\\"\\n    ;;\\n  integration)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.integration.yml\\\\\\\"\\n    ;;\\n  sse)\\n    COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.sse.yml\\\\\\\"\\n    ;;\\n  *)\\n    echo -e \\\\\\\"${RED}Invalid environment: $ENV${NC}\\\\\\\"\\n    show_help\\n    exit 1\\n    ;;\\nesac\\n\\n# Execute the appropriate command\\ncase $COMMAND in\\n  up)\\n    echo -e \\\\\\\"${GREEN}Starting MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE up $DETACHED\\n    ;;\\n  down)\\n    echo -e \\\\\\\"${GREEN}Stopping MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE down\\n    ;;\\n  ps)\\n    echo -e \\\\\\\"${GREEN}Listing MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE ps\\n    ;;\\n  logs)\\n    echo -e \\\\\\\"${GREEN}Showing logs for MCP Prompts services in environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE logs -f\\n    ;;\\n  restart)\\n    echo -e \\\\\\\"${GREEN}Restarting MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n    docker compose $COMPOSE_FILE restart\\n    ;;\\n  image)\\n    echo -e \\\\\\\"${GREEN}Building Docker image for environment: $ENV with tag: $TAG${NC}\\\\\\\"\\n    case $ENV in\\n      base|production)\\n        docker build -t {{registry}}/mcp-prompts:$TAG -f docker/Dockerfile.prod .\\n        echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG${NC}\\\\\\\"\\n        ;;\\n      development)\\n        docker build -t {{registry}}/mcp-prompts:$TAG-dev -f docker/Dockerfile.development .\\n        echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG-dev${NC}\\\\\\\"\\n        ;;\\n      test)\\n        docker build -t {{registry}}/mcp-prompts:$TAG-test -f docker/Dockerfile.testing .\\n        echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG-test${NC}\\\\\\\"\\n        ;;\\n      *)\\n        echo -e \\\\\\\"${RED}Image building not supported for environment: $ENV${NC}\\\\\\\"\\n        exit 1\\n        ;;\\n    esac\\n    ;;\\n  publish)\\n    echo -e \\\\\\\"${GREEN}Building and publishing Docker images with tag: $TAG${NC}\\\\\\\"\\n    \\n    # Build images\\n    docker build -t {{registry}}/mcp-prompts:$TAG -f docker/Dockerfile.prod .\\n    docker build -t {{registry}}/mcp-prompts:$TAG-dev -f docker/Dockerfile.development .\\n    docker build -t {{registry}}/mcp-prompts:$TAG-test -f docker/Dockerfile.testing .\\n    \\n    # Push images\\n    echo -e \\\\\\\"${GREEN}Publishing images to Docker registry${NC}\\\\\\\"\\n    docker push {{registry}}/mcp-prompts:$TAG\\n    docker push {{registry}}/mcp-prompts:$TAG-dev\\n    docker push {{registry}}/mcp-prompts:$TAG-test\\n    \\n    echo -e \\\\\\\"${GREEN}Published images:${NC}\\\\\\\"\\n    echo -e \\\\\\\"  {{registry}}/mcp-prompts:$TAG\\\\\\\"\\n    echo -e \\\\\\\"  {{registry}}/mcp-prompts:$TAG-dev\\\\\\\"\\n    echo -e \\\\\\\"  {{registry}}/mcp-prompts:$TAG-test\\\\\\\"\\n    ;;\\n  *)\\n    echo -e \\\\\\\"${RED}Invalid command: $COMMAND${NC}\\\\\\\"\\n    show_help\\n    exit 1\\n    ;;\\nesac\\n```\\n\\nMake the script executable:\\n\\n```bash\\nchmod +x docker-compose-manager.sh\\n```\\n\\n## Launching the Environment\\n\\n### 1. Start the Base Environment\\n\\n```bash\\n./docker-compose-manager.sh up base -d\\n```\\n\\n### 2. Start with MCP Integration\\n\\n```bash\\n./docker-compose-manager.sh up integration -d\\n```\\n\\n### 3. Start with PostgreSQL Storage\\n\\n```bash\\n./docker-compose-manager.sh up postgres -d\\n```\\n\\n### 4. Start with PGAI Vector Storage\\n\\n```bash\\n./docker-compose-manager.sh up pgai -d\\n```\\n\\n## Environment Configuration\\n\\n### Core Services Configuration\\n\\n1. **MCP Prompts Server Configuration**\\n   ```\\n   # Server Configuration\\n   PORT=3000\\n   HOST=0.0.0.0\\n   NODE_ENV=production\\n   LOG_LEVEL=info\\n   \\n   # Storage Configuration\\n   STORAGE_TYPE=file  # Options: file, postgres, pgai\\n   PROMPTS_DIR=/app/data/prompts\\n   BACKUPS_DIR=/app/data/backups\\n   \\n   # Integration Configuration\\n   MCP_INTEGRATION=true\\n   MCP_MEMORY_URL=http://mcp-memory:3000\\n   MCP_FILESYSTEM_URL=http://mcp-filesystem:3000\\n   MCP_GITHUB_URL=http://mcp-github:3000\\n   MCP_THINKING_URL=http://mcp-sequential-thinking:3000\\n   MCP_ELEVENLABS_URL=http://mcp-elevenlabs:3000\\n   ```\\n\\n2. **GitHub Integration**\\n   ```\\n   # GitHub API Configuration\\n   GITHUB_PERSONAL_ACCESS_TOKEN=your_token_here\\n   ```\\n\\n3. **ElevenLabs Integration**\\n   ```\\n   # ElevenLabs API Configuration\\n   ELEVENLABS_API_KEY=your_api_key_here\\n   ELEVENLABS_VOICE_ID=your_voice_id\\n   ELEVENLABS_MODEL_ID=eleven_monolingual_v1\\n   ELEVENLABS_OUTPUT_DIR=/data/audio\\n   ```\\n\\n### PostgreSQL Configuration\\n\\n```\\n# PostgreSQL Configuration\\nPOSTGRES_USER=postgres\\nPOSTGRES_PASSWORD=secure_password_here\\nPOSTGRES_DATABASE=mcp_prompts\\n```\\n\\n### PGAI/TimescaleDB Configuration\\n\\n```\\n# PGAI Configuration\\nPGAI_HOST=pgai\\nPGAI_PORT=5432\\nPGAI_USER=postgres\\nPGAI_PASSWORD=postgres\\nPGAI_DATABASE=mcp_prompts\\nPGAI_API_KEY=your_pgai_key_here\\nPGAI_COLLECTION=mcp_prompts\\n```\\n\\n## Integration Verification\\n\\n### 1. Health Check\\n\\nCheck if all services are running:\\n\\n```bash\\n./docker-compose-manager.sh ps integration\\n```\\n\\n### 2. Test MCP Prompts Server\\n\\n```bash\\ncurl http://localhost:3000/health\\n```\\n\\n### 3. Test Resource Servers\\n\\n```bash\\n# Test Memory Server\\ncurl http://localhost:3020/health\\n\\n# Test Filesystem Server\\ncurl http://localhost:3021/health\\n\\n# Test GitHub Server\\ncurl http://localhost:3022/health\\n\\n# Test Sequential Thinking Server\\ncurl http://localhost:3023/health\\n\\n# Test ElevenLabs Server\\ncurl http://localhost:3024/health\\n```\\n\\n## Troubleshooting Common Issues\\n\\n### Container Startup Issues\\n\\n1. **Container fails to start**\\n   - Check logs: `./docker-compose-manager.sh logs integration`\\n   - Verify environment variables are correctly set\\n   - Ensure ports are not already in use\\n\\n2. **Network connectivity issues**\\n   - Verify all containers are on the same network\\n   - Check Docker network configuration: `docker network inspect mcp-network`\\n\\n3. **Storage issues**\\n   - Ensure volume permissions are correctly set\\n   - Verify database initialization scripts are valid\\n\\n## Resource Management\\n\\n### Clean Up Unused Resources\\n\\n```bash\\n# Remove stopped containers\\ndocker container prune\\n\\n# Remove unused volumes\\ndocker volume prune\\n\\n# Remove unused networks\\ndocker network prune\\n\\n# Remove dangling images\\ndocker image prune\\n```\\n\\n### Data Persistence\\n\\nDocker volumes ensure your data persists across container restarts:\\n\\n```\\nvolumes:\\n  mcp-data:              # MCP Prompts data\\n  mcp-filesystem-data:   # Filesystem server data\\n  mcp-elevenlabs-data:   # Audio output data\\n  mcp-prompts-postgres-data:  # PostgreSQL data\\n  mcp-prompts-pgai-data:      # PGAI/TimescaleDB data\\n```\\n\\n## Best Practices for Production\\n\\n1. **Security Considerations**\\n   - Use environment files for secrets\\n   - Configure proper network isolation\\n   - Set up user permissions for service accounts\\n   - Enable HTTPS with proper certificates\\n\\n2. **High Availability**\\n   - Implement container restart policies\\n   - Consider Docker Swarm or Kubernetes for clustering\\n   - Set up monitoring and alerting\\n   - Establish backup and recovery procedures\\n\\n3. **Performance Optimization**\\n   - Tune PostgreSQL/PGAI for your workload\\n   - Configure appropriate resource limits\\n   - Implement caching strategies\\n   - Monitor resource usage\\n\\n## Advanced Customization\\n\\n### Adding Custom MCP Servers\\n\\n1. Create a Dockerfile for your custom server\\n2. Add the service to your Docker Compose file\\n3. Configure environment variables for integration\\n4. Update the MCP Prompts server configuration\\n\\n### Extending with Additional Services\\n\\n```yaml\\nservices:\\n  # Your custom MCP server\\n  mcp-custom:\\n    image: node:20-alpine\\n    container_name: mcp-custom\\n    command: sh -c \\\\\\\"npm install -g your-custom-mcp-server && npx -y your-custom-mcp-server\\\\\\\"\\n    environment:\\n      - CUSTOM_API_KEY={{custom_api_key}}\\n    ports:\\n      - \\\\\\\"3025:3000\\\\\\\"\\n    restart: unless-stopped\\n    networks:\\n      - mcp-network\\n```\\n\\n## Next Steps\\n\\n1. Explore integration with AI clients like Claude Desktop, Zed, and LibreChat\\n2. Implement monitoring and logging solutions\\n3. Set up CI/CD pipelines for deployment\\n4. Explore advanced use cases for your specific domain\\n\\n## Additional Resources\\n\\n- [MCP Protocol Documentation](https://modelcontextprotocol.io/)\\n- [Docker Documentation](https://docs.docker.com/)\\n- [MCP Servers Repository](https://github.com/modelcontextprotocol/servers)\\n- {{additional_resources}}\\n\\nWhat specific aspect of this Docker-based MCP integration would you like me to elaborate on further?\\\",\\n  \\\"isTemplate\\\": true,\\n  \\\"variables\\\": [\\n    \\\"use_case\\\",\\n    \\\"additional_prerequisites\\\",\\n    \\\"additional_servers\\\",\\n    \\\"registry\\\",\\n    \\\"github_token\\\",\\n    \\\"elevenlabs_api_key\\\",\\n    \\\"elevenlabs_voice_id\\\",\\n    \\\"elevenlabs_model_id\\\",\\n    \\\"postgres_user\\\",\\n    \\\"postgres_password\\\",\\n    \\\"postgres_database\\\",\\n    \\\"pgai_api_key\\\",\\n    \\\"custom_api_key\\\",\\n    \\\"additional_resources\\\"\\n  ],\\n  \\\"tags\\\": [\\n    \\\"docker\\\",\\n    \\\"mcp-integration\\\",\\n    \\\"multi-server\\\",\\n    \\\"orchestration\\\",\\n    \\\"containerization\\\",\\n    \\\"devops\\\",\\n    \\\"tutorial\\\"\\n  ],\\n  \\\"createdAt\\\": \\\"2025-03-15T21:00:00.000Z\\\",\\n  \\\"updatedAt\\\": \\\"2025-03-15T21:00:00.000Z\\\",\\n  \\\"version\\\": 1,\\n  \\\"metadata\\\": {\\n    \\\"recommended_servers\\\": [\\n      \\\"@modelcontextprotocol/server-filesystem\\\",\\n      \\\"@modelcontextprotocol/server-memory\\\",\\n      \\\"@modelcontextprotocol/server-github\\\",\\n      \\\"@modelcontextprotocol/server-sequential-thinking\\\",\\n      \\\"elevenlabs-mcp-server\\\"\\n    ],\\n    \\\"example_values\\\": {\\n      \\\"use_case\\\": \\\"AI-powered code analysis and documentation\\\",\\n      \\\"additional_prerequisites\\\": \\\"Node.js 18+ for local development\\\",\\n      \\\"registry\\\": \\\"sparesparrow\\\",\\n      \\\"postgres_user\\\": \\\"postgres\\\",\\n      \\\"postgres_password\\\": \\\"secure_password_here\\\",\\n      \\\"postgres_database\\\": \\\"mcp_prompts",
 7 |   "variables": {},
 8 |   "metadata": {
 9 |     "source": "/home/sparrow/projects/mcp-prompts/prompts/docker-mcp-servers-orchestration.json",
10 |     "imported": true
11 |   }
12 | }
```

--------------------------------------------------------------------------------
/printcast-agent/src/orchestration/workflow.py:
--------------------------------------------------------------------------------

```python
  1 | """
  2 | Main workflow orchestrator for PrintCast Agent.
  3 | 
  4 | Coordinates the entire voice-to-print-to-delivery workflow.
  5 | """
  6 | 
  7 | import asyncio
  8 | import json
  9 | from typing import Any, Dict, List, Optional
 10 | from datetime import datetime
 11 | from enum import Enum
 12 | 
 13 | import structlog
 14 | from pydantic import BaseModel, Field
 15 | 
 16 | from ..integrations.asterisk import AsteriskManager
 17 | from ..integrations.elevenlabs import ElevenLabsAgent
 18 | from ..integrations.content import ContentFetcher, ContentItem
 19 | from ..integrations.printing import PrintManager
 20 | from ..integrations.delivery import DeliveryService, Address
 21 | 
 22 | logger = structlog.get_logger(__name__)
 23 | 
 24 | 
 25 | class WorkflowState(Enum):
 26 |     """Workflow states."""
 27 |     IDLE = "idle"
 28 |     CALL_INITIATED = "call_initiated"
 29 |     GREETING = "greeting"
 30 |     CONTENT_SELECTION = "content_selection"
 31 |     USER_SELECTION = "user_selection"
 32 |     ADDRESS_COLLECTION = "address_collection"
 33 |     CONFIRMATION = "confirmation"
 34 |     PROCESSING = "processing"
 35 |     PRINTING = "printing"
 36 |     SHIPPING = "shipping"
 37 |     COMPLETED = "completed"
 38 |     FAILED = "failed"
 39 |     CANCELLED = "cancelled"
 40 | 
 41 | 
 42 | class WorkflowContext(BaseModel):
 43 |     """Context for workflow execution."""
 44 |     
 45 |     workflow_id: str
 46 |     session_id: str
 47 |     caller_id: str
 48 |     state: WorkflowState = WorkflowState.IDLE
 49 |     language: str = "cs"
 50 |     content_type: Optional[str] = None
 51 |     available_content: List[ContentItem] = Field(default_factory=list)
 52 |     selected_items: List[str] = Field(default_factory=list)
 53 |     delivery_address: Optional[Address] = None
 54 |     delivery_method: str = "post"
 55 |     print_job_ids: List[str] = Field(default_factory=list)
 56 |     shipment_id: Optional[str] = None
 57 |     start_time: datetime = Field(default_factory=datetime.now)
 58 |     end_time: Optional[datetime] = None
 59 |     metadata: Dict[str, Any] = Field(default_factory=dict)
 60 |     error: Optional[str] = None
 61 | 
 62 | 
 63 | class WorkflowOrchestrator:
 64 |     """
 65 |     Orchestrates the complete voice-to-print workflow.
 66 |     
 67 |     Manages state transitions and coordinates all services.
 68 |     """
 69 |     
 70 |     def __init__(
 71 |         self,
 72 |         asterisk: AsteriskManager,
 73 |         elevenlabs: ElevenLabsAgent,
 74 |         content: ContentFetcher,
 75 |         printer: PrintManager,
 76 |         delivery: DeliveryService
 77 |     ):
 78 |         """
 79 |         Initialize workflow orchestrator.
 80 |         
 81 |         Args:
 82 |             asterisk: Asterisk manager
 83 |             elevenlabs: ElevenLabs agent
 84 |             content: Content fetcher
 85 |             printer: Print manager
 86 |             delivery: Delivery service
 87 |         """
 88 |         self.asterisk = asterisk
 89 |         self.elevenlabs = elevenlabs
 90 |         self.content = content
 91 |         self.printer = printer
 92 |         self.delivery = delivery
 93 |         
 94 |         self.workflows: Dict[str, WorkflowContext] = {}
 95 |         self.workflow_counter = 0
 96 |         
 97 |         logger.info("Workflow orchestrator initialized")
 98 |     
 99 |     async def start_workflow(
100 |         self,
101 |         caller_id: str,
102 |         session_id: str,
103 |         language: str = "cs"
104 |     ) -> str:
105 |         """
106 |         Start a new workflow for incoming call.
107 |         
108 |         Args:
109 |             caller_id: Caller phone number
110 |             session_id: Call session ID
111 |             language: Preferred language
112 |         
113 |         Returns:
114 |             Workflow ID
115 |         """
116 |         try:
117 |             # Create workflow context
118 |             self.workflow_counter += 1
119 |             workflow_id = f"wf_{self.workflow_counter}_{datetime.now().strftime('%Y%m%d%H%M%S')}"
120 |             
121 |             context = WorkflowContext(
122 |                 workflow_id=workflow_id,
123 |                 session_id=session_id,
124 |                 caller_id=caller_id,
125 |                 language=language,
126 |                 state=WorkflowState.CALL_INITIATED
127 |             )
128 |             
129 |             self.workflows[workflow_id] = context
130 |             
131 |             # Start workflow execution
132 |             asyncio.create_task(self._execute_workflow(workflow_id))
133 |             
134 |             logger.info(
135 |                 "Workflow started",
136 |                 workflow_id=workflow_id,
137 |                 caller_id=caller_id,
138 |                 session_id=session_id
139 |             )
140 |             
141 |             return workflow_id
142 |             
143 |         except Exception as e:
144 |             logger.error("Failed to start workflow", error=str(e))
145 |             raise
146 |     
147 |     async def _execute_workflow(self, workflow_id: str):
148 |         """
149 |         Execute the complete workflow.
150 |         
151 |         Args:
152 |             workflow_id: Workflow ID
153 |         """
154 |         context = self.workflows.get(workflow_id)
155 |         if not context:
156 |             return
157 |         
158 |         try:
159 |             # State machine execution
160 |             while context.state not in [WorkflowState.COMPLETED, WorkflowState.FAILED, WorkflowState.CANCELLED]:
161 |                 
162 |                 if context.state == WorkflowState.CALL_INITIATED:
163 |                     await self._handle_call_initiated(context)
164 |                     
165 |                 elif context.state == WorkflowState.GREETING:
166 |                     await self._handle_greeting(context)
167 |                     
168 |                 elif context.state == WorkflowState.CONTENT_SELECTION:
169 |                     await self._handle_content_selection(context)
170 |                     
171 |                 elif context.state == WorkflowState.USER_SELECTION:
172 |                     await self._handle_user_selection(context)
173 |                     
174 |                 elif context.state == WorkflowState.ADDRESS_COLLECTION:
175 |                     await self._handle_address_collection(context)
176 |                     
177 |                 elif context.state == WorkflowState.CONFIRMATION:
178 |                     await self._handle_confirmation(context)
179 |                     
180 |                 elif context.state == WorkflowState.PROCESSING:
181 |                     await self._handle_processing(context)
182 |                     
183 |                 elif context.state == WorkflowState.PRINTING:
184 |                     await self._handle_printing(context)
185 |                     
186 |                 elif context.state == WorkflowState.SHIPPING:
187 |                     await self._handle_shipping(context)
188 |                     
189 |                 else:
190 |                     logger.warning(
191 |                         "Unknown workflow state",
192 |                         state=context.state,
193 |                         workflow_id=workflow_id
194 |                     )
195 |                     context.state = WorkflowState.FAILED
196 |                     
197 |                 # Small delay between state transitions
198 |                 await asyncio.sleep(0.1)
199 |             
200 |             # Workflow completed
201 |             context.end_time = datetime.now()
202 |             duration = (context.end_time - context.start_time).total_seconds()
203 |             
204 |             logger.info(
205 |                 "Workflow completed",
206 |                 workflow_id=workflow_id,
207 |                 state=context.state,
208 |                 duration=duration
209 |             )
210 |             
211 |         except Exception as e:
212 |             logger.error(
213 |                 "Workflow execution failed",
214 |                 workflow_id=workflow_id,
215 |                 error=str(e)
216 |             )
217 |             context.state = WorkflowState.FAILED
218 |             context.error = str(e)
219 |     
220 |     async def _handle_call_initiated(self, context: WorkflowContext):
221 |         """Handle call initiated state."""
222 |         try:
223 |             # Start ElevenLabs conversation
224 |             await self.elevenlabs.start_conversation(
225 |                 session_id=context.session_id,
226 |                 language=context.language
227 |             )
228 |             
229 |             context.state = WorkflowState.GREETING
230 |             
231 |         except Exception as e:
232 |             logger.error("Failed to initiate call", error=str(e))
233 |             context.state = WorkflowState.FAILED
234 |             context.error = str(e)
235 |     
236 |     async def _handle_greeting(self, context: WorkflowContext):
237 |         """Handle greeting state."""
238 |         try:
239 |             # Generate and play greeting
240 |             greeting = self._get_greeting_text(context.language)
241 |             
242 |             response = await self.elevenlabs.text_to_speech(
243 |                 greeting,
244 |                 language=context.language
245 |             )
246 |             
247 |             # Play audio through Asterisk
248 |             # In production, would stream audio through SIP
249 |             
250 |             context.state = WorkflowState.CONTENT_SELECTION
251 |             
252 |         except Exception as e:
253 |             logger.error("Failed to play greeting", error=str(e))
254 |             context.state = WorkflowState.FAILED
255 |             context.error = str(e)
256 |     
257 |     async def _handle_content_selection(self, context: WorkflowContext):
258 |         """Handle content type selection."""
259 |         try:
260 |             # Ask user what content they want
261 |             prompt = self._get_content_selection_prompt(context.language)
262 |             
263 |             await self.elevenlabs.send_message(
264 |                 context.session_id,
265 |                 prompt
266 |             )
267 |             
268 |             # Wait for user response (simulated)
269 |             await asyncio.sleep(2)
270 |             
271 |             # For demo, default to GitHub trending
272 |             context.content_type = "github"
273 |             
274 |             # Fetch content
275 |             context.available_content = await self.content.fetch_github_trending(
276 |                 limit=5
277 |             )
278 |             
279 |             # Generate summary
280 |             summary = await self.elevenlabs.generate_content_summary(
281 |                 [item.dict() for item in context.available_content],
282 |                 language=context.language,
283 |                 max_items=5
284 |             )
285 |             
286 |             # Read summary to user
287 |             await self.elevenlabs.send_message(
288 |                 context.session_id,
289 |                 summary
290 |             )
291 |             
292 |             context.state = WorkflowState.USER_SELECTION
293 |             
294 |         except Exception as e:
295 |             logger.error("Failed in content selection", error=str(e))
296 |             context.state = WorkflowState.FAILED
297 |             context.error = str(e)
298 |     
299 |     async def _handle_user_selection(self, context: WorkflowContext):
300 |         """Handle user's content selection."""
301 |         try:
302 |             # Wait for user selection (simulated)
303 |             # In production, would process DTMF or voice input
304 |             await asyncio.sleep(3)
305 |             
306 |             # For demo, select first two items
307 |             if len(context.available_content) >= 2:
308 |                 context.selected_items = [
309 |                     context.available_content[0].id,
310 |                     context.available_content[1].id
311 |                 ]
312 |             else:
313 |                 context.selected_items = [item.id for item in context.available_content]
314 |             
315 |             # Confirm selection
316 |             confirmation = self._get_selection_confirmation(
317 |                 context.selected_items,
318 |                 context.language
319 |             )
320 |             
321 |             await self.elevenlabs.send_message(
322 |                 context.session_id,
323 |                 confirmation
324 |             )
325 |             
326 |             context.state = WorkflowState.ADDRESS_COLLECTION
327 |             
328 |         except Exception as e:
329 |             logger.error("Failed in user selection", error=str(e))
330 |             context.state = WorkflowState.FAILED
331 |             context.error = str(e)
332 |     
333 |     async def _handle_address_collection(self, context: WorkflowContext):
334 |         """Handle delivery address collection."""
335 |         try:
336 |             # Ask for delivery address
337 |             prompt = self._get_address_prompt(context.language)
338 |             
339 |             await self.elevenlabs.send_message(
340 |                 context.session_id,
341 |                 prompt
342 |             )
343 |             
344 |             # For demo, use default address
345 |             context.delivery_address = Address(
346 |                 name="Test Recipient",
347 |                 street="Václavské náměstí 1",
348 |                 city="Praha",
349 |                 postal_code="11000",
350 |                 country="CZ",
351 |                 phone=context.caller_id
352 |             )
353 |             
354 |             # Confirm address
355 |             address_confirmation = self._format_address_confirmation(
356 |                 context.delivery_address,
357 |                 context.language
358 |             )
359 |             
360 |             await self.elevenlabs.send_message(
361 |                 context.session_id,
362 |                 address_confirmation
363 |             )
364 |             
365 |             context.state = WorkflowState.CONFIRMATION
366 |             
367 |         except Exception as e:
368 |             logger.error("Failed in address collection", error=str(e))
369 |             context.state = WorkflowState.FAILED
370 |             context.error = str(e)
371 |     
372 |     async def _handle_confirmation(self, context: WorkflowContext):
373 |         """Handle order confirmation."""
374 |         try:
375 |             # Generate final confirmation
376 |             summary = self._generate_order_summary(context)
377 |             
378 |             await self.elevenlabs.send_message(
379 |                 context.session_id,
380 |                 summary
381 |             )
382 |             
383 |             # Wait for confirmation (simulated)
384 |             await asyncio.sleep(2)
385 |             
386 |             # Assume confirmed
387 |             context.state = WorkflowState.PROCESSING
388 |             
389 |             # Thank user
390 |             thanks = self._get_thank_you_message(context.language)
391 |             await self.elevenlabs.send_message(
392 |                 context.session_id,
393 |                 thanks
394 |             )
395 |             
396 |         except Exception as e:
397 |             logger.error("Failed in confirmation", error=str(e))
398 |             context.state = WorkflowState.FAILED
399 |             context.error = str(e)
400 |     
401 |     async def _handle_processing(self, context: WorkflowContext):
402 |         """Handle order processing."""
403 |         try:
404 |             # Process the order
405 |             result = await self.process_order(
406 |                 context.session_id,
407 |                 context.selected_items,
408 |                 context.delivery_address.dict() if context.delivery_address else {},
409 |                 context.delivery_method
410 |             )
411 |             
412 |             context.print_job_ids = result.get("print_jobs", [])
413 |             context.shipment_id = result.get("shipment_id")
414 |             
415 |             context.state = WorkflowState.PRINTING
416 |             
417 |         except Exception as e:
418 |             logger.error("Failed in processing", error=str(e))
419 |             context.state = WorkflowState.FAILED
420 |             context.error = str(e)
421 |     
422 |     async def _handle_printing(self, context: WorkflowContext):
423 |         """Handle printing state."""
424 |         try:
425 |             # Monitor print jobs
426 |             all_completed = True
427 |             
428 |             for job_id in context.print_job_ids:
429 |                 status = self.printer.get_job_status(job_id)
430 |                 if status and status["status"] not in ["completed", "simulated"]:
431 |                     all_completed = False
432 |             
433 |             if all_completed:
434 |                 context.state = WorkflowState.SHIPPING
435 |             else:
436 |                 # Wait and check again
437 |                 await asyncio.sleep(5)
438 |                 
439 |         except Exception as e:
440 |             logger.error("Failed in printing", error=str(e))
441 |             context.state = WorkflowState.FAILED
442 |             context.error = str(e)
443 |     
444 |     async def _handle_shipping(self, context: WorkflowContext):
445 |         """Handle shipping state."""
446 |         try:
447 |             if context.shipment_id:
448 |                 # Mark as shipped
449 |                 await self.delivery.ship_package(context.shipment_id)
450 |             
451 |             context.state = WorkflowState.COMPLETED
452 |             
453 |         except Exception as e:
454 |             logger.error("Failed in shipping", error=str(e))
455 |             context.state = WorkflowState.FAILED
456 |             context.error = str(e)
457 |     
458 |     async def process_order(
459 |         self,
460 |         session_id: str,
461 |         selected_items: List[str],
462 |         delivery_address: Dict[str, Any],
463 |         delivery_method: str = "post"
464 |     ) -> Dict[str, Any]:
465 |         """
466 |         Process complete order from selection to shipping.
467 |         
468 |         Args:
469 |             session_id: Session ID
470 |             selected_items: Selected content IDs
471 |             delivery_address: Delivery address
472 |             delivery_method: Delivery method
473 |         
474 |         Returns:
475 |             Order result with tracking information
476 |         """
477 |         try:
478 |             # Get selected content
479 |             content_items = await self.content.get_content_by_ids(selected_items)
480 |             
481 |             if not content_items:
482 |                 raise ValueError("No content items found")
483 |             
484 |             # Format content for printing
485 |             formatted_content = self.content.format_for_print(
486 |                 content_items,
487 |                 format="markdown"
488 |             )
489 |             
490 |             # Generate PDF
491 |             pdf_path = await self.printer.generate_pdf(
492 |                 formatted_content,
493 |                 title=f"PrintCast Order {session_id}"
494 |             )
495 |             
496 |             # Print document
497 |             print_job_id = await self.printer.print_document(pdf_path)
498 |             
499 |             # Create shipment
500 |             address = Address(**delivery_address) if isinstance(delivery_address, dict) else delivery_address
501 |             
502 |             shipment_id = await self.delivery.create_shipment(
503 |                 recipient=address,
504 |                 method=delivery_method,
505 |                 weight=100,  # Estimate
506 |                 metadata={
507 |                     "session_id": session_id,
508 |                     "content_count": len(content_items)
509 |                 }
510 |             )
511 |             
512 |             # Get tracking info
513 |             tracking_info = self.delivery.get_shipment_status(shipment_id)
514 |             
515 |             logger.info(
516 |                 "Order processed",
517 |                 session_id=session_id,
518 |                 print_job=print_job_id,
519 |                 shipment=shipment_id
520 |             )
521 |             
522 |             return {
523 |                 "success": True,
524 |                 "session_id": session_id,
525 |                 "print_jobs": [print_job_id],
526 |                 "shipment_id": shipment_id,
527 |                 "tracking_number": tracking_info.get("tracking_number") if tracking_info else None,
528 |                 "estimated_delivery": tracking_info.get("estimated_delivery") if tracking_info else None,
529 |                 "total_items": len(content_items)
530 |             }
531 |             
532 |         except Exception as e:
533 |             logger.error("Failed to process order", error=str(e))
534 |             raise
535 |     
536 |     def _get_greeting_text(self, language: str) -> str:
537 |         """Get greeting text."""
538 |         greetings = {
539 |             "cs": "Dobrý den! Vítejte v PrintCast. Mohu vám pomoci vytisknout a doručit nejnovější trendy z GitHubu, RSS kanálů nebo zpráv. Co by vás zajímalo?",
540 |             "en": "Hello! Welcome to PrintCast. I can help you print and deliver the latest trends from GitHub, RSS feeds, or news. What would you like to explore?"
541 |         }
542 |         return greetings.get(language, greetings["en"])
543 |     
544 |     def _get_content_selection_prompt(self, language: str) -> str:
545 |         """Get content selection prompt."""
546 |         prompts = {
547 |             "cs": "Řekněte 'GitHub' pro trendující repozitáře, 'RSS' pro nejnovější články, nebo 'zprávy' pro aktuální novinky.",
548 |             "en": "Say 'GitHub' for trending repositories, 'RSS' for latest articles, or 'news' for current news."
549 |         }
550 |         return prompts.get(language, prompts["en"])
551 |     
552 |     def _get_selection_confirmation(self, items: List[str], language: str) -> str:
553 |         """Get selection confirmation."""
554 |         count = len(items)
555 |         if language == "cs":
556 |             return f"Vybrali jste {count} položek k tisku. Nyní potřebuji vaši doručovací adresu."
557 |         else:
558 |             return f"You've selected {count} items to print. Now I need your delivery address."
559 |     
560 |     def _get_address_prompt(self, language: str) -> str:
561 |         """Get address prompt."""
562 |         prompts = {
563 |             "cs": "Prosím, řekněte mi vaši doručovací adresu včetně jména, ulice, města a PSČ.",
564 |             "en": "Please tell me your delivery address including name, street, city, and postal code."
565 |         }
566 |         return prompts.get(language, prompts["en"])
567 |     
568 |     def _format_address_confirmation(self, address: Address, language: str) -> str:
569 |         """Format address confirmation."""
570 |         if language == "cs":
571 |             return f"Doručovací adresa: {address.name}, {address.street}, {address.postal_code} {address.city}. Je to správně?"
572 |         else:
573 |             return f"Delivery address: {address.name}, {address.street}, {address.postal_code} {address.city}. Is this correct?"
574 |     
575 |     def _generate_order_summary(self, context: WorkflowContext) -> str:
576 |         """Generate order summary."""
577 |         items_count = len(context.selected_items)
578 |         
579 |         if context.language == "cs":
580 |             return f"Shrnutí objednávky: {items_count} položek k tisku, doručení {context.delivery_method} na adresu {context.delivery_address.city if context.delivery_address else 'neznámá'}. Potvrzujete objednávku?"
581 |         else:
582 |             return f"Order summary: {items_count} items to print, {context.delivery_method} delivery to {context.delivery_address.city if context.delivery_address else 'unknown'}. Do you confirm the order?"
583 |     
584 |     def _get_thank_you_message(self, language: str) -> str:
585 |         """Get thank you message."""
586 |         messages = {
587 |             "cs": "Děkuji za vaši objednávku! Vaše dokumenty budou vytištěny a odeslány. Obdržíte sledovací číslo SMS zprávou.",
588 |             "en": "Thank you for your order! Your documents will be printed and shipped. You'll receive a tracking number via SMS."
589 |         }
590 |         return messages.get(language, messages["en"])
591 |     
592 |     async def cancel_workflow(self, workflow_id: str, reason: str = "user_request") -> bool:
593 |         """
594 |         Cancel a workflow.
595 |         
596 |         Args:
597 |             workflow_id: Workflow ID
598 |             reason: Cancellation reason
599 |         
600 |         Returns:
601 |             True if cancelled successfully
602 |         """
603 |         context = self.workflows.get(workflow_id)
604 |         if not context:
605 |             return False
606 |         
607 |         if context.state in [WorkflowState.COMPLETED, WorkflowState.FAILED, WorkflowState.CANCELLED]:
608 |             return False
609 |         
610 |         try:
611 |             # Cancel print jobs
612 |             for job_id in context.print_job_ids:
613 |                 await self.printer.cancel_print_job(job_id)
614 |             
615 |             # Cancel shipment
616 |             if context.shipment_id:
617 |                 await self.delivery.cancel_shipment(context.shipment_id)
618 |             
619 |             # End conversation
620 |             await self.elevenlabs.end_conversation(context.session_id)
621 |             
622 |             context.state = WorkflowState.CANCELLED
623 |             context.end_time = datetime.now()
624 |             context.metadata["cancellation_reason"] = reason
625 |             
626 |             logger.info(
627 |                 "Workflow cancelled",
628 |                 workflow_id=workflow_id,
629 |                 reason=reason
630 |             )
631 |             
632 |             return True
633 |             
634 |         except Exception as e:
635 |             logger.error(
636 |                 "Failed to cancel workflow",
637 |                 workflow_id=workflow_id,
638 |                 error=str(e)
639 |             )
640 |             return False
641 |     
642 |     def get_workflow_status(self, workflow_id: str) -> Optional[Dict[str, Any]]:
643 |         """Get workflow status."""
644 |         context = self.workflows.get(workflow_id)
645 |         if not context:
646 |             return None
647 |         
648 |         duration = None
649 |         if context.end_time:
650 |             duration = (context.end_time - context.start_time).total_seconds()
651 |         elif context.state not in [WorkflowState.COMPLETED, WorkflowState.FAILED, WorkflowState.CANCELLED]:
652 |             duration = (datetime.now() - context.start_time).total_seconds()
653 |         
654 |         return {
655 |             "workflow_id": workflow_id,
656 |             "session_id": context.session_id,
657 |             "caller_id": context.caller_id,
658 |             "state": context.state.value,
659 |             "language": context.language,
660 |             "selected_items": len(context.selected_items),
661 |             "print_jobs": context.print_job_ids,
662 |             "shipment_id": context.shipment_id,
663 |             "start_time": context.start_time.isoformat(),
664 |             "end_time": context.end_time.isoformat() if context.end_time else None,
665 |             "duration_seconds": duration,
666 |             "error": context.error
667 |         }
```

--------------------------------------------------------------------------------
/data/prompts/templates/mcp-code-generator.json:
--------------------------------------------------------------------------------

```json
1 | {
2 |   "id": "unknown-id",
3 |   "name": "mcp-code-generator",
4 |   "description": "An advanced code generation prompt that leverages multiple MCP resources to create contextually-aware, high-quality code with minimal hallucination.",
5 |   "content": " \\\"mcp-code-generator\\\",\\n  \\\"version\\\": \\\"1.0.0\\\",\\n  \\\"description\\\": \\\"An advanced code generation prompt that leverages multiple MCP resources to create contextually-aware, high-quality code with minimal hallucination.\\\",\\n  \\\"prompt_text\\\": \\\"# MCP-Powered Code Generator\\\\n\\\\nYou are an expert coding assistant with access to multiple MCP resources. Your task is to generate high-quality, contextually-appropriate code based on the user's requirements while leveraging the following MCP resources to reduce hallucination and improve accuracy:\\\\n\\\\n- **Filesystem** (@file:// URIs): Access to project files and directory structure\\\\n- **GitHub** (@github:// URIs): Access to repositories, code examples, and documentation\\\\n- **Sequential Thinking** (@thinking:// URIs): Step-by-step reasoning for complex algorithms\\\\n- **Memory** (@memory:// URIs): Previous code snippets and user preferences\\\\n\\\\n## Code Generation Process\\\\n\\\\n1. **Analyze Requirements**\\\\n   - Break down the user's request into specific coding tasks\\\\n   - Identify key functionalities, interfaces, and constraints\\\\n   - Determine appropriate language, framework, or library to use\\\\n\\\\n2. **Resource Collection**\\\\n   - Check current project structure (if available): `@file:///project`\\\\n   - Find related examples on GitHub: `@github://relevant-repos`\\\\n   - Retrieve user preferences if available: `@memory://coding-preferences`\\\\n\\\\n3. **Design Phase**\\\\n   - Create a high-level design outline\\\\n   - Determine classes, functions, or components needed\\\\n   - Establish interfaces and relationships\\\\n\\\\n4. **Implementation Phase**\\\\n   - Write clean, well-documented code that follows best practices\\\\n   - Include proper error handling and edge cases\\\\n   - Ensure compatibility with existing codebase (if applicable)\\\\n   - Add appropriate comments and documentation\\\\n\\\\n5. **Testing Considerations**\\\\n   - Include unit test examples or strategies when appropriate\\\\n   - Consider edge cases and potential failures\\\\n   - Provide sample usage examples\\\\n\\\\n## Code Quality Guidelines\\\\n\\\\n- **Readability**: Write clear, self-explanatory code with consistent formatting\\\\n- **Maintainability**: Use descriptive variable names and follow language conventions\\\\n- **Performance**: Consider algorithmic efficiency and resource usage\\\\n- **Security**: Follow security best practices and avoid common vulnerabilities\\\\n- **Reusability**: Create modular, reusable components when appropriate\\\\n\\\\n## Output Format\\\\n\\\\nYour response should include:\\\\n\\\\n1. A brief explanation of the approach taken\\\\n2. The generated code in properly formatted code blocks\\\\n3. Installation instructions or dependencies (if applicable)\\\\n4. Usage examples\\\\n5. References to any MCP resources used\\\\n\\\\n## Contextual Adaptation\\\\n\\\\nTailor your code generation based on:\\\\n\\\\n- The programming language specified or inferred from context\\\\n- The user's preferred coding style (if known)\\\\n- The complexity level appropriate for the task\\\\n- The target environment (web, mobile, desktop, server, etc.)\\\\n\\\\n{{code_requirements}}\\\\n\\\\n{{additional_context}}\\\",\\n  \\\"variables\\\": [\\n    \\\"code_requirements\\\",\\n    \\\"additional_context\\\"\\n  ],\\n  \\\"tags\\\": [\\n    \\\"code-generation\\\",\\n    \\\"multi-resource\\\",\\n    \\\"mcp-integration\\\",\\n    \\\"development\\\",\\n    \\\"programming\\\"\\n  ],\\n  \\\"examples\\\": [\\n    {\\n      \\\"name\\\": \\\"React Component Generator\\\",\\n      \\\"variables\\\": {\\n        \\\"code_requirements\\\": \\\"Create a React component for a customizable data table with sorting, filtering, and pagination capabilities. The component should be reusable across our application.\\\",\\n        \\\"additional_context\\\": \\\"Our project uses TypeScript, React 18, and follows a functional component approach with hooks. We prefer using styled-components for styling. The existing component structure can be found at @file:///project/src/components/.\\\"\\n      },\\n      \\\"expected_response\\\": \\\"# Customizable Data Table Component\\\\n\\\\nI'll create a reusable React component for a data table with sorting, filtering, and pagination capabilities, following your project's TypeScript and React 18 standards with styled-components for styling.\\\\n\\\\n## Approach\\\\n\\\\nAfter examining your project structure at `@file:///project/src/components/`, I notice you're using a functional component pattern with hooks. I'll create:\\\\n\\\\n1. A main `DataTable` component that handles the core functionality\\\\n2. Several sub-components for table elements (header, row, cell, pagination)\\\\n3. Custom hooks for sorting, filtering, and pagination logic\\\\n4. TypeScript interfaces for strong typing\\\\n\\\\n## Component Structure\\\\n\\\\n```typescript\\\\n// DataTable.tsx\\\\nimport React, { useState, useMemo, useCallback } from 'react';\\\\nimport styled from 'styled-components';\\\\nimport { TableHeader } from './TableHeader';\\\\nimport { TableRow } from './TableRow';\\\\nimport { Pagination } from './Pagination';\\\\nimport { useSort } from '../hooks/useSort';\\\\nimport { useFilter } from '../hooks/useFilter';\\\\nimport { usePagination } from '../hooks/usePagination';\\\\n\\\\n// TypeScript interfaces\\\\nexport interface Column<T> {\\\\n  key: string;\\\\n  header: string;\\\\n  renderCell?: (item: T) => React.ReactNode;\\\\n  sortable?: boolean;\\\\n  filterable?: boolean;\\\\n}\\\\n\\\\nexport interface DataTableProps<T> {\\\\n  data: T[];\\\\n  columns: Column<T>[];\\\\n  initialSortKey?: string;\\\\n  initialSortDirection?: 'asc' | 'desc';\\\\n  rowsPerPageOptions?: number[];\\\\n  initialRowsPerPage?: number;\\\\n  onRowClick?: (item: T) => void;\\\\n  className?: string;\\\\n}\\\\n\\\\n// Styled components\\\\nconst TableContainer = styled.div`\\\\n  width: 100%;\\\\n  overflow-x: auto;\\\\n  border-radius: 4px;\\\\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\\\\n`;\\\\n\\\\nconst Table = styled.table`\\\\n  width: 100%;\\\\n  border-collapse: collapse;\\\\n  font-size: 14px;\\\\n`;\\\\n\\\\nconst TableBody = styled.tbody`\\\\n  & tr:nth-child(odd) {\\\\n    background-color: #f9f9f9;\\\\n  }\\\\n  \\\\n  & tr:hover {\\\\n    background-color: #f1f1f1;\\\\n  }\\\\n`;\\\\n\\\\nconst FilterContainer = styled.div`\\\\n  margin-bottom: 16px;\\\\n  display: flex;\\\\n  justify-content: flex-end;\\\\n`;\\\\n\\\\nconst FilterInput = styled.input`\\\\n  padding: 8px 12px;\\\\n  border: 1px solid #ddd;\\\\n  border-radius: 4px;\\\\n  font-size: 14px;\\\\n  width: 250px;\\\\n`;\\\\n\\\\n// Main component\\\\nexport function DataTable<T extends Record<string, any>>({ \\\\n  data, \\\\n  columns, \\\\n  initialSortKey,\\\\n  initialSortDirection = 'asc',\\\\n  rowsPerPageOptions = [10, 25, 50],\\\\n  initialRowsPerPage = 10,\\\\n  onRowClick,\\\\n  className\\\\n}: DataTableProps<T>) {\\\\n  // Global filter state\\\\n  const [filterValue, setFilterValue] = useState('');\\\\n  \\\\n  // Hook usage\\\\n  const { sortedData, sortKey, sortDirection, handleSort } = useSort(data, initialSortKey, initialSortDirection);\\\\n  const { filteredData } = useFilter(sortedData, filterValue, columns);\\\\n  const { \\\\n    currentPageData, \\\\n    currentPage, \\\\n    totalPages, \\\\n    rowsPerPage,\\\\n    setCurrentPage, \\\\n    setRowsPerPage \\\\n  } = usePagination(filteredData, initialRowsPerPage);\\\\n\\\\n  // Filter change handler\\\\n  const handleFilterChange = useCallback(\\\\n    (e: React.ChangeEvent<HTMLInputElement>) => {\\\\n      setFilterValue(e.target.value);\\\\n      setCurrentPage(1); // Reset to first page when filtering\\\\n    }, \\\\n    [setCurrentPage]\\\\n  );\\\\n\\\\n  // Memoize filterable columns\\\\n  const filterableColumns = useMemo(\\\\n    () => columns.filter(column => column.filterable),\\\\n    [columns]\\\\n  );\\\\n\\\\n  return (\\\\n    <div className={className}>\\\\n      {filterableColumns.length > 0 && (\\\\n        <FilterContainer>\\\\n          <FilterInput \\\\\\n            type=\\\\\\\"text\\\\\\\" \\\\\\n            placeholder=\\\\\\\"Filter table...\\\\\\\"\\\\\\n            value={filterValue}\\\\\\n            onChange={handleFilterChange}\\\\\\n          />\\\\\\n        </FilterContainer>\\\\\\n      )}\\\\\\n      \\\\\\n      <TableContainer>\\\\\\n        <Table>\\\\\\n          <TableHeader \\\\\\n            columns={columns} \\\\\\n            sortKey={sortKey} \\\\\\n            sortDirection={sortDirection} \\\\\\n            onSort={handleSort} \\\\\\n          />\\\\\\n          <TableBody>\\\\\\n            {currentPageData.map((item, index) => (\\\\\\n              <TableRow \\\\\\n                key={index} \\\\\\n                item={item} \\\\\\n                columns={columns} \\\\\\n                onClick={onRowClick ? () => onRowClick(item) : undefined} \\\\\\n              />\\\\\\n            ))}\\\\\\n            {currentPageData.length === 0 && (\\\\\\n              <tr>\\\\\\n                <td colSpan={columns.length} style={{ textAlign: 'center', padding: '16px' }}>\\\\\\n                  No records found\\\\\\n                </td>\\\\\\n              </tr>\\\\\\n            )}\\\\\\n          </TableBody>\\\\\\n        </Table>\\\\\\n      </TableContainer>\\\\\\n      \\\\\\n      <Pagination \\\\\\n        currentPage={currentPage}\\\\\\n        totalPages={totalPages}\\\\\\n        rowsPerPage={rowsPerPage}\\\\\\n        rowsPerPageOptions={rowsPerPageOptions}\\\\\\n        onPageChange={setCurrentPage}\\\\\\n        onRowsPerPageChange={setRowsPerPage}\\\\\\n        totalItems={filteredData.length}\\\\\\n      />\\\\\\n    </div>\\\\\\n  );\\\\\\n}\\\\n```\\\\n\\\\n## Custom Hooks Implementation\\\\n\\\\n```typescript\\\\n// hooks/useSort.ts\\\\nimport { useState, useMemo } from 'react';\\\\n\\\\nexport function useSort<T extends Record<string, any>>(\\\\n  data: T[], \\\\\\n  initialSortKey?: string, \\\\\\n  initialSortDirection: 'asc' | 'desc' = 'asc'\\\\n) {\\\\n  const [sortKey, setSortKey] = useState<string | undefined>(initialSortKey);\\\\n  const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>(initialSortDirection);\\\\n\\\\n  const handleSort = (key: string) => {\\\\n    if (sortKey === key) {\\\\n      // Toggle direction if already sorting by this key\\\\n      setSortDirection(prev => prev === 'asc' ? 'desc' : 'asc');\\\\n    } else {\\\\n      // New sort key, set to ascending by default\\\\n      setSortKey(key);\\\\n      setSortDirection('asc');\\\\n    }\\\\n  };\\\\n\\\\n  const sortedData = useMemo(() => {\\\\n    if (!sortKey) return [...data];\\\\n\\\\n    return [...data].sort((a, b) => {\\\\n      const aValue = a[sortKey];\\\\n      const bValue = b[sortKey];\\\\n\\\\n      // Handle different data types\\\\n      if (typeof aValue === 'string' && typeof bValue === 'string') {\\\\n        return sortDirection === 'asc' \\\\\\n          ? aValue.localeCompare(bValue) \\\\\\n          : bValue.localeCompare(aValue);\\\\n      }\\\\n\\\\n      if (aValue === bValue) return 0;\\\\n      \\\\n      if (sortDirection === 'asc') {\\\\n        return aValue > bValue ? 1 : -1;\\\\n      } else {\\\\n        return aValue < bValue ? 1 : -1;\\\\n      }\\\\n    });\\\\n  }, [data, sortKey, sortDirection]);\\\\n\\\\n  return { sortedData, sortKey, sortDirection, handleSort };\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// hooks/useFilter.ts\\\\nimport { useMemo } from 'react';\\\\nimport { Column } from '../components/DataTable';\\\\n\\\\nexport function useFilter<T extends Record<string, any>>(\\\\n  data: T[], \\\\\\n  filterValue: string,\\\\n  columns: Column<T>[]\\\\n) {\\\\n  const filteredData = useMemo(() => {\\\\n    if (!filterValue) return data;\\\\n    \\\\n    const lowercasedFilter = filterValue.toLowerCase();\\\\n    \\\\n    return data.filter(item => {\\\\n      return columns.some(column => {\\\\n        const value = item[column.key];\\\\n        if (value == null) return false;\\\\n        \\\\n        return String(value).toLowerCase().includes(lowercasedFilter);\\\\n      });\\\\n    });\\\\n  }, [data, filterValue, columns]);\\\\n\\\\n  return { filteredData };\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// hooks/usePagination.ts\\\\nimport { useState, useMemo, useEffect } from 'react';\\\\n\\\\nexport function usePagination<T>(\\\\n  data: T[], \\\\\\n  initialRowsPerPage: number\\\\n) {\\\\n  const [currentPage, setCurrentPage] = useState(1);\\\\n  const [rowsPerPage, setRowsPerPage] = useState(initialRowsPerPage);\\\\n\\\\n  // Reset to first page when data changes\\\\n  useEffect(() => {\\\\n    setCurrentPage(1);\\\\n  }, [data.length]);\\\\n\\\\n  const totalPages = useMemo(() => \\\\\\n    Math.max(1, Math.ceil(data.length / rowsPerPage)),\\\\n    [data.length, rowsPerPage]\\\\n  );\\\\n\\\\n  // Keep current page in bounds\\\\n  useEffect(() => {\\\\n    if (currentPage > totalPages) {\\\\n      setCurrentPage(totalPages);\\\\n    }\\\\n  }, [currentPage, totalPages]);\\\\n\\\\n  const currentPageData = useMemo(() => {\\\\n    const startIndex = (currentPage - 1) * rowsPerPage;\\\\n    return data.slice(startIndex, startIndex + rowsPerPage);\\\\n  }, [data, currentPage, rowsPerPage]);\\\\n\\\\n  return { \\\\\\n    currentPageData, \\\\\\n    currentPage, \\\\\\n    totalPages, \\\\\\n    rowsPerPage,\\\\n    setCurrentPage, \\\\\\n    setRowsPerPage \\\\n  };\\\\n}\\\\n```\\\\n\\\\n## Supporting Components\\\\n\\\\n```typescript\\\\n// TableHeader.tsx\\\\nimport React from 'react';\\\\nimport styled from 'styled-components';\\\\nimport { Column } from './DataTable';\\\\n\\\\nconst HeaderRow = styled.tr`\\\\n  background-color: #f5f5f5;\\\\n  border-bottom: 2px solid #ddd;\\\\n`;\\\\n\\\\nconst HeaderCell = styled.th<{ sortable: boolean }>`\\\\n  padding: 12px 16px;\\\\n  text-align: left;\\\\n  font-weight: 600;\\\\n  cursor: ${props => props.sortable ? 'pointer' : 'default'};\\\\n  user-select: none;\\\\n  position: relative;\\\\n`;\\\\n\\\\nconst SortIcon = styled.span<{ direction: 'asc' | 'desc' }>`\\\\n  margin-left: 8px;\\\\n  &:after {\\\\n    content: '${props => props.direction === 'asc' ? '↑' : '↓'}';\\\\n    font-size: 14px;\\\\n  }\\\\n`;\\\\n\\\\ninterface TableHeaderProps<T> {\\\\n  columns: Column<T>[];\\\\n  sortKey?: string;\\\\n  sortDirection: 'asc' | 'desc';\\\\n  onSort: (key: string) => void;\\\\n}\\\\n\\\\nexport function TableHeader<T>({ \\\\\\n  columns, \\\\\\n  sortKey, \\\\\\n  sortDirection, \\\\\\n  onSort \\\\n}: TableHeaderProps<T>) {\\\\n  return (\\\\n    <thead>\\\\n      <HeaderRow>\\\\n        {columns.map(column => (\\\\n          <HeaderCell \\\\\\n          key={column.key} \\\\\\n          sortable={!!column.sortable}\\\\\\n          onClick={column.sortable ? () => onSort(column.key) : undefined}\\\\\\n        >\\\\\\n          {column.header}\\\\\\n          {sortKey === column.key && (\\\\n            <SortIcon direction={sortDirection} />\\\\n          )}\\\\\\n        </HeaderCell>\\\\n        ))}\\\\\\n      </HeaderRow>\\\\n    </thead>\\\\n  );\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// TableRow.tsx\\\\nimport React from 'react';\\\\nimport styled from 'styled-components';\\\\nimport { Column } from './DataTable';\\\\n\\\\nconst Row = styled.tr<{ clickable: boolean }>`\\\\n  cursor: ${props => props.clickable ? 'pointer' : 'default'};\\\\n`;\\\\n\\\\nconst Cell = styled.td`\\\\n  padding: 12px 16px;\\\\n  border-bottom: 1px solid #eee;\\\\n  vertical-align: top;\\\\n`;\\\\n\\\\ninterface TableRowProps<T> {\\\\n  item: T;\\\\n  columns: Column<T>[];\\\\n  onClick?: () => void;\\\\n}\\\\n\\\\nexport function TableRow<T>({ item, columns, onClick }: TableRowProps<T>) {\\\\n  return (\\\\n    <Row clickable={!!onClick} onClick={onClick}>\\\\\\n      {columns.map(column => (\\\\n        <Cell key={column.key}>\\\\\\n          {column.renderCell ? column.renderCell(item) : String(item[column.key] ?? '')}\\\\\\n        </Cell>\\\\n      ))}\\\\\\n    </Row>\\\\n  );\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// Pagination.tsx\\\\nimport React from 'react';\\\\nimport styled from 'styled-components';\\\\n\\\\nconst PaginationContainer = styled.div`\\\\n  display: flex;\\\\n  justify-content: space-between;\\\\n  align-items: center;\\\\n  margin-top: 16px;\\\\n  font-size: 14px;\\\\n`;\\\\n\\\\nconst PageInfo = styled.div`\\\\n  color: #666;\\\\n`;\\\\n\\\\nconst PageControls = styled.div`\\\\n  display: flex;\\\\n  align-items: center;\\\\n`;\\\\n\\\\nconst PageButton = styled.button<{ active?: boolean }>`\\\\n  padding: 6px 12px;\\\\n  margin: 0 4px;\\\\n  background-color: ${props => props.active ? '#007bff' : 'white'};\\\\n  color: ${props => props.active ? 'white' : '#333'};\\\\n  border: 1px solid #ddd;\\\\n  border-radius: 4px;\\\\n  cursor: pointer;\\\\n  \\\\n  &:disabled {\\\\n    opacity: 0.5;\\\\n    cursor: not-allowed;\\\\n  }\\\\n  \\\\n  &:hover:not(:disabled) {\\\\n    background-color: ${props => props.active ? '#007bff' : '#f1f1f1'};\\\\n  }\\\\n`;\\\\n\\\\nconst RowsPerPageSelect = styled.select`\\\\n  padding: 6px 8px;\\\\n  border: 1px solid #ddd;\\\\n  border-radius: 4px;\\\\n  margin-left: 8px;\\\\n`;\\\\n\\\\ninterface PaginationProps {\\\\n  currentPage: number;\\\\n  totalPages: number;\\\\n  rowsPerPage: number;\\\\n  rowsPerPageOptions: number[];\\\\n  totalItems: number;\\\\n  onPageChange: (page: number) => void;\\\\n  onRowsPerPageChange: (rowsPerPage: number) => void;\\\\n}\\\\n\\\\nexport function Pagination({ \\\\\\n  currentPage, \\\\\\n  totalPages, \\\\\\n  rowsPerPage, \\\\\\n  rowsPerPageOptions, \\\\\\n  totalItems,\\\\n  onPageChange, \\\\\\n  onRowsPerPageChange \\\\n}: PaginationProps) {\\\\n  // Calculate start and end item numbers\\\\n  const startItem = Math.min(totalItems, (currentPage - 1) * rowsPerPage + 1);\\\\n  const endItem = Math.min(totalItems, startItem + rowsPerPage - 1);\\\\n  \\\\n  // Generate page buttons\\\\n  const getPageButtons = () => {\\\\n    const buttons = [];\\\\n    \\\\n    // Always show first page\\\\n    buttons.push(\\\\n      <PageButton \\\\\\n      key=\\\\\\\"first\\\\\\\" \\\\\\n      active={currentPage === 1}\\\\\\n      onClick={() => onPageChange(1)}\\\\\\n      disabled={currentPage === 1}\\\\\\n    >\\\\\\n      1\\\\\\n    </PageButton>\\\\n    );\\\\n    \\\\n    // Show ellipsis if needed\\\\n    if (currentPage > 3) {\\\\n      buttons.push(<span key=\\\\\\\"ellipsis1\\\\\\\">...</span>);\\\\n    }\\\\n    \\\\n    // Show pages around current page\\\\n    for (let i = Math.max(2, currentPage - 1); i <= Math.min(totalPages - 1, currentPage + 1); i++) {\\\\n      buttons.push(\\\\n        <PageButton \\\\\\n      key={i} \\\\\\n      active={currentPage === i}\\\\\\n      onClick={() => onPageChange(i)}\\\\\\n    >\\\\\\n      {i}\\\\\\n    </PageButton>\\\\n      );\\\\n    }\\\\n    \\\\n    // Show ellipsis if needed\\\\n    if (currentPage < totalPages - 2) {\\\\n      buttons.push(<span key=\\\\\\\"ellipsis2\\\\\\\">...</span>);\\\\n    }\\\\n    \\\\n    // Always show last page if there's more than one page\\\\n    if (totalPages > 1) {\\\\n      buttons.push(\\\\n        <PageButton \\\\\\n      key=\\\\\\\"last\\\\\\\" \\\\\\n      active={currentPage === totalPages}\\\\\\n      onClick={() => onPageChange(totalPages)}\\\\\\n      disabled={currentPage === totalPages}\\\\\\n    >\\\\\\n      {totalPages}\\\\\\n    </PageButton>\\\\n      );\\\\n    }\\\\n    \\\\n    return buttons;\\\\n  };\\\\n\\\\n  return (\\\\n    <PaginationContainer>\\\\n      <PageInfo>\\\\n        Showing {totalItems ? `${startItem}-${endItem} of ${totalItems}` : '0'} results\\\\n      </PageInfo>\\\\n      \\\\n      <PageControls>\\\\n        <PageButton \\\\\\n      onClick={() => onPageChange(currentPage - 1)}\\\\\\n      disabled={currentPage === 1}\\\\\\n    >\\\\\\n      Previous\\\\\\n    </PageButton>\\\\n        \\\\\\n        {getPageButtons()}\\\\\\n        \\\\\\n        <PageButton \\\\\\n          onClick={() => onPageChange(currentPage + 1)}\\\\\\n          disabled={currentPage === totalPages}\\\\\\n        >\\\\\\n          Next\\\\\\n        </PageButton>\\\\n        \\\\\\n        <span style={{ marginLeft: '16px' }}>Rows per page:</span>\\\\\\n        <RowsPerPageSelect \\\\\\n          value={rowsPerPage}\\\\\\n          onChange={(e) => onRowsPerPageChange(Number(e.target.value))}\\\\\\n        >\\\\\\n          {rowsPerPageOptions.map(option => (\\\\n            <option key={option} value={option}>{option}</option>\\\\n          ))}\\\\\\n        </RowsPerPageSelect>\\\\\\n      </PageControls>\\\\\\n    </PaginationContainer>\\\\n  );\\\\n}\\\\n```\\\\n\\\\n## Usage Example\\\\n\\\\n```tsx\\\\nimport React from 'react';\\\\nimport { DataTable } from './components/DataTable';\\\\n\\\\ninterface User {\\\\n  id: number;\\\\n  name: string;\\\\n  email: string;\\\\n  role: string;\\\\n  status: 'active' | 'inactive';\\\\n  lastLogin: string;\\\\n}\\\\n\\\\nconst users: User[] = [\\\\n  { id: 1, name: 'John Doe', email: '[email protected]', role: 'Admin', status: 'active', lastLogin: '2023-05-15T10:30:00Z' },\\\\n  { id: 2, name: 'Jane Smith', email: '[email protected]', role: 'Editor', status: 'active', lastLogin: '2023-05-14T09:15:00Z' },\\\\n  // Add more users as needed\\\\n];\\\\n\\\\nfunction UserTable() {\\\\n  const columns = [\\\\n    { key: 'id', header: 'ID', sortable: true },\\\\n    { key: 'name', header: 'Name', sortable: true, filterable: true },\\\\n    { key: 'email', header: 'Email', filterable: true },\\\\n    { key: 'role', header: 'Role', sortable: true, filterable: true },\\\\n    { \\\\\\n      key: 'status', \\\\\\n      header: 'Status', \\\\\\n      sortable: true,\\\\\\n      renderCell: (user: User) => (\\\\n        <span style={{ \\\\\\n        color: user.status === 'active' ? 'green' : 'red',\\\\\\n        fontWeight: 'bold'\\\\\\n      }}>\\\\\\n        {user.status}\\\\\\n      </span>\\\\n      )\\\\n    },\\\\n    { \\\\\\n      key: 'lastLogin', \\\\\\n      header: 'Last Login', \\\\\\n      sortable: true,\\\\\\n      renderCell: (user: User) => new Date(user.lastLogin).toLocaleString()\\\\n    },\\\\n  ];\\\\n\\\\n  const handleRowClick = (user: User) => {\\\\n    console.log('User clicked:', user);\\\\n    // Navigate to user detail page or show modal\\\\n  };\\\\n\\\\n  return (\\\\n    <div>\\\\n      <h1>User Management</h1>\\\\n      <DataTable \\\\\\n        data={users}\\\\\\n        columns={columns}\\\\\\n        initialSortKey=\\\\\\\"id\\\\\\\"\\\\\\n        initialRowsPerPage={10}\\\\\\n        rowsPerPageOptions={[5, 10, 25, 50]}\\\\\\n        onRowClick={handleRowClick}\\\\\\n      />\\\\n    </div>\\\\n  );\\\\n}\\\\n\\\\nexport default UserTable;\\\\n```\\\\n\\\\n## Installation Instructions\\\\n\\\\nTo use this component, you'll need to have these dependencies installed:\\\\n\\\\n```bash\\\\nnpm install styled-components @types/styled-components\\\\n```\\\\n\\\\nor\\\\n\\\\n```bash\\\\nyarn add styled-components @types/styled-components\\\\n```\\\\n\\\\n## MCP Resources Used\\\\n\\\\n- `@file:///project/src/components/` - Examined your existing component structure to match the styling approach and component patterns\\\\n- `@memory://coding-preferences` - Retrieved your preference for functional components, React 18, and TypeScript\\\\n\\\\nThe component follows modern React best practices with proper TypeScript typing, modular structure, and optimized performance through memoization. The styled-components implementation ensures consistent styling that can be customized to match your application's design system.\\\"\\n    }\\n  ],\\n  \\\"metadata\\\": {\\n    \\\"created_at\\\": \\\"2023-05-15T12:00:00Z\\\",\\n    \\\"updated_at\\\": \\\"2023-05-15T12:00:00Z\\\",\\n    \\\"author\\\": \\\"MCP-Prompts Team\\\",\\n    \\\"category\\\": \\\"development\\\",\\n    \\\"mcp_requirements\\\": [\\n      \\\"MCP Filesystem Server\\\",\\n      \\\"MCP GitHub Server\\\",\\n      \\\"MCP Sequential Thinking Server\\\",\\n      \\\"MCP Memory Server"
6 | }
```

--------------------------------------------------------------------------------
/src/mcp_project_orchestrator/prompts/mcp-code-generator.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "name": "mcp-code-generator",
 3 |   "description": "An advanced code generation prompt that leverages multiple MCP resources to create contextually-aware, high-quality code with minimal hallucination.",
 4 |   "type": "prompt",
 5 |   "category": "other",
 6 |   "content": " \\\"mcp-code-generator\\\",\\n  \\\"version\\\": \\\"1.0.0\\\",\\n  \\\"description\\\": \\\"An advanced code generation prompt that leverages multiple MCP resources to create contextually-aware, high-quality code with minimal hallucination.\\\",\\n  \\\"prompt_text\\\": \\\"# MCP-Powered Code Generator\\\\n\\\\nYou are an expert coding assistant with access to multiple MCP resources. Your task is to generate high-quality, contextually-appropriate code based on the user's requirements while leveraging the following MCP resources to reduce hallucination and improve accuracy:\\\\n\\\\n- **Filesystem** (@file:// URIs): Access to project files and directory structure\\\\n- **GitHub** (@github:// URIs): Access to repositories, code examples, and documentation\\\\n- **Sequential Thinking** (@thinking:// URIs): Step-by-step reasoning for complex algorithms\\\\n- **Memory** (@memory:// URIs): Previous code snippets and user preferences\\\\n\\\\n## Code Generation Process\\\\n\\\\n1. **Analyze Requirements**\\\\n   - Break down the user's request into specific coding tasks\\\\n   - Identify key functionalities, interfaces, and constraints\\\\n   - Determine appropriate language, framework, or library to use\\\\n\\\\n2. **Resource Collection**\\\\n   - Check current project structure (if available): `@file:///project`\\\\n   - Find related examples on GitHub: `@github://relevant-repos`\\\\n   - Retrieve user preferences if available: `@memory://coding-preferences`\\\\n\\\\n3. **Design Phase**\\\\n   - Create a high-level design outline\\\\n   - Determine classes, functions, or components needed\\\\n   - Establish interfaces and relationships\\\\n\\\\n4. **Implementation Phase**\\\\n   - Write clean, well-documented code that follows best practices\\\\n   - Include proper error handling and edge cases\\\\n   - Ensure compatibility with existing codebase (if applicable)\\\\n   - Add appropriate comments and documentation\\\\n\\\\n5. **Testing Considerations**\\\\n   - Include unit test examples or strategies when appropriate\\\\n   - Consider edge cases and potential failures\\\\n   - Provide sample usage examples\\\\n\\\\n## Code Quality Guidelines\\\\n\\\\n- **Readability**: Write clear, self-explanatory code with consistent formatting\\\\n- **Maintainability**: Use descriptive variable names and follow language conventions\\\\n- **Performance**: Consider algorithmic efficiency and resource usage\\\\n- **Security**: Follow security best practices and avoid common vulnerabilities\\\\n- **Reusability**: Create modular, reusable components when appropriate\\\\n\\\\n## Output Format\\\\n\\\\nYour response should include:\\\\n\\\\n1. A brief explanation of the approach taken\\\\n2. The generated code in properly formatted code blocks\\\\n3. Installation instructions or dependencies (if applicable)\\\\n4. Usage examples\\\\n5. References to any MCP resources used\\\\n\\\\n## Contextual Adaptation\\\\n\\\\nTailor your code generation based on:\\\\n\\\\n- The programming language specified or inferred from context\\\\n- The user's preferred coding style (if known)\\\\n- The complexity level appropriate for the task\\\\n- The target environment (web, mobile, desktop, server, etc.)\\\\n\\\\n{{code_requirements}}\\\\n\\\\n{{additional_context}}\\\",\\n  \\\"variables\\\": [\\n    \\\"code_requirements\\\",\\n    \\\"additional_context\\\"\\n  ],\\n  \\\"tags\\\": [\\n    \\\"code-generation\\\",\\n    \\\"multi-resource\\\",\\n    \\\"mcp-integration\\\",\\n    \\\"development\\\",\\n    \\\"programming\\\"\\n  ],\\n  \\\"examples\\\": [\\n    {\\n      \\\"name\\\": \\\"React Component Generator\\\",\\n      \\\"variables\\\": {\\n        \\\"code_requirements\\\": \\\"Create a React component for a customizable data table with sorting, filtering, and pagination capabilities. The component should be reusable across our application.\\\",\\n        \\\"additional_context\\\": \\\"Our project uses TypeScript, React 18, and follows a functional component approach with hooks. We prefer using styled-components for styling. The existing component structure can be found at @file:///project/src/components/.\\\"\\n      },\\n      \\\"expected_response\\\": \\\"# Customizable Data Table Component\\\\n\\\\nI'll create a reusable React component for a data table with sorting, filtering, and pagination capabilities, following your project's TypeScript and React 18 standards with styled-components for styling.\\\\n\\\\n## Approach\\\\n\\\\nAfter examining your project structure at `@file:///project/src/components/`, I notice you're using a functional component pattern with hooks. I'll create:\\\\n\\\\n1. A main `DataTable` component that handles the core functionality\\\\n2. Several sub-components for table elements (header, row, cell, pagination)\\\\n3. Custom hooks for sorting, filtering, and pagination logic\\\\n4. TypeScript interfaces for strong typing\\\\n\\\\n## Component Structure\\\\n\\\\n```typescript\\\\n// DataTable.tsx\\\\nimport React, { useState, useMemo, useCallback } from 'react';\\\\nimport styled from 'styled-components';\\\\nimport { TableHeader } from './TableHeader';\\\\nimport { TableRow } from './TableRow';\\\\nimport { Pagination } from './Pagination';\\\\nimport { useSort } from '../hooks/useSort';\\\\nimport { useFilter } from '../hooks/useFilter';\\\\nimport { usePagination } from '../hooks/usePagination';\\\\n\\\\n// TypeScript interfaces\\\\nexport interface Column<T> {\\\\n  key: string;\\\\n  header: string;\\\\n  renderCell?: (item: T) => React.ReactNode;\\\\n  sortable?: boolean;\\\\n  filterable?: boolean;\\\\n}\\\\n\\\\nexport interface DataTableProps<T> {\\\\n  data: T[];\\\\n  columns: Column<T>[];\\\\n  initialSortKey?: string;\\\\n  initialSortDirection?: 'asc' | 'desc';\\\\n  rowsPerPageOptions?: number[];\\\\n  initialRowsPerPage?: number;\\\\n  onRowClick?: (item: T) => void;\\\\n  className?: string;\\\\n}\\\\n\\\\n// Styled components\\\\nconst TableContainer = styled.div`\\\\n  width: 100%;\\\\n  overflow-x: auto;\\\\n  border-radius: 4px;\\\\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\\\\n`;\\\\n\\\\nconst Table = styled.table`\\\\n  width: 100%;\\\\n  border-collapse: collapse;\\\\n  font-size: 14px;\\\\n`;\\\\n\\\\nconst TableBody = styled.tbody`\\\\n  & tr:nth-child(odd) {\\\\n    background-color: #f9f9f9;\\\\n  }\\\\n  \\\\n  & tr:hover {\\\\n    background-color: #f1f1f1;\\\\n  }\\\\n`;\\\\n\\\\nconst FilterContainer = styled.div`\\\\n  margin-bottom: 16px;\\\\n  display: flex;\\\\n  justify-content: flex-end;\\\\n`;\\\\n\\\\nconst FilterInput = styled.input`\\\\n  padding: 8px 12px;\\\\n  border: 1px solid #ddd;\\\\n  border-radius: 4px;\\\\n  font-size: 14px;\\\\n  width: 250px;\\\\n`;\\\\n\\\\n// Main component\\\\nexport function DataTable<T extends Record<string, any>>({ \\\\n  data, \\\\n  columns, \\\\n  initialSortKey,\\\\n  initialSortDirection = 'asc',\\\\n  rowsPerPageOptions = [10, 25, 50],\\\\n  initialRowsPerPage = 10,\\\\n  onRowClick,\\\\n  className\\\\n}: DataTableProps<T>) {\\\\n  // Global filter state\\\\n  const [filterValue, setFilterValue] = useState('');\\\\n  \\\\n  // Hook usage\\\\n  const { sortedData, sortKey, sortDirection, handleSort } = useSort(data, initialSortKey, initialSortDirection);\\\\n  const { filteredData } = useFilter(sortedData, filterValue, columns);\\\\n  const { \\\\n    currentPageData, \\\\n    currentPage, \\\\n    totalPages, \\\\n    rowsPerPage,\\\\n    setCurrentPage, \\\\n    setRowsPerPage \\\\n  } = usePagination(filteredData, initialRowsPerPage);\\\\n\\\\n  // Filter change handler\\\\n  const handleFilterChange = useCallback(\\\\n    (e: React.ChangeEvent<HTMLInputElement>) => {\\\\n      setFilterValue(e.target.value);\\\\n      setCurrentPage(1); // Reset to first page when filtering\\\\n    }, \\\\n    [setCurrentPage]\\\\n  );\\\\n\\\\n  // Memoize filterable columns\\\\n  const filterableColumns = useMemo(\\\\n    () => columns.filter(column => column.filterable),\\\\n    [columns]\\\\n  );\\\\n\\\\n  return (\\\\n    <div className={className}>\\\\n      {filterableColumns.length > 0 && (\\\\n        <FilterContainer>\\\\n          <FilterInput \\\\\\n            type=\\\\\\\"text\\\\\\\" \\\\\\n            placeholder=\\\\\\\"Filter table...\\\\\\\"\\\\\\n            value={filterValue}\\\\\\n            onChange={handleFilterChange}\\\\\\n          />\\\\\\n        </FilterContainer>\\\\\\n      )}\\\\\\n      \\\\\\n      <TableContainer>\\\\\\n        <Table>\\\\\\n          <TableHeader \\\\\\n            columns={columns} \\\\\\n            sortKey={sortKey} \\\\\\n            sortDirection={sortDirection} \\\\\\n            onSort={handleSort} \\\\\\n          />\\\\\\n          <TableBody>\\\\\\n            {currentPageData.map((item, index) => (\\\\\\n              <TableRow \\\\\\n                key={index} \\\\\\n                item={item} \\\\\\n                columns={columns} \\\\\\n                onClick={onRowClick ? () => onRowClick(item) : undefined} \\\\\\n              />\\\\\\n            ))}\\\\\\n            {currentPageData.length === 0 && (\\\\\\n              <tr>\\\\\\n                <td colSpan={columns.length} style={{ textAlign: 'center', padding: '16px' }}>\\\\\\n                  No records found\\\\\\n                </td>\\\\\\n              </tr>\\\\\\n            )}\\\\\\n          </TableBody>\\\\\\n        </Table>\\\\\\n      </TableContainer>\\\\\\n      \\\\\\n      <Pagination \\\\\\n        currentPage={currentPage}\\\\\\n        totalPages={totalPages}\\\\\\n        rowsPerPage={rowsPerPage}\\\\\\n        rowsPerPageOptions={rowsPerPageOptions}\\\\\\n        onPageChange={setCurrentPage}\\\\\\n        onRowsPerPageChange={setRowsPerPage}\\\\\\n        totalItems={filteredData.length}\\\\\\n      />\\\\\\n    </div>\\\\\\n  );\\\\\\n}\\\\n```\\\\n\\\\n## Custom Hooks Implementation\\\\n\\\\n```typescript\\\\n// hooks/useSort.ts\\\\nimport { useState, useMemo } from 'react';\\\\n\\\\nexport function useSort<T extends Record<string, any>>(\\\\n  data: T[], \\\\\\n  initialSortKey?: string, \\\\\\n  initialSortDirection: 'asc' | 'desc' = 'asc'\\\\n) {\\\\n  const [sortKey, setSortKey] = useState<string | undefined>(initialSortKey);\\\\n  const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>(initialSortDirection);\\\\n\\\\n  const handleSort = (key: string) => {\\\\n    if (sortKey === key) {\\\\n      // Toggle direction if already sorting by this key\\\\n      setSortDirection(prev => prev === 'asc' ? 'desc' : 'asc');\\\\n    } else {\\\\n      // New sort key, set to ascending by default\\\\n      setSortKey(key);\\\\n      setSortDirection('asc');\\\\n    }\\\\n  };\\\\n\\\\n  const sortedData = useMemo(() => {\\\\n    if (!sortKey) return [...data];\\\\n\\\\n    return [...data].sort((a, b) => {\\\\n      const aValue = a[sortKey];\\\\n      const bValue = b[sortKey];\\\\n\\\\n      // Handle different data types\\\\n      if (typeof aValue === 'string' && typeof bValue === 'string') {\\\\n        return sortDirection === 'asc' \\\\\\n          ? aValue.localeCompare(bValue) \\\\\\n          : bValue.localeCompare(aValue);\\\\n      }\\\\n\\\\n      if (aValue === bValue) return 0;\\\\n      \\\\n      if (sortDirection === 'asc') {\\\\n        return aValue > bValue ? 1 : -1;\\\\n      } else {\\\\n        return aValue < bValue ? 1 : -1;\\\\n      }\\\\n    });\\\\n  }, [data, sortKey, sortDirection]);\\\\n\\\\n  return { sortedData, sortKey, sortDirection, handleSort };\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// hooks/useFilter.ts\\\\nimport { useMemo } from 'react';\\\\nimport { Column } from '../components/DataTable';\\\\n\\\\nexport function useFilter<T extends Record<string, any>>(\\\\n  data: T[], \\\\\\n  filterValue: string,\\\\n  columns: Column<T>[]\\\\n) {\\\\n  const filteredData = useMemo(() => {\\\\n    if (!filterValue) return data;\\\\n    \\\\n    const lowercasedFilter = filterValue.toLowerCase();\\\\n    \\\\n    return data.filter(item => {\\\\n      return columns.some(column => {\\\\n        const value = item[column.key];\\\\n        if (value == null) return false;\\\\n        \\\\n        return String(value).toLowerCase().includes(lowercasedFilter);\\\\n      });\\\\n    });\\\\n  }, [data, filterValue, columns]);\\\\n\\\\n  return { filteredData };\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// hooks/usePagination.ts\\\\nimport { useState, useMemo, useEffect } from 'react';\\\\n\\\\nexport function usePagination<T>(\\\\n  data: T[], \\\\\\n  initialRowsPerPage: number\\\\n) {\\\\n  const [currentPage, setCurrentPage] = useState(1);\\\\n  const [rowsPerPage, setRowsPerPage] = useState(initialRowsPerPage);\\\\n\\\\n  // Reset to first page when data changes\\\\n  useEffect(() => {\\\\n    setCurrentPage(1);\\\\n  }, [data.length]);\\\\n\\\\n  const totalPages = useMemo(() => \\\\\\n    Math.max(1, Math.ceil(data.length / rowsPerPage)),\\\\n    [data.length, rowsPerPage]\\\\n  );\\\\n\\\\n  // Keep current page in bounds\\\\n  useEffect(() => {\\\\n    if (currentPage > totalPages) {\\\\n      setCurrentPage(totalPages);\\\\n    }\\\\n  }, [currentPage, totalPages]);\\\\n\\\\n  const currentPageData = useMemo(() => {\\\\n    const startIndex = (currentPage - 1) * rowsPerPage;\\\\n    return data.slice(startIndex, startIndex + rowsPerPage);\\\\n  }, [data, currentPage, rowsPerPage]);\\\\n\\\\n  return { \\\\\\n    currentPageData, \\\\\\n    currentPage, \\\\\\n    totalPages, \\\\\\n    rowsPerPage,\\\\n    setCurrentPage, \\\\\\n    setRowsPerPage \\\\n  };\\\\n}\\\\n```\\\\n\\\\n## Supporting Components\\\\n\\\\n```typescript\\\\n// TableHeader.tsx\\\\nimport React from 'react';\\\\nimport styled from 'styled-components';\\\\nimport { Column } from './DataTable';\\\\n\\\\nconst HeaderRow = styled.tr`\\\\n  background-color: #f5f5f5;\\\\n  border-bottom: 2px solid #ddd;\\\\n`;\\\\n\\\\nconst HeaderCell = styled.th<{ sortable: boolean }>`\\\\n  padding: 12px 16px;\\\\n  text-align: left;\\\\n  font-weight: 600;\\\\n  cursor: ${props => props.sortable ? 'pointer' : 'default'};\\\\n  user-select: none;\\\\n  position: relative;\\\\n`;\\\\n\\\\nconst SortIcon = styled.span<{ direction: 'asc' | 'desc' }>`\\\\n  margin-left: 8px;\\\\n  &:after {\\\\n    content: '${props => props.direction === 'asc' ? '\u2191' : '\u2193'}';\\\\n    font-size: 14px;\\\\n  }\\\\n`;\\\\n\\\\ninterface TableHeaderProps<T> {\\\\n  columns: Column<T>[];\\\\n  sortKey?: string;\\\\n  sortDirection: 'asc' | 'desc';\\\\n  onSort: (key: string) => void;\\\\n}\\\\n\\\\nexport function TableHeader<T>({ \\\\\\n  columns, \\\\\\n  sortKey, \\\\\\n  sortDirection, \\\\\\n  onSort \\\\n}: TableHeaderProps<T>) {\\\\n  return (\\\\n    <thead>\\\\n      <HeaderRow>\\\\n        {columns.map(column => (\\\\n          <HeaderCell \\\\\\n          key={column.key} \\\\\\n          sortable={!!column.sortable}\\\\\\n          onClick={column.sortable ? () => onSort(column.key) : undefined}\\\\\\n        >\\\\\\n          {column.header}\\\\\\n          {sortKey === column.key && (\\\\n            <SortIcon direction={sortDirection} />\\\\n          )}\\\\\\n        </HeaderCell>\\\\n        ))}\\\\\\n      </HeaderRow>\\\\n    </thead>\\\\n  );\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// TableRow.tsx\\\\nimport React from 'react';\\\\nimport styled from 'styled-components';\\\\nimport { Column } from './DataTable';\\\\n\\\\nconst Row = styled.tr<{ clickable: boolean }>`\\\\n  cursor: ${props => props.clickable ? 'pointer' : 'default'};\\\\n`;\\\\n\\\\nconst Cell = styled.td`\\\\n  padding: 12px 16px;\\\\n  border-bottom: 1px solid #eee;\\\\n  vertical-align: top;\\\\n`;\\\\n\\\\ninterface TableRowProps<T> {\\\\n  item: T;\\\\n  columns: Column<T>[];\\\\n  onClick?: () => void;\\\\n}\\\\n\\\\nexport function TableRow<T>({ item, columns, onClick }: TableRowProps<T>) {\\\\n  return (\\\\n    <Row clickable={!!onClick} onClick={onClick}>\\\\\\n      {columns.map(column => (\\\\n        <Cell key={column.key}>\\\\\\n          {column.renderCell ? column.renderCell(item) : String(item[column.key] ?? '')}\\\\\\n        </Cell>\\\\n      ))}\\\\\\n    </Row>\\\\n  );\\\\n}\\\\n```\\\\n\\\\n```typescript\\\\n// Pagination.tsx\\\\nimport React from 'react';\\\\nimport styled from 'styled-components';\\\\n\\\\nconst PaginationContainer = styled.div`\\\\n  display: flex;\\\\n  justify-content: space-between;\\\\n  align-items: center;\\\\n  margin-top: 16px;\\\\n  font-size: 14px;\\\\n`;\\\\n\\\\nconst PageInfo = styled.div`\\\\n  color: #666;\\\\n`;\\\\n\\\\nconst PageControls = styled.div`\\\\n  display: flex;\\\\n  align-items: center;\\\\n`;\\\\n\\\\nconst PageButton = styled.button<{ active?: boolean }>`\\\\n  padding: 6px 12px;\\\\n  margin: 0 4px;\\\\n  background-color: ${props => props.active ? '#007bff' : 'white'};\\\\n  color: ${props => props.active ? 'white' : '#333'};\\\\n  border: 1px solid #ddd;\\\\n  border-radius: 4px;\\\\n  cursor: pointer;\\\\n  \\\\n  &:disabled {\\\\n    opacity: 0.5;\\\\n    cursor: not-allowed;\\\\n  }\\\\n  \\\\n  &:hover:not(:disabled) {\\\\n    background-color: ${props => props.active ? '#007bff' : '#f1f1f1'};\\\\n  }\\\\n`;\\\\n\\\\nconst RowsPerPageSelect = styled.select`\\\\n  padding: 6px 8px;\\\\n  border: 1px solid #ddd;\\\\n  border-radius: 4px;\\\\n  margin-left: 8px;\\\\n`;\\\\n\\\\ninterface PaginationProps {\\\\n  currentPage: number;\\\\n  totalPages: number;\\\\n  rowsPerPage: number;\\\\n  rowsPerPageOptions: number[];\\\\n  totalItems: number;\\\\n  onPageChange: (page: number) => void;\\\\n  onRowsPerPageChange: (rowsPerPage: number) => void;\\\\n}\\\\n\\\\nexport function Pagination({ \\\\\\n  currentPage, \\\\\\n  totalPages, \\\\\\n  rowsPerPage, \\\\\\n  rowsPerPageOptions, \\\\\\n  totalItems,\\\\n  onPageChange, \\\\\\n  onRowsPerPageChange \\\\n}: PaginationProps) {\\\\n  // Calculate start and end item numbers\\\\n  const startItem = Math.min(totalItems, (currentPage - 1) * rowsPerPage + 1);\\\\n  const endItem = Math.min(totalItems, startItem + rowsPerPage - 1);\\\\n  \\\\n  // Generate page buttons\\\\n  const getPageButtons = () => {\\\\n    const buttons = [];\\\\n    \\\\n    // Always show first page\\\\n    buttons.push(\\\\n      <PageButton \\\\\\n      key=\\\\\\\"first\\\\\\\" \\\\\\n      active={currentPage === 1}\\\\\\n      onClick={() => onPageChange(1)}\\\\\\n      disabled={currentPage === 1}\\\\\\n    >\\\\\\n      1\\\\\\n    </PageButton>\\\\n    );\\\\n    \\\\n    // Show ellipsis if needed\\\\n    if (currentPage > 3) {\\\\n      buttons.push(<span key=\\\\\\\"ellipsis1\\\\\\\">...</span>);\\\\n    }\\\\n    \\\\n    // Show pages around current page\\\\n    for (let i = Math.max(2, currentPage - 1); i <= Math.min(totalPages - 1, currentPage + 1); i++) {\\\\n      buttons.push(\\\\n        <PageButton \\\\\\n      key={i} \\\\\\n      active={currentPage === i}\\\\\\n      onClick={() => onPageChange(i)}\\\\\\n    >\\\\\\n      {i}\\\\\\n    </PageButton>\\\\n      );\\\\n    }\\\\n    \\\\n    // Show ellipsis if needed\\\\n    if (currentPage < totalPages - 2) {\\\\n      buttons.push(<span key=\\\\\\\"ellipsis2\\\\\\\">...</span>);\\\\n    }\\\\n    \\\\n    // Always show last page if there's more than one page\\\\n    if (totalPages > 1) {\\\\n      buttons.push(\\\\n        <PageButton \\\\\\n      key=\\\\\\\"last\\\\\\\" \\\\\\n      active={currentPage === totalPages}\\\\\\n      onClick={() => onPageChange(totalPages)}\\\\\\n      disabled={currentPage === totalPages}\\\\\\n    >\\\\\\n      {totalPages}\\\\\\n    </PageButton>\\\\n      );\\\\n    }\\\\n    \\\\n    return buttons;\\\\n  };\\\\n\\\\n  return (\\\\n    <PaginationContainer>\\\\n      <PageInfo>\\\\n        Showing {totalItems ? `${startItem}-${endItem} of ${totalItems}` : '0'} results\\\\n      </PageInfo>\\\\n      \\\\n      <PageControls>\\\\n        <PageButton \\\\\\n      onClick={() => onPageChange(currentPage - 1)}\\\\\\n      disabled={currentPage === 1}\\\\\\n    >\\\\\\n      Previous\\\\\\n    </PageButton>\\\\n        \\\\\\n        {getPageButtons()}\\\\\\n        \\\\\\n        <PageButton \\\\\\n          onClick={() => onPageChange(currentPage + 1)}\\\\\\n          disabled={currentPage === totalPages}\\\\\\n        >\\\\\\n          Next\\\\\\n        </PageButton>\\\\n        \\\\\\n        <span style={{ marginLeft: '16px' }}>Rows per page:</span>\\\\\\n        <RowsPerPageSelect \\\\\\n          value={rowsPerPage}\\\\\\n          onChange={(e) => onRowsPerPageChange(Number(e.target.value))}\\\\\\n        >\\\\\\n          {rowsPerPageOptions.map(option => (\\\\n            <option key={option} value={option}>{option}</option>\\\\n          ))}\\\\\\n        </RowsPerPageSelect>\\\\\\n      </PageControls>\\\\\\n    </PaginationContainer>\\\\n  );\\\\n}\\\\n```\\\\n\\\\n## Usage Example\\\\n\\\\n```tsx\\\\nimport React from 'react';\\\\nimport { DataTable } from './components/DataTable';\\\\n\\\\ninterface User {\\\\n  id: number;\\\\n  name: string;\\\\n  email: string;\\\\n  role: string;\\\\n  status: 'active' | 'inactive';\\\\n  lastLogin: string;\\\\n}\\\\n\\\\nconst users: User[] = [\\\\n  { id: 1, name: 'John Doe', email: '[email protected]', role: 'Admin', status: 'active', lastLogin: '2023-05-15T10:30:00Z' },\\\\n  { id: 2, name: 'Jane Smith', email: '[email protected]', role: 'Editor', status: 'active', lastLogin: '2023-05-14T09:15:00Z' },\\\\n  // Add more users as needed\\\\n];\\\\n\\\\nfunction UserTable() {\\\\n  const columns = [\\\\n    { key: 'id', header: 'ID', sortable: true },\\\\n    { key: 'name', header: 'Name', sortable: true, filterable: true },\\\\n    { key: 'email', header: 'Email', filterable: true },\\\\n    { key: 'role', header: 'Role', sortable: true, filterable: true },\\\\n    { \\\\\\n      key: 'status', \\\\\\n      header: 'Status', \\\\\\n      sortable: true,\\\\\\n      renderCell: (user: User) => (\\\\n        <span style={{ \\\\\\n        color: user.status === 'active' ? 'green' : 'red',\\\\\\n        fontWeight: 'bold'\\\\\\n      }}>\\\\\\n        {user.status}\\\\\\n      </span>\\\\n      )\\\\n    },\\\\n    { \\\\\\n      key: 'lastLogin', \\\\\\n      header: 'Last Login', \\\\\\n      sortable: true,\\\\\\n      renderCell: (user: User) => new Date(user.lastLogin).toLocaleString()\\\\n    },\\\\n  ];\\\\n\\\\n  const handleRowClick = (user: User) => {\\\\n    console.log('User clicked:', user);\\\\n    // Navigate to user detail page or show modal\\\\n  };\\\\n\\\\n  return (\\\\n    <div>\\\\n      <h1>User Management</h1>\\\\n      <DataTable \\\\\\n        data={users}\\\\\\n        columns={columns}\\\\\\n        initialSortKey=\\\\\\\"id\\\\\\\"\\\\\\n        initialRowsPerPage={10}\\\\\\n        rowsPerPageOptions={[5, 10, 25, 50]}\\\\\\n        onRowClick={handleRowClick}\\\\\\n      />\\\\n    </div>\\\\n  );\\\\n}\\\\n\\\\nexport default UserTable;\\\\n```\\\\n\\\\n## Installation Instructions\\\\n\\\\nTo use this component, you'll need to have these dependencies installed:\\\\n\\\\n```bash\\\\nnpm install styled-components @types/styled-components\\\\n```\\\\n\\\\nor\\\\n\\\\n```bash\\\\nyarn add styled-components @types/styled-components\\\\n```\\\\n\\\\n## MCP Resources Used\\\\n\\\\n- `@file:///project/src/components/` - Examined your existing component structure to match the styling approach and component patterns\\\\n- `@memory://coding-preferences` - Retrieved your preference for functional components, React 18, and TypeScript\\\\n\\\\nThe component follows modern React best practices with proper TypeScript typing, modular structure, and optimized performance through memoization. The styled-components implementation ensures consistent styling that can be customized to match your application's design system.\\\"\\n    }\\n  ],\\n  \\\"metadata\\\": {\\n    \\\"created_at\\\": \\\"2023-05-15T12:00:00Z\\\",\\n    \\\"updated_at\\\": \\\"2023-05-15T12:00:00Z\\\",\\n    \\\"author\\\": \\\"MCP-Prompts Team\\\",\\n    \\\"category\\\": \\\"development\\\",\\n    \\\"mcp_requirements\\\": [\\n      \\\"MCP Filesystem Server\\\",\\n      \\\"MCP GitHub Server\\\",\\n      \\\"MCP Sequential Thinking Server\\\",\\n      \\\"MCP Memory Server",
 7 |   "variables": {},
 8 |   "metadata": {
 9 |     "source": "/home/sparrow/projects/mcp-prompts/prompts/mcp-code-generator.json",
10 |     "imported": true
11 |   }
12 | }
```
Page 18/24FirstPrevNextLast