This is page 10 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
--------------------------------------------------------------------------------
/workbench-app/src/libs/useSiteUtility.ts:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | import React from 'react';
4 | import { Constants } from '../Constants';
5 |
6 | export const useSiteUtility = () => {
7 | const setDocumentTitle = React.useCallback((title?: string) => {
8 | document.title = title ? `${title} - ${Constants.app.name}` : Constants.app.name;
9 | }, []);
10 |
11 | const forceNavigateTo = React.useCallback((url: string | URL) => {
12 | window.history.pushState(null, '', url);
13 | window.location.reload();
14 | }, []);
15 |
16 | return {
17 | setDocumentTitle,
18 | forceNavigateTo,
19 | };
20 | };
21 |
```
--------------------------------------------------------------------------------
/examples/python/python-01-echo-bot/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "assistant"
3 | version = "0.1.0"
4 | description = "Example of a python Semantic Workbench assistant."
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11,<3.13"
8 | dependencies = ["openai>=1.61.0", "semantic-workbench-assistant>=0.1.0"]
9 |
10 | [tool.uv]
11 | package = true
12 |
13 | [tool.uv.sources]
14 | semantic-workbench-assistant = { path = "../../../libraries/python/semantic-workbench-assistant", editable = true }
15 |
16 | [build-system]
17 | requires = ["hatchling"]
18 | build-backend = "hatchling.build"
19 |
20 | [dependency-groups]
21 | dev = ["pyright>=1.1.389"]
22 |
```
--------------------------------------------------------------------------------
/assistants/document-assistant/assistant/filesystem/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from ._filesystem import AttachmentProcessingErrorHandler, AttachmentsExtension
2 | from ._model import Attachment, AttachmentsConfigModel, DocumentEditorConfigModel
3 | from ._prompts import EDIT_TOOL_DESCRIPTION_HOSTED, EDIT_TOOL_DESCRIPTION_LOCAL, FILES_PROMPT, VIEW_TOOL, VIEW_TOOL_OBJ
4 |
5 | __all__ = [
6 | "AttachmentsExtension",
7 | "AttachmentsConfigModel",
8 | "Attachment",
9 | "AttachmentProcessingErrorHandler",
10 | "DocumentEditorConfigModel",
11 | "FILES_PROMPT",
12 | "VIEW_TOOL",
13 | "VIEW_TOOL_OBJ",
14 | "EDIT_TOOL_DESCRIPTION_HOSTED",
15 | "EDIT_TOOL_DESCRIPTION_LOCAL",
16 | ]
17 |
```
--------------------------------------------------------------------------------
/libraries/python/semantic-workbench-api-model/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "semantic-workbench-api-model"
3 | version = "0.1.0"
4 | description = "Library of pydantic models for requests and responses to the semantic-workbench-service and semantic-workbench-assistant services."
5 | authors = [{name="Semantic Workbench Team"}]
6 | readme = "README.md"
7 | requires-python = ">=3.11,<3.13"
8 | dependencies = [
9 | "asgi-correlation-id>=4.3.1",
10 | "fastapi[standard]~=0.115.0",
11 | "hishel>=0.1.2",
12 | ]
13 |
14 | [tool.uv]
15 | package = true
16 |
17 | [build-system]
18 | requires = ["hatchling"]
19 | build-backend = "hatchling.build"
20 |
21 | [dependency-groups]
22 | dev = [
23 | "pyright>=1.1.389",
24 | ]
25 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_jokes/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You extract jokes from text content. You are interested only in jokes.
4 |
5 | You create bullet points that capture the joke and punchline.
6 |
7 | # OUTPUT INSTRUCTIONS
8 |
9 | - Only output Markdown.
10 |
11 | - Only extract jokes.
12 |
13 | - Each bullet should should have the joke followed by punchline on the next line.
14 |
15 | - Do not give warnings or notes; only output the requested sections.
16 |
17 | - You use bulleted lists for output, not numbered lists.
18 |
19 | - Do not repeat jokes, quotes, facts, or resources.
20 |
21 | - Ensure you follow ALL these instructions when creating your output.
22 |
23 |
24 | # INPUT
25 |
26 | INPUT:
27 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/guided_conversation/agenda.py:
--------------------------------------------------------------------------------
```python
1 | from pydantic import BaseModel, Field
2 | from skill_library.skills.guided_conversation.resources import (
3 | ResourceConstraintMode,
4 | )
5 |
6 |
7 | class AgendaItem(BaseModel):
8 | title: str = Field(description="Brief description of the item")
9 | resource: int = Field(description="Number of turns required for the item")
10 |
11 |
12 | class Agenda(BaseModel):
13 | resource_constraint_mode: ResourceConstraintMode | None = Field(default=None)
14 | items: list[AgendaItem] = Field(
15 | description="Ordered list of items to be completed in the remainder of the conversation",
16 | default_factory=list,
17 | )
18 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_controversial_ideas/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY
2 |
3 | You are super-intelligent AI system that extracts the most controversial statements out of inputs.
4 |
5 | # GOAL
6 |
7 | - Create a full list of controversial statements from the input.
8 |
9 | # OUTPUT
10 |
11 | - In a section called Controversial Ideas, output a bulleted list of controversial ideas from the input, captured in 15-words each.
12 |
13 | - In a section called Supporting Quotes, output a bulleted list of controversial quotes from the input.
14 |
15 | # OUTPUT INSTRUCTIONS
16 |
17 | - Ensure you get all of the controversial ideas from the input.
18 |
19 | - Output the output as Markdown, but without the use of any asterisks.
20 |
21 |
```
--------------------------------------------------------------------------------
/assistants/project-assistant/assistant/errors.py:
--------------------------------------------------------------------------------
```python
1 | # Define an Exception class for no share found
2 | class NoShareFoundError(Exception):
3 | """Exception raised when no active knowledge share is found."""
4 |
5 | def __init__(self, message: str):
6 | super().__init__(message)
7 | self.message = message
8 |
9 |
10 | NoShareException = NoShareFoundError("No active share found.")
11 |
12 |
13 | class NoUserFoundError(Exception):
14 | """Exception raised when no user is found in the context."""
15 |
16 | def __init__(self, message: str):
17 | super().__init__(message)
18 | self.message = message
19 |
20 |
21 | NoUserException = NoUserFoundError("No user found in the context.")
22 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/export_data_as_csv/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY
2 |
3 | You are a superintelligent AI that finds all mentions of data structures within an input and you output properly formatted CSV data that perfectly represents what's in the input.
4 |
5 | # STEPS
6 |
7 | - Read the whole input and understand the context of everything.
8 |
9 | - Find all mention of data structures, e.g., projects, teams, budgets, metrics, KPIs, etc., and think about the name of those fields and the data in each field.
10 |
11 | # OUTPUT
12 |
13 | - Output a CSV file that contains all the data structures found in the input.
14 |
15 | # OUTPUT INSTRUCTIONS
16 |
17 | - Use the fields found in the input, don't make up your own.
18 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-web-research/test/test_web_research.py:
--------------------------------------------------------------------------------
```python
1 | import pytest
2 | from mcp_server_web_research.web_research import perform_web_research
3 |
4 |
5 | async def test_setup():
6 | assert True
7 |
8 |
9 | @pytest.mark.skip
10 | async def test_web_research():
11 | """
12 | Test the web research functionality.
13 | """
14 | question = "What are the latest trends in AI technology?"
15 |
16 | async def on_status_update(status: str):
17 | print(f"➡️ {status}", flush=True)
18 |
19 | try:
20 | result = await perform_web_research(question, on_status_update)
21 | print(f"✅ {result}")
22 | return result
23 | except Exception as e:
24 | print(f"❌ Error during research: {e}")
25 | raise
26 |
```
--------------------------------------------------------------------------------
/tools/run-dotnet-examples-with-aspire.sh:
--------------------------------------------------------------------------------
```bash
1 | #!/usr/bin/env bash
2 |
3 | set -e
4 | ROOT="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && cd .. && pwd)"
5 | cd $ROOT
6 | # ================================================================
7 |
8 | cd aspire-orchestrator
9 |
10 | echo '===================================================================='
11 | echo ''
12 | echo 'If the Aspire dashboard is not opened in your browser automatically '
13 | echo 'look in the log for the following link, including the auth token: '
14 | echo ''
15 | echo ' https://localhost:17149/login?t=........ '
16 | echo ''
17 | echo '===================================================================='
18 |
19 | . run.sh
20 |
```
--------------------------------------------------------------------------------
/assistants/knowledge-transfer-assistant/assistant/tools/base.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | Base classes for Knowledge Transfer Assistant tools.
3 | """
4 |
5 | from semantic_workbench_assistant.assistant_app import ConversationContext
6 |
7 | from assistant.storage_models import ConversationRole
8 |
9 |
10 | class ToolsBase:
11 | """Base class for tool functionality."""
12 |
13 | def __init__(self, context: ConversationContext, role: ConversationRole):
14 | """
15 | Initialize the tools base with the current conversation context.
16 |
17 | Args:
18 | context: The conversation context
19 | role: The assistant's role (ConversationRole enum)
20 | """
21 | self.context = context
22 | self.role = role
23 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-open-deep-research-clone/test/test_open_deep_research_clone.py:
--------------------------------------------------------------------------------
```python
1 | import pytest
2 | from mcp_server_open_deep_research_clone.web_research import perform_web_research
3 |
4 |
5 | async def test_setup():
6 | assert True
7 |
8 |
9 | @pytest.mark.skip
10 | async def test_web_research():
11 | """
12 | Test the web research functionality.
13 | """
14 | question = "What are the latest trends in AI technology?"
15 |
16 | async def on_status_update(status: str):
17 | print(f"➡️ {status}", flush=True)
18 |
19 | try:
20 | result = await perform_web_research(question, on_status_update)
21 | print(f"✅ {result}")
22 | return result
23 | except Exception as e:
24 | print(f"❌ Error during research: {e}")
25 | raise
26 |
```
--------------------------------------------------------------------------------
/libraries/python/chat-context-toolkit/chat_context_toolkit/archive/__init__.py:
--------------------------------------------------------------------------------
```python
1 | """Archiving and retrieval tools for chat message history."""
2 |
3 | from ._archive_reader import ArchiveReader
4 | from ._archive_task_queue import ArchiveTaskQueue
5 | from ._types import (
6 | ArchiveContent,
7 | ArchiveManifest,
8 | ArchivesState,
9 | ArchiveTaskConfig,
10 | MessageProtocol,
11 | MessageProvider,
12 | StorageProvider,
13 | Summarizer,
14 | TokenCounter,
15 | )
16 |
17 | __all__ = [
18 | "ArchiveReader",
19 | "ArchiveTaskQueue",
20 | "ArchiveContent",
21 | "ArchiveManifest",
22 | "ArchivesState",
23 | "ArchiveTaskConfig",
24 | "MessageProvider",
25 | "MessageProtocol",
26 | "StorageProvider",
27 | "Summarizer",
28 | "TokenCounter",
29 | ]
30 |
```
--------------------------------------------------------------------------------
/assistants/codespace-assistant/assistant/response/utils/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from .formatting_utils import get_formatted_token_count, get_response_duration_message, get_token_usage_message
2 | from .message_utils import (
3 | build_system_message_content,
4 | )
5 | from .openai_utils import (
6 | extract_content_from_mcp_tool_calls,
7 | get_ai_client_configs,
8 | get_completion,
9 | get_openai_tools_from_mcp_sessions,
10 | )
11 |
12 | __all__ = [
13 | "build_system_message_content",
14 | "extract_content_from_mcp_tool_calls",
15 | "get_ai_client_configs",
16 | "get_completion",
17 | "get_formatted_token_count",
18 | "get_openai_tools_from_mcp_sessions",
19 | "get_response_duration_message",
20 | "get_token_usage_message",
21 | ]
22 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-giphy/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "mcp-server-giphy"
3 | version = "0.1.0"
4 | description = "An MCP server integration with the GIPHY API"
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11"
8 | dependencies = [
9 | "aiohttp>=3.11.13",
10 | "mcp-extensions[openai]>=0.1.0",
11 | "requests>=2.25",
12 | ]
13 |
14 | [dependency-groups]
15 | dev = ["pyright>=1.1.389"]
16 |
17 | [tool.hatch.build.targets.wheel]
18 | packages = ["mcp_server"]
19 |
20 | [tool.uv]
21 | package = true
22 |
23 | [tool.uv.sources]
24 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
25 |
26 | [build-system]
27 | requires = ["hatchling"]
28 | build-backend = "hatchling.build"
29 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-vscode/.vscode/launch.json:
--------------------------------------------------------------------------------
```json
1 | // A launch configuration that compiles the extension and then opens it inside a new window
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | {
6 | "version": "0.2.0",
7 | "configurations": [
8 | {
9 | "name": "mcp-server: mcp-server-vscode (Extension)",
10 | "type": "extensionHost",
11 | "request": "launch",
12 | "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
13 | "outFiles": ["${workspaceFolder}/dist/**/*.js"],
14 | "preLaunchTask": "${defaultBuildTask}"
15 | }
16 | ]
17 | }
18 |
```
--------------------------------------------------------------------------------
/assistants/knowledge-transfer-assistant/docs/learning_assistance.md:
--------------------------------------------------------------------------------
```markdown
1 | # Instructions for the Learning Assistant
2 |
3 | - Identify 2 to 3 concrete opportunities and "how to's" for using the Knowledge Transfer Assistant for the user that are customized to the needs & opportunities specific to that user.
4 | - Find out more about what the user does and help them ideate where this assistant could help.
5 | - After brainstorming, provide the user with specific steps:
6 | - How to create a new Knowledge Transfer Assistant experience.
7 | - Help them understand what kinds of files could be uploaded to benefit this.
8 | - Help them understand what prompts/things-to-say they could use to help them get the ball rolling.
9 |
```
--------------------------------------------------------------------------------
/assistants/project-assistant/docs/learning_assistance.md:
--------------------------------------------------------------------------------
```markdown
1 | # Instructions for the Learning Assistant
2 |
3 | - Identify 2 to 3 concrete opportunities and "how to's" for using the Knowledge Transfer Assistant for the user that are customized to the needs & opportunities specific to that user.
4 | - Find out more about what the user does and help them ideate where this assistant could help.
5 | - After brainstorming, provide the user with specific steps:
6 | - How to create a new Knowledge Transfer Assistant experience.
7 | - Help them understand what kinds of files could be uploaded to benefit this.
8 | - Help them understand what prompts/things-to-say they could use to help them get the ball rolling.
9 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/__init__.py:
--------------------------------------------------------------------------------
```python
1 | # skill_library/__init__.py
2 |
3 | from .chat_driver_helpers import ChatDriverFunctions
4 | from .engine import Engine
5 | from .skill import Skill, SkillConfig, SkillProtocol
6 | from .types import (
7 | ActionFn,
8 | AskUserFn,
9 | EmitFn,
10 | LanguageModel,
11 | Metadata,
12 | RunContext,
13 | RunContextProvider,
14 | RunRoutineFn,
15 | )
16 | from .usage import get_routine_usage
17 |
18 | __all__ = [
19 | "ActionFn",
20 | "AskUserFn",
21 | "ChatDriverFunctions",
22 | "EmitFn",
23 | "Engine",
24 | "get_routine_usage",
25 | "LanguageModel",
26 | "Metadata",
27 | "RunRoutineFn",
28 | "RunContext",
29 | "RunContextProvider",
30 | "Skill",
31 | "SkillConfig",
32 | "SkillProtocol",
33 | ]
34 |
```
--------------------------------------------------------------------------------
/workbench-app/run.sh:
--------------------------------------------------------------------------------
```bash
1 | #!/usr/bin/env bash
2 |
3 | set -e
4 | HERE="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
5 | cd $HERE
6 | # ================================================================
7 |
8 | # Check node version, it must be major version 20 (any minor), otherwise show an error and exit
9 | NODE_VERSION=$(node -v)
10 | if [[ $NODE_VERSION != v20.* ]]; then
11 | echo "Node version must be 20.x.x. You have $NODE_VERSION. Please install the correct version. See also README.md for instructions."
12 | echo "If you use 'nvm' you can also run 'nvm install 20'"
13 | exit 1
14 | fi
15 |
16 | echo "Starting the Semantic Workbench app, open https://127.0.0.1:4000 in your browser when ready"
17 |
18 | pnpm start
19 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/posix/routines/cd.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Any, cast
2 |
3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn
4 | from skill_library.skills.posix import PosixSkill
5 |
6 |
7 | async def main(
8 | context: RunContext,
9 | routine_state: dict[str, Any],
10 | emit: EmitFn,
11 | run: RunRoutineFn,
12 | ask_user: AskUserFn,
13 | directory: str,
14 | ) -> str:
15 | """
16 | Change the current working directory.
17 | """
18 | posix_skill = cast(PosixSkill, context.skills["posix"])
19 | shell = posix_skill.shell
20 | try:
21 | shell.cd(directory)
22 | return f"Changed directory to {directory}."
23 | except FileNotFoundError:
24 | return f"Directory {directory} not found."
25 |
```
--------------------------------------------------------------------------------
/libraries/dotnet/WorkbenchConnector/Models/Participant.cs:
--------------------------------------------------------------------------------
```csharp
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | using System.Text.Json.Serialization;
4 |
5 | // ReSharper disable once CheckNamespace
6 | namespace Microsoft.SemanticWorkbench.Connector;
7 |
8 | public class Participant
9 | {
10 | [JsonPropertyName("id")]
11 | public string Id { get; set; } = string.Empty;
12 |
13 | [JsonPropertyName("role")]
14 | public string Role { get; set; } = string.Empty;
15 |
16 | [JsonPropertyName("name")]
17 | public string Name { get; set; } = string.Empty;
18 |
19 | [JsonPropertyName("active_participant")]
20 | public bool ActiveParticipant { get; set; } = false;
21 |
22 | [JsonPropertyName("online")]
23 | public bool? Online { get; set; } = null;
24 | }
25 |
```
--------------------------------------------------------------------------------
/workbench-service/semantic_workbench_service/azure_speech.py:
--------------------------------------------------------------------------------
```python
1 | import logging
2 |
3 | from azure.identity import DefaultAzureCredential
4 |
5 | from . import settings
6 |
7 | logger = logging.getLogger(__name__)
8 |
9 |
10 | def get_token() -> dict[str, str]:
11 | if settings.azure_speech.resource_id == "" or settings.azure_speech.region == "":
12 | return {}
13 |
14 | credential = DefaultAzureCredential()
15 | try:
16 | token = credential.get_token("https://cognitiveservices.azure.com/.default").token
17 | except Exception as e:
18 | logger.error(f"Failed to get token: {e}")
19 | return {}
20 |
21 | return {
22 | "token": f"aad#{settings.azure_speech.resource_id}#{token}",
23 | "region": settings.azure_speech.region,
24 | }
25 |
```
--------------------------------------------------------------------------------
/libraries/python/content-safety/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "content-safety"
3 | version = "0.1.0"
4 | description = "Content Safety for Semantic Workbench Assistants"
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11,<3.13"
8 | dependencies = [
9 | "azure-ai-contentsafety>=1.0.0",
10 | "azure-core[aio]>=1.30.0",
11 | "azure-identity>=1.17.1",
12 | "openai>=1.61.0",
13 | "semantic-workbench-assistant>=0.1.0",
14 | ]
15 |
16 | [tool.uv]
17 | package = true
18 |
19 | [tool.uv.sources]
20 | semantic-workbench-assistant = { path = "../semantic-workbench-assistant", editable = true }
21 |
22 | [build-system]
23 | requires = ["hatchling"]
24 | build-backend = "hatchling.build"
25 |
26 | [dependency-groups]
27 | dev = ["pyright>=1.1.389"]
28 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/posix/routines/append_file.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Any, cast
2 |
3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn
4 | from skill_library.skills.posix import PosixSkill
5 |
6 |
7 | async def main(
8 | context: RunContext,
9 | routine_state: dict[str, Any],
10 | emit: EmitFn,
11 | run: RunRoutineFn,
12 | ask_user: AskUserFn,
13 | filename: str,
14 | content: str,
15 | ) -> str:
16 | """
17 | Change the current working directory.
18 | """
19 | posix_skill = cast(PosixSkill, context.skills["posix"])
20 | shell = posix_skill.shell
21 | try:
22 | shell.append_file(filename, content)
23 | return f"Appended content to {filename}."
24 | except FileNotFoundError:
25 | return f"Filename {filename} not found."
26 |
```
--------------------------------------------------------------------------------
/workbench-service/migrations/versions/2024_10_30_231536_039bec8edc33_index_message_type.py:
--------------------------------------------------------------------------------
```python
1 | """index message_type
2 |
3 | Revision ID: 039bec8edc33
4 | Revises: b29524775484
5 | Create Date: 2024-10-30 23:15:36.240812
6 |
7 | """
8 |
9 | from typing import Sequence, Union
10 |
11 | from alembic import op
12 |
13 | # revision identifiers, used by Alembic.
14 | revision: str = "039bec8edc33"
15 | down_revision: Union[str, None] = "b29524775484"
16 | branch_labels: Union[str, Sequence[str], None] = None
17 | depends_on: Union[str, Sequence[str], None] = None
18 |
19 |
20 | def upgrade() -> None:
21 | op.create_index(op.f("ix_conversationmessage_message_type"), "conversationmessage", ["message_type"], unique=False)
22 |
23 |
24 | def downgrade() -> None:
25 | op.drop_index(op.f("ix_conversationmessage_message_type"), table_name="conversationmessage")
26 |
```
--------------------------------------------------------------------------------
/workbench-app/src/models/Assistant.ts:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | export type Assistant = {
4 | id: string;
5 | name: string;
6 | image?: string;
7 | assistantServiceId: string;
8 | assistantServiceOnline: boolean;
9 | templateId: string;
10 | createdDatetime: string;
11 | conversations: {
12 | [additionalPropertyId: string]: {
13 | id: string;
14 | };
15 | };
16 | commands?: {
17 | [commandName: string]: {
18 | displayName: string;
19 | description: string;
20 | };
21 | };
22 | states?: {
23 | [stateKey: string]: {
24 | displayName: string;
25 | description: string;
26 | };
27 | };
28 | metadata?: {
29 | [key: string]: any;
30 | };
31 | };
32 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/posix/routines/make_home_dir.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Any
2 |
3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn
4 |
5 |
6 | async def main(
7 | context: RunContext,
8 | routine_state: dict[str, Any],
9 | emit: EmitFn,
10 | run: RunRoutineFn,
11 | ask_user: AskUserFn,
12 | username: str,
13 | ) -> None:
14 | await run("posix.cd", "/mnt/data")
15 | await run("posix.mkdir", username)
16 | await run("posix.cd", username)
17 | await run("posix.mkdir", "Documents")
18 | await run("posix.mkdir", "Downloads")
19 | await run("posix.mkdir", "Music")
20 | await run("posix.mkdir", "Pictures")
21 | await run("posix.mkdir", "Videos")
22 | await run("posix.cd", "/mnt/data")
23 | print(f"Home directory created for {username}.")
24 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-bundle/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [build-system]
2 | requires = ["hatchling"]
3 | build-backend = "hatchling.build"
4 |
5 | [project]
6 | name = "mcp-server-bundle"
7 | version = "0.1.0"
8 | description = "Bundle for mcp-server-office and mcp-tunnel"
9 | readme = "README.md"
10 | requires-python = ">=3.11,<3.13"
11 | authors = [{ name = "Semantic Workbench Team" }]
12 | dependencies = [
13 | "mcp-server-filesystem-edit",
14 | "mcp-tunnel",
15 | ]
16 |
17 | [tool.uv.sources]
18 | mcp-server-filesystem-edit = { path = "../mcp-server-filesystem-edit", editable = true }
19 | mcp-tunnel = { path = "../../libraries/python/mcp-tunnel", editable = true }
20 |
21 | [project.scripts]
22 | mcp-server-bundle = "mcp_server_bundle.main:main"
23 |
24 | [dependency-groups]
25 | dev = [
26 | "pyinstaller>=6.12.0",
27 | ]
28 |
```
--------------------------------------------------------------------------------
/libraries/python/assistant-drive/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "assistant-drive"
3 | version = "0.1.0"
4 | description = "MADE:Exploration Assistant Drive"
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11"
8 | dependencies = [
9 | "pydantic>=2.6.1",
10 | "pydantic-settings>=2.5.2",
11 | # "python-magic>=0.4.27",
12 | # "python-magic-bin>=0.4.14",
13 | ]
14 |
15 | [dependency-groups]
16 | dev = [
17 | "pytest>=8.3.1",
18 | "pytest-asyncio>=0.23.8",
19 | "pytest-repeat>=0.9.3",
20 | "ipykernel>=6.29.5",
21 | "pyright>=1.1.389",
22 | ]
23 |
24 | [tool.uv.sources]
25 | # python-magic = { git = "https://github.com/julian-r/python-magic.git#egg=python-magic" }
26 |
27 | [build-system]
28 | requires = ["hatchling"]
29 | build-backend = "hatchling.build"
30 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-memory-user-bio/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "mcp-server-memory-user-bio"
3 | version = "0.1.0"
4 | description = "Allows saving of memories across conversations related to user interests, preferences, and ongoing projects."
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11"
8 | dependencies = ["mcp>=1.2.1", "mcp-extensions>=0.1.0"]
9 |
10 | [dependency-groups]
11 | dev = ["pyright>=1.1.389"]
12 |
13 | [tool.uv]
14 | package = true
15 |
16 | [tool.uv.sources]
17 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
18 |
19 | [project.scripts]
20 | mcp-server-memory-user-bio = "mcp_server_memory_user_bio.start:main"
21 |
22 | [build-system]
23 | requires = ["hatchling"]
24 | build-backend = "hatchling.build"
25 |
```
--------------------------------------------------------------------------------
/libraries/python/mcp-extensions/mcp_extensions/_model.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Any, Awaitable, Callable
2 |
3 | from mcp import ServerNotification
4 | from mcp.types import CallToolResult
5 | from pydantic import BaseModel
6 |
7 | ToolCallFunction = Callable[[], Awaitable[CallToolResult]]
8 | ServerNotificationHandler = Callable[[ServerNotification], Awaitable[None]]
9 |
10 |
11 | class ToolCallProgressMessage(BaseModel):
12 | """
13 | Represents a progress message for an active tool call.
14 |
15 | Attributes:
16 | message (str): A brief textual update describing the current tool execution state.
17 | data (dict[str, Any] | None): Optional dictionary containing structured data relevant
18 | to the progress update.
19 | """
20 |
21 | message: str
22 | data: dict[str, Any] | None
23 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_tags/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You identify tags from text content for the mind mapping tools.
4 | Carefully consider the topics and content of the text and identify at least 5 subjects / ideas to be used as tags. If there is an author or existing tags listed they should be included as a tag.
5 |
6 | # OUTPUT INSTRUCTIONS
7 |
8 | - Only output a single line
9 |
10 | - Only output the tags in lowercase separated by spaces
11 |
12 | - Each tag should be lower case
13 |
14 | - Tags should not contain spaces. If a tag contains a space replace it with an underscore.
15 |
16 | - Do not give warnings or notes; only output the requested info.
17 |
18 | - Do not repeat tags
19 |
20 | - Ensure you follow ALL these instructions when creating your output.
21 |
22 |
23 | # INPUT
24 |
25 | INPUT:
26 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem/.vscode/launch.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "type": "debugpy",
6 | "request": "launch",
7 | "name": "mcp-servers: mcp-server-filesystem",
8 | "cwd": "${workspaceFolder}",
9 | "module": "mcp_server_filesystem.start",
10 | "args": ["--transport", "sse"],
11 | "consoleTitle": "mcp-server-filesystem"
12 | // "justMyCode": false // Set to false to debug external libraries
13 | }
14 | ],
15 | "compounds": [
16 | {
17 | "name": "test: mcp-server-filesystem",
18 | "configurations": [
19 | "assistants: codespace-assistant",
20 | "app: semantic-workbench-app",
21 | "service: semantic-workbench-service",
22 | "mcp-servers: mcp-server-filesystem"
23 | ]
24 | }
25 | ]
26 | }
27 |
```
--------------------------------------------------------------------------------
/assistants/navigator-assistant/assistant/response/utils/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from .formatting_utils import get_formatted_token_count, get_response_duration_message, get_token_usage_message
2 | from .message_utils import (
3 | conversation_message_to_chat_message_params,
4 | get_history_messages,
5 | )
6 | from .openai_utils import (
7 | get_ai_client_configs,
8 | get_completion,
9 | )
10 | from .tools import ExecutableTool, execute_tool, get_tools_from_mcp_sessions
11 |
12 | __all__ = [
13 | "conversation_message_to_chat_message_params",
14 | "get_ai_client_configs",
15 | "get_completion",
16 | "get_formatted_token_count",
17 | "get_history_messages",
18 | "get_response_duration_message",
19 | "get_token_usage_message",
20 | "ExecutableTool",
21 | "execute_tool",
22 | "get_tools_from_mcp_sessions",
23 | ]
24 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
```yaml
1 | name: CI Pipeline
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 | branches:
9 | - "*"
10 |
11 | jobs:
12 | test:
13 | runs-on: ${{ matrix.os }}
14 | strategy:
15 | matrix:
16 | os: [ubuntu-latest, windows-latest]
17 | python-version: [3.9, 3.10, 3.11]
18 | steps:
19 | - name: Checkout repository
20 | uses: actions/checkout@v3
21 |
22 | - name: Set up Python ${{ matrix.python-version }}
23 | uses: actions/setup-python@v4
24 | with:
25 | python-version: ${{ matrix.python-version }}
26 |
27 | - name: Install dependencies
28 | run: |
29 | python -m pip install --upgrade pip
30 | pip install pytest
31 |
32 | - name: Run tests
33 | run: |
34 | pytest tests --maxfail=5 --disable-warnings
```
--------------------------------------------------------------------------------
/workbench-app/src/components/App/CodeLabel.tsx:
--------------------------------------------------------------------------------
```typescript
1 | import { makeStyles, shorthands, tokens } from '@fluentui/react-components';
2 | import React from 'react';
3 |
4 | const useClasses = makeStyles({
5 | root: {
6 | ...shorthands.border(tokens.strokeWidthThin, 'solid', tokens.colorNeutralStroke2),
7 | borderRadius: tokens.borderRadiusMedium,
8 | backgroundColor: tokens.colorNeutralBackground3,
9 | ...shorthands.padding(tokens.spacingVerticalXXS, tokens.spacingHorizontalS),
10 | },
11 | });
12 |
13 | interface CodeLabelProps {
14 | children?: React.ReactNode;
15 | }
16 |
17 | export const CodeLabel: React.FC<CodeLabelProps> = (props) => {
18 | const { children } = props;
19 | const classes = useClasses();
20 |
21 | return <span className={classes.root}>{children}</span>;
22 | };
23 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/routines/show.py:
--------------------------------------------------------------------------------
```python
1 | from pathlib import Path
2 | from typing import Any
3 |
4 | from events import MessageEvent
5 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn
6 |
7 |
8 | async def main(
9 | context: RunContext,
10 | routine_state: dict[str, Any],
11 | emit: EmitFn,
12 | run: RunRoutineFn,
13 | ask_user: AskUserFn,
14 | pattern: str,
15 | ) -> str:
16 | """Show a fabric patterns."""
17 |
18 | pattern_file = Path(__file__).parent.parent / "patterns" / pattern / "system.md"
19 | if not pattern_file.exists():
20 | emit(MessageEvent(message=f"Pattern {pattern} not found."))
21 | return f"Pattern {pattern} not found."
22 |
23 | with open(pattern_file, "r") as f:
24 | pattern = f.read()
25 |
26 | return f"```markdown\n{pattern}\n```"
27 |
```
--------------------------------------------------------------------------------
/workbench-app/docker-entrypoint.sh:
--------------------------------------------------------------------------------
```bash
1 | #!/bin/sh
2 |
3 | # Allow static build of REact code to access env vars
4 | # SEE https://create-react-app.dev/docs/title-and-meta-tags/#injecting-data-from-the-server-into-the-page
5 | # Replace placeholders in static files with environment variables
6 | envsubst '$VITE_SEMANTIC_WORKBENCH_SERVICE_URL' < /usr/share/nginx/html/index.html > /usr/share/nginx/html/index.html.tmp
7 | mv /usr/share/nginx/html/index.html.tmp /usr/share/nginx/html/index.html
8 |
9 | envsubst '$PORT' < /etc/nginx/conf.d/default.conf > /etc/nginx/conf.d/default.conf.tmp
10 | mv /etc/nginx/conf.d/default.conf.tmp /etc/nginx/conf.d/default.conf
11 |
12 | echo "VITE_SEMANTIC_WORKBENCH_SERVICE_URL = $VITE_SEMANTIC_WORKBENCH_SERVICE_URL"
13 | echo "PORT = $PORT"
14 |
15 | exec "$@"
```
--------------------------------------------------------------------------------
/KNOWN_ISSUES.md:
--------------------------------------------------------------------------------
```markdown
1 | # Semantic Workbench Known Issues
2 |
3 | You may encounter the following known issues, which may include workarounds, mitigation's, or expected resolution time-frames.
4 |
5 | ## Semantic Workbench App
6 |
7 | ### Error loading conversations: {"name":"BrowserAuthError","message":"hash_empty_error: Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash..."}
8 |
9 | This error may appear when the access token for your login has expired and is not refreshing properly. More exploration is needed for the actual fix.
10 |
11 | **Workaround**
12 |
13 | 1. If you encounter this error when using the Semantic Workbench app, please log out of the web app (upper right corner) and log back in.
14 |
```
--------------------------------------------------------------------------------
/libraries/python/content-safety/content_safety/evaluators/config.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Annotated
2 |
3 | from pydantic import BaseModel, ConfigDict, Field
4 | from semantic_workbench_assistant.config import UISchema
5 |
6 | from .azure_content_safety.config import AzureContentSafetyEvaluatorConfig
7 | from .openai_moderations.config import OpenAIContentSafetyEvaluatorConfig
8 |
9 |
10 | class CombinedContentSafetyEvaluatorConfig(BaseModel):
11 | model_config = ConfigDict(title="Content Safety Evaluator")
12 |
13 | service_config: Annotated[
14 | AzureContentSafetyEvaluatorConfig | OpenAIContentSafetyEvaluatorConfig,
15 | Field(
16 | title="Content Safety Evaluator",
17 | ),
18 | UISchema(widget="radio", hide_title=True),
19 | ] = AzureContentSafetyEvaluatorConfig.model_construct()
20 |
```
--------------------------------------------------------------------------------
/aspire-orchestrator/Aspire.Extensions/PathNormalizer.cs:
--------------------------------------------------------------------------------
```csharp
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | namespace Aspire.Hosting.Extensions;
4 |
5 | internal static class PathNormalizer
6 | {
7 | /// <summary>
8 | /// Normalizes the path for the current platform.
9 | /// </summary>
10 | /// <param name="path">The path value.</param>
11 | /// <returns>Returns the normalized path value for the current platform.</returns>
12 | public static string NormalizePathForCurrentPlatform(this string path)
13 | {
14 | if (string.IsNullOrWhiteSpace(path))
15 | {
16 | return path;
17 | }
18 |
19 | // Fix slashes
20 | path = path.Replace('\\', Path.DirectorySeparatorChar).Replace('/', Path.DirectorySeparatorChar);
21 |
22 | return Path.GetFullPath(path);
23 | }
24 | }
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/improve_writing/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are a writing expert. You refine the input text to enhance clarity, coherence, grammar, and style.
4 |
5 | # Steps
6 |
7 | - Analyze the input text for grammatical errors, stylistic inconsistencies, clarity issues, and coherence.
8 | - Apply corrections and improvements directly to the text.
9 | - Maintain the original meaning and intent of the user's text, ensuring that the improvements are made within the context of the input language's grammatical norms and stylistic conventions.
10 |
11 | # OUTPUT INSTRUCTIONS
12 |
13 | - Refined and improved text that has no grammar mistakes.
14 | - Return in the same language as the input.
15 | - Include NO additional commentary or explanation in the response.
16 |
17 | # INPUT:
18 |
19 | INPUT:
20 |
```
--------------------------------------------------------------------------------
/assistants/document-assistant/assistant/guidance/guidance_config.py:
--------------------------------------------------------------------------------
```python
1 | # Copyright (c) Microsoft. All rights reserved.
2 |
3 | from typing import Annotated
4 |
5 | from pydantic import BaseModel, Field
6 | from semantic_workbench_assistant.config import UISchema
7 |
8 | from assistant.guidance.guidance_prompts import USER_GUIDANCE_INSTRUCTIONS
9 |
10 |
11 | class GuidanceConfigModel(BaseModel):
12 | enabled: Annotated[
13 | bool,
14 | Field(
15 | description="Enable or disable this feature.",
16 | ),
17 | ] = True
18 |
19 | prompt: Annotated[
20 | str,
21 | Field(
22 | description="The prompt that is injected at the end of the system prompt. Current dynamic UI is automatically injected at the end.",
23 | ),
24 | UISchema(widget="textarea"),
25 | ] = USER_GUIDANCE_INSTRUCTIONS
26 |
```
--------------------------------------------------------------------------------
/assistants/document-assistant/assistant/response/utils/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from .formatting_utils import get_formatted_token_count, get_response_duration_message, get_token_usage_message
2 | from .message_utils import (
3 | conversation_message_to_chat_message_params,
4 | get_history_messages,
5 | )
6 | from .openai_utils import (
7 | extract_content_from_mcp_tool_calls,
8 | get_ai_client_configs,
9 | get_completion,
10 | get_openai_tools_from_mcp_sessions,
11 | )
12 |
13 | __all__ = [
14 | "conversation_message_to_chat_message_params",
15 | "extract_content_from_mcp_tool_calls",
16 | "get_ai_client_configs",
17 | "get_completion",
18 | "get_formatted_token_count",
19 | "get_history_messages",
20 | "get_openai_tools_from_mcp_sessions",
21 | "get_response_duration_message",
22 | "get_token_usage_message",
23 | ]
24 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem-edit/tests/conftest.py:
--------------------------------------------------------------------------------
```python
1 | from pathlib import Path
2 |
3 | import pytest
4 |
5 |
6 | @pytest.fixture
7 | def temporary_directory() -> Path:
8 | path = Path(__file__).parents[1] / "temp" / "tests"
9 | path.mkdir(parents=True, exist_ok=True)
10 | return path
11 |
12 |
13 | @pytest.fixture
14 | def word_file_path(temporary_directory: Path) -> Path:
15 | return temporary_directory / "test_document.docx"
16 |
17 |
18 | @pytest.fixture
19 | def excel_file_path(temporary_directory: Path) -> Path:
20 | return temporary_directory / "test_book.xlsx"
21 |
22 |
23 | @pytest.fixture
24 | def ppt_file_path(temporary_directory: Path) -> Path:
25 | return temporary_directory / "test_presentation.pptx"
26 |
27 |
28 | @pytest.fixture
29 | def csv_file_path(temporary_directory: Path) -> Path:
30 | return temporary_directory / "test_book.csv"
31 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/guided_conversation/tests/test_generate_artifact_updates.py:
--------------------------------------------------------------------------------
```python
1 | import pytest
2 | from skill_library.skills.guided_conversation.chat_completions.generate_artifact_updates import (
3 | generate_artifact_updates,
4 | )
5 | from skill_library.skills.guided_conversation.conversation_guides.acrostic_poem import definition
6 | from skill_library.skills.guided_conversation.message import Conversation
7 | from skill_library.types import LanguageModel
8 |
9 |
10 | @pytest.mark.skip("For manual testing.")
11 | async def test_generate_artifact_updates(client: LanguageModel) -> None:
12 | artifact = {}
13 | conversation = Conversation().add_user_message("Hi!")
14 | response = await generate_artifact_updates(client, definition, artifact, conversation)
15 | expected_response = []
16 | assert response == expected_response
17 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/get_youtube_rss/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY AND GOALS
2 |
3 | You are a YouTube infrastructure expert that returns YouTube channel RSS URLs.
4 |
5 | You take any input in, especially YouTube channel IDs, or full URLs, and return the RSS URL for that channel.
6 |
7 | # STEPS
8 |
9 | Here is the structure for YouTube RSS URLs and their relation to the channel ID and or channel URL:
10 |
11 | If the channel URL is https://www.youtube.com/channel/UCnCikd0s4i9KoDtaHPlK-JA, the RSS URL is https://www.youtube.com/feeds/videos.xml?channel_id=UCnCikd0s4i9KoDtaHPlK-JA
12 |
13 | - Extract the channel ID from the channel URL.
14 |
15 | - Construct the RSS URL using the channel ID.
16 |
17 | - Output the RSS URL.
18 |
19 | # OUTPUT
20 |
21 | - Output only the RSS URL and nothing else.
22 |
23 | - Don't complain, just do it.
24 |
25 | # INPUT
26 |
27 | (INPUT)
28 |
```
--------------------------------------------------------------------------------
/assistants/project-assistant/assistant/text_includes/knowledge_digest_instructions.txt:
--------------------------------------------------------------------------------
```
1 | The knowledge digest contains information about this knowledge package that has been extracted from the previous conversation thread and attachments.
2 | It serves as a persistent memory of important facts and context.
3 |
4 | Key characteristics of this knowledge digest:
5 |
6 | - It contains the most essential information about the knowledge share that should be readily available.
7 | - It has been automatically curated to focus on high-value information relevant to the knowledge share.
8 | - It is maintained and updated as knowledge content is added.
9 | - It should be treated as a trusted source of contextual information for this knowledge share.
10 | - Do not use it for task management or information requests. These things are managed separately.
11 |
```
--------------------------------------------------------------------------------
/tools/run-workbench-chatbot.sh:
--------------------------------------------------------------------------------
```bash
1 | #!/usr/bin/env bash
2 |
3 | # Exit on error
4 | set -e
5 |
6 | # Determine the root directory of the script
7 | scriptPath=$(dirname "$(realpath "$0")")
8 | root=$(realpath "$scriptPath/..")
9 |
10 | # Change directory to the root
11 | cd "$root"
12 |
13 | # Run the scripts in separate tmux sessions
14 | tmux new-session -d -s service "bash $root/tools/run-service.sh"
15 | tmux new-session -d -s python_example "bash $root/tools/run-python-example2.sh"
16 | tmux new-session -d -s app "bash $root/tools/run-app.sh"
17 |
18 | # Attach to the tmux session
19 | tmux attach-session -t app
20 |
21 | # Detach from the current session (inside tmux)
22 | # Ctrl+b d
23 |
24 | # Switch to a different session (inside tmux)
25 | # Ctrl+b s
26 |
27 | # tmux list-sessions
28 | # tmux attach-session -t <session-name>
29 | # tmux kill-session -t <session-name>
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem-edit/tests/app_handling/test_office_common.py:
--------------------------------------------------------------------------------
```python
1 | import sys
2 | from pathlib import Path
3 |
4 | import pytest
5 | from mcp_server_filesystem_edit.app_handling.office_common import (
6 | OfficeAppType,
7 | open_document_in_office,
8 | )
9 |
10 |
11 | @pytest.fixture(autouse=True)
12 | def check_for_win():
13 | if sys.platform != "win32":
14 | pytest.skip("This test is only applicable on Windows.")
15 |
16 |
17 | def test_open_word(word_file_path: Path) -> None:
18 | _, doc = open_document_in_office(word_file_path, OfficeAppType.WORD)
19 | assert doc is not None
20 |
21 | _, doc = open_document_in_office(word_file_path, OfficeAppType.WORD)
22 | assert doc is not None
23 |
24 |
25 | def test_open_powerpoint(ppt_file_path: Path) -> None:
26 | _, doc = open_document_in_office(ppt_file_path, OfficeAppType.POWERPOINT)
27 | assert doc is not None
28 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/t_describe_life_outlook/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY
2 |
3 | You are an expert at understanding deep context about a person or entity, and then creating wisdom from that context combined with the instruction or question given in the input.
4 |
5 | # STEPS
6 |
7 | 1. Read the incoming TELOS File thoroughly. Fully understand everything about this person or entity.
8 | 2. Deeply study the input instruction or question.
9 | 3. Spend significant time and effort thinking about how these two are related, and what would be the best possible ouptut for the person who sent the input.
10 | 4. Write 5 16-word bullets describing this person's life outlook.
11 |
12 | # OUTPUT INSTRUCTIONS
13 |
14 | 1. Only use basic markdown formatting. No special formatting or italics or bolding or anything.
15 | 2. Only output the list, nothing else.
16 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_npc/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are an expert NPC generator for D&D 5th edition. You have freedom to be creative to get the best possible output.
4 |
5 | # STEPS
6 |
7 | - Create a 5E D&D NPC with the input given.
8 | - Ensure the character has all the following information.
9 |
10 | Background:
11 | Character Flaws:
12 | Attributes:
13 | Full D&D Character Stats like you would see in a character sheet:
14 | Past Experiences:
15 | Past Traumas:
16 | Goals in Life:
17 | Peculiarities:
18 | How they speak:
19 | What they find funny:
20 | What they can't stand:
21 | Their purpose in life:
22 | Their favorite phrases:
23 | How they look and like to dress:
24 | Their appearance:
25 | (add other attributes)
26 |
27 | # OUTPUT INSTRUCTIONS
28 |
29 | - Output in clear, human-readable Markdown.
30 | - DO NOT COMPLAIN about the task for any reason.
31 |
32 | # INPUT
33 |
34 | INPUT:
35 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-memory-whiteboard/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "mcp-server-memory-whiteboard"
3 | version = "0.1.0"
4 | description = "Stores working memory in a format analogous to a whiteboard"
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11"
8 | dependencies = ["mcp>=1.2.1", "openai-client>=0.1.0", "mcp-extensions>=0.1.0"]
9 |
10 | [dependency-groups]
11 | dev = ["pyright>=1.1.389"]
12 |
13 | [tool.uv]
14 | package = true
15 |
16 | [tool.uv.sources]
17 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
18 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
19 |
20 | [project.scripts]
21 | mcp-server-memory-whiteboard = "mcp_server_memory_whiteboard.start:main"
22 |
23 | [build-system]
24 | requires = ["hatchling"]
25 | build-backend = "hatchling.build"
26 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem-edit/tests/app_handling/test_miktext.py:
--------------------------------------------------------------------------------
```python
1 | # Copyright (c) Microsoft. All rights reserved.
2 |
3 | # This assumes that `pdflatex` is installed and available in the PATH.
4 |
5 | from pathlib import Path
6 |
7 | import pytest
8 | from mcp_server_filesystem_edit.app_handling.miktex import compile_tex_to_pdf
9 |
10 | SAMPLE_TEX_PATH = Path(__file__).parents[2] / "data" / "attachments" / "Research Template.tex"
11 |
12 |
13 | def test_miktex() -> None:
14 | """
15 | Test the MikTeX functionality.
16 | """
17 | pytest.skip("This test is skipped because it requires a working MikTeX installation.")
18 | success, output = compile_tex_to_pdf(SAMPLE_TEX_PATH)
19 | assert success, f"Compilation failed with output: {output}"
20 | pdf_file = SAMPLE_TEX_PATH.with_suffix(".pdf")
21 | assert pdf_file.exists(), f"PDF file was not created: {pdf_file}"
22 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/t_visualize_mission_goals_projects/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY
2 |
3 | You are an expert at understanding deep context about a person or entity, and then creating wisdom from that context combined with the instruction or question given in the input.
4 |
5 | # STEPS
6 |
7 | 1. Read the incoming TELOS File thoroughly. Fully understand everything about this person or entity.
8 | 2. Deeply study the input instruction or question.
9 | 3. Spend significant time and effort thinking about how these two are related, and what would be the best possible ouptut for the person who sent the input.
10 | 4. Create an ASCII art diagram of the relationship my missions, goals, and projects.
11 |
12 | # OUTPUT INSTRUCTIONS
13 |
14 | 1. Only use basic markdown formatting. No special formatting or italics or bolding or anything.
15 | 2. Only output the list, nothing else.
16 |
```
--------------------------------------------------------------------------------
/assistants/prospector-assistant/assistant/artifact_creation_extension/test/evaluation.py:
--------------------------------------------------------------------------------
```python
1 | def sentence_cosine_similarity(sentence1: str, sentence2: str) -> float:
2 | """Calculate the cosine similarity between two sentences."""
3 |
4 | raise RuntimeError(
5 | "This function is disabled because upgrading torch doesn't work on Mac X86, and the torch that does work is no longer secure."
6 | )
7 |
8 | # from sentence_transformers import SentenceTransformer, SimilarityFunction
9 |
10 | # model = SentenceTransformer("all-mpnet-base-v2", similarity_fn_name=SimilarityFunction.COSINE)
11 |
12 | # sentence1_embeddings = model.encode([sentence1])
13 | # sentence2_embeddings = model.encode([sentence2])
14 |
15 | # similarities = model.similarity(sentence1_embeddings[0], sentence2_embeddings[0])
16 | # similarity = similarities[0][0]
17 |
18 | # return similarity.item()
19 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_skills/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are an expert in extracting skill terms from the job description provided. You are also excellent at classifying skills.
4 |
5 | # STEPS
6 |
7 | - Extract all the skills from the job description. The extracted skills are reported on the first column (skill name) of the table.
8 |
9 | - Classify the hard or soft skill. The results are reported on the second column (skill type) of the table.
10 |
11 | # OUTPUT INSTRUCTIONS
12 |
13 | - Only output table.
14 |
15 | - Do not include any verbs. Only include nouns.
16 |
17 | - Separating skills e.g., Python and R should be two skills.
18 |
19 | - Do not miss any skills. Report all skills.
20 |
21 | - Do not repeat skills or table.
22 |
23 | - Do not give warnings or notes.
24 |
25 | - Ensure you follow ALL these instructions when creating your output.
26 |
27 | # INPUT
28 |
29 | INPUT:
30 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/App/LabelWithDescription.tsx:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | import { Text } from '@fluentui/react-components';
4 | import { QuestionCircle16Regular } from '@fluentui/react-icons';
5 | import React from 'react';
6 | import { TooltipWrapper } from './TooltipWrapper';
7 |
8 | interface LabelWithDescriptionProps {
9 | label: string;
10 | description?: string;
11 | }
12 |
13 | export const LabelWithDescription: React.FC<LabelWithDescriptionProps> = (props) => {
14 | const { label, description } = props;
15 |
16 | return (
17 | <div>
18 | <Text weight="semibold">{label}</Text>
19 | {description && (
20 | <TooltipWrapper content={description}>
21 | <QuestionCircle16Regular fontWeight={100} />
22 | </TooltipWrapper>
23 | )}
24 | </div>
25 | );
26 | };
27 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_domains/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You extract domains and URLs from input like articles and newsletters for the purpose of understanding the sources that were used for their content.
4 |
5 | # STEPS
6 |
7 | - For every story that was mentioned in the article, story, blog, newsletter, output the source it came from.
8 |
9 | - The source should be the central source, not the exact URL necessarily, since the purpose is to find new sources to follow.
10 |
11 | - As such, if it's a person, link their profile that was in the input. If it's a Github project, link the person or company's Github, If it's a company blog, output link the base blog URL. If it's a paper, link the publication site. Etc.
12 |
13 | - Only output each source once.
14 |
15 | - Only output the source, nothing else, one per line
16 |
17 | # INPUT
18 |
19 | INPUT:
20 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-memory-whiteboard/mcp_server_memory_whiteboard/start.py:
--------------------------------------------------------------------------------
```python
1 | # Main entry point for the MCP Server
2 |
3 | import argparse
4 |
5 | from .server import create_mcp_server
6 |
7 |
8 | def main() -> None:
9 | # Command-line arguments for transport and port
10 | parse_args = argparse.ArgumentParser(description="Start the MCP server.")
11 | parse_args.add_argument(
12 | "--transport",
13 | default="stdio",
14 | choices=["stdio", "sse"],
15 | help="Transport protocol to use ('stdio' or 'sse'). Default is 'stdio'.",
16 | )
17 | parse_args.add_argument("--port", type=int, default=38733, help="Port to use for SSE (default is ).")
18 | args = parse_args.parse_args()
19 |
20 | mcp = create_mcp_server()
21 | if args.transport == "sse":
22 | mcp.settings.port = args.port
23 |
24 | mcp.run(transport=args.transport)
25 |
26 |
27 | if __name__ == "__main__":
28 | main()
29 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_git_changes/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are an expert project manager and developer, and you specialize in creating super clean updates for what changed a Github project in the last 7 days.
4 |
5 | # STEPS
6 |
7 | - Read the input and figure out what the major changes and upgrades were that happened.
8 |
9 | - Create a section called CHANGES with a set of 10-word bullets that describe the feature changes and updates.
10 |
11 | # OUTPUT INSTRUCTIONS
12 |
13 | - Output a 20-word intro sentence that says something like, "In the last 7 days, we've made some amazing updates to our project focused around $character of the updates$."
14 |
15 | - You only output human readable Markdown, except for the links, which should be in HTML format.
16 |
17 | - Write the update bullets like you're excited about the upgrades.
18 |
19 | # INPUT:
20 |
21 | INPUT:
22 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-giphy/mcp_server/start.py:
--------------------------------------------------------------------------------
```python
1 | # Main entry point for the MCP Server
2 |
3 | import argparse
4 |
5 | from .server import create_mcp_server
6 |
7 |
8 | def main() -> None:
9 | # Command-line arguments for transport and port
10 | parse_args = argparse.ArgumentParser(description="Start the MCP server.")
11 | parse_args.add_argument(
12 | "--transport",
13 | default="stdio",
14 | choices=["stdio", "sse"],
15 | help="Transport protocol to use ('stdio' or 'sse'). Default is 'stdio'.",
16 | )
17 | parse_args.add_argument("--port", type=int, default=8000, help="Port to use for SSE (default is 8000).")
18 | args = parse_args.parse_args()
19 |
20 | mcp = create_mcp_server()
21 | if args.transport == "sse":
22 | mcp.settings.port = args.port
23 |
24 | mcp.run(transport=args.transport)
25 |
26 |
27 | if __name__ == "__main__":
28 | main()
29 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-open-deep-research/mcp_server/start.py:
--------------------------------------------------------------------------------
```python
1 | # Main entry point for the MCP Server
2 |
3 | import argparse
4 |
5 | from .server import create_mcp_server
6 |
7 |
8 | def main() -> None:
9 | # Command-line arguments for transport and port
10 | parse_args = argparse.ArgumentParser(description="Start the MCP server.")
11 | parse_args.add_argument(
12 | "--transport",
13 | default="stdio",
14 | choices=["stdio", "sse"],
15 | help="Transport protocol to use ('stdio' or 'sse'). Default is 'stdio'.",
16 | )
17 | parse_args.add_argument("--port", type=int, default=8000, help="Port to use for SSE (default is 8000).")
18 | args = parse_args.parse_args()
19 |
20 | mcp = create_mcp_server()
21 | if args.transport == "sse":
22 | mcp.settings.port = args.port
23 |
24 | mcp.run(transport=args.transport)
25 |
26 |
27 | if __name__ == "__main__":
28 | main()
29 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/Assistants/AssistantExport.tsx:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | import React from 'react';
4 | import { useExportUtility } from '../../libs/useExportUtility';
5 | import { ContentExport } from '../App/ContentExport';
6 |
7 | interface AssistantExportProps {
8 | assistantId: string;
9 | iconOnly?: boolean;
10 | asToolbarButton?: boolean;
11 | }
12 |
13 | export const AssistantExport: React.FC<AssistantExportProps> = (props) => {
14 | const { assistantId, iconOnly, asToolbarButton } = props;
15 | const { exportAssistantFunction } = useExportUtility();
16 |
17 | return (
18 | <ContentExport
19 | id={assistantId}
20 | contentTypeLabel="assistant"
21 | exportFunction={exportAssistantFunction}
22 | iconOnly={iconOnly}
23 | asToolbarButton={asToolbarButton}
24 | />
25 | );
26 | };
27 |
```
--------------------------------------------------------------------------------
/tools/makefiles/shell.mk:
--------------------------------------------------------------------------------
```
1 | # posix shell
2 | rm_dir = rm -rf
3 | rm_file = rm -rf
4 | fix_path = $(1)
5 | touch = touch $(1)
6 | true_expression = true
7 | stdout_redirect_null = 1>/dev/null
8 | stderr_redirect_null = 2>/dev/null
9 | stderr_redirect_stdout = 2>&1
10 | command_exists = command -v $(1)
11 |
12 | # windows shell
13 | ifeq ($(suffix $(SHELL)),.exe)
14 | rm_dir = rd /s /q
15 | rm_file = del /f /q
16 | fix_path = $(subst /,\,$(abspath $(1)))
17 | # https://ss64.com/nt/touch.html
18 | touch = type nul >> $(call fix_path,$(1)) && copy /y /b $(call fix_path,$(1))+,, $(call fix_path,$(1)) $(ignore_output)
19 | true_expression = VER>NUL
20 | stdout_redirect_null = 1>NUL
21 | stderr_redirect_null = 2>NUL
22 | stderr_redirect_stdout = 2>&1
23 | command_exists = where $(1)
24 | endif
25 |
26 | ignore_output = $(stdout_redirect_null) $(stderr_redirect_stdout)
27 | ignore_failure = || $(true_expression)
28 |
```
--------------------------------------------------------------------------------
/.github/workflows/libraries.yml:
--------------------------------------------------------------------------------
```yaml
1 | name: libraries tests
2 |
3 | permissions:
4 | contents: read
5 | pull-requests: write
6 |
7 | on:
8 | pull_request:
9 | branches: ["main"]
10 | paths: ["libraries/**", ".github/workflows/libraries.yml"]
11 |
12 | push:
13 | branches: ["main"]
14 | paths: ["libraries/**", ".github/workflows/libraries.yml"]
15 |
16 | workflow_dispatch:
17 |
18 | defaults:
19 | run:
20 | working-directory: libraries
21 |
22 | jobs:
23 | test:
24 | runs-on: ubuntu-latest
25 | strategy:
26 | fail-fast: false
27 | matrix:
28 | python-version: ["3.11"]
29 | steps:
30 | - uses: actions/checkout@v4
31 |
32 | - name: Install uv
33 | uses: astral-sh/setup-uv@v3
34 |
35 | - name: Set up Python ${{ matrix.python-version }}
36 | run: uv python install ${{ matrix.python-version }}
37 |
38 | - name: Install and run tests
39 | run: make -j $(nproc) test
40 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-bing-search/mcp_server_bing_search/start.py:
--------------------------------------------------------------------------------
```python
1 | # Copyright (c) Microsoft. All rights reserved.
2 |
3 | import argparse
4 |
5 | from .server import create_mcp_server
6 |
7 |
8 | def main() -> None:
9 | # Command-line arguments for transport and port
10 | parse_args = argparse.ArgumentParser(description="Start the MCP server.")
11 | parse_args.add_argument(
12 | "--transport",
13 | default="stdio",
14 | choices=["stdio", "sse"],
15 | help="Transport protocol to use ('stdio' or 'sse'). Default is 'stdio'.",
16 | )
17 | parse_args.add_argument("--port", type=int, default=6030, help="Port to use for SSE (default is 6030).")
18 | args = parse_args.parse_args()
19 |
20 | mcp = create_mcp_server()
21 | if args.transport == "sse":
22 | mcp.settings.port = args.port
23 |
24 | mcp.run(transport=args.transport)
25 |
26 |
27 | if __name__ == "__main__":
28 | main()
29 |
```