#
tokens: 46414/50000 2/1784 files (page 107/145)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 107 of 145. Use http://codebase.md/microsoft/semanticworkbench?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .devcontainer
│   ├── .vscode
│   │   └── settings.json
│   ├── devcontainer.json
│   ├── OPTIMIZING_FOR_CODESPACES.md
│   ├── POST_SETUP_README.md
│   └── README.md
├── .dockerignore
├── .gitattributes
├── .github
│   ├── policheck.yml
│   └── workflows
│       ├── assistants-codespace-assistant.yml
│       ├── assistants-document-assistant.yml
│       ├── assistants-explorer-assistant.yml
│       ├── assistants-guided-conversation-assistant.yml
│       ├── assistants-knowledge-transfer-assistant.yml
│       ├── assistants-navigator-assistant.yml
│       ├── assistants-project-assistant.yml
│       ├── assistants-prospector-assistant.yml
│       ├── assistants-skill-assistant.yml
│       ├── libraries.yml
│       ├── mcp-server-giphy.yml
│       ├── mcp-server-memory-filesystem-edit.yml
│       ├── mcp-server-memory-user-bio.yml
│       ├── mcp-server-memory-whiteboard.yml
│       ├── mcp-server-open-deep-research-clone.yml
│       ├── mcp-server-web-research.yml
│       ├── workbench-app.yml
│       └── workbench-service.yml
├── .gitignore
├── .multi-root-tools
│   ├── Makefile
│   └── README.md
├── .vscode
│   ├── extensions.json
│   ├── launch.json
│   └── settings.json
├── ai_context
│   └── generated
│       ├── ASPIRE_ORCHESTRATOR.md
│       ├── ASSISTANT_CODESPACE.md
│       ├── ASSISTANT_DOCUMENT.md
│       ├── ASSISTANT_NAVIGATOR.md
│       ├── ASSISTANT_PROJECT.md
│       ├── ASSISTANT_PROSPECTOR.md
│       ├── ASSISTANTS_OTHER.md
│       ├── ASSISTANTS_OVERVIEW.md
│       ├── CONFIGURATION.md
│       ├── DOTNET_LIBRARIES.md
│       ├── EXAMPLES.md
│       ├── MCP_SERVERS.md
│       ├── PYTHON_LIBRARIES_AI_CLIENTS.md
│       ├── PYTHON_LIBRARIES_CORE.md
│       ├── PYTHON_LIBRARIES_EXTENSIONS.md
│       ├── PYTHON_LIBRARIES_SKILLS.md
│       ├── PYTHON_LIBRARIES_SPECIALIZED.md
│       ├── TOOLS.md
│       ├── WORKBENCH_FRONTEND.md
│       └── WORKBENCH_SERVICE.md
├── aspire-orchestrator
│   ├── .editorconfig
│   ├── Aspire.AppHost
│   │   ├── .gitignore
│   │   ├── appsettings.json
│   │   ├── Aspire.AppHost.csproj
│   │   ├── Program.cs
│   │   └── Properties
│   │       └── launchSettings.json
│   ├── Aspire.Extensions
│   │   ├── Aspire.Extensions.csproj
│   │   ├── Dashboard.cs
│   │   ├── DockerFileExtensions.cs
│   │   ├── PathNormalizer.cs
│   │   ├── UvAppHostingExtensions.cs
│   │   ├── UvAppResource.cs
│   │   ├── VirtualEnvironment.cs
│   │   └── WorkbenchServiceHostingExtensions.cs
│   ├── Aspire.ServiceDefaults
│   │   ├── Aspire.ServiceDefaults.csproj
│   │   └── Extensions.cs
│   ├── README.md
│   ├── run.sh
│   ├── SemanticWorkbench.Aspire.sln
│   └── SemanticWorkbench.Aspire.sln.DotSettings
├── assistants
│   ├── codespace-assistant
│   │   ├── .claude
│   │   │   └── settings.local.json
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── extensions.json
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── assets
│   │   │   │   ├── icon_context_transfer.svg
│   │   │   │   └── icon.svg
│   │   │   ├── chat.py
│   │   │   ├── config.py
│   │   │   ├── helpers.py
│   │   │   ├── response
│   │   │   │   ├── __init__.py
│   │   │   │   ├── completion_handler.py
│   │   │   │   ├── models.py
│   │   │   │   ├── request_builder.py
│   │   │   │   ├── response.py
│   │   │   │   ├── step_handler.py
│   │   │   │   └── utils
│   │   │   │       ├── __init__.py
│   │   │   │       ├── abbreviations.py
│   │   │   │       ├── formatting_utils.py
│   │   │   │       ├── message_utils.py
│   │   │   │       └── openai_utils.py
│   │   │   ├── text_includes
│   │   │   │   ├── card_content_context_transfer.md
│   │   │   │   ├── card_content.md
│   │   │   │   ├── codespace_assistant_info.md
│   │   │   │   ├── context_transfer_assistant_info.md
│   │   │   │   ├── guardrails_prompt.txt
│   │   │   │   ├── guidance_prompt_context_transfer.txt
│   │   │   │   ├── guidance_prompt.txt
│   │   │   │   ├── instruction_prompt_context_transfer.txt
│   │   │   │   └── instruction_prompt.txt
│   │   │   └── whiteboard
│   │   │       ├── __init__.py
│   │   │       ├── _inspector.py
│   │   │       └── _whiteboard.py
│   │   ├── assistant.code-workspace
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── document-assistant
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── assets
│   │   │   │   └── icon.svg
│   │   │   ├── chat.py
│   │   │   ├── config.py
│   │   │   ├── context_management
│   │   │   │   ├── __init__.py
│   │   │   │   └── inspector.py
│   │   │   ├── filesystem
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _convert.py
│   │   │   │   ├── _file_sources.py
│   │   │   │   ├── _filesystem.py
│   │   │   │   ├── _inspector.py
│   │   │   │   ├── _model.py
│   │   │   │   ├── _prompts.py
│   │   │   │   └── _tasks.py
│   │   │   ├── guidance
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dynamic_ui_inspector.py
│   │   │   │   ├── guidance_config.py
│   │   │   │   ├── guidance_prompts.py
│   │   │   │   └── README.md
│   │   │   ├── response
│   │   │   │   ├── __init__.py
│   │   │   │   ├── completion_handler.py
│   │   │   │   ├── models.py
│   │   │   │   ├── prompts.py
│   │   │   │   ├── responder.py
│   │   │   │   └── utils
│   │   │   │       ├── __init__.py
│   │   │   │       ├── formatting_utils.py
│   │   │   │       ├── message_utils.py
│   │   │   │       ├── openai_utils.py
│   │   │   │       ├── tokens_tiktoken.py
│   │   │   │       └── workbench_messages.py
│   │   │   ├── text_includes
│   │   │   │   └── document_assistant_info.md
│   │   │   ├── types.py
│   │   │   └── whiteboard
│   │   │       ├── __init__.py
│   │   │       ├── _inspector.py
│   │   │       └── _whiteboard.py
│   │   ├── assistant.code-workspace
│   │   ├── CLAUDE.md
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── tests
│   │   │   ├── __init__.py
│   │   │   ├── test_convert.py
│   │   │   └── test_data
│   │   │       ├── blank_image.png
│   │   │       ├── Formatting Test.docx
│   │   │       ├── sample_data.csv
│   │   │       ├── sample_data.xlsx
│   │   │       ├── sample_page.html
│   │   │       ├── sample_presentation.pptx
│   │   │       └── simple_pdf.pdf
│   │   └── uv.lock
│   ├── explorer-assistant
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── chat.py
│   │   │   ├── config.py
│   │   │   ├── helpers.py
│   │   │   ├── response
│   │   │   │   ├── __init__.py
│   │   │   │   ├── model.py
│   │   │   │   ├── response_anthropic.py
│   │   │   │   ├── response_openai.py
│   │   │   │   └── response.py
│   │   │   └── text_includes
│   │   │       └── guardrails_prompt.txt
│   │   ├── assistant.code-workspace
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── guided-conversation-assistant
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── agents
│   │   │   │   ├── guided_conversation
│   │   │   │   │   ├── config.py
│   │   │   │   │   ├── definition.py
│   │   │   │   │   └── definitions
│   │   │   │   │       ├── er_triage.py
│   │   │   │   │       ├── interview.py
│   │   │   │   │       ├── patient_intake.py
│   │   │   │   │       └── poem_feedback.py
│   │   │   │   └── guided_conversation_agent.py
│   │   │   ├── chat.py
│   │   │   ├── config.py
│   │   │   └── text_includes
│   │   │       └── guardrails_prompt.txt
│   │   ├── assistant.code-workspace
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── knowledge-transfer-assistant
│   │   ├── .claude
│   │   │   └── settings.local.json
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── agentic
│   │   │   │   ├── __init__.py
│   │   │   │   ├── analysis.py
│   │   │   │   ├── coordinator_support.py
│   │   │   │   └── team_welcome.py
│   │   │   ├── assets
│   │   │   │   ├── icon-knowledge-transfer.svg
│   │   │   │   └── icon.svg
│   │   │   ├── assistant.py
│   │   │   ├── common.py
│   │   │   ├── config.py
│   │   │   ├── conversation_clients.py
│   │   │   ├── conversation_share_link.py
│   │   │   ├── data.py
│   │   │   ├── domain
│   │   │   │   ├── __init__.py
│   │   │   │   ├── audience_manager.py
│   │   │   │   ├── information_request_manager.py
│   │   │   │   ├── knowledge_brief_manager.py
│   │   │   │   ├── knowledge_digest_manager.py
│   │   │   │   ├── learning_objectives_manager.py
│   │   │   │   └── share_manager.py
│   │   │   ├── files.py
│   │   │   ├── logging.py
│   │   │   ├── notifications.py
│   │   │   ├── respond.py
│   │   │   ├── storage_models.py
│   │   │   ├── storage.py
│   │   │   ├── string_utils.py
│   │   │   ├── text_includes
│   │   │   │   ├── assistant_info.md
│   │   │   │   ├── card_content.md
│   │   │   │   ├── coordinator_instructions.txt
│   │   │   │   ├── coordinator_role.txt
│   │   │   │   ├── knowledge_digest_instructions.txt
│   │   │   │   ├── knowledge_digest_prompt.txt
│   │   │   │   ├── share_information_request_detection.txt
│   │   │   │   ├── team_instructions.txt
│   │   │   │   ├── team_role.txt
│   │   │   │   └── welcome_message_generation.txt
│   │   │   ├── tools
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── information_requests.py
│   │   │   │   ├── learning_objectives.py
│   │   │   │   ├── learning_outcomes.py
│   │   │   │   ├── progress_tracking.py
│   │   │   │   └── share_setup.py
│   │   │   ├── ui_tabs
│   │   │   │   ├── __init__.py
│   │   │   │   ├── brief.py
│   │   │   │   ├── common.py
│   │   │   │   ├── debug.py
│   │   │   │   ├── learning.py
│   │   │   │   └── sharing.py
│   │   │   └── utils.py
│   │   ├── CLAUDE.md
│   │   ├── docs
│   │   │   ├── design
│   │   │   │   ├── actions.md
│   │   │   │   └── inference.md
│   │   │   ├── DEV_GUIDE.md
│   │   │   ├── how-kta-works.md
│   │   │   ├── JTBD.md
│   │   │   ├── knowledge-transfer-goals.md
│   │   │   ├── learning_assistance.md
│   │   │   ├── notable_claude_conversations
│   │   │   │   ├── clarifying_quad_modal_design.md
│   │   │   │   ├── CLAUDE_PROMPTS.md
│   │   │   │   ├── transfer_state.md
│   │   │   │   └── trying_the_context_agent.md
│   │   │   └── opportunities-of-knowledge-transfer.md
│   │   ├── knowledge-transfer-assistant.code-workspace
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── tests
│   │   │   ├── __init__.py
│   │   │   ├── test_artifact_loading.py
│   │   │   ├── test_inspector.py
│   │   │   ├── test_share_manager.py
│   │   │   ├── test_share_storage.py
│   │   │   ├── test_share_tools.py
│   │   │   └── test_team_mode.py
│   │   └── uv.lock
│   ├── Makefile
│   ├── navigator-assistant
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── assets
│   │   │   │   ├── card_content.md
│   │   │   │   └── icon.svg
│   │   │   ├── chat.py
│   │   │   ├── config.py
│   │   │   ├── helpers.py
│   │   │   ├── response
│   │   │   │   ├── __init__.py
│   │   │   │   ├── completion_handler.py
│   │   │   │   ├── completion_requestor.py
│   │   │   │   ├── local_tool
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── add_assistant_to_conversation.py
│   │   │   │   │   ├── list_assistant_services.py
│   │   │   │   │   └── model.py
│   │   │   │   ├── models.py
│   │   │   │   ├── prompt.py
│   │   │   │   ├── request_builder.py
│   │   │   │   ├── response.py
│   │   │   │   ├── step_handler.py
│   │   │   │   └── utils
│   │   │   │       ├── __init__.py
│   │   │   │       ├── formatting_utils.py
│   │   │   │       ├── message_utils.py
│   │   │   │       ├── openai_utils.py
│   │   │   │       └── tools.py
│   │   │   ├── text_includes
│   │   │   │   ├── guardrails_prompt.md
│   │   │   │   ├── guidance_prompt.md
│   │   │   │   ├── instruction_prompt.md
│   │   │   │   ├── navigator_assistant_info.md
│   │   │   │   └── semantic_workbench_features.md
│   │   │   └── whiteboard
│   │   │       ├── __init__.py
│   │   │       ├── _inspector.py
│   │   │       └── _whiteboard.py
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── project-assistant
│   │   ├── .cspell
│   │   │   └── custom-dictionary-workspace.txt
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── agentic
│   │   │   │   ├── __init__.py
│   │   │   │   ├── act.py
│   │   │   │   ├── coordinator_next_action.py
│   │   │   │   ├── create_invitation.py
│   │   │   │   ├── detect_audience_and_takeaways.py
│   │   │   │   ├── detect_coordinator_actions.py
│   │   │   │   ├── detect_information_request_needs.py
│   │   │   │   ├── detect_knowledge_package_gaps.py
│   │   │   │   ├── focus.py
│   │   │   │   ├── respond.py
│   │   │   │   ├── team_welcome.py
│   │   │   │   └── update_digest.py
│   │   │   ├── assets
│   │   │   │   ├── icon-knowledge-transfer.svg
│   │   │   │   └── icon.svg
│   │   │   ├── assistant.py
│   │   │   ├── common.py
│   │   │   ├── config.py
│   │   │   ├── conversation_clients.py
│   │   │   ├── data.py
│   │   │   ├── domain
│   │   │   │   ├── __init__.py
│   │   │   │   ├── audience_manager.py
│   │   │   │   ├── conversation_preferences_manager.py
│   │   │   │   ├── information_request_manager.py
│   │   │   │   ├── knowledge_brief_manager.py
│   │   │   │   ├── knowledge_digest_manager.py
│   │   │   │   ├── learning_objectives_manager.py
│   │   │   │   ├── share_manager.py
│   │   │   │   ├── tasks_manager.py
│   │   │   │   └── transfer_manager.py
│   │   │   ├── errors.py
│   │   │   ├── files.py
│   │   │   ├── logging.py
│   │   │   ├── notifications.py
│   │   │   ├── prompt_utils.py
│   │   │   ├── storage.py
│   │   │   ├── string_utils.py
│   │   │   ├── text_includes
│   │   │   │   ├── actor_instructions.md
│   │   │   │   ├── assistant_info.md
│   │   │   │   ├── card_content.md
│   │   │   │   ├── coordinator_instructions copy.md
│   │   │   │   ├── coordinator_instructions.md
│   │   │   │   ├── create_invitation.md
│   │   │   │   ├── detect_audience.md
│   │   │   │   ├── detect_coordinator_actions.md
│   │   │   │   ├── detect_information_request_needs.md
│   │   │   │   ├── detect_knowledge_package_gaps.md
│   │   │   │   ├── focus.md
│   │   │   │   ├── knowledge_digest_instructions.txt
│   │   │   │   ├── team_instructions.txt
│   │   │   │   ├── to_do.md
│   │   │   │   ├── update_knowledge_brief.md
│   │   │   │   ├── update_knowledge_digest.md
│   │   │   │   └── welcome_message_generation.txt
│   │   │   ├── tools
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── conversation_preferences.py
│   │   │   │   ├── information_requests.py
│   │   │   │   ├── learning_objectives.py
│   │   │   │   ├── learning_outcomes.py
│   │   │   │   ├── progress_tracking.py
│   │   │   │   ├── share_setup.py
│   │   │   │   ├── system_reminders.py
│   │   │   │   ├── tasks.py
│   │   │   │   └── todo.py
│   │   │   ├── ui_tabs
│   │   │   │   ├── __init__.py
│   │   │   │   ├── brief.py
│   │   │   │   ├── common.py
│   │   │   │   ├── debug.py
│   │   │   │   ├── learning.py
│   │   │   │   └── sharing.py
│   │   │   └── utils.py
│   │   ├── CLAUDE.md
│   │   ├── docs
│   │   │   ├── design
│   │   │   │   ├── actions.md
│   │   │   │   ├── control_options.md
│   │   │   │   ├── design.md
│   │   │   │   ├── inference.md
│   │   │   │   └── PXL_20250814_190140267.jpg
│   │   │   ├── DEV_GUIDE.md
│   │   │   ├── how-kta-works.md
│   │   │   ├── JTBD.md
│   │   │   ├── knowledge-transfer-goals.md
│   │   │   ├── learning_assistance.md
│   │   │   ├── notable_claude_conversations
│   │   │   │   ├── clarifying_quad_modal_design.md
│   │   │   │   ├── CLAUDE_PROMPTS.md
│   │   │   │   ├── transfer_state.md
│   │   │   │   └── trying_the_context_agent.md
│   │   │   └── opportunities-of-knowledge-transfer.md
│   │   ├── knowledge-transfer-assistant.code-workspace
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── tests
│   │   │   ├── __init__.py
│   │   │   ├── test_artifact_loading.py
│   │   │   ├── test_inspector.py
│   │   │   ├── test_share_manager.py
│   │   │   ├── test_share_storage.py
│   │   │   └── test_team_mode.py
│   │   └── uv.lock
│   ├── prospector-assistant
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── assistant
│   │   │   ├── __init__.py
│   │   │   ├── agents
│   │   │   │   ├── artifact_agent.py
│   │   │   │   ├── document
│   │   │   │   │   ├── config.py
│   │   │   │   │   ├── gc_draft_content_feedback_config.py
│   │   │   │   │   ├── gc_draft_outline_feedback_config.py
│   │   │   │   │   ├── guided_conversation.py
│   │   │   │   │   └── state.py
│   │   │   │   └── document_agent.py
│   │   │   ├── artifact_creation_extension
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _llm.py
│   │   │   │   ├── config.py
│   │   │   │   ├── document.py
│   │   │   │   ├── extension.py
│   │   │   │   ├── store.py
│   │   │   │   ├── test
│   │   │   │   │   ├── conftest.py
│   │   │   │   │   ├── evaluation.py
│   │   │   │   │   ├── test_completion_with_tools.py
│   │   │   │   │   └── test_extension.py
│   │   │   │   └── tools.py
│   │   │   ├── chat.py
│   │   │   ├── config.py
│   │   │   ├── form_fill_extension
│   │   │   │   ├── __init__.py
│   │   │   │   ├── config.py
│   │   │   │   ├── extension.py
│   │   │   │   ├── inspector.py
│   │   │   │   ├── state.py
│   │   │   │   └── steps
│   │   │   │       ├── __init__.py
│   │   │   │       ├── _guided_conversation.py
│   │   │   │       ├── _llm.py
│   │   │   │       ├── acquire_form_step.py
│   │   │   │       ├── extract_form_fields_step.py
│   │   │   │       ├── fill_form_step.py
│   │   │   │       └── types.py
│   │   │   ├── helpers.py
│   │   │   ├── legacy.py
│   │   │   └── text_includes
│   │   │       ├── artifact_agent_enabled.md
│   │   │       ├── guardrails_prompt.txt
│   │   │       ├── guided_conversation_agent_enabled.md
│   │   │       └── skills_agent_enabled.md
│   │   ├── assistant.code-workspace
│   │   ├── gc_learnings
│   │   │   ├── gc_learnings.md
│   │   │   └── images
│   │   │       ├── gc_conversation_plan_fcn.png
│   │   │       ├── gc_conversation_plan_template.png
│   │   │       ├── gc_execute_plan_callstack.png
│   │   │       ├── gc_functions.png
│   │   │       ├── gc_generate_plan_callstack.png
│   │   │       ├── gc_get_resource_instructions.png
│   │   │       ├── gc_get_termination_instructions.png
│   │   │       ├── gc_kernel_arguments.png
│   │   │       ├── gc_plan_calls.png
│   │   │       ├── gc_termination_instructions.png
│   │   │       ├── sk_get_chat_message_contents.png
│   │   │       ├── sk_inner_get_chat_message_contents.png
│   │   │       ├── sk_send_request_prep.png
│   │   │       └── sk_send_request.png
│   │   ├── Makefile
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   └── skill-assistant
│       ├── .env.example
│       ├── .vscode
│       │   ├── launch.json
│       │   └── settings.json
│       ├── assistant
│       │   ├── __init__.py
│       │   ├── config.py
│       │   ├── logging.py
│       │   ├── skill_assistant.py
│       │   ├── skill_engine_registry.py
│       │   ├── skill_event_mapper.py
│       │   ├── text_includes
│       │   │   └── guardrails_prompt.txt
│       │   └── workbench_helpers.py
│       ├── assistant.code-workspace
│       ├── Makefile
│       ├── pyproject.toml
│       ├── README.md
│       ├── tests
│       │   └── test_setup.py
│       └── uv.lock
├── CLAUDE.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── docs
│   ├── .vscode
│   │   └── settings.json
│   ├── ASSISTANT_CONFIG.md
│   ├── ASSISTANT_DEVELOPMENT_GUIDE.md
│   ├── CUSTOM_APP_REGISTRATION.md
│   ├── HOSTED_ASSISTANT_WITH_LOCAL_MCP_SERVERS.md
│   ├── images
│   │   ├── architecture-animation.gif
│   │   ├── configure_assistant.png
│   │   ├── conversation_canvas_open.png
│   │   ├── conversation_duplicate.png
│   │   ├── conversation_export.png
│   │   ├── conversation_share_dialog.png
│   │   ├── conversation_share_link.png
│   │   ├── dashboard_configured_view.png
│   │   ├── dashboard_view.png
│   │   ├── license_agreement.png
│   │   ├── message_bar.png
│   │   ├── message_inspection.png
│   │   ├── message_link.png
│   │   ├── new_prospector_assistant_dialog.png
│   │   ├── open_conversation_canvas.png
│   │   ├── prospector_example.png
│   │   ├── readme1.png
│   │   ├── readme2.png
│   │   ├── readme3.png
│   │   ├── rewind.png
│   │   ├── signin_page.png
│   │   └── splash_screen.png
│   ├── LOCAL_ASSISTANT_WITH_REMOTE_WORKBENCH.md
│   ├── SETUP_DEV_ENVIRONMENT.md
│   └── WORKBENCH_APP.md
├── examples
│   ├── dotnet
│   │   ├── .editorconfig
│   │   ├── dotnet-01-echo-bot
│   │   │   ├── appsettings.json
│   │   │   ├── dotnet-01-echo-bot.csproj
│   │   │   ├── MyAgent.cs
│   │   │   ├── MyAgentConfig.cs
│   │   │   ├── MyWorkbenchConnector.cs
│   │   │   ├── Program.cs
│   │   │   └── README.md
│   │   ├── dotnet-02-message-types-demo
│   │   │   ├── appsettings.json
│   │   │   ├── ConnectorExtensions.cs
│   │   │   ├── docs
│   │   │   │   ├── abc.png
│   │   │   │   ├── code.png
│   │   │   │   ├── config.png
│   │   │   │   ├── echo.png
│   │   │   │   ├── markdown.png
│   │   │   │   ├── mermaid.png
│   │   │   │   ├── reverse.png
│   │   │   │   └── safety-check.png
│   │   │   ├── dotnet-02-message-types-demo.csproj
│   │   │   ├── MyAgent.cs
│   │   │   ├── MyAgentConfig.cs
│   │   │   ├── MyWorkbenchConnector.cs
│   │   │   ├── Program.cs
│   │   │   └── README.md
│   │   └── dotnet-03-simple-chatbot
│   │       ├── appsettings.json
│   │       ├── ConnectorExtensions.cs
│   │       ├── dotnet-03-simple-chatbot.csproj
│   │       ├── MyAgent.cs
│   │       ├── MyAgentConfig.cs
│   │       ├── MyWorkbenchConnector.cs
│   │       ├── Program.cs
│   │       └── README.md
│   ├── Makefile
│   └── python
│       ├── python-01-echo-bot
│       │   ├── .env.example
│       │   ├── .vscode
│       │   │   ├── launch.json
│       │   │   └── settings.json
│       │   ├── assistant
│       │   │   ├── __init__.py
│       │   │   ├── chat.py
│       │   │   └── config.py
│       │   ├── assistant.code-workspace
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       ├── python-02-simple-chatbot
│       │   ├── .env.example
│       │   ├── .vscode
│       │   │   ├── launch.json
│       │   │   └── settings.json
│       │   ├── assistant
│       │   │   ├── __init__.py
│       │   │   ├── chat.py
│       │   │   ├── config.py
│       │   │   └── text_includes
│       │   │       └── guardrails_prompt.txt
│       │   ├── assistant.code-workspace
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       └── python-03-multimodel-chatbot
│           ├── .env.example
│           ├── .vscode
│           │   ├── launch.json
│           │   └── settings.json
│           ├── assistant
│           │   ├── __init__.py
│           │   ├── chat.py
│           │   ├── config.py
│           │   ├── model_adapters.py
│           │   └── text_includes
│           │       └── guardrails_prompt.txt
│           ├── assistant.code-workspace
│           ├── Makefile
│           ├── pyproject.toml
│           ├── README.md
│           └── uv.lock
├── KNOWN_ISSUES.md
├── libraries
│   ├── dotnet
│   │   ├── .editorconfig
│   │   ├── pack.sh
│   │   ├── README.md
│   │   ├── SemanticWorkbench.sln
│   │   ├── SemanticWorkbench.sln.DotSettings
│   │   └── WorkbenchConnector
│   │       ├── AgentBase.cs
│   │       ├── AgentConfig
│   │       │   ├── AgentConfigBase.cs
│   │       │   ├── AgentConfigPropertyAttribute.cs
│   │       │   └── ConfigUtils.cs
│   │       ├── Constants.cs
│   │       ├── IAgentBase.cs
│   │       ├── icon.png
│   │       ├── Models
│   │       │   ├── Command.cs
│   │       │   ├── Conversation.cs
│   │       │   ├── ConversationEvent.cs
│   │       │   ├── DebugInfo.cs
│   │       │   ├── Insight.cs
│   │       │   ├── Message.cs
│   │       │   ├── MessageMetadata.cs
│   │       │   ├── Participant.cs
│   │       │   ├── Sender.cs
│   │       │   └── ServiceInfo.cs
│   │       ├── Storage
│   │       │   ├── AgentInfo.cs
│   │       │   ├── AgentServiceStorage.cs
│   │       │   └── IAgentServiceStorage.cs
│   │       ├── StringLoggingExtensions.cs
│   │       ├── Webservice.cs
│   │       ├── WorkbenchConfig.cs
│   │       ├── WorkbenchConnector.cs
│   │       └── WorkbenchConnector.csproj
│   ├── Makefile
│   └── python
│       ├── anthropic-client
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── anthropic_client
│       │   │   ├── __init__.py
│       │   │   ├── client.py
│       │   │   ├── config.py
│       │   │   └── messages.py
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       ├── assistant-data-gen
│       │   ├── .vscode
│       │   │   ├── launch.json
│       │   │   └── settings.json
│       │   ├── assistant_data_gen
│       │   │   ├── __init__.py
│       │   │   ├── assistant_api.py
│       │   │   ├── config.py
│       │   │   ├── gce
│       │   │   │   ├── __init__.py
│       │   │   │   ├── gce_agent.py
│       │   │   │   └── prompts.py
│       │   │   └── pydantic_ai_utils.py
│       │   ├── configs
│       │   │   └── document_assistant_example_config.yaml
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   ├── scripts
│       │   │   ├── gce_simulation.py
│       │   │   └── generate_scenario.py
│       │   └── uv.lock
│       ├── assistant-drive
│       │   ├── .gitignore
│       │   ├── .vscode
│       │   │   ├── extensions.json
│       │   │   └── settings.json
│       │   ├── assistant_drive
│       │   │   ├── __init__.py
│       │   │   ├── drive.py
│       │   │   └── tests
│       │   │       └── test_basic.py
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── pytest.ini
│       │   ├── README.md
│       │   ├── usage.ipynb
│       │   └── uv.lock
│       ├── assistant-extensions
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── assistant_extensions
│       │   │   ├── __init__.py
│       │   │   ├── ai_clients
│       │   │   │   └── config.py
│       │   │   ├── artifacts
│       │   │   │   ├── __init__.py
│       │   │   │   ├── _artifacts.py
│       │   │   │   ├── _inspector.py
│       │   │   │   └── _model.py
│       │   │   ├── attachments
│       │   │   │   ├── __init__.py
│       │   │   │   ├── _attachments.py
│       │   │   │   ├── _convert.py
│       │   │   │   ├── _model.py
│       │   │   │   ├── _shared.py
│       │   │   │   └── _summarizer.py
│       │   │   ├── chat_context_toolkit
│       │   │   │   ├── __init__.py
│       │   │   │   ├── _config.py
│       │   │   │   ├── archive
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── _archive.py
│       │   │   │   │   └── _summarizer.py
│       │   │   │   ├── message_history
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── _history.py
│       │   │   │   │   └── _message.py
│       │   │   │   └── virtual_filesystem
│       │   │   │       ├── __init__.py
│       │   │   │       ├── _archive_file_source.py
│       │   │   │       └── _attachments_file_source.py
│       │   │   ├── dashboard_card
│       │   │   │   ├── __init__.py
│       │   │   │   └── _dashboard_card.py
│       │   │   ├── document_editor
│       │   │   │   ├── __init__.py
│       │   │   │   ├── _extension.py
│       │   │   │   ├── _inspector.py
│       │   │   │   └── _model.py
│       │   │   ├── mcp
│       │   │   │   ├── __init__.py
│       │   │   │   ├── _assistant_file_resource_handler.py
│       │   │   │   ├── _client_utils.py
│       │   │   │   ├── _devtunnel.py
│       │   │   │   ├── _model.py
│       │   │   │   ├── _openai_utils.py
│       │   │   │   ├── _sampling_handler.py
│       │   │   │   ├── _tool_utils.py
│       │   │   │   └── _workbench_file_resource_handler.py
│       │   │   ├── navigator
│       │   │   │   ├── __init__.py
│       │   │   │   └── _navigator.py
│       │   │   └── workflows
│       │   │       ├── __init__.py
│       │   │       ├── _model.py
│       │   │       ├── _workflows.py
│       │   │       └── runners
│       │   │           └── _user_proxy.py
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   ├── test
│       │   │   └── attachments
│       │   │       └── test_attachments.py
│       │   └── uv.lock
│       ├── chat-context-toolkit
│       │   ├── .claude
│       │   │   └── settings.local.json
│       │   ├── .env.sample
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── assets
│       │   │   ├── archive_v1.png
│       │   │   ├── history_v1.png
│       │   │   └── vfs_v1.png
│       │   ├── chat_context_toolkit
│       │   │   ├── __init__.py
│       │   │   ├── archive
│       │   │   │   ├── __init__.py
│       │   │   │   ├── _archive_reader.py
│       │   │   │   ├── _archive_task_queue.py
│       │   │   │   ├── _state.py
│       │   │   │   ├── _types.py
│       │   │   │   └── summarization
│       │   │   │       ├── __init__.py
│       │   │   │       └── _summarizer.py
│       │   │   ├── history
│       │   │   │   ├── __init__.py
│       │   │   │   ├── _budget.py
│       │   │   │   ├── _decorators.py
│       │   │   │   ├── _history.py
│       │   │   │   ├── _prioritize.py
│       │   │   │   ├── _types.py
│       │   │   │   └── tool_abbreviations
│       │   │   │       ├── __init__.py
│       │   │   │       └── _tool_abbreviations.py
│       │   │   └── virtual_filesystem
│       │   │       ├── __init__.py
│       │   │       ├── _types.py
│       │   │       ├── _virtual_filesystem.py
│       │   │       ├── README.md
│       │   │       └── tools
│       │   │           ├── __init__.py
│       │   │           ├── _ls_tool.py
│       │   │           ├── _tools.py
│       │   │           └── _view_tool.py
│       │   ├── CLAUDE.md
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   ├── test
│       │   │   ├── archive
│       │   │   │   └── test_archive_reader.py
│       │   │   ├── history
│       │   │   │   ├── test_abbreviate_messages.py
│       │   │   │   ├── test_history.py
│       │   │   │   ├── test_pair_and_order_tool_messages.py
│       │   │   │   ├── test_prioritize.py
│       │   │   │   └── test_truncate_messages.py
│       │   │   └── virtual_filesystem
│       │   │       ├── test_virtual_filesystem.py
│       │   │       └── tools
│       │   │           ├── test_ls_tool.py
│       │   │           ├── test_tools.py
│       │   │           └── test_view_tool.py
│       │   └── uv.lock
│       ├── content-safety
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── content_safety
│       │   │   ├── __init__.py
│       │   │   ├── evaluators
│       │   │   │   ├── __init__.py
│       │   │   │   ├── azure_content_safety
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── config.py
│       │   │   │   │   └── evaluator.py
│       │   │   │   ├── config.py
│       │   │   │   ├── evaluator.py
│       │   │   │   └── openai_moderations
│       │   │   │       ├── __init__.py
│       │   │   │       ├── config.py
│       │   │   │       └── evaluator.py
│       │   │   └── README.md
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       ├── events
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── events
│       │   │   ├── __init__.py
│       │   │   └── events.py
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       ├── guided-conversation
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── guided_conversation
│       │   │   ├── __init__.py
│       │   │   ├── functions
│       │   │   │   ├── __init__.py
│       │   │   │   ├── conversation_plan.py
│       │   │   │   ├── execution.py
│       │   │   │   └── final_update_plan.py
│       │   │   ├── guided_conversation_agent.py
│       │   │   ├── plugins
│       │   │   │   ├── __init__.py
│       │   │   │   ├── agenda.py
│       │   │   │   └── artifact.py
│       │   │   └── utils
│       │   │       ├── __init__.py
│       │   │       ├── base_model_llm.py
│       │   │       ├── conversation_helpers.py
│       │   │       ├── openai_tool_calling.py
│       │   │       ├── plugin_helpers.py
│       │   │       └── resources.py
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       ├── llm-client
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── llm_client
│       │   │   ├── __init__.py
│       │   │   └── model.py
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       ├── Makefile
│       ├── mcp-extensions
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── Makefile
│       │   ├── mcp_extensions
│       │   │   ├── __init__.py
│       │   │   ├── _client_session.py
│       │   │   ├── _model.py
│       │   │   ├── _sampling.py
│       │   │   ├── _server_extensions.py
│       │   │   ├── _tool_utils.py
│       │   │   ├── llm
│       │   │   │   ├── __init__.py
│       │   │   │   ├── chat_completion.py
│       │   │   │   ├── helpers.py
│       │   │   │   ├── llm_types.py
│       │   │   │   ├── mcp_chat_completion.py
│       │   │   │   └── openai_chat_completion.py
│       │   │   └── server
│       │   │       ├── __init__.py
│       │   │       └── storage.py
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   ├── tests
│       │   │   └── test_tool_utils.py
│       │   └── uv.lock
│       ├── mcp-tunnel
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── Makefile
│       │   ├── mcp_tunnel
│       │   │   ├── __init__.py
│       │   │   ├── _devtunnel.py
│       │   │   ├── _dir.py
│       │   │   └── _main.py
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   └── uv.lock
│       ├── openai-client
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── Makefile
│       │   ├── openai_client
│       │   │   ├── __init__.py
│       │   │   ├── chat_driver
│       │   │   │   ├── __init__.py
│       │   │   │   ├── chat_driver.ipynb
│       │   │   │   ├── chat_driver.py
│       │   │   │   ├── message_history_providers
│       │   │   │   │   ├── __init__.py
│       │   │   │   │   ├── in_memory_message_history_provider.py
│       │   │   │   │   ├── local_message_history_provider.py
│       │   │   │   │   ├── message_history_provider.py
│       │   │   │   │   └── tests
│       │   │   │   │       └── formatted_instructions_test.py
│       │   │   │   └── README.md
│       │   │   ├── client.py
│       │   │   ├── completion.py
│       │   │   ├── config.py
│       │   │   ├── errors.py
│       │   │   ├── logging.py
│       │   │   ├── messages.py
│       │   │   ├── tokens.py
│       │   │   └── tools.py
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   ├── tests
│       │   │   ├── test_command_parsing.py
│       │   │   ├── test_formatted_messages.py
│       │   │   ├── test_messages.py
│       │   │   └── test_tokens.py
│       │   └── uv.lock
│       ├── semantic-workbench-api-model
│       │   ├── .vscode
│       │   │   └── settings.json
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   ├── semantic_workbench_api_model
│       │   │   ├── __init__.py
│       │   │   ├── assistant_model.py
│       │   │   ├── assistant_service_client.py
│       │   │   ├── workbench_model.py
│       │   │   └── workbench_service_client.py
│       │   └── uv.lock
│       ├── semantic-workbench-assistant
│       │   ├── .vscode
│       │   │   ├── launch.json
│       │   │   └── settings.json
│       │   ├── Makefile
│       │   ├── pyproject.toml
│       │   ├── README.md
│       │   ├── semantic_workbench_assistant
│       │   │   ├── __init__.py
│       │   │   ├── assistant_app
│       │   │   │   ├── __init__.py
│       │   │   │   ├── assistant.py
│       │   │   │   ├── config.py
│       │   │   │   ├── content_safety.py
│       │   │   │   ├── context.py
│       │   │   │   ├── error.py
│       │   │   │   ├── export_import.py
│       │   │   │   ├── protocol.py
│       │   │   │   └── service.py
│       │   │   ├── assistant_service.py
│       │   │   ├── auth.py
│       │   │   ├── canonical.py
│       │   │   ├── command.py
│       │   │   ├── config.py
│       │   │   ├── logging_config.py
│       │   │   ├── settings.py
│       │   │   ├── start.py
│       │   │   └── storage.py
│       │   ├── tests
│       │   │   ├── conftest.py
│       │   │   ├── test_assistant_app.py
│       │   │   ├── test_canonical.py
│       │   │   ├── test_config.py
│       │   │   └── test_storage.py
│       │   └── uv.lock
│       └── skills
│           ├── .vscode
│           │   └── settings.json
│           ├── Makefile
│           ├── README.md
│           └── skill-library
│               ├── .vscode
│               │   └── settings.json
│               ├── docs
│               │   └── vs-recipe-tool.md
│               ├── Makefile
│               ├── pyproject.toml
│               ├── README.md
│               ├── skill_library
│               │   ├── __init__.py
│               │   ├── chat_driver_helpers.py
│               │   ├── cli
│               │   │   ├── azure_openai.py
│               │   │   ├── conversation_history.py
│               │   │   ├── README.md
│               │   │   ├── run_routine.py
│               │   │   ├── settings.py
│               │   │   └── skill_logger.py
│               │   ├── engine.py
│               │   ├── llm_info.txt
│               │   ├── logging.py
│               │   ├── README.md
│               │   ├── routine_stack.py
│               │   ├── skill.py
│               │   ├── skills
│               │   │   ├── common
│               │   │   │   ├── __init__.py
│               │   │   │   ├── common_skill.py
│               │   │   │   └── routines
│               │   │   │       ├── bing_search.py
│               │   │   │       ├── consolidate.py
│               │   │   │       ├── echo.py
│               │   │   │       ├── gather_context.py
│               │   │   │       ├── get_content_from_url.py
│               │   │   │       ├── gpt_complete.py
│               │   │   │       ├── select_user_intent.py
│               │   │   │       └── summarize.py
│               │   │   ├── eval
│               │   │   │   ├── __init__.py
│               │   │   │   ├── eval_skill.py
│               │   │   │   └── routines
│               │   │   │       └── eval.py
│               │   │   ├── fabric
│               │   │   │   ├── __init__.py
│               │   │   │   ├── fabric_skill.py
│               │   │   │   ├── patterns
│               │   │   │   │   ├── agility_story
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── ai
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_answers
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_candidates
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_cfp_submission
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_claims
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_comments
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_debate
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_email_headers
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_incident
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_interviewer_techniques
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_logs
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_malware
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_military_strategy
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_mistakes
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_paper
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_patent
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_personality
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_presentation
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_product_feedback
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_proposition
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_prose
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_prose_json
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_prose_pinker
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_risk
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_sales_call
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_spiritual_text
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_tech_impact
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_threat_report
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── analyze_threat_report_cmds
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── analyze_threat_report_trends
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── answer_interview_question
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── ask_secure_by_design_questions
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── ask_uncle_duke
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── capture_thinkers_work
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── check_agreement
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── clean_text
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── coding_master
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── compare_and_contrast
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── convert_to_markdown
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_5_sentence_summary
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_academic_paper
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_ai_jobs_analysis
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_aphorisms
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_art_prompt
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_better_frame
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_coding_project
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_command
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_cyber_summary
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_design_document
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_diy
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_formal_email
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_git_diff_commit
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_graph_from_input
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_hormozi_offer
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_idea_compass
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_investigation_visualization
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_keynote
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_logo
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_markmap_visualization
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_mermaid_visualization
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_mermaid_visualization_for_github
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_micro_summary
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_network_threat_landscape
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_newsletter_entry
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_npc
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_pattern
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_prd
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_prediction_block
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_quiz
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_reading_plan
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_recursive_outline
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_report_finding
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_rpg_summary
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_security_update
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_show_intro
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_sigma_rules
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_story_explanation
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_stride_threat_model
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_summary
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_tags
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_threat_scenarios
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_ttrc_graph
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_ttrc_narrative
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_upgrade_pack
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_user_story
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── create_video_chapters
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── create_visualization
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── dialog_with_socrates
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── enrich_blog_post
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── explain_code
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── explain_docs
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── explain_math
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── explain_project
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── explain_terms
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── export_data_as_csv
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_algorithm_update_recommendations
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── extract_article_wisdom
│               │   │   │   │   │   ├── dmiessler
│               │   │   │   │   │   │   └── extract_wisdom-1.0.0
│               │   │   │   │   │   │       ├── system.md
│               │   │   │   │   │   │       └── user.md
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── extract_book_ideas
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_book_recommendations
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_business_ideas
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_controversial_ideas
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_core_message
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_ctf_writeup
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_domains
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_extraordinary_claims
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_ideas
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_insights
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_insights_dm
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_instructions
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_jokes
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_latest_video
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_main_idea
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_most_redeeming_thing
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_patterns
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_poc
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── extract_predictions
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_primary_problem
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_primary_solution
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_product_features
│               │   │   │   │   │   ├── dmiessler
│               │   │   │   │   │   │   └── extract_wisdom-1.0.0
│               │   │   │   │   │   │       ├── system.md
│               │   │   │   │   │   │       └── user.md
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_questions
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_recipe
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_recommendations
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── extract_references
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── extract_skills
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_song_meaning
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_sponsors
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_videoid
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── extract_wisdom
│               │   │   │   │   │   ├── dmiessler
│               │   │   │   │   │   │   └── extract_wisdom-1.0.0
│               │   │   │   │   │   │       ├── system.md
│               │   │   │   │   │   │       └── user.md
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_wisdom_agents
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_wisdom_dm
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── extract_wisdom_nometa
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── find_hidden_message
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── find_logical_fallacies
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── get_wow_per_minute
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── get_youtube_rss
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── humanize
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── identify_dsrp_distinctions
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── identify_dsrp_perspectives
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── identify_dsrp_relationships
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── identify_dsrp_systems
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── identify_job_stories
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── improve_academic_writing
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── improve_prompt
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── improve_report_finding
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── improve_writing
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── judge_output
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── label_and_rate
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── loaded
│               │   │   │   │   ├── md_callout
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── official_pattern_template
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── pattern_explanations.md
│               │   │   │   │   ├── prepare_7s_strategy
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── provide_guidance
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── rate_ai_response
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── rate_ai_result
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── rate_content
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── rate_value
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── raw_query
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── raycast
│               │   │   │   │   │   ├── capture_thinkers_work
│               │   │   │   │   │   ├── create_story_explanation
│               │   │   │   │   │   ├── extract_primary_problem
│               │   │   │   │   │   ├── extract_wisdom
│               │   │   │   │   │   └── yt
│               │   │   │   │   ├── recommend_artists
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── recommend_pipeline_upgrades
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── recommend_talkpanel_topics
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── refine_design_document
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── review_design
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── sanitize_broken_html_to_markdown
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── show_fabric_options_markmap
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── solve_with_cot
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── stringify
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── suggest_pattern
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── summarize
│               │   │   │   │   │   ├── dmiessler
│               │   │   │   │   │   │   └── summarize
│               │   │   │   │   │   │       ├── system.md
│               │   │   │   │   │   │       └── user.md
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── summarize_debate
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── summarize_git_changes
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── summarize_git_diff
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── summarize_lecture
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── summarize_legislation
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── summarize_meeting
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── summarize_micro
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── summarize_newsletter
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── summarize_paper
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── summarize_prompt
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── summarize_pull-requests
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── summarize_rpg_session
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_analyze_challenge_handling
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_check_metrics
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_create_h3_career
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_create_opening_sentences
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_describe_life_outlook
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_extract_intro_sentences
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_extract_panel_topics
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_find_blindspots
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_find_negative_thinking
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_find_neglected_goals
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_give_encouragement
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_red_team_thinking
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_threat_model_plans
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_visualize_mission_goals_projects
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── t_year_in_review
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── to_flashcards
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── transcribe_minutes
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── translate
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── tweet
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── write_essay
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── write_hackerone_report
│               │   │   │   │   │   ├── README.md
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── write_latex
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── write_micro_essay
│               │   │   │   │   │   └── system.md
│               │   │   │   │   ├── write_nuclei_template_rule
│               │   │   │   │   │   ├── system.md
│               │   │   │   │   │   └── user.md
│               │   │   │   │   ├── write_pull-request
│               │   │   │   │   │   └── system.md
│               │   │   │   │   └── write_semgrep_rule
│               │   │   │   │       ├── system.md
│               │   │   │   │       └── user.md
│               │   │   │   └── routines
│               │   │   │       ├── list.py
│               │   │   │       ├── run.py
│               │   │   │       └── show.py
│               │   │   ├── guided_conversation
│               │   │   │   ├── __init__.py
│               │   │   │   ├── agenda.py
│               │   │   │   ├── artifact_helpers.py
│               │   │   │   ├── chat_completions
│               │   │   │   │   ├── fix_agenda_error.py
│               │   │   │   │   ├── fix_artifact_error.py
│               │   │   │   │   ├── generate_agenda.py
│               │   │   │   │   ├── generate_artifact_updates.py
│               │   │   │   │   ├── generate_final_artifact.py
│               │   │   │   │   └── generate_message.py
│               │   │   │   ├── conversation_guides
│               │   │   │   │   ├── __init__.py
│               │   │   │   │   ├── acrostic_poem.py
│               │   │   │   │   ├── er_triage.py
│               │   │   │   │   ├── interview.py
│               │   │   │   │   └── patient_intake.py
│               │   │   │   ├── guide.py
│               │   │   │   ├── guided_conversation_skill.py
│               │   │   │   ├── logging.py
│               │   │   │   ├── message.py
│               │   │   │   ├── resources.py
│               │   │   │   ├── routines
│               │   │   │   │   └── guided_conversation.py
│               │   │   │   └── tests
│               │   │   │       ├── conftest.py
│               │   │   │       ├── test_artifact_helpers.py
│               │   │   │       ├── test_generate_agenda.py
│               │   │   │       ├── test_generate_artifact_updates.py
│               │   │   │       ├── test_generate_final_artifact.py
│               │   │   │       └── test_resource.py
│               │   │   ├── meta
│               │   │   │   ├── __init__.py
│               │   │   │   ├── meta_skill.py
│               │   │   │   ├── README.md
│               │   │   │   └── routines
│               │   │   │       └── generate_routine.py
│               │   │   ├── posix
│               │   │   │   ├── __init__.py
│               │   │   │   ├── posix_skill.py
│               │   │   │   ├── routines
│               │   │   │   │   ├── append_file.py
│               │   │   │   │   ├── cd.py
│               │   │   │   │   ├── ls.py
│               │   │   │   │   ├── make_home_dir.py
│               │   │   │   │   ├── mkdir.py
│               │   │   │   │   ├── mv.py
│               │   │   │   │   ├── pwd.py
│               │   │   │   │   ├── read_file.py
│               │   │   │   │   ├── rm.py
│               │   │   │   │   ├── touch.py
│               │   │   │   │   └── write_file.py
│               │   │   │   └── sandbox_shell.py
│               │   │   ├── README.md
│               │   │   ├── research
│               │   │   │   ├── __init__.py
│               │   │   │   ├── README.md
│               │   │   │   ├── research_skill.py
│               │   │   │   └── routines
│               │   │   │       ├── answer_question_about_content.py
│               │   │   │       ├── evaluate_answer.py
│               │   │   │       ├── generate_research_plan.py
│               │   │   │       ├── generate_search_query.py
│               │   │   │       ├── update_research_plan.py
│               │   │   │       ├── web_research.py
│               │   │   │       └── web_search.py
│               │   │   ├── research2
│               │   │   │   ├── __init__.py
│               │   │   │   ├── README.md
│               │   │   │   ├── research_skill.py
│               │   │   │   └── routines
│               │   │   │       ├── facts.py
│               │   │   │       ├── make_final_report.py
│               │   │   │       ├── research.py
│               │   │   │       ├── search_plan.py
│               │   │   │       ├── search.py
│               │   │   │       └── visit_pages.py
│               │   │   └── web_research
│               │   │       ├── __init__.py
│               │   │       ├── README.md
│               │   │       ├── research_skill.py
│               │   │       └── routines
│               │   │           ├── facts.py
│               │   │           ├── make_final_report.py
│               │   │           ├── research.py
│               │   │           ├── search_plan.py
│               │   │           ├── search.py
│               │   │           └── visit_pages.py
│               │   ├── tests
│               │   │   ├── test_common_skill.py
│               │   │   ├── test_integration.py
│               │   │   ├── test_routine_stack.py
│               │   │   ├── tst_skill
│               │   │   │   ├── __init__.py
│               │   │   │   └── routines
│               │   │   │       ├── __init__.py
│               │   │   │       └── a_routine.py
│               │   │   └── utilities
│               │   │       ├── test_find_template_vars.py
│               │   │       ├── test_make_arg_set.py
│               │   │       ├── test_paramspec.py
│               │   │       ├── test_parse_command_string.py
│               │   │       └── test_to_string.py
│               │   ├── types.py
│               │   ├── usage.py
│               │   └── utilities.py
│               └── uv.lock
├── LICENSE
├── Makefile
├── mcp-servers
│   ├── ai-assist-content
│   │   ├── .vscode
│   │   │   └── settings.json
│   │   ├── mcp-example-brave-search.md
│   │   ├── mcp-fastmcp-typescript-README.md
│   │   ├── mcp-llms-full.txt
│   │   ├── mcp-metadata-tips.md
│   │   ├── mcp-python-sdk-README.md
│   │   ├── mcp-typescript-sdk-README.md
│   │   ├── pydanticai-documentation.md
│   │   ├── pydanticai-example-question-graph.md
│   │   ├── pydanticai-example-weather.md
│   │   ├── pydanticai-tutorial.md
│   │   └── README.md
│   ├── Makefile
│   ├── mcp-server-bing-search
│   │   ├── .env.example
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server_bing_search
│   │   │   ├── __init__.py
│   │   │   ├── config.py
│   │   │   ├── prompts
│   │   │   │   ├── __init__.py
│   │   │   │   ├── clean_website.py
│   │   │   │   └── filter_links.py
│   │   │   ├── server.py
│   │   │   ├── start.py
│   │   │   ├── tools.py
│   │   │   ├── types.py
│   │   │   ├── utils.py
│   │   │   └── web
│   │   │       ├── __init__.py
│   │   │       ├── get_content.py
│   │   │       ├── llm_processing.py
│   │   │       ├── process_website.py
│   │   │       └── search_bing.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── tests
│   │   │   └── test_tools.py
│   │   └── uv.lock
│   ├── mcp-server-bundle
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server_bundle
│   │   │   ├── __init__.py
│   │   │   └── main.py
│   │   ├── pyinstaller.spec
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── mcp-server-filesystem
│   │   ├── .env.example
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── ci.yml
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server_filesystem
│   │   │   ├── __init__.py
│   │   │   ├── config.py
│   │   │   ├── server.py
│   │   │   └── start.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── tests
│   │   │   └── test_filesystem.py
│   │   └── uv.lock
│   ├── mcp-server-filesystem-edit
│   │   ├── .env.example
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── data
│   │   │   ├── attachments
│   │   │   │   ├── Daily Game Ideas.txt
│   │   │   │   ├── Frontend Framework Proposal.txt
│   │   │   │   ├── ReDoodle.txt
│   │   │   │   └── Research Template.tex
│   │   │   ├── test_cases.yaml
│   │   │   └── transcripts
│   │   │       ├── transcript_research_simple.md
│   │   │       ├── transcript_Startup_Idea_1_202503031513.md
│   │   │       ├── transcript_Startup_Idea_2_202503031659.md
│   │   │       └── transcript_Web_Frontends_202502281551.md
│   │   ├── Makefile
│   │   ├── mcp_server_filesystem_edit
│   │   │   ├── __init__.py
│   │   │   ├── app_handling
│   │   │   │   ├── __init__.py
│   │   │   │   ├── excel.py
│   │   │   │   ├── miktex.py
│   │   │   │   ├── office_common.py
│   │   │   │   ├── powerpoint.py
│   │   │   │   └── word.py
│   │   │   ├── config.py
│   │   │   ├── evals
│   │   │   │   ├── __init__.py
│   │   │   │   ├── common.py
│   │   │   │   ├── run_comments.py
│   │   │   │   ├── run_edit.py
│   │   │   │   └── run_ppt_edit.py
│   │   │   ├── prompts
│   │   │   │   ├── __init__.py
│   │   │   │   ├── add_comments.py
│   │   │   │   ├── analyze_comments.py
│   │   │   │   ├── latex_edit.py
│   │   │   │   ├── markdown_draft.py
│   │   │   │   ├── markdown_edit.py
│   │   │   │   └── powerpoint_edit.py
│   │   │   ├── server.py
│   │   │   ├── start.py
│   │   │   ├── tools
│   │   │   │   ├── __init__.py
│   │   │   │   ├── add_comments.py
│   │   │   │   ├── edit_adapters
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── common.py
│   │   │   │   │   ├── latex.py
│   │   │   │   │   └── markdown.py
│   │   │   │   ├── edit.py
│   │   │   │   └── helpers.py
│   │   │   └── types.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── tests
│   │   │   ├── app_handling
│   │   │   │   ├── test_excel.py
│   │   │   │   ├── test_miktext.py
│   │   │   │   ├── test_office_common.py
│   │   │   │   ├── test_powerpoint.py
│   │   │   │   └── test_word.py
│   │   │   ├── conftest.py
│   │   │   └── tools
│   │   │       └── edit_adapters
│   │   │           ├── test_latex.py
│   │   │           └── test_markdown.py
│   │   └── uv.lock
│   ├── mcp-server-fusion
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── AddInIcon.svg
│   │   ├── config.py
│   │   ├── FusionMCPServerAddIn.manifest
│   │   ├── FusionMCPServerAddIn.py
│   │   ├── mcp_server_fusion
│   │   │   ├── __init__.py
│   │   │   ├── fusion_mcp_server.py
│   │   │   ├── fusion_utils
│   │   │   │   ├── __init__.py
│   │   │   │   ├── event_utils.py
│   │   │   │   ├── general_utils.py
│   │   │   │   └── tool_utils.py
│   │   │   ├── mcp_tools
│   │   │   │   ├── __init__.py
│   │   │   │   ├── fusion_3d_operation.py
│   │   │   │   ├── fusion_geometry.py
│   │   │   │   ├── fusion_pattern.py
│   │   │   │   └── fusion_sketch.py
│   │   │   └── vendor
│   │   │       └── README.md
│   │   ├── README.md
│   │   └── requirements.txt
│   ├── mcp-server-giphy
│   │   ├── .env.example
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server
│   │   │   ├── __init__.py
│   │   │   ├── config.py
│   │   │   ├── giphy_search.py
│   │   │   ├── sampling.py
│   │   │   ├── server.py
│   │   │   ├── start.py
│   │   │   └── utils.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── mcp-server-memory-user-bio
│   │   ├── .env.example
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server_memory_user_bio
│   │   │   ├── __init__.py
│   │   │   ├── config.py
│   │   │   ├── server.py
│   │   │   └── start.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── mcp-server-memory-whiteboard
│   │   ├── .env.example
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server_memory_whiteboard
│   │   │   ├── __init__.py
│   │   │   ├── config.py
│   │   │   ├── server.py
│   │   │   └── start.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── mcp-server-office
│   │   ├── .env.example
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── build.sh
│   │   ├── data
│   │   │   ├── attachments
│   │   │   │   ├── Daily Game Ideas.txt
│   │   │   │   ├── Frontend Framework Proposal.txt
│   │   │   │   └── ReDoodle.txt
│   │   │   └── word
│   │   │       ├── test_cases.yaml
│   │   │       └── transcripts
│   │   │           ├── transcript_Startup_Idea_1_202503031513.md
│   │   │           ├── transcript_Startup_Idea_2_202503031659.md
│   │   │           └── transcript_Web_Frontends_202502281551.md
│   │   ├── Makefile
│   │   ├── mcp_server
│   │   │   ├── __init__.py
│   │   │   ├── app_interaction
│   │   │   │   ├── __init__.py
│   │   │   │   ├── excel_editor.py
│   │   │   │   ├── powerpoint_editor.py
│   │   │   │   └── word_editor.py
│   │   │   ├── config.py
│   │   │   ├── constants.py
│   │   │   ├── evals
│   │   │   │   ├── __init__.py
│   │   │   │   ├── common.py
│   │   │   │   ├── run_comment_analysis.py
│   │   │   │   ├── run_feedback.py
│   │   │   │   └── run_markdown_edit.py
│   │   │   ├── helpers.py
│   │   │   ├── markdown_edit
│   │   │   │   ├── __init__.py
│   │   │   │   ├── comment_analysis.py
│   │   │   │   ├── feedback_step.py
│   │   │   │   ├── markdown_edit.py
│   │   │   │   └── utils.py
│   │   │   ├── prompts
│   │   │   │   ├── __init__.py
│   │   │   │   ├── comment_analysis.py
│   │   │   │   ├── feedback.py
│   │   │   │   ├── markdown_draft.py
│   │   │   │   └── markdown_edit.py
│   │   │   ├── server.py
│   │   │   ├── start.py
│   │   │   └── types.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── tests
│   │   │   └── test_word_editor.py
│   │   └── uv.lock
│   ├── mcp-server-open-deep-research
│   │   ├── .env.example
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server
│   │   │   ├── __init__.py
│   │   │   ├── config.py
│   │   │   ├── libs
│   │   │   │   └── open_deep_research
│   │   │   │       ├── cookies.py
│   │   │   │       ├── mdconvert.py
│   │   │   │       ├── run_agents.py
│   │   │   │       ├── text_inspector_tool.py
│   │   │   │       ├── text_web_browser.py
│   │   │   │       └── visual_qa.py
│   │   │   ├── open_deep_research.py
│   │   │   ├── server.py
│   │   │   └── start.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   └── uv.lock
│   ├── mcp-server-open-deep-research-clone
│   │   ├── .env.example
│   │   ├── .gitignore
│   │   ├── .vscode
│   │   │   ├── launch.json
│   │   │   └── settings.json
│   │   ├── Makefile
│   │   ├── mcp_server_open_deep_research_clone
│   │   │   ├── __init__.py
│   │   │   ├── azure_openai.py
│   │   │   ├── config.py
│   │   │   ├── logging.py
│   │   │   ├── sampling.py
│   │   │   ├── server.py
│   │   │   ├── start.py
│   │   │   ├── utils.py
│   │   │   └── web_research.py
│   │   ├── pyproject.toml
│   │   ├── README.md
│   │   ├── test
│   │   │   └── test_open_deep_research_clone.py
│   │   └── uv.lock
│   ├── mcp-server-template
│   │   ├── .taplo.toml
│   │   ├── .vscode
│   │   │   └── settings.json
│   │   ├── copier.yml
│   │   ├── README.md
│   │   └── template
│   │       └── {{ project_slug }}
│   │           ├── .env.example.jinja
│   │           ├── .gitignore
│   │           ├── .vscode
│   │           │   ├── launch.json.jinja
│   │           │   └── settings.json
│   │           ├── {{ module_name }}
│   │           │   ├── __init__.py
│   │           │   ├── config.py.jinja
│   │           │   ├── server.py.jinja
│   │           │   └── start.py.jinja
│   │           ├── Makefile.jinja
│   │           ├── pyproject.toml.jinja
│   │           └── README.md.jinja
│   ├── mcp-server-vscode
│   │   ├── .eslintrc.cjs
│   │   ├── .gitignore
│   │   ├── .npmrc
│   │   ├── .vscode
│   │   │   ├── extensions.json
│   │   │   ├── launch.json
│   │   │   ├── settings.json
│   │   │   └── tasks.json
│   │   ├── .vscode-test.mjs
│   │   ├── .vscodeignore
│   │   ├── ASSISTANT_BOOTSTRAP.md
│   │   ├── eslint.config.mjs
│   │   ├── images
│   │   │   └── icon.png
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── out
│   │   │   ├── extension.d.ts
│   │   │   ├── extension.js
│   │   │   ├── test
│   │   │   │   ├── extension.test.d.ts
│   │   │   │   └── extension.test.js
│   │   │   ├── tools
│   │   │   │   ├── code_checker.d.ts
│   │   │   │   ├── code_checker.js
│   │   │   │   ├── debug_tools.d.ts
│   │   │   │   ├── debug_tools.js
│   │   │   │   ├── focus_editor.d.ts
│   │   │   │   ├── focus_editor.js
│   │   │   │   ├── search_symbol.d.ts
│   │   │   │   └── search_symbol.js
│   │   │   └── utils
│   │   │       ├── port.d.ts
│   │   │       └── port.js
│   │   ├── package.json
│   │   ├── pnpm-lock.yaml
│   │   ├── prettier.config.cjs
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── extension.d.ts
│   │   │   ├── extension.ts
│   │   │   ├── test
│   │   │   │   ├── extension.test.d.ts
│   │   │   │   └── extension.test.ts
│   │   │   ├── tools
│   │   │   │   ├── code_checker.d.ts
│   │   │   │   ├── code_checker.ts
│   │   │   │   ├── debug_tools.d.ts
│   │   │   │   ├── debug_tools.ts
│   │   │   │   ├── focus_editor.d.ts
│   │   │   │   ├── focus_editor.ts
│   │   │   │   ├── search_symbol.d.ts
│   │   │   │   └── search_symbol.ts
│   │   │   └── utils
│   │   │       ├── port.d.ts
│   │   │       └── port.ts
│   │   ├── tsconfig.json
│   │   ├── tsconfig.tsbuildinfo
│   │   ├── vsc-extension-quickstart.md
│   │   └── webpack.config.js
│   └── mcp-server-web-research
│       ├── .env.example
│       ├── .gitignore
│       ├── .vscode
│       │   ├── launch.json
│       │   └── settings.json
│       ├── Makefile
│       ├── mcp_server_web_research
│       │   ├── __init__.py
│       │   ├── azure_openai.py
│       │   ├── config.py
│       │   ├── logging.py
│       │   ├── sampling.py
│       │   ├── server.py
│       │   ├── start.py
│       │   ├── utils.py
│       │   └── web_research.py
│       ├── pyproject.toml
│       ├── README.md
│       ├── test
│       │   └── test_web_research.py
│       └── uv.lock
├── README.md
├── RESPONSIBLE_AI_FAQ.md
├── ruff.toml
├── SECURITY.md
├── semantic-workbench.code-workspace
├── SUPPORT.md
├── tools
│   ├── build_ai_context_files.py
│   ├── collect_files.py
│   ├── docker
│   │   ├── azure_website_sshd.conf
│   │   ├── docker-entrypoint.sh
│   │   ├── Dockerfile.assistant
│   │   └── Dockerfile.mcp-server
│   ├── makefiles
│   │   ├── docker-assistant.mk
│   │   ├── docker-mcp-server.mk
│   │   ├── docker.mk
│   │   ├── python.mk
│   │   ├── recursive.mk
│   │   └── shell.mk
│   ├── reset-service-data.ps1
│   ├── reset-service-data.sh
│   ├── run-app.ps1
│   ├── run-app.sh
│   ├── run-canonical-agent.ps1
│   ├── run-canonical-agent.sh
│   ├── run-dotnet-examples-with-aspire.sh
│   ├── run-python-example1.sh
│   ├── run-python-example2.ps1
│   ├── run-python-example2.sh
│   ├── run-service.ps1
│   ├── run-service.sh
│   ├── run-workbench-chatbot.ps1
│   └── run-workbench-chatbot.sh
├── workbench-app
│   ├── .dockerignore
│   ├── .env.example
│   ├── .eslintrc.cjs
│   ├── .gitignore
│   ├── .vscode
│   │   ├── launch.json
│   │   └── settings.json
│   ├── docker-entrypoint.sh
│   ├── Dockerfile
│   ├── docs
│   │   ├── APP_DEV_GUIDE.md
│   │   ├── MESSAGE_METADATA.md
│   │   ├── MESSAGE_TYPES.md
│   │   ├── README.md
│   │   └── STATE_INSPECTORS.md
│   ├── index.html
│   ├── Makefile
│   ├── nginx.conf
│   ├── package.json
│   ├── pnpm-lock.yaml
│   ├── prettier.config.cjs
│   ├── public
│   │   └── assets
│   │       ├── background-1-upscaled.jpg
│   │       ├── background-1-upscaled.png
│   │       ├── background-1.jpg
│   │       ├── background-1.png
│   │       ├── background-2.jpg
│   │       ├── background-2.png
│   │       ├── experimental-feature.jpg
│   │       ├── favicon.svg
│   │       ├── workflow-designer-1.jpg
│   │       ├── workflow-designer-outlets.jpg
│   │       ├── workflow-designer-states.jpg
│   │       └── workflow-designer-transitions.jpg
│   ├── README.md
│   ├── run.sh
│   ├── src
│   │   ├── components
│   │   │   ├── App
│   │   │   │   ├── AppFooter.tsx
│   │   │   │   ├── AppHeader.tsx
│   │   │   │   ├── AppMenu.tsx
│   │   │   │   ├── AppView.tsx
│   │   │   │   ├── CodeLabel.tsx
│   │   │   │   ├── CommandButton.tsx
│   │   │   │   ├── ConfirmLeave.tsx
│   │   │   │   ├── ContentExport.tsx
│   │   │   │   ├── ContentImport.tsx
│   │   │   │   ├── CopyButton.tsx
│   │   │   │   ├── DialogControl.tsx
│   │   │   │   ├── DynamicIframe.tsx
│   │   │   │   ├── ErrorListFromAppState.tsx
│   │   │   │   ├── ErrorMessageBar.tsx
│   │   │   │   ├── ExperimentalNotice.tsx
│   │   │   │   ├── FormWidgets
│   │   │   │   │   ├── BaseModelEditorWidget.tsx
│   │   │   │   │   ├── CustomizedArrayFieldTemplate.tsx
│   │   │   │   │   ├── CustomizedFieldTemplate.tsx
│   │   │   │   │   ├── CustomizedObjectFieldTemplate.tsx
│   │   │   │   │   └── InspectableWidget.tsx
│   │   │   │   ├── LabelWithDescription.tsx
│   │   │   │   ├── Loading.tsx
│   │   │   │   ├── MenuItemControl.tsx
│   │   │   │   ├── MiniControl.tsx
│   │   │   │   ├── MyAssistantServiceRegistrations.tsx
│   │   │   │   ├── MyItemsManager.tsx
│   │   │   │   ├── OverflowMenu.tsx
│   │   │   │   ├── PresenceMotionList.tsx
│   │   │   │   ├── ProfileSettings.tsx
│   │   │   │   └── TooltipWrapper.tsx
│   │   │   ├── Assistants
│   │   │   │   ├── ApplyConfigButton.tsx
│   │   │   │   ├── AssistantAdd.tsx
│   │   │   │   ├── AssistantConfigExportButton.tsx
│   │   │   │   ├── AssistantConfigImportButton.tsx
│   │   │   │   ├── AssistantConfiguration.tsx
│   │   │   │   ├── AssistantConfigure.tsx
│   │   │   │   ├── AssistantCreate.tsx
│   │   │   │   ├── AssistantDelete.tsx
│   │   │   │   ├── AssistantDuplicate.tsx
│   │   │   │   ├── AssistantExport.tsx
│   │   │   │   ├── AssistantImport.tsx
│   │   │   │   ├── AssistantRemove.tsx
│   │   │   │   ├── AssistantRename.tsx
│   │   │   │   ├── AssistantServiceInfo.tsx
│   │   │   │   ├── AssistantServiceMetadata.tsx
│   │   │   │   └── MyAssistants.tsx
│   │   │   ├── AssistantServiceRegistrations
│   │   │   │   ├── AssistantServiceRegistrationApiKey.tsx
│   │   │   │   ├── AssistantServiceRegistrationApiKeyReset.tsx
│   │   │   │   ├── AssistantServiceRegistrationCreate.tsx
│   │   │   │   └── AssistantServiceRegistrationRemove.tsx
│   │   │   ├── Conversations
│   │   │   │   ├── Canvas
│   │   │   │   │   ├── AssistantCanvas.tsx
│   │   │   │   │   ├── AssistantCanvasList.tsx
│   │   │   │   │   ├── AssistantInspector.tsx
│   │   │   │   │   ├── AssistantInspectorList.tsx
│   │   │   │   │   └── ConversationCanvas.tsx
│   │   │   │   ├── ChatInputPlugins
│   │   │   │   │   ├── ClearEditorPlugin.tsx
│   │   │   │   │   ├── LexicalMenu.ts
│   │   │   │   │   ├── ParticipantMentionsPlugin.tsx
│   │   │   │   │   ├── TypeaheadMenuPlugin.css
│   │   │   │   │   └── TypeaheadMenuPlugin.tsx
│   │   │   │   ├── ContentRenderers
│   │   │   │   │   ├── CodeContentRenderer.tsx
│   │   │   │   │   ├── ContentListRenderer.tsx
│   │   │   │   │   ├── ContentRenderer.tsx
│   │   │   │   │   ├── DiffRenderer.tsx
│   │   │   │   │   ├── HtmlContentRenderer.tsx
│   │   │   │   │   ├── JsonSchemaContentRenderer.tsx
│   │   │   │   │   ├── MarkdownContentRenderer.tsx
│   │   │   │   │   ├── MarkdownEditorRenderer.tsx
│   │   │   │   │   ├── MermaidContentRenderer.tsx
│   │   │   │   │   ├── MusicABCContentRenderer.css
│   │   │   │   │   └── MusicABCContentRenderer.tsx
│   │   │   │   ├── ContextWindow.tsx
│   │   │   │   ├── ConversationCreate.tsx
│   │   │   │   ├── ConversationDuplicate.tsx
│   │   │   │   ├── ConversationExport.tsx
│   │   │   │   ├── ConversationFileIcon.tsx
│   │   │   │   ├── ConversationRemove.tsx
│   │   │   │   ├── ConversationRename.tsx
│   │   │   │   ├── ConversationShare.tsx
│   │   │   │   ├── ConversationShareCreate.tsx
│   │   │   │   ├── ConversationShareList.tsx
│   │   │   │   ├── ConversationShareView.tsx
│   │   │   │   ├── ConversationsImport.tsx
│   │   │   │   ├── ConversationTranscript.tsx
│   │   │   │   ├── DebugInspector.tsx
│   │   │   │   ├── FileItem.tsx
│   │   │   │   ├── FileList.tsx
│   │   │   │   ├── InputAttachmentList.tsx
│   │   │   │   ├── InputOptionsControl.tsx
│   │   │   │   ├── InteractHistory.tsx
│   │   │   │   ├── InteractInput.tsx
│   │   │   │   ├── Message
│   │   │   │   │   ├── AttachmentSection.tsx
│   │   │   │   │   ├── ContentRenderer.tsx
│   │   │   │   │   ├── ContentSafetyNotice.tsx
│   │   │   │   │   ├── InteractMessage.tsx
│   │   │   │   │   ├── MessageActions.tsx
│   │   │   │   │   ├── MessageBase.tsx
│   │   │   │   │   ├── MessageBody.tsx
│   │   │   │   │   ├── MessageContent.tsx
│   │   │   │   │   ├── MessageFooter.tsx
│   │   │   │   │   ├── MessageHeader.tsx
│   │   │   │   │   ├── NotificationAccordion.tsx
│   │   │   │   │   └── ToolResultMessage.tsx
│   │   │   │   ├── MessageDelete.tsx
│   │   │   │   ├── MessageLink.tsx
│   │   │   │   ├── MyConversations.tsx
│   │   │   │   ├── MyShares.tsx
│   │   │   │   ├── ParticipantAvatar.tsx
│   │   │   │   ├── ParticipantAvatarGroup.tsx
│   │   │   │   ├── ParticipantItem.tsx
│   │   │   │   ├── ParticipantList.tsx
│   │   │   │   ├── ParticipantStatus.tsx
│   │   │   │   ├── RewindConversation.tsx
│   │   │   │   ├── ShareRemove.tsx
│   │   │   │   ├── SpeechButton.tsx
│   │   │   │   └── ToolCalls.tsx
│   │   │   └── FrontDoor
│   │   │       ├── Chat
│   │   │       │   ├── AssistantDrawer.tsx
│   │   │       │   ├── CanvasDrawer.tsx
│   │   │       │   ├── Chat.tsx
│   │   │       │   ├── ChatCanvas.tsx
│   │   │       │   ├── ChatControls.tsx
│   │   │       │   └── ConversationDrawer.tsx
│   │   │       ├── Controls
│   │   │       │   ├── AssistantCard.tsx
│   │   │       │   ├── AssistantSelector.tsx
│   │   │       │   ├── AssistantServiceSelector.tsx
│   │   │       │   ├── ConversationItem.tsx
│   │   │       │   ├── ConversationList.tsx
│   │   │       │   ├── ConversationListOptions.tsx
│   │   │       │   ├── NewConversationButton.tsx
│   │   │       │   ├── NewConversationForm.tsx
│   │   │       │   └── SiteMenuButton.tsx
│   │   │       ├── GlobalContent.tsx
│   │   │       └── MainContent.tsx
│   │   ├── Constants.ts
│   │   ├── global.d.ts
│   │   ├── index.css
│   │   ├── libs
│   │   │   ├── AppStorage.ts
│   │   │   ├── AuthHelper.ts
│   │   │   ├── EventSubscriptionManager.ts
│   │   │   ├── Theme.ts
│   │   │   ├── useAssistantCapabilities.ts
│   │   │   ├── useChatCanvasController.ts
│   │   │   ├── useConversationEvents.ts
│   │   │   ├── useConversationUtility.ts
│   │   │   ├── useCreateConversation.ts
│   │   │   ├── useDebugComponentLifecycle.ts
│   │   │   ├── useDragAndDrop.ts
│   │   │   ├── useEnvironment.ts
│   │   │   ├── useExportUtility.ts
│   │   │   ├── useHistoryUtility.ts
│   │   │   ├── useKeySequence.ts
│   │   │   ├── useMediaQuery.ts
│   │   │   ├── useMicrosoftGraph.ts
│   │   │   ├── useNotify.tsx
│   │   │   ├── useParticipantUtility.tsx
│   │   │   ├── useSiteUtility.ts
│   │   │   ├── useWorkbenchEventSource.ts
│   │   │   ├── useWorkbenchService.ts
│   │   │   └── Utility.ts
│   │   ├── main.tsx
│   │   ├── models
│   │   │   ├── Assistant.ts
│   │   │   ├── AssistantCapability.ts
│   │   │   ├── AssistantServiceInfo.ts
│   │   │   ├── AssistantServiceRegistration.ts
│   │   │   ├── Config.ts
│   │   │   ├── Conversation.ts
│   │   │   ├── ConversationFile.ts
│   │   │   ├── ConversationMessage.ts
│   │   │   ├── ConversationMessageDebug.ts
│   │   │   ├── ConversationParticipant.ts
│   │   │   ├── ConversationShare.ts
│   │   │   ├── ConversationShareRedemption.ts
│   │   │   ├── ConversationState.ts
│   │   │   ├── ConversationStateDescription.ts
│   │   │   ├── ServiceEnvironment.ts
│   │   │   └── User.ts
│   │   ├── redux
│   │   │   ├── app
│   │   │   │   ├── hooks.ts
│   │   │   │   ├── rtkQueryErrorLogger.ts
│   │   │   │   └── store.ts
│   │   │   └── features
│   │   │       ├── app
│   │   │       │   ├── appSlice.ts
│   │   │       │   └── AppState.ts
│   │   │       ├── chatCanvas
│   │   │       │   ├── chatCanvasSlice.ts
│   │   │       │   └── ChatCanvasState.ts
│   │   │       ├── localUser
│   │   │       │   ├── localUserSlice.ts
│   │   │       │   └── LocalUserState.ts
│   │   │       └── settings
│   │   │           ├── settingsSlice.ts
│   │   │           └── SettingsState.ts
│   │   ├── Root.tsx
│   │   ├── routes
│   │   │   ├── AcceptTerms.tsx
│   │   │   ├── AssistantEditor.tsx
│   │   │   ├── AssistantServiceRegistrationEditor.tsx
│   │   │   ├── Dashboard.tsx
│   │   │   ├── ErrorPage.tsx
│   │   │   ├── FrontDoor.tsx
│   │   │   ├── Login.tsx
│   │   │   ├── Settings.tsx
│   │   │   ├── ShareRedeem.tsx
│   │   │   └── Shares.tsx
│   │   ├── services
│   │   │   └── workbench
│   │   │       ├── assistant.ts
│   │   │       ├── assistantService.ts
│   │   │       ├── conversation.ts
│   │   │       ├── file.ts
│   │   │       ├── index.ts
│   │   │       ├── participant.ts
│   │   │       ├── share.ts
│   │   │       ├── state.ts
│   │   │       └── workbench.ts
│   │   └── vite-env.d.ts
│   ├── tools
│   │   └── filtered-ts-prune.cjs
│   ├── tsconfig.json
│   └── vite.config.ts
└── workbench-service
    ├── .env.example
    ├── .vscode
    │   ├── extensions.json
    │   ├── launch.json
    │   └── settings.json
    ├── alembic.ini
    ├── devdb
    │   ├── docker-compose.yaml
    │   └── postgresql-init.sh
    ├── Dockerfile
    ├── Makefile
    ├── migrations
    │   ├── env.py
    │   ├── README
    │   ├── script.py.mako
    │   └── versions
    │       ├── 2024_09_19_000000_69dcda481c14_init.py
    │       ├── 2024_09_19_190029_dffb1d7e219a_file_version_filename.py
    │       ├── 2024_09_20_204130_b29524775484_share.py
    │       ├── 2024_10_30_231536_039bec8edc33_index_message_type.py
    │       ├── 2024_11_04_204029_5149c7fb5a32_conversationmessagedebug.py
    │       ├── 2024_11_05_015124_245baf258e11_double_check_debugs.py
    │       ├── 2024_11_25_191056_a106de176394_drop_workflow.py
    │       ├── 2025_03_19_140136_aaaf792d4d72_set_user_title_set.py
    │       ├── 2025_03_21_153250_3763629295ad_add_assistant_template_id.py
    │       ├── 2025_05_19_163613_b2f86e981885_delete_context_transfer_assistants.py
    │       └── 2025_06_18_174328_503c739152f3_delete_knowlege_transfer_assistants.py
    ├── pyproject.toml
    ├── README.md
    ├── semantic_workbench_service
    │   ├── __init__.py
    │   ├── api.py
    │   ├── assistant_api_key.py
    │   ├── auth.py
    │   ├── azure_speech.py
    │   ├── config.py
    │   ├── controller
    │   │   ├── __init__.py
    │   │   ├── assistant_service_client_pool.py
    │   │   ├── assistant_service_registration.py
    │   │   ├── assistant.py
    │   │   ├── conversation_share.py
    │   │   ├── conversation.py
    │   │   ├── convert.py
    │   │   ├── exceptions.py
    │   │   ├── export_import.py
    │   │   ├── file.py
    │   │   ├── participant.py
    │   │   └── user.py
    │   ├── db.py
    │   ├── event.py
    │   ├── files.py
    │   ├── logging_config.py
    │   ├── middleware.py
    │   ├── query.py
    │   ├── service_user_principals.py
    │   ├── service.py
    │   └── start.py
    ├── tests
    │   ├── __init__.py
    │   ├── conftest.py
    │   ├── docker-compose.yaml
    │   ├── test_assistant_api_key.py
    │   ├── test_files.py
    │   ├── test_integration.py
    │   ├── test_middleware.py
    │   ├── test_migrations.py
    │   ├── test_workbench_service.py
    │   └── types.py
    └── uv.lock
```

# Files

--------------------------------------------------------------------------------
/assistants/codespace-assistant/assistant/config.py:
--------------------------------------------------------------------------------

```python
  1 | from textwrap import dedent
  2 | from typing import Annotated
  3 | 
  4 | from assistant_extensions.ai_clients.config import AzureOpenAIClientConfigModel, OpenAIClientConfigModel
  5 | from assistant_extensions.attachments import AttachmentsConfigModel
  6 | from assistant_extensions.chat_context_toolkit import ChatContextConfigModel
  7 | from assistant_extensions.mcp import HostedMCPServerConfig, MCPClientRoot, MCPServerConfig
  8 | from content_safety.evaluators import CombinedContentSafetyEvaluatorConfig
  9 | from openai_client import (
 10 |     OpenAIRequestConfig,
 11 |     azure_openai_service_config_construct,
 12 |     azure_openai_service_config_reasoning_construct,
 13 | )
 14 | from pydantic import BaseModel, Field
 15 | from semantic_workbench_assistant.config import UISchema, first_env_var
 16 | 
 17 | from . import helpers
 18 | 
 19 | # The semantic workbench app uses react-jsonschema-form for rendering
 20 | # dynamic configuration forms based on the configuration model and UI schema
 21 | # See: https://rjsf-team.github.io/react-jsonschema-form/docs/
 22 | # Playground / examples: https://rjsf-team.github.io/react-jsonschema-form/
 23 | 
 24 | # The UI schema can be used to customize the appearance of the form. Use
 25 | # the UISchema class to define the UI schema for specific fields in the
 26 | # configuration model.
 27 | 
 28 | 
 29 | #
 30 | # region Codespace Assistant Default Configuration
 31 | #
 32 | 
 33 | 
 34 | class ExtensionsConfigModel(BaseModel):
 35 |     attachments: Annotated[
 36 |         AttachmentsConfigModel,
 37 |         Field(
 38 |             title="Attachments Extension",
 39 |             description="Configuration for the attachments extension.",
 40 |         ),
 41 |     ] = AttachmentsConfigModel()
 42 | 
 43 | 
 44 | class PromptsConfigModel(BaseModel):
 45 |     instruction_prompt: Annotated[
 46 |         str,
 47 |         Field(
 48 |             title="Instruction Prompt",
 49 |             description=dedent("""
 50 |                 The prompt used to instruct the behavior and capabilities of the AI assistant and any preferences.
 51 |             """).strip(),
 52 |         ),
 53 |         UISchema(widget="textarea"),
 54 |     ] = helpers.load_text_include("instruction_prompt.txt")
 55 | 
 56 |     guidance_prompt: Annotated[
 57 |         str,
 58 |         Field(
 59 |             title="Guidance Prompt",
 60 |             description=dedent("""
 61 |                 The prompt used to provide a structured set of instructions to carry out a specific workflow
 62 |                 from start to finish. It should outline a clear, step-by-step process for gathering necessary
 63 |                 context, breaking down the objective into manageable components, executing the defined steps,
 64 |                 and validating the results.
 65 |             """).strip(),
 66 |         ),
 67 |         UISchema(widget="textarea"),
 68 |     ] = helpers.load_text_include("guidance_prompt.txt")
 69 | 
 70 |     guardrails_prompt: Annotated[
 71 |         str,
 72 |         Field(
 73 |             title="Guardrails Prompt",
 74 |             description=(
 75 |                 "The prompt used to inform the AI assistant about the guardrails to follow. Default value based upon"
 76 |                 " recommendations from: [Microsoft OpenAI Service: System message templates]"
 77 |                 "(https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/system-message"
 78 |                 "#define-additional-safety-and-behavioral-guardrails)"
 79 |             ),
 80 |         ),
 81 |         UISchema(widget="textarea", enable_markdown_in_description=True),
 82 |     ] = helpers.load_text_include("guardrails_prompt.txt")
 83 | 
 84 | 
 85 | class ResponseBehaviorConfigModel(BaseModel):
 86 |     welcome_message: Annotated[
 87 |         str,
 88 |         Field(
 89 |             title="Welcome Message",
 90 |             description="The message to display when the conversation starts.",
 91 |         ),
 92 |         UISchema(widget="textarea"),
 93 |     ] = dedent("""
 94 |                Welcome! I'm here to help you with your coding and development projects. Here's how we can work together:
 95 |                - 💻 Explore your code - share files, snippets, or describe what you're working on
 96 |                - 🔧 Debug and refine - I can help troubleshoot issues and suggest improvements
 97 |                - 📋 Generate solutions - ask for code snippets, algorithms, or implementation ideas
 98 |                - 📚 Learn and understand - I can explain concepts, patterns, and approaches
 99 | 
100 |                Simply upload your code files, describe your project, or ask technical questions. I'm ready to assist with languages, frameworks, debugging, and development best practices.
101 | 
102 |                What coding project can I help you with today?
103 |                """).strip()
104 | 
105 |     only_respond_to_mentions: Annotated[
106 |         bool,
107 |         Field(
108 |             title="Only Respond to @Mentions",
109 |             description="Only respond to messages that @mention the assistant.",
110 |         ),
111 |     ] = False
112 | 
113 | 
114 | class HostedMCPServersConfigModel(BaseModel):
115 |     web_research: Annotated[
116 |         HostedMCPServerConfig,
117 |         Field(
118 |             title="Web Research",
119 |             description="Enable your assistant to perform web research on a given topic. It will generate a list of facts it needs to collect and use Bing search and simple web requests to fill in the facts. Once it decides it has enough, it will summarize the information and return it as a report.",
120 |         ),
121 |         UISchema(collapsible=False),
122 |     ] = HostedMCPServerConfig.from_env("web-research", "MCP_SERVER_WEB_RESEARCH_URL")
123 | 
124 |     open_deep_research_clone: Annotated[
125 |         HostedMCPServerConfig,
126 |         Field(
127 |             title="Open Deep Research Clone",
128 |             description="Enable a web research tool that is modeled after the Open Deep Research project as a demonstration of writing routines using our Skills library.",
129 |         ),
130 |         UISchema(collapsible=False),
131 |     ] = HostedMCPServerConfig.from_env("open-deep-research-clone", "MCP_SERVER_OPEN_DEEP_RESEARCH_CLONE_URL", False)
132 | 
133 |     giphy: Annotated[
134 |         HostedMCPServerConfig,
135 |         Field(
136 |             title="Giphy",
137 |             description="Enable your assistant to search for and share GIFs from Giphy.",
138 |         ),
139 |         UISchema(collapsible=False),
140 |     ] = HostedMCPServerConfig.from_env("giphy", "MCP_SERVER_GIPHY_URL")
141 | 
142 |     memory_user_bio: Annotated[
143 |         HostedMCPServerConfig,
144 |         Field(
145 |             title="User-Bio Memories",
146 |             description=dedent("""
147 |                 Enable this assistant to store long-term memories about you, the user (\"user-bio\" memories).
148 |                 This implementation is modeled after ChatGPT's memory system.
149 |                 These memories are available to the assistant in all conversations, much like ChatGPT memories are available
150 |                 to ChatGPT in all chats.
151 |                 To determine what memories are saved, you can ask the assistant what memories it has of you.
152 |                 To forget a memory, you can ask the assistant to forget it.
153 |                 """).strip(),
154 |         ),
155 |         UISchema(collapsible=False),
156 |     ] = HostedMCPServerConfig.from_env(
157 |         "memory-user-bio",
158 |         "MCP_SERVER_MEMORY_USER_BIO_URL",
159 |         # scopes the memories to the assistant instance
160 |         roots=[MCPClientRoot(name="session-id", uri="file://{assistant_id}")],
161 |         # auto-include the user-bio memory prompt
162 |         prompts_to_auto_include=["user-bio"],
163 |     )
164 | 
165 |     memory_whiteboard: Annotated[
166 |         HostedMCPServerConfig,
167 |         Field(
168 |             title="Whiteboard Memory",
169 |             description=dedent("""
170 |                 Enable this assistant to retain memories of active and historical tasks and decisions, in the form of a whiteboard.
171 |                 Whiteboards are scoped to the conversation.
172 |                 """).strip(),
173 |         ),
174 |         UISchema(collapsible=False),
175 |     ] = HostedMCPServerConfig.from_env(
176 |         "memory-whiteboard",
177 |         "MCP_SERVER_MEMORY_WHITEBOARD_URL",
178 |         # scopes the memories to this conversation for this assistant
179 |         roots=[MCPClientRoot(name="session-id", uri="file://{assistant_id}.{conversation_id}")],
180 |         # auto-include the whiteboard memory prompt
181 |         prompts_to_auto_include=["memory:whiteboard"],
182 |         enabled=False,
183 |     )
184 | 
185 |     filesystem_edit: Annotated[
186 |         HostedMCPServerConfig,
187 |         Field(
188 |             title="Document Editor",
189 |             description=dedent("""
190 |                 Enable this to create, edit, and refine markdown (*.md) documents, all through chat
191 |                 """).strip(),
192 |         ),
193 |         UISchema(collapsible=False),
194 |     ] = HostedMCPServerConfig.from_env(
195 |         "filesystem-edit",
196 |         "MCP_SERVER_FILESYSTEM_EDIT_URL",
197 |         # configures the filesystem edit server to use the client-side storage (using the magic hostname of "workspace")
198 |         roots=[MCPClientRoot(name="root", uri="file://workspace/")],
199 |         prompts_to_auto_include=["instructions"],
200 |         enabled=False,
201 |     )
202 | 
203 |     @property
204 |     def mcp_servers(self) -> list[HostedMCPServerConfig]:
205 |         """
206 |         Returns a list of all hosted MCP servers that are configured.
207 |         """
208 |         # Get all fields that are of type HostedMCPServerConfig
209 |         configs = [
210 |             getattr(self, field)
211 |             for field in self.model_fields
212 |             if isinstance(getattr(self, field), HostedMCPServerConfig)
213 |         ]
214 |         # Filter out any configs that are missing command (URL)
215 |         return [config for config in configs if config.command]
216 | 
217 | 
218 | class AdvancedToolConfigModel(BaseModel):
219 |     max_steps: Annotated[
220 |         int,
221 |         Field(
222 |             title="Maximum Steps",
223 |             description="The maximum number of steps to take when using tools, to avoid infinite loops.",
224 |         ),
225 |     ] = 50
226 | 
227 |     max_steps_truncation_message: Annotated[
228 |         str,
229 |         Field(
230 |             title="Maximum Steps Truncation Message",
231 |             description="The message to display when the maximum number of steps is reached.",
232 |         ),
233 |     ] = "[ Maximum steps reached for this turn, engage with assistant to continue ]"
234 | 
235 |     additional_instructions: Annotated[
236 |         str,
237 |         Field(
238 |             title="Tools Instructions",
239 |             description=dedent("""
240 |                 General instructions for using tools.  No need to include a list of tools or instruction
241 |                 on how to use them in general, that will be handled automatically.  Instead, use this
242 |                 space to provide any additional instructions for using specific tools, such folders to
243 |                 exclude in file searches, or instruction to always re-read a file before using it.
244 |             """).strip(),
245 |         ),
246 |         UISchema(widget="textarea", enable_markdown_in_description=True),
247 |     ] = dedent("""
248 |         - Use the available tools to assist with specific tasks.
249 |         - Before performing any file operations, use the `list_allowed_directories` tool to get a list of directories
250 |             that are allowed for file operations. Always use paths relative to an allowed directory.
251 |         - When searching or browsing for files, consider the kinds of folders and files that should be avoided:
252 |             - For example, for coding projects exclude folders like `.git`, `.vscode`, `node_modules`, and `dist`.
253 |         - For each turn, always re-read a file before using it to ensure the most up-to-date information, especially
254 |             when writing or editing files.
255 |         - The search tool does not appear to support wildcards, but does work with partial file names.
256 |     """).strip()
257 | 
258 |     tools_disabled: Annotated[
259 |         list[str],
260 |         Field(
261 |             title="Disabled Tools",
262 |             description=dedent("""
263 |                 List of individual tools to disable. Use this if there is a problem tool that you do not want
264 |                 made visible to your assistant.
265 |             """).strip(),
266 |         ),
267 |     ] = ["directory_tree"]
268 | 
269 | 
270 | class MCPToolsConfigModel(BaseModel):
271 |     enabled: Annotated[
272 |         bool,
273 |         Field(title="Enable experimental use of tools"),
274 |     ] = True
275 | 
276 |     hosted_mcp_servers: Annotated[
277 |         HostedMCPServersConfigModel,
278 |         Field(
279 |             title="Hosted MCP Servers",
280 |             description="Configuration for hosted MCP servers that provide tools to the assistant.",
281 |         ),
282 |         UISchema(collapsed=False, items=UISchema(title_fields=["key", "enabled"])),
283 |     ] = HostedMCPServersConfigModel()
284 | 
285 |     personal_mcp_servers: Annotated[
286 |         list[MCPServerConfig],
287 |         Field(
288 |             title="Personal MCP Servers",
289 |             description="Configuration for personal MCP servers that provide tools to the assistant.",
290 |         ),
291 |         UISchema(items=UISchema(collapsible=False, hide_title=True, title_fields=["key", "enabled"])),
292 |     ] = [
293 |         MCPServerConfig(
294 |             key="filesystem",
295 |             command="npx",
296 |             args=[
297 |                 "-y",
298 |                 "@modelcontextprotocol/server-filesystem",
299 |                 "/workspaces/semanticworkbench",
300 |             ],
301 |             enabled=False,
302 |         ),
303 |         MCPServerConfig(
304 |             key="vscode",
305 |             command="http://127.0.0.1:6010/sse",
306 |             args=[],
307 |             enabled=False,
308 |         ),
309 |         MCPServerConfig(
310 |             key="bing-search",
311 |             command="http://127.0.0.1:6030/sse",
312 |             args=[],
313 |             enabled=False,
314 |         ),
315 |         MCPServerConfig(
316 |             key="giphy",
317 |             command="http://127.0.0.1:6040/sse",
318 |             args=[],
319 |             enabled=False,
320 |         ),
321 |         MCPServerConfig(
322 |             key="fusion",
323 |             command="http://127.0.0.1:6050/sse",
324 |             args=[],
325 |             prompt=dedent("""
326 |                 When creating models using the Fusion tool suite, keep these guidelines in mind:
327 | 
328 |                 - **Coordinate System & Planes:**
329 |                 - **Axes:** Z is vertical, X is horizontal, and Y is depth.
330 |                 - **Primary Planes:**
331 |                     - **XY:** Represents top and bottom surfaces (use the top or bottom Z coordinate as needed).
332 |                     - **XZ:** Represents the front and back surfaces (use the appropriate Y coordinate).
333 |                     - **YZ:** Represents the left and right surfaces (use the appropriate X coordinate).
334 | 
335 |                 - **Sketch & Geometry Management:**
336 |                 - **Sketch Creation:** Always create or select the proper sketch using `create_sketch` or `create_sketch_on_offset_plane` before adding geometry. This ensures the correct reference plane is used.
337 |                 - **Top-Face Features:** For features intended for the top surface (like button openings), use `create_sketch_on_offset_plane` with an offset equal to the block's height and confirm the sketch is positioned at the correct Z value.
338 |                 - **Distinct Sketches for Operations:** Use separate sketches for base extrusions and cut operations (e.g., avoid reusing the same sketch for both extrude and cut_extrude) to maintain clarity and prevent unintended geometry modifications.
339 |                 - **Validation:** Use the `sketches` tool to list available sketches and confirm names before referencing them in other operations.
340 | 
341 |                 - **Feature Operations & Parameters:**
342 |                 - **Extrude vs. Cut:** When using extrude operations, verify that the direction vector is correctly defined (defaults to positive Z if omitted) and that distances (extrusion or cut depth) are positive.
343 |                 - **Cut Direction for Top-Face Features:** When cutting features from the top face, ensure the extrusion (cut) direction is set to [0, 0, -1] so that the cut is made downward from the top surface.
344 |                 - **Targeting Entities:** For operations like `cut_extrude` and `rectangular_pattern`, ensure the entity names provided refer to existing, valid bodies.
345 |                 - **Adjustment Consideration:** Always consider the required adjustment on the third axis (depth for XY-based operations, etc.) to maintain proper alignment and avoid unintended modifications.
346 | 
347 |                 By following these guidelines, you help ensure that operations are applied to the correct geometry and that the overall modeling process remains stable and predictable.
348 |             """).strip(),
349 |             enabled=False,
350 |         ),
351 |         MCPServerConfig(
352 |             key="memory",
353 |             command="npx",
354 |             args=["-y", "@modelcontextprotocol/server-memory"],
355 |             prompt=dedent("""
356 |                 Follow these steps for each interaction:
357 | 
358 |                 1. Memory Retrieval:
359 |                 - Always begin your chat by saying only "Remembering..." and retrieve all relevant information
360 |                   from your knowledge graph
361 |                 - Always refer to your knowledge graph as your "memory"
362 | 
363 |                 2. Memory
364 |                 - While conversing with the user, be attentive to any new information that falls into these categories:
365 |                     a) Basic Identity (age, gender, location, job title, education level, etc.)
366 |                     b) Behaviors (interests, habits, etc.)
367 |                     c) Preferences (communication style, preferred language, etc.)
368 |                     d) Goals (goals, targets, aspirations, etc.)
369 |                     e) Relationships (personal and professional relationships up to 3 degrees of separation)
370 | 
371 |                 3. Memory Update:
372 |                 - If any new information was gathered during the interaction, update your memory as follows:
373 |                     a) Create entities for recurring organizations, people, and significant events
374 |                     b) Connect them to the current entities using relations
375 |                     b) Store facts about them as observations
376 |             """).strip(),
377 |             enabled=False,
378 |         ),
379 |         MCPServerConfig(
380 |             key="sequential-thinking",
381 |             command="npx",
382 |             args=["-y", "@modelcontextprotocol/server-sequential-thinking"],
383 |             enabled=False,
384 |         ),
385 |         MCPServerConfig(
386 |             key="open-deep-research",
387 |             command="http://127.0.0.1:6020/sse",
388 |             args=[],
389 |             enabled=False,
390 |         ),
391 |         MCPServerConfig(
392 |             key="open-deep-research-clone-personal",
393 |             command="http://127.0.0.1:6061/sse",
394 |             args=[],
395 |             enabled=False,
396 |         ),
397 |         MCPServerConfig(
398 |             key="web-research-personal",
399 |             command="http://127.0.0.1:6060/sse",
400 |             args=[],
401 |             enabled=False,
402 |         ),
403 |     ]
404 | 
405 |     advanced: Annotated[
406 |         AdvancedToolConfigModel,
407 |         Field(
408 |             title="Advanced Tool Settings",
409 |         ),
410 |     ] = AdvancedToolConfigModel()
411 | 
412 |     @property
413 |     def mcp_servers(self) -> list[MCPServerConfig]:
414 |         """
415 |         Returns a list of all MCP servers, including both hosted and personal configurations.
416 |         """
417 |         return self.hosted_mcp_servers.mcp_servers + self.personal_mcp_servers
418 | 
419 | 
420 | # the workbench app builds dynamic forms based on the configuration model and UI schema
421 | class AssistantConfigModel(BaseModel):
422 |     tools: Annotated[
423 |         MCPToolsConfigModel,
424 |         Field(
425 |             title="Tools",
426 |         ),
427 |         UISchema(collapsed=False, items=UISchema(schema={"hosted_mcp_servers": {"ui:options": {"collapsed": False}}})),
428 |     ] = MCPToolsConfigModel()
429 | 
430 |     extensions_config: Annotated[
431 |         ExtensionsConfigModel,
432 |         Field(
433 |             title="Assistant Extensions",
434 |         ),
435 |     ] = ExtensionsConfigModel()
436 | 
437 |     chat_context_config: Annotated[
438 |         ChatContextConfigModel,
439 |         Field(
440 |             title="Chat Context Management",
441 |             description="Settings for the management of LLM chat context.",
442 |         ),
443 |     ] = ChatContextConfigModel()
444 | 
445 |     prompts: Annotated[
446 |         PromptsConfigModel,
447 |         Field(
448 |             title="Prompts",
449 |             description="Configuration for various prompts used by the assistant.",
450 |         ),
451 |     ] = PromptsConfigModel()
452 | 
453 |     response_behavior: Annotated[
454 |         ResponseBehaviorConfigModel,
455 |         Field(
456 |             title="Response Behavior",
457 |             description="Configuration for the response behavior of the assistant.",
458 |         ),
459 |     ] = ResponseBehaviorConfigModel()
460 | 
461 |     generative_ai_client_config: Annotated[
462 |         AzureOpenAIClientConfigModel | OpenAIClientConfigModel,
463 |         Field(
464 |             title="OpenAI Generative Model",
465 |             description="Configuration for the generative model, such as gpt-4o.",
466 |             discriminator="ai_service_type",
467 |             default=AzureOpenAIClientConfigModel.model_construct(),
468 |         ),
469 |         UISchema(widget="radio", hide_title=True),
470 |     ] = AzureOpenAIClientConfigModel(
471 |         service_config=azure_openai_service_config_construct(),
472 |         request_config=OpenAIRequestConfig(
473 |             max_tokens=128_000,
474 |             response_tokens=16_384,
475 |             model="gpt-4o",
476 |             is_reasoning_model=False,
477 |         ),
478 |     )
479 | 
480 |     reasoning_ai_client_config: Annotated[
481 |         AzureOpenAIClientConfigModel | OpenAIClientConfigModel,
482 |         Field(
483 |             title="OpenAI Reasoning Model",
484 |             description="Configuration for the reasoning model, such as o1, o1-preview, o1-mini, etc.",
485 |             discriminator="ai_service_type",
486 |             default=AzureOpenAIClientConfigModel.model_construct(),
487 |         ),
488 |         UISchema(widget="radio", hide_title=True),
489 |     ] = AzureOpenAIClientConfigModel(
490 |         service_config=azure_openai_service_config_reasoning_construct(),
491 |         request_config=OpenAIRequestConfig(
492 |             max_tokens=200_000,
493 |             response_tokens=65_536,
494 |             model=first_env_var(
495 |                 "azure_openai_reasoning_model",
496 |                 "assistant__azure_openai_reasoning_model",
497 |                 "azure_openai_model",
498 |                 "assistant__azure_openai_model",
499 |             )
500 |             or "o3-mini",
501 |             is_reasoning_model=True,
502 |             reasoning_effort="high",
503 |         ),
504 |     )
505 | 
506 |     content_safety_config: Annotated[
507 |         CombinedContentSafetyEvaluatorConfig,
508 |         Field(
509 |             title="Content Safety",
510 |         ),
511 |         UISchema(widget="radio"),
512 |     ] = CombinedContentSafetyEvaluatorConfig()
513 | 
514 |     # add any additional configuration fields
515 | 
516 | 
517 | # endregion
518 | 
519 | 
520 | # region: Context Transfer Assistant Configuration
521 | 
522 | 
523 | class ContextTransferHostedMCPServersConfigModel(HostedMCPServersConfigModel):
524 |     filesystem_edit: Annotated[
525 |         HostedMCPServerConfig,
526 |         Field(
527 |             title="Document Editor",
528 |             description=dedent("""
529 |                 Enable this to create, edit, and refine markdown (*.md) documents, all through chat
530 |                 """).strip(),
531 |         ),
532 |         UISchema(collapsible=False),
533 |     ] = HostedMCPServerConfig.from_env(
534 |         "filesystem-edit",
535 |         "MCP_SERVER_FILESYSTEM_EDIT_URL",
536 |         # configures the filesystem edit server to use the client-side storage (using the magic hostname of "workspace")
537 |         roots=[MCPClientRoot(name="root", uri="file://workspace/")],
538 |         prompts_to_auto_include=["instructions"],
539 |         enabled=False,
540 |     )
541 | 
542 | 
543 | class ContextTransferMCPToolsConfigModel(MCPToolsConfigModel):
544 |     enabled: Annotated[
545 |         bool,
546 |         Field(title="Enable experimental use of tools"),
547 |     ] = True
548 | 
549 |     hosted_mcp_servers: Annotated[
550 |         HostedMCPServersConfigModel,
551 |         Field(
552 |             title="Hosted MCP Servers",
553 |             description="Configuration for hosted MCP servers that provide tools to the assistant.",
554 |         ),
555 |         UISchema(collapsed=False, items=UISchema(title_fields=["key", "enabled"])),
556 |     ] = ContextTransferHostedMCPServersConfigModel()
557 | 
558 |     personal_mcp_servers: Annotated[
559 |         list[MCPServerConfig],
560 |         Field(
561 |             title="Personal MCP Servers",
562 |             description="Configuration for personal MCP servers that provide tools to the assistant.",
563 |             default=[],
564 |         ),
565 |         UISchema(items=UISchema(collapsible=False, hide_title=True, title_fields=["key", "enabled"])),
566 |     ] = []
567 | 
568 | 
569 | class ContextTransferPromptsConfigModel(PromptsConfigModel):
570 |     instruction_prompt: Annotated[
571 |         str,
572 |         Field(
573 |             title="Instruction Prompt",
574 |             description="The prompt used to instruct the behavior and capabilities of the AI assistant and any preferences.",
575 |         ),
576 |         UISchema(widget="textarea"),
577 |     ] = helpers.load_text_include("instruction_prompt_context_transfer.txt")
578 | 
579 |     guidance_prompt: Annotated[
580 |         str,
581 |         Field(
582 |             title="Guidance Prompt",
583 |             description="The prompt used to provide a structured set of instructions to carry out a specific workflow from start to finish.",
584 |         ),
585 |         UISchema(widget="textarea"),
586 |     ] = helpers.load_text_include("guidance_prompt_context_transfer.txt")
587 | 
588 |     guardrails_prompt: Annotated[
589 |         str,
590 |         Field(
591 |             title="Guardrails Prompt",
592 |             description="The prompt used to inform the AI assistant about the guardrails to follow.",
593 |         ),
594 |         UISchema(widget="textarea"),
595 |     ] = helpers.load_text_include("guardrails_prompt.txt")
596 | 
597 | 
598 | class ContextTransferResponseBehaviorConfigModel(ResponseBehaviorConfigModel):
599 |     welcome_message: Annotated[
600 |         str,
601 |         Field(
602 |             title="Welcome Message",
603 |             description="The message to display when the conversation starts.",
604 |         ),
605 |         UISchema(widget="textarea"),
606 |     ] = dedent("""
607 |             Welcome! I'm here to help you capture and share complex information in a way that others can easily explore and understand. Think of me as your personal knowledge bridge - I'll help you:
608 |             - 📚 **Organize your thoughts** - whether from documents, code, research papers, or brainstorming sessions
609 |             - 🔄 **Establish shared understanding** - I'll ask questions to ensure we're aligned on what matters most
610 |             - 🔍 **Make your knowledge interactive** - so others can explore the "why" behind decisions, alternatives considered, and deeper context
611 |             - 🔗 **Create shareable experiences** - when we're done, share a link that gives others a self-service way to explore your knowledge
612 | 
613 |             Simply share your content or ideas, tell me who needs to understand them, and what aspects you want to highlight. We'll work together to create an interactive knowledge space that others can explore at their own pace.
614 | 
615 |             What knowledge would you like to transfer today?
616 |                 """).strip()
617 | 
618 | 
619 | class ContextTransferConfigModel(AssistantConfigModel):
620 |     tools: Annotated[
621 |         MCPToolsConfigModel,
622 |         Field(
623 |             title="Tools",
624 |         ),
625 |         UISchema(collapsed=False, items=UISchema(schema={"hosted_mcp_servers": {"ui:options": {"collapsed": False}}})),
626 |     ] = ContextTransferMCPToolsConfigModel()
627 | 
628 |     prompts: Annotated[
629 |         PromptsConfigModel,
630 |         Field(
631 |             title="Prompts",
632 |         ),
633 |     ] = ContextTransferPromptsConfigModel()
634 | 
635 |     response_behavior: Annotated[
636 |         ResponseBehaviorConfigModel,
637 |         Field(
638 |             title="Response Behavior",
639 |             description="Configuration for the response behavior of the assistant.",
640 |         ),
641 |     ] = ContextTransferResponseBehaviorConfigModel()
642 | 
643 | 
644 | # endregion
645 | 
```

--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem-edit/data/transcripts/transcript_Web_Frontends_202502281551.md:
--------------------------------------------------------------------------------

```markdown
  1 | ### [Friday, February 28 2:16 PM] User:
  2 | 
  3 | notice: User created the conversation
  4 | 
  5 | ----------------------------------
  6 | 
  7 | 
  8 | ### [Friday, February 28 2:16 PM] User:
  9 | 
 10 | notice: Explorer Assistant 2-28 added to conversation
 11 | 
 12 | ----------------------------------
 13 | 
 14 | 
 15 | ### [Friday, February 28 2:16 PM] Explorer Assistant 2-28:
 16 | 
 17 | Hello! I am a "co-intelligence" assistant that can help you synthesize information from conversations and documents to create a shared understanding of complex topics. Let's get started by having a conversation! You can also attach .docx, text, and image files to your chat messages to help me better understand the context of our conversation. Where would you like to start?
 18 | 
 19 | ----------------------------------
 20 | 
 21 | 
 22 | ### [Friday, February 28 2:18 PM] User:
 23 | 
 24 | I want to find a frontend UX library for my React app. whats out there
 25 | 
 26 | ----------------------------------
 27 | 
 28 | 
 29 | ### [Friday, February 28 2:18 PM] Explorer Assistant 2-28:
 30 | 
 31 | Certainly! There are several popular frontend UX libraries for React applications that can help you create aesthetically pleasing and user-friendly interfaces. Here are some of the most prominent ones:
 32 | 
 33 | 1. **Material-UI (MUI)**
 34 |    - Provides a comprehensive suite of UI components that follow Google's Material Design guidelines.
 35 |    - Easy to customize and integrate with existing projects.
 36 |    - Has a strong community and extensive documentation.
 37 | 
 38 |    ```bash
 39 |    # Installation
 40 |    npm install @mui/material @emotion/react @emotion/styled
 41 |    ```
 42 | 
 43 | 2. **Ant Design**
 44 |    - A design system with a set of high-quality React components and demos for building rich, interactive user interfaces.
 45 |    - Offers built-in internationalization and themes.
 46 |    - Suitable for enterprise-grade applications.
 47 | 
 48 |    ```bash
 49 |    # Installation
 50 |    npm install antd
 51 |    ```
 52 | 
 53 | 3. **Chakra UI**
 54 |    - A simple, modular, and accessible component library that provides a set of React components out of the box.
 55 |    - Focuses on simplicity and ease of customization.
 56 | 
 57 |    ```bash
 58 |    # Installation
 59 |    npm install @chakra-ui/react @emotion/react @emotion/styled framer-motion
 60 |    ```
 61 | 
 62 | 4. **Bootstrap**
 63 |    - While traditionally a CSS framework, Bootstrap provides React bindings through `react-bootstrap`.
 64 |    - Offers responsive grid layout and pre-styled components.
 65 | 
 66 |    ```bash
 67 |    # Installation
 68 |    npm install react-bootstrap bootstrap
 69 |    ```
 70 | 
 71 | 5. **Semantic UI React**
 72 |    - Provides a set of UI components designed around the principles of user interface design.
 73 |    - Integrates well with other Semantic UI projects.
 74 | 
 75 |    ```bash
 76 |    # Installation
 77 |    npm install semantic-ui-react
 78 |    ```
 79 | 
 80 | 6. **Blueprint**
 81 |    - A React-based UI toolkit for building complex and data-dense interfaces.
 82 |    - Suitable for data-heavy desktop applications.
 83 | 
 84 |    ```bash
 85 |    # Installation
 86 |    npm install @blueprintjs/core
 87 |    ```
 88 | 
 89 | Feel free to explore these libraries, and let me know if you need more information or help with a specific one!
 90 | 
 91 | ----------------------------------
 92 | 
 93 | 
 94 | ### [Friday, February 28 2:19 PM] User:
 95 | 
 96 | Ive heard of tailwind css what about that one?
 97 | 
 98 | ----------------------------------
 99 | 
100 | 
101 | ### [Friday, February 28 2:19 PM] Explorer Assistant 2-28:
102 | 
103 | Tailwind CSS is a utility-first CSS framework that's quite different from the traditional component-based libraries I listed earlier. Rather than providing pre-built components, Tailwind offers low-level utility classes that allow you to build custom designs without ever leaving your HTML.
104 | 
105 | ### Key Features of Tailwind CSS:
106 | - **Utility-First**: You build designs using a set of utilities that can be combined to create any design directly in your markup.
107 | - **Highly Customizable**: You have full control over the design and can extend or modify the theme to suit your needs.
108 | - **Responsive Design**: Tailwind includes responsive, state, and variant modifiers, so you can build complex interfaces without writing custom CSS.
109 | 
110 | ### How to Use Tailwind with React:
111 | To integrate Tailwind CSS into a React app, you would typically follow these steps:
112 | 
113 | 1. **Install Tailwind CSS:**
114 | 
115 |    ```bash
116 |    # If you're using Create React App
117 |    npx create-react-app my-app
118 |    cd my-app
119 |    
120 |    # Install tailwindcss
121 |    npm install -D tailwindcss postcss autoprefixer
122 |    npx tailwindcss init -p
123 |    ```
124 | 
125 | 2. **Configure Tailwind:**
126 |    Add the paths to all of your template files in the `tailwind.config.js` file.
127 | 
128 |    ```javascript
129 |    // tailwind.config.js
130 |    module.exports = {
131 |      content: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
132 |      theme: {
133 |        extend: {},
134 |      },
135 |      plugins: [],
136 |    };
137 |    ```
138 | 
139 | 3. **Include Tailwind in your CSS:**
140 |    Open the `src/index.css` file and add the following lines:
141 | 
142 |    ```css
143 |    @tailwind base;
144 |    @tailwind components;
145 |    @tailwind utilities;
146 |    ```
147 | 
148 | 4. **Start using Tailwind classes in your components:**
149 |    Now you can start using Tailwind's utility classes in your React components directly.
150 | 
151 |    ```jsx
152 |    // Example React component
153 |    function App() {
154 |      return (
155 |        <div className="bg-blue-500 text-white p-4">
156 |          <h1 className="text-2xl font-bold">Hello, Tailwind!</h1>
157 |          <p>This is a simple example of using Tailwind CSS with React.</p>
158 |        </div>
159 |      );
160 |    }
161 |    ```
162 | 
163 | ### Pros and Cons:
164 | - **Pros**: Allows for rapid development and is very flexible. Tailwind encourages a clean separation of concerns, even when writing styles directly in your HTML/JSX.
165 | - **Cons**: Can be a bit overwhelming initially due to the large number of classes. Not having pre-built components means you need to design everything from scratch.
166 | 
167 | If your project requires maximum flexibility in styling and you don't mind creating your own components from the ground up, Tailwind CSS is an excellent choice.
168 | 
169 | ----------------------------------
170 | 
171 | 
172 | ### [Friday, February 28 2:19 PM] User:
173 | 
174 | Can i use tailwind combined with something else?
175 | 
176 | ----------------------------------
177 | 
178 | 
179 | ### [Friday, February 28 2:20 PM] Explorer Assistant 2-28:
180 | 
181 | Yes, you can definitely use Tailwind CSS in combination with other libraries! In fact, Tailwind is designed to play well with others, since it's a utility-first CSS framework. Here are a few ways you can combine Tailwind with other libraries or frameworks:
182 | 
183 | ### Combining Tailwind with Component Libraries:
184 | 1. **Using Tailwind with Component Libraries:**
185 |    - You can use Tailwind to style custom components while relying on a component library to provide more complex or interactive elements. Libraries like Material-UI or Ant Design can complement Tailwind by handling typical design patterns while you style the rest of your UI.
186 | 
187 | 2. **Hybrid Approach with Custom Components:**
188 |    - Use Tailwind for layout and basic styling while utilizing React component libraries for specific features, such as data tables, modal dialogs, or forms.
189 | 
190 | ### Example Use Case:
191 | Imagine you are building a dashboard application. You could use Tailwind CSS for your overall layout, typography, and custom elements, while integrating Ant Design for complex components like data tables or date pickers.
192 | 
193 | Here's how you might set this up:
194 | 
195 | ```jsx
196 | import React from 'react';
197 | import { DatePicker, Table } from 'antd';
198 | 
199 | function Dashboard() {
200 |   return (
201 |     <div className="p-4 bg-gray-50 min-h-screen">
202 |       <header className="flex justify-between items-center mb-4">
203 |         <h1 className="text-3xl font-bold text-blue-600">Dashboard</h1>
204 |         <DatePicker />
205 |       </header>
206 |       <main>
207 |         <Table
208 |           dataSource={[{ key: '1', name: 'John Doe', age: 32 }]}
209 |           columns={[
210 |             { title: 'Name', dataIndex: 'name', key: 'name' },
211 |             { title: 'Age', dataIndex: 'age', key: 'age' },
212 |           ]}
213 |         />
214 |       </main>
215 |     </div>
216 |   );
217 | }
218 | 
219 | export default Dashboard;
220 | ```
221 | 
222 | ### Additional Benefits:
223 | - **Compatible with Custom Styles**: If there's a need to add specific CSS properties that Tailwind doesn't cover, you can simply add custom CSS files.
224 |   
225 | - **Theming**: Many component libraries offer theme customization, and you can design these themes to complement Tailwind's base styles.
226 | 
227 | ### Conclusion:
228 | Combining Tailwind with other libraries can give you the structured approach of components along with the flexibility of utility classes, which can be very powerful in creating robust and responsive UIs. Just ensure that your styling approaches are consistent so that your design system remains coherent.
229 | 
230 | ----------------------------------
231 | 
232 | 
233 | ### [Friday, February 28 2:20 PM] User:
234 | 
235 | I work at Microsoft so I want to also consider fluent UI
236 | 
237 | ----------------------------------
238 | 
239 | 
240 | ### [Friday, February 28 2:20 PM] Explorer Assistant 2-28:
241 | 
242 | Fluent UI is an excellent choice if you are working at Microsoft or on projects that align with Microsoft's design language. Developed by Microsoft, Fluent UI provides a robust set of components that are designed to be consistent with the Microsoft 365 experience, ensuring seamless integration and a familiar look and feel.
243 | 
244 | ### Key Features of Fluent UI:
245 | - **Consistency**: Designed with a shared vocabulary of design concepts for building interfaces across Microsoft products.
246 | - **Accessibility**: Built with accessibility in mind, supporting various assistive technologies.
247 | - **Customizability**: Allows for theming and customization to fit particular brand requirements.
248 | 
249 | ### Using Fluent UI with Tailwind CSS:
250 | If you want to use Fluent UI components within a Tailwind CSS styled application, here's how you can go about it:
251 | 
252 | 1. **Install Fluent UI:**
253 | 
254 |    ```bash
255 |    # For Fluent UI React components
256 |    npm install @fluentui/react
257 |    ```
258 | 
259 | 2. **Set Up Your Project:**
260 |    With both Tailwind CSS and Fluent UI installed, you can initialize the default setup as mentioned earlier for both tools.
261 | 
262 | 3. **Integrate Fluent UI Components:**
263 |    You can begin integrating Fluent UI components where needed, alongside Tailwind CSS utility classes. Fluent UI handles the internal styling, while Tailwind can support your layout and other custom styles.
264 | 
265 | ### Example Use Case:
266 | Here's a simple example where Fluent UI components are used within a Tailwind CSS styled layout:
267 | 
268 | ```jsx
269 | import React from 'react';
270 | import { PrimaryButton, TextField } from '@fluentui/react';
271 | 
272 | function App() {
273 |   return (
274 |     <div className="flex flex-col items-center justify-center min-h-screen bg-gray-100">
275 |       <h1 className="text-2xl font-semibold mb-4 text-blue-700">
276 |         Welcome to the Fluent UI and Tailwind CSS App
277 |       </h1>
278 |       <div className="flex flex-col space-y-4">
279 |         <TextField placeholder="Enter your search" ariaLabel="Enter your search" />
280 |         <PrimaryButton>Search</PrimaryButton>
281 |       </div>
282 |     </div>
283 |   );
284 | }
285 | 
286 | export default App;
287 | ```
288 | 
289 | ### Considerations:
290 | - **Styling Overlap**: Be mindful of the styling overlap, as some Fluent UI components might have default styles that can conflict with Tailwind's utilities.
291 | - **Theming**: Fluent UI supports theming, which you might want to explore to ensure consistency with Tailwind's color scheme.
292 | - **Performance**: Ensure you're managing CSS bloat effectively, especially if using multiple styling frameworks.
293 | 
294 | ### Conclusion:
295 | Using Fluent UI with Tailwind CSS can provide a powerful combination where you leverage the sophisticated, accessible components of Fluent UI with the flexibility and customizability of Tailwind CSS. This allows you to create applications that are not only consistent with Microsoft products but also tailored to your specific styling needs.
296 | 
297 | ----------------------------------
298 | 
299 | 
300 | ### [Friday, February 28 2:25 PM] User:
301 | 
302 | Do you know of any success stories incorporating Fluent and Tailwind?
303 | 
304 | ----------------------------------
305 | 
306 | 
307 | ### [Friday, February 28 2:25 PM] Explorer Assistant 2-28:
308 | 
309 | While I don't have access to specific proprietary success stories directly linked to combining Fluent UI with Tailwind CSS, there are general patterns and practices that have been successfully implemented in the tech industry where these frameworks coexist effectively. Here are some reasons why this combination is promising and how it has been used effectively:
310 | 
311 | ### Common Use Cases and Success Patterns:
312 | 
313 | 1. **Enterprise Dashboard Applications:**
314 |    - Companies often build internal dashboards that leverage Fluent UI's comprehensive components for consistency with other Microsoft tools, while Tailwind CSS provides the flexibility to style custom components and layout effortlessly.
315 |    - The combination allows rapid prototyping and testing of UX designs, enabling faster deployment with a polished look.
316 | 
317 | 2. **Design System Integration:**
318 |    - Organizations looking to maintain a cohesive design language across their applications might use Fluent UI for core components, e.g., navigation bars, buttons, and dialogs, while Tailwind allows custom styling for unique brand elements or less common UI patterns.
319 |    - For instance, product teams that need custom branded elements can use Tailwind utilities for quick adjustments to color, spacing, and typography beyond what Fluent UI themes support.
320 | 
321 | 3. **Scalable Design Solutions:**
322 |    - Teams working on large-scale web applications often face challenges with styling consistency and technical debt associated with CSS. Using utility-first frameworks like Tailwind in conjunction with component libraries like Fluent can minimize such issues while maintaining agile and scalable design processes.
323 |    - This strategy is applicable in multi-team environments where cross-product consistency is crucial, as it ensures that core styling principles are adhered to.
324 | 
325 | ### Industry Insights:
326 | - **Flexibility and Speed**: Tailwind is often prized for providing a high degree of flexibility in styling, making it more than just convenient but an enabler of innovation in terms of UI design. 
327 | - **Proven Technologies**: Both Fluent UI and Tailwind CSS are widely used and have large communities, meaning teams have ample resources and community support for overcoming specific integration challenges.
328 | - **Incremental Adoption**: Teams have successfully adopted and phased designs with Fluent UI and Tailwind, allowing for a mature blending of structured design systems with flexible styling methodologies.
329 | 
330 | ### Conclusion:
331 | The combination of Fluent UI and Tailwind CSS is particularly compelling for organizations that prioritize both visual consistency and the ability to tailor interfaces to specific needs rapidly. Integrating these frameworks, while ensuring an optimal build process and consistent design review practices, has proven to be a beneficial strategy in several tech environments. For specific cases, Microsoft's own internal teams and other enterprises may have direct testimonials illustrating successful implementations in products that are public-facing or internal tools.
332 | 
333 | ----------------------------------
334 | 
335 | 
336 | ### [Friday, February 28 2:25 PM] User:
337 | 
338 | How hard do you think it would be to use them together?
339 | 
340 | ----------------------------------
341 | 
342 | 
343 | ### [Friday, February 28 2:26 PM] Explorer Assistant 2-28:
344 | 
345 | Using Fluent UI and Tailwind CSS together is quite feasible, but it does require some planning to ensure seamless integration and styling consistency. Here's an overview of considerations that can help gauge the level of difficulty:
346 | 
347 | ### Integration Complexity:
348 | 
349 | 1. **Overlap in Styling:**
350 |    - **Challenge**: Some Fluent UI components come with their own extensive styling which might clash with Tailwind's utility classes. 
351 |    - **Solution**: Carefully choose when to apply Tailwind utilities and when to rely on Fluent UI’s pre-defined styles. Use Tailwind for layout and spacing and Fluent for component-specific styles.
352 | 
353 | 2. **Theming and Customization:**
354 |    - **Challenge**: Ensuring that Tailwind’s custom styles and Fluent UI’s themes are consistent and play well together.
355 |    - **Solution**: Spend time upfront to set global theme variables in Fluent UI that can complement Tailwind’s configurations. You can create a theme file where you synchronize colors, fonts, and spacing to maintain unity.
356 | 
357 | 3. **Development Workflow:**
358 |    - **Challenge**: Adding another layer of complexity with two styling methods.
359 |    - **Solution**: Establish guidelines for when and where to use each framework. Regular code reviews and style checks can promote consistency.
360 | 
361 | ### Skills Required:
362 | - **Familiarity with CSS**: Knowing how CSS specificity works will help mitigate conflicts.
363 | - **Proficiency in React**: Understanding React's component lifecycle will aid in efficiently embedding Fluent UI components within Tailwind-styled layouts.
364 | - **Configuring Build Tools**: Basic knowledge of tools like PostCSS, Webpack, or similar to handle CSS efficiently.
365 | 
366 | ### Effort vs. Gain:
367 | - **Initial Setup**: Moderate effort, mainly in establishing the coordination of these frameworks. Once set up, adding components and styling them should be straightforward.
368 | - **Ongoing Maintenance**: Relatively low, especially if you’ve established a consistent styling guide. As both Fluent UI and Tailwind CSS have strong community support and are well-documented, finding solutions to challenges should be manageable.
369 | 
370 | ### Overall Assessment:
371 | While combining two frameworks may introduce some complexity, it can be effectively managed with structure and planning. For a team familiar with modern frontend development practices, integrating Fluent UI and Tailwind CSS should be quite manageable and can ultimately result in a highly versatile and visually consistent application.
372 | 
373 | This approach provides flexibility and consistency that can greatly benefit teams looking to leverage the strengths of both for a better UI experience. Tailwind's flexibility combined with Fluent UI’s standardized components is a strong combination for delivering high-quality web applications.
374 | 
375 | ----------------------------------
376 | 
377 | 
378 | ### [Friday, February 28 2:26 PM] User:
379 | 
380 | Ok, lets pivot and look at some other options. For an app targeted towards consumers, what would your top 2 choices be?
381 | 
382 | ----------------------------------
383 | 
384 | 
385 | ### [Friday, February 28 2:26 PM] Explorer Assistant 2-28:
386 | 
387 | For a consumer-targeted React app, your choice of frontend libraries can significantly impact both the development experience and the user experience. The key is to choose libraries that offer a balance between ease of use, aesthetic appeal, and flexibility. Here are my top two recommendations:
388 | 
389 | ### 1. Material-UI (MUI):
390 | - **Why Choose MUI?**
391 |   - **Aesthetic Appeal**: Material-UI is based on Google's Material Design, known for its clean and modern aesthetic that is widely recognized and appreciated by users.
392 |   - **Comprehensive Component Library**: MUI provides a rich set of components, from simple buttons to complex data tables, which can cover most UI needs.
393 |   - **Customization and Theming**: Offers extensive theming capabilities, making it easier to change the look and feel of your app to match your brand.
394 |   - **Responsive and Mobile-Friendly**: Components are designed to work well across various devices and screen sizes.
395 | 
396 | - **Ideal For**: Consumer apps that need to look sharp and appeal to a broad audience, such as e-commerce sites, social platforms, or general content delivery apps.
397 | 
398 | - **Getting Started**:
399 |   ```bash
400 |   npm install @mui/material @emotion/react @emotion/styled
401 |   ```
402 | 
403 | ### 2. Chakra UI:
404 | - **Why Choose Chakra UI?**
405 |   - **Simplicity and Usability**: Focuses on providing accessible components and a straightforward API, making it easy to use even for beginners in React development.
406 |   - **Customizable and Themeable**: Provides a simple mechanism for customizing styles and setting up themes that align with your brand identity.
407 |   - **Lightweight and Fast**: Optimizes for faster performance and smaller bundle sizes.
408 |   - **Encouraging Best Practices**: Built-in support for styling and component architecture follows modern best practices.
409 | 
410 | - **Ideal For**: Apps that call for a sleek, modern look and friendly user experience, such as personal project apps, startups, or lifestyle apps.
411 | 
412 | - **Getting Started**:
413 |   ```bash
414 |   npm install @chakra-ui/react @emotion/react @emotion/styled framer-motion
415 |   ```
416 | 
417 | ### Conclusion:
418 | Both Material-UI and Chakra UI are excellent choices for building consumer-facing apps due to their emphasis on user-experience, aesthetics, and ease of use. While Material-UI offers a more structured look via Material Design components, Chakra UI is highly customizable and focuses on simplicity with maintainable code. Your choice might come down to which design system better fits your project’s branding and functional needs.
419 | 
420 | ----------------------------------
421 | 
422 | 
423 | ### [Friday, February 28 2:27 PM] User:
424 | 
425 | Can you speak to the growth in the community of these two options?
426 | 
427 | ----------------------------------
428 | 
429 | 
430 | ### [Friday, February 28 2:27 PM] Explorer Assistant 2-28:
431 | 
432 | Certainly! The growth and vitality of a framework's community can be a critical factor in choosing a technology stack, as a robust community often means better support, more frequent updates, and a wider range of resources like tutorials and plugins. Let's look at the community growth for both Material-UI (now known as MUI) and Chakra UI:
433 | 
434 | ### Material-UI (MUI)
435 | 
436 | - **Community Size and Engagement**:
437 |   - **GitHub Stars**: MUI is one of the most popular React UI frameworks, with a substantial number of stars on GitHub, reflecting widespread use and interest.
438 |   - **Active Development**: Frequent updates and new releases demonstrate an active commitment by the maintainers to improve and expand the library.
439 |   - **Vibrant Ecosystem**: The ecosystem includes tools, templates, and themes created by both the core team and the community, extending the functionality of MUI.
440 |   - **Contributors**: The library has a large number of contributors, enhancing its development speed and quality control.
441 | 
442 | - **Community Support**:
443 |   - **Resources**: Abundance of tutorials, guides, and community discussions on platforms like Stack Overflow and Dev.to.
444 |   - **Discussion Forums**: Active discussion forums and a growing community on platforms like Discord, Reddit, and their official community channel.
445 |   - **Meetups and Conferences**: Participation in open-source conferences and hosting meetups further amplify community interactions.
446 | 
447 | ### Chakra UI
448 | 
449 | - **Community Size and Engagement**:
450 |   - **GitHub Stars**: Chakra UI is rapidly gaining popularity with a significant number of stars on GitHub, indicating robust early adoption.
451 |   - **Growing Ecosystem**: New integrations, tools, and community-driven plugins are frequently appearing, showcasing its flexibility and extensibility.
452 |   - **Focused Contribution**: With a smaller but active group of contributors, Chakra UI sees agile development and rapid iteration cycles.
453 | 
454 | - **Community Support**:
455 |   - **Resources**: Availability of comprehensive documentation, tutorials, and examples help new users get started quickly.
456 |   - **Active Social Media**: Engaged discussions and help threads on social media channels like Twitter and platforms like GitHub Discussions provide dynamic support.
457 |   - **Strong Community Culture**: Despite its relative youth, Chakra UI has cultivated a supportive and enthusiastic community, reflected in positive developer experiences.
458 | 
459 | ### Summary:
460 | Both MUI and Chakra UI have demonstrated notable community growth, though MUI boasts a more established community due to its longer tenure. Chakra UI is catching up quickly, with a reputation for modernity and simplicity that resonates with many developers today. Your choice may also consider how much community-driven innovation and support you want, with MUI offering a mature ecosystem and Chakra UI presenting a fast-evolving, agile environment.
461 | 
462 | ----------------------------------
463 | 
464 | 
465 | ### [Friday, February 28 2:29 PM] User:
466 | 
467 | How easy are these options to use and how flexible they are? My top consideration is dev experience
468 | 
469 | ----------------------------------
470 | 
471 | 
472 | ### [Friday, February 28 2:29 PM] Explorer Assistant 2-28:
473 | 
474 | Both Material-UI (MUI) and Chakra UI prioritize developer experience, making it easy to build user interfaces with them, but they each offer unique benefits and levels of flexibility. Here’s a rundown of how they compare in terms of ease of use and flexibility:
475 | 
476 | ### Material-UI (MUI)
477 | 
478 | **Ease of Use:**
479 | - **Comprehensive Documentation**: MUI provides extensive documentation with clear examples, which significantly aids in quick onboarding, even for developers new to Material Design principles.
480 | - **Component-Rich**: As a mature library, MUI offers a wide variety of components that handle many standard use cases out of the box, reducing the need for custom development.
481 | - **Theme and Design Consistency**: With a structured design approach based on Google’s Material Design, it streamlines the design process, making developers' jobs easier for consistent branding and UX.
482 | 
483 | **Flexibility:**
484 | - **Customization**: MUI allows for robust theming through its theme overrides system, providing comprehensive control over component styles to match your application's branding and design needs.
485 | - **Responsiveness and Modularity**: Built-in responsive utilities and modular components make creating adaptive UIs straightforward.
486 | - **Integration with Other Tools**: MUI integrates seamlessly with other libraries and tooling like Redux, React Router, etc.
487 | 
488 | ### Chakra UI
489 | 
490 | **Ease of Use:**
491 | - **Intuitive API**: Chakra UI emphasizes a developer-friendly API, using props that are syntactically simple and readable, which significantly enhances productivity.
492 | - **Built-In Motion**: Leveraging Framer Motion for animations, it allows for easy creation of movement without needing deep knowledge of animation libraries.
493 | - **Simplicity in Composition**: The emphasis on minimalistic and clean code architecture makes it an attractive choice for rapid development and prototyping.
494 | 
495 | **Flexibility:**
496 | - **Themability**: Chakra UI offers theme customization, allowing developers to quickly switch between different design settings, making it flexible for new requirements.
497 | - **Modular Design**: It promotes a component-based approach, allowing developers to pick and use components as needed without dependency bloat.
498 | - **Extensibility**: The system promotes custom component creation, making it suitable for highly tailored applications where unique UIs are required.
499 | 
500 | ### Overall Dev Experience:
501 | 
502 | **Key Similarities:**
503 | - Both provide excellent tools for building accessible, responsive React applications comfortably and efficiently.
504 | - Both have strong ecosystems and community support, which contributes to an enhanced development experience through shared solutions and best practices.
505 | 
506 | **Key Differences:**
507 | - **MUI** is more feature-rich and structured, which can lead to easier management in larger applications where consistency is vital.
508 | - **Chakra UI** is typically quicker to learn due to its simplicity and ergonomic API, which speeds up development for smaller or more dynamic projects.
509 | 
510 | ### Conclusion:
511 | If your project requires a lot of custom, detailed designs and components that fit within a cohesive, pre-defined design system, MUI is a great choice because of its feature density and design consistency. Meanwhile, Chakra UI stands out for its ease of composability and flexibility, ideal for those who prioritize simplicity and quick iteration in their development process. Both offer great developer experiences, so the final choice should reflect the specific needs and objectives of your application.
512 | 
513 | ----------------------------------
514 | 
515 | 
```
Page 107/145FirstPrevNextLast