This is page 16 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
--------------------------------------------------------------------------------
/libraries/python/chat-context-toolkit/chat_context_toolkit/archive/_state.py:
--------------------------------------------------------------------------------
```python
1 | import pathlib
2 | from contextlib import asynccontextmanager
3 | from typing import AsyncIterator
4 |
5 | from ._types import ArchivesState, StorageProvider
6 |
7 | ARCHIVE_STATE_FILE = pathlib.PurePath("archive_state.json")
8 |
9 |
10 | class StateStorage:
11 | def __init__(self, storage_provider: StorageProvider) -> None:
12 | self._storage_provider = storage_provider
13 |
14 | async def read_state(self) -> ArchivesState:
15 | """
16 | Reads the current state of the message history archive.
17 |
18 | Returns:
19 | ArchiveState: The current state of the archive.
20 | """
21 | state_content = await self._storage_provider.read_text_file(ARCHIVE_STATE_FILE)
22 |
23 | if state_content is None:
24 | return ArchivesState()
25 |
26 | return ArchivesState.model_validate_json(state_content)
27 |
28 | @asynccontextmanager
29 | async def update_state(self) -> AsyncIterator[ArchivesState]:
30 | """
31 | Updates the current state of the message history archive.
32 |
33 | Returns:
34 | ArchiveState: The updated state of the archive.
35 | """
36 | state = await self.read_state()
37 | yield state
38 | await self._write_state(state)
39 |
40 | async def _write_state(self, state: ArchivesState) -> None:
41 | """
42 | Writes the current state of the message history archive.
43 |
44 | Args:
45 | state (ArchiveState): The state to write to the archive.
46 | """
47 | await self._storage_provider.write_text_file(ARCHIVE_STATE_FILE, state.model_dump_json())
48 |
```
--------------------------------------------------------------------------------
/libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/assistant_app/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from .assistant import AssistantApp
2 | from .config import BaseModelAssistantConfig
3 | from .content_safety import (
4 | AlwaysWarnContentSafetyEvaluator,
5 | ContentSafety,
6 | ContentSafetyEvaluation,
7 | ContentSafetyEvaluationResult,
8 | ContentSafetyEvaluator,
9 | )
10 | from .context import AssistantContext, ConversationContext, storage_directory_for_context
11 | from .error import BadRequestError, ConflictError, NotFoundError
12 | from .export_import import FileStorageAssistantDataExporter, FileStorageConversationDataExporter
13 | from .protocol import (
14 | AssistantTemplate,
15 | AssistantAppProtocol,
16 | AssistantCapability,
17 | AssistantConfigDataModel,
18 | AssistantConfigProvider,
19 | AssistantConversationInspectorStateDataModel,
20 | AssistantConversationInspectorStateProvider,
21 | )
22 |
23 | __all__ = [
24 | "AlwaysWarnContentSafetyEvaluator",
25 | "AssistantApp",
26 | "AssistantAppProtocol",
27 | "AssistantCapability",
28 | "AssistantConfigProvider",
29 | "AssistantConfigDataModel",
30 | "AssistantContext",
31 | "AssistantConversationInspectorStateDataModel",
32 | "AssistantConversationInspectorStateProvider",
33 | "AssistantTemplate",
34 | "BaseModelAssistantConfig",
35 | "ConversationContext",
36 | "ContentSafety",
37 | "ContentSafetyEvaluation",
38 | "ContentSafetyEvaluationResult",
39 | "ContentSafetyEvaluator",
40 | "FileStorageAssistantDataExporter",
41 | "FileStorageConversationDataExporter",
42 | "BadRequestError",
43 | "NotFoundError",
44 | "ConflictError",
45 | "storage_directory_for_context",
46 | ]
47 |
```
--------------------------------------------------------------------------------
/workbench-service/Dockerfile:
--------------------------------------------------------------------------------
```dockerfile
1 | ARG python_image=python:3.11-slim
2 |
3 | FROM ${python_image} AS build
4 |
5 | COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
6 |
7 | COPY ./libraries/python /libraries/python
8 | COPY ./workbench-service /workbench-service
9 |
10 | RUN uv sync --directory /workbench-service --no-editable --no-dev --locked
11 |
12 | FROM ${python_image}
13 |
14 | # BEGIN: enable ssh in azure web app - comment out if not needed
15 | ########
16 | # install sshd and set password for root
17 | RUN apt-get update && apt-get install -y --no-install-recommends \
18 | openssh-server \
19 | && rm -rf /var/lib/apt/lists/* \
20 | && echo "root:Docker!" | chpasswd
21 |
22 | # azure sshd config
23 | COPY ./tools/docker/azure_website_sshd.conf /etc/ssh/sshd_config
24 | ENV SSHD_PORT=2222
25 | ########
26 | # END: enable ssh in azure web app
27 |
28 | RUN apt-get update && apt-get install -y --no-install-recommends \
29 | gettext \
30 | && rm -rf /var/lib/apt/lists/*
31 |
32 | COPY --from=build /workbench-service/.venv /workbench-service/.venv
33 | ENV PATH=/workbench-service/.venv/bin:$PATH
34 |
35 | # alembic migrations related files
36 | COPY ./workbench-service/alembic.ini /workbench-service/alembic.ini
37 | COPY ./workbench-service/migrations /workbench-service/migrations
38 |
39 | # entrypoint script
40 | COPY ./tools/docker/docker-entrypoint.sh /scripts/docker-entrypoint.sh
41 | RUN chmod +x /scripts/docker-entrypoint.sh
42 |
43 | WORKDIR /workbench-service
44 |
45 | ENV workbench__service__host=0.0.0.0
46 | ENV workbench__service__port=3000
47 | ENV PYTHONUNBUFFERED=1
48 |
49 | SHELL ["/bin/bash", "-c"]
50 | ENTRYPOINT ["/scripts/docker-entrypoint.sh"]
51 | CMD ["start-service"]
52 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_command/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are a penetration tester that is extremely good at reading and understanding command line help instructions. You are responsible for generating CLI commands for various tools that can be run to perform certain tasks based on documentation given to you.
4 |
5 | Take a step back and analyze the help instructions thoroughly to ensure that the command you provide performs the expected actions. It is crucial that you only use switches and options that are explicitly listed in the documentation passed to you. Do not attempt to guess. Instead, use the documentation passed to you as your primary source of truth. It is very important the commands you generate run properly and do not use fake or invalid options and switches.
6 |
7 | # OUTPUT INSTRUCTIONS
8 |
9 | - Output the requested command using the documentation provided with the provided details inserted. The input will include the prompt on the first line and then the tool documentation for the command will be provided on subsequent lines.
10 | - Do not add additional options or switches unless they are explicitly asked for.
11 | - Only use switches that are explicitly stated in the help documentation that is passed to you as input.
12 |
13 | # OUTPUT FORMAT
14 |
15 | - Output a full, bash command with all relevant parameters and switches.
16 | - Refer to the provided help documentation.
17 | - Only output the command. Do not output any warning or notes.
18 | - Do not output any Markdown or other formatting. Only output the command itself.
19 |
20 | # INPUT:
21 |
22 | INPUT:
23 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_insights/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You extract surprising, powerful, and interesting insights from text content. You are interested in insights related to the purpose and meaning of life, human flourishing, the role of technology in the future of humanity, artificial intelligence and its affect on humans, memes, learning, reading, books, continuous improvement, and similar topics.
4 |
5 | You create 15 word bullet points that capture the most important insights from the input.
6 |
7 | Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
8 |
9 | # STEPS
10 |
11 | - Extract 20 to 50 of the most surprising, insightful, and/or interesting ideas from the input in a section called IDEAS, and write them on a virtual whiteboard in your mind using 15 word bullets. If there are less than 50 then collect all of them. Make sure you extract at least 20.
12 |
13 | - From those IDEAS, extract the most powerful and insightful of them and write them in a section called INSIGHTS. Make sure you extract at least 10 and up to 25.
14 |
15 | # OUTPUT INSTRUCTIONS
16 |
17 | - INSIGHTS are essentially higher-level IDEAS that are more abstracted and wise.
18 |
19 | - Output the INSIGHTS section only.
20 |
21 | - Each bullet should be 16 words in length.
22 |
23 | - Do not give warnings or notes; only output the requested sections.
24 |
25 | - You use bulleted lists for output, not numbered lists.
26 |
27 | - Do not start items with the same opening words.
28 |
29 | - Ensure you follow ALL these instructions when creating your output.
30 |
31 |
32 | # INPUT
33 |
34 | INPUT:
35 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-bing-search/mcp_server_bing_search/prompts/clean_website.py:
--------------------------------------------------------------------------------
```python
1 | # Copyright (c) Microsoft. All rights reserved.
2 |
3 | from mcp_extensions.llm.llm_types import SystemMessage, UserMessage
4 |
5 | CLEAN_WEBSITE_SYSTEM_PROMPT = SystemMessage(
6 | content="""You are responsible for parsing website content to leave the most important parts exactly as they were in the original website.
7 | You will be given website content that has been processed using markdownify. \
8 | It is your job to do a cleaning pass on the content to remove any unneeded content. \
9 | You should remove aspects that are artifacts of the HTML to markdown conversion and do not help with the understanding of the content \
10 | such as navigation, extraneous links, dropdowns, images, etc.
11 | - You should preserve things like formatting of content itself.
12 | - If the content is long, you should only include the most important 4000 tokens of text.
13 | - If the content is documentation, an article, blog, etc you absolutely must return the content in its entirety.
14 | - Be sure to include authors and dates. Also preserve important data, if it exists, like GitHub stars, viewership, things that hint at recency, etc.
15 | - It is critical that the content you wish to keep, you copy WORD FOR WORD.
16 | - Do not wrap the content in a markdown code block.
17 | - NEVER summarize, you are only allowed to output the content verbatim."""
18 | )
19 |
20 | CLEAN_WEBSITE_USER_PROMPT = UserMessage(
21 | content="""<website_content>
22 | {{content}}
23 | </website_content>"""
24 | )
25 |
26 | CLEAN_WEBSITE_MESSAGES = [
27 | CLEAN_WEBSITE_SYSTEM_PROMPT,
28 | CLEAN_WEBSITE_USER_PROMPT,
29 | ]
30 |
```
--------------------------------------------------------------------------------
/libraries/python/content-safety/content_safety/evaluators/evaluator.py:
--------------------------------------------------------------------------------
```python
1 | # Copyright (c) Microsoft. All rights reserved.
2 |
3 | import logging
4 |
5 | from content_safety.evaluators.azure_content_safety.config import AzureContentSafetyEvaluatorConfig
6 | from content_safety.evaluators.openai_moderations.config import OpenAIContentSafetyEvaluatorConfig
7 | from semantic_workbench_assistant.assistant_app import (
8 | ContentSafetyEvaluation,
9 | ContentSafetyEvaluator,
10 | )
11 |
12 | from .azure_content_safety import AzureContentSafetyEvaluator
13 | from .config import CombinedContentSafetyEvaluatorConfig
14 | from .openai_moderations import OpenAIContentSafetyEvaluator
15 |
16 | logger = logging.getLogger(__name__)
17 |
18 |
19 | class CombinedContentSafetyEvaluator(ContentSafetyEvaluator):
20 | """
21 | An evaluator that uses the Azure Content Safety service to evaluate content safety.
22 | """
23 |
24 | def __init__(self, config: CombinedContentSafetyEvaluatorConfig) -> None:
25 | self.config = config
26 |
27 | async def evaluate(self, content: str | list[str]) -> ContentSafetyEvaluation:
28 | """
29 | Evaluate the content for safety using the Azure Content Safety service.
30 | """
31 |
32 | if isinstance(self.config.service_config, AzureContentSafetyEvaluatorConfig):
33 | return await AzureContentSafetyEvaluator(self.config.service_config).evaluate(content)
34 | elif isinstance(self.config.service_config, OpenAIContentSafetyEvaluatorConfig):
35 | return await OpenAIContentSafetyEvaluator(self.config.service_config).evaluate(content)
36 |
37 | raise ValueError("Invalid service configuration.")
38 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/explain_docs/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are an expert at capturing, understanding, and explaining the most important parts of instructions, documentation, or other formats of input that describe how to use a tool.
4 |
5 | You take that input and turn it into better instructions using the STEPS below.
6 |
7 | Take a deep breath and think step-by-step about how to achieve the best output.
8 |
9 | # STEPS
10 |
11 | - Take the input given on how to use a given tool or product, and output better instructions using the following format:
12 |
13 | START OUTPUT SECTIONS
14 |
15 | # OVERVIEW
16 |
17 | What It Does: (give a 25-word explanation of what the tool does.)
18 |
19 | Why People Use It: (give a 25-word explanation of why the tool is useful.)
20 |
21 | # HOW TO USE IT
22 |
23 | Most Common Syntax: (Give the most common usage syntax.)
24 |
25 | # COMMON USE CASES
26 |
27 | (Create a list of common use cases from your knowledge base, if it contains common uses of the tool.)
28 |
29 | (Use this format for those use cases)
30 |
31 | For Getting the Current Time: `time --get-current`
32 | For Determining One's Birth Day: time `--get-birth-day`
33 | Etc.
34 |
35 | # MOST IMPORTANT AND USED OPTIONS AND FEATURES
36 |
37 | (Create a list of common options and switches and flags, etc., from the docs and your knowledge base, if it contains common uses of the tool.)
38 |
39 | (For each one, describe how/why it could be useful)
40 |
41 | END OUTPUT SECTIONS
42 |
43 | # OUTPUT INSTRUCTIONS
44 |
45 | - Interpret the input as tool documentation, no matter what it is.
46 | - You only output human readable Markdown.
47 | - Do not output warnings or notes—just the requested sections.
48 |
49 | # INPUT
50 |
51 | INPUT:
52 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem-edit/data/attachments/ReDoodle.txt:
--------------------------------------------------------------------------------
```
1 | ReDoodle, is a "daily" web puzzle game where you are given a starting image, and your goal is to transform it into a goal image through a series of prompts. I made this project primarily to learn about web development. To motivate myself to complete it, I made it a goal to open source it; and here it is: <link>
2 |
3 |
4 | Here's a rundown of the tools I used to build the app:
5 |
6 | - Client: I used Vite with their template for React + Typescript and also Tailwind CSS to make it pretty. Development and the app itself are very fast, and all these tools all have lots of docs, great compatibility with packages, and work well with AI tooling.
7 |
8 | - Server: I used FastAPI and a SQLite database to persist the game state. Not my finest code, but it was not my goal here - I needed something that was easy to use.
9 |
10 | - Image to image and image generation: Originally, I used Flux and it produced beautiful images! However, I ended up going with Stable Diffusion 3.5 Turbo since I found the speed of it a better UX (demo is in real-time at 3-4 seconds per image) while still producing quality images.
11 |
12 | - Image similarity: I used a Vision Transformer (ViT) image feature model to compute embeddings of images and cosine similarity to compare them. Lots of room for improvement here, but pretty good for an off the shelf, small model.
13 |
14 | - Microsoft Designer for the cute web icon!
15 |
16 | - And Microsoft Loop for keeping giving me a place to keep my to-do list, learning resources in one spot, and a great editor to draft this post.
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-office/data/attachments/ReDoodle.txt:
--------------------------------------------------------------------------------
```
1 | ReDoodle, is a "daily" web puzzle game where you are given a starting image, and your goal is to transform it into a goal image through a series of prompts. I made this project primarily to learn about web development. To motivate myself to complete it, I made it a goal to open source it; and here it is: <link>
2 |
3 |
4 | Here's a rundown of the tools I used to build the app:
5 |
6 | - Client: I used Vite with their template for React + Typescript and also Tailwind CSS to make it pretty. Development and the app itself are very fast, and all these tools all have lots of docs, great compatibility with packages, and work well with AI tooling.
7 |
8 | - Server: I used FastAPI and a SQLite database to persist the game state. Not my finest code, but it was not my goal here - I needed something that was easy to use.
9 |
10 | - Image to image and image generation: Originally, I used Flux and it produced beautiful images! However, I ended up going with Stable Diffusion 3.5 Turbo since I found the speed of it a better UX (demo is in real-time at 3-4 seconds per image) while still producing quality images.
11 |
12 | - Image similarity: I used a Vision Transformer (ViT) image feature model to compute embeddings of images and cosine similarity to compare them. Lots of room for improvement here, but pretty good for an off the shelf, small model.
13 |
14 | - Microsoft Designer for the cute web icon!
15 |
16 | - And Microsoft Loop for keeping giving me a place to keep my to-do list, learning resources in one spot, and a great editor to draft this post.
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "skill-library"
3 | version = "0.1.0"
4 | description = "MADE:Exploration Skill library"
5 | authors = [{name="MADE:Explorers"}]
6 | readme = "README.md"
7 | requires-python = ">=3.11"
8 | dependencies = [
9 | "assistant-drive>=0.1.0",
10 | "assistant-extensions[attachments]>=0.1.0",
11 | "events>=0.1.0",
12 | "openai-client>=0.1.0",
13 | "openai>=1.16.1",
14 | "pydantic-settings>=2.3.4",
15 | "pydantic>=2.6.1",
16 | "python-dotenv>=1.0.1",
17 | "python-liquid>=1.12.1",
18 | "requests>=2.32.0",
19 | "tiktoken>=0.8.0",
20 | "jsonschema>=4.23.0",
21 | "bs4>=0.0.2",
22 | ]
23 |
24 | [dependency-groups]
25 | dev = [
26 | "pyright>=1.1.389",
27 | "pytest>=8.3.1",
28 | "pytest-asyncio>=0.23.8",
29 | "pytest-repeat>=0.9.3",
30 | ]
31 |
32 | [tool.uv.sources]
33 | assistant-drive = { path = "../../assistant-drive", editable = true }
34 | assistant-extensions = { path = "../../assistant-extensions", editable = true }
35 | events = { path = "../../events", editable = true }
36 | openai-client = { path = "../../openai-client", editable = true }
37 |
38 | [tool.setuptools.package-data]
39 | "skill_library" = ["llm_info.txt"]
40 |
41 | [build-system]
42 | requires = ["hatchling"]
43 | build-backend = "hatchling.build"
44 |
45 | [tool.pytest.ini_options]
46 | addopts = ["-vv"]
47 | log_cli = true
48 | log_cli_level = "WARNING"
49 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
50 | testpaths = ["tests"]
51 | norecursedirs = ["skill_library/skills/guided_conversation"]
52 | asyncio_mode = "auto"
53 | asyncio_default_fixture_loop_scope = "function"
54 |
55 | [project.scripts]
56 | run-routine = "skill_library.cli.run_routine:entry_point"
57 |
```
--------------------------------------------------------------------------------
/assistants/project-assistant/assistant/utils.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | Utility functions for the knowledge transfer assistant module.
3 |
4 | This module provides common utility functions used across the knowledge transfer assistant
5 | codebase, helping to reduce code duplication and maintain consistency.
6 | """
7 |
8 | import pathlib
9 |
10 | from semantic_workbench_assistant.assistant_app import ConversationContext
11 |
12 | from assistant.errors import NoUserException
13 | from assistant.string_utils import render
14 |
15 | DEFAULT_TEMPLATE_ID = "default"
16 |
17 |
18 | def load_text_include(filename: str, replacements: dict[str, str] = {}) -> str:
19 | """
20 | Helper for loading an include from a text file.
21 |
22 | Args:
23 | filename: The name of the text file to load from the text_includes directory
24 |
25 | Returns:
26 | The content of the text file
27 | """
28 | directory = pathlib.Path(__file__).parent
29 | file_path = directory / "text_includes" / filename
30 | text = file_path.read_text()
31 | return render(text, replacements)
32 |
33 |
34 | async def get_current_user(
35 | context: ConversationContext,
36 | ) -> tuple[str, str | None]:
37 | participants = await context.get_participants()
38 | user_id = None
39 | user_name = None
40 |
41 | for participant in participants.participants:
42 | if participant.role == "user":
43 | user_id = participant.id
44 | user_name = participant.name
45 | break
46 |
47 | if not user_id:
48 | raise NoUserException
49 |
50 | return user_id, user_name
51 |
52 |
53 | async def get_current_user_id(context: ConversationContext) -> str:
54 | user_id, _ = await get_current_user(context)
55 | return user_id
56 |
```
--------------------------------------------------------------------------------
/libraries/python/anthropic-client/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "python.analysis.autoFormatStrings": true,
14 | "python.analysis.autoImportCompletions": true,
15 | "python.analysis.diagnosticMode": "workspace",
16 | "python.analysis.fixAll": [
17 | "source.unusedImports"
18 | ],
19 | "python.analysis.inlayHints.functionReturnTypes": true,
20 | "python.analysis.typeCheckingMode": "standard",
21 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
22 | "[python]": {
23 | "editor.defaultFormatter": "charliermarsh.ruff",
24 | "editor.formatOnSave": true,
25 | "editor.codeActionsOnSave": {
26 | "source.fixAll": "explicit",
27 | "source.unusedImports": "explicit",
28 | "source.organizeImports": "explicit",
29 | "source.formatDocument": "explicit"
30 | }
31 | },
32 | "ruff.nativeServer": "on",
33 | "search.exclude": {
34 | "**/.venv": true,
35 | "**/.data": true,
36 | "**/__pycache__": true
37 | },
38 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
39 | "cSpell.ignorePaths": [
40 | ".venv",
41 | "node_modules",
42 | "package-lock.json",
43 | "settings.json",
44 | "uv.lock"
45 | ],
46 | "cSpell.words": [
47 | "addopts",
48 | "asctime",
49 | "levelname",
50 | "Pydantic",
51 | "pyright",
52 | "pytest",
53 | "testpaths"
54 | ]
55 | }
56 |
```
--------------------------------------------------------------------------------
/libraries/python/llm-client/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "python.analysis.autoFormatStrings": true,
14 | "python.analysis.autoImportCompletions": true,
15 | "python.analysis.diagnosticMode": "workspace",
16 | "python.analysis.fixAll": [
17 | "source.unusedImports"
18 | ],
19 | "python.analysis.inlayHints.functionReturnTypes": true,
20 | "python.analysis.typeCheckingMode": "standard",
21 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
22 | "[python]": {
23 | "editor.defaultFormatter": "charliermarsh.ruff",
24 | "editor.formatOnSave": true,
25 | "editor.codeActionsOnSave": {
26 | "source.fixAll": "explicit",
27 | "source.unusedImports": "explicit",
28 | "source.organizeImports": "explicit",
29 | "source.formatDocument": "explicit"
30 | }
31 | },
32 | "ruff.nativeServer": "on",
33 | "search.exclude": {
34 | "**/.venv": true,
35 | "**/.data": true,
36 | "**/__pycache__": true
37 | },
38 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
39 | "cSpell.ignorePaths": [
40 | ".venv",
41 | "node_modules",
42 | "package-lock.json",
43 | "settings.json",
44 | "uv.lock"
45 | ],
46 | "cSpell.words": [
47 | "addopts",
48 | "asctime",
49 | "levelname",
50 | "Pydantic",
51 | "pyright",
52 | "pytest",
53 | "testpaths"
54 | ]
55 | }
56 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/suggest_pattern/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 | You are an AI assistant tasked with creating a new feature for a fabric command-line tool. Your primary responsibility is to develop a pattern that suggests appropriate fabric patterns or commands based on user input. You are knowledgeable about fabric commands and understand the need to expand the tool's functionality. Your role involves analyzing user requests, determining the most suitable fabric commands or patterns, and providing helpful suggestions to users.
3 |
4 | Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
5 |
6 | # STEPS
7 | - Analyze the user's input to understand their specific needs and context
8 | - Determine the appropriate fabric pattern or command based on the user's request
9 | - Generate a response that suggests the relevant fabric command(s) or pattern(s)
10 | - Provide explanations or multiple options when applicable
11 | - If no specific command is found, suggest using `create_pattern`
12 |
13 | # OUTPUT INSTRUCTIONS
14 | - Only output Markdown
15 | - Provide suggestions for fabric commands or patterns based on the user's input
16 | - Include explanations or multiple options when appropriate
17 | - If suggesting `create_pattern`, include instructions for saving and using the new pattern
18 | - Format the output to be clear and easy to understand for users new to fabric
19 | - Ensure the response aligns with the goal of making fabric more accessible and user-friendly
20 | - Ensure you follow ALL these instructions when creating your output
21 |
22 | # INPUT
23 | INPUT:
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-bing-search/mcp_server_bing_search/web/search_bing.py:
--------------------------------------------------------------------------------
```python
1 | # Copyright (c) Microsoft. All rights reserved.
2 |
3 | import httpx
4 |
5 | from mcp_server_bing_search import settings
6 | from mcp_server_bing_search.types import SearchResult
7 |
8 |
9 | def search_bing(query: str) -> list[SearchResult]:
10 | """
11 | Makes a call to the Bing Web Search API with a query and returns relevant web search.
12 | Documentation: https://docs.microsoft.com/en-us/bing/search-apis/bing-web-search/overview
13 | """
14 | subscription_key = settings.bing_search_api_key
15 | if not subscription_key:
16 | raise ValueError("BING_SEARCH_API_KEY is not set in the environment variables.")
17 |
18 | endpoint = "https://api.bing.microsoft.com/v7.0/search"
19 |
20 | mkt = "en-US"
21 | params = {"q": query, "mkt": mkt, "count": settings.num_search_results}
22 | headers = {"Ocp-Apim-Subscription-Key": subscription_key}
23 |
24 | try:
25 | with httpx.Client(timeout=10.0) as client:
26 | response = client.get(endpoint, headers=headers, params=params)
27 | response.raise_for_status()
28 | response_data = response.json()
29 |
30 | results: list[SearchResult] = []
31 | for web_page in response_data["webPages"]["value"]:
32 | results.append(
33 | SearchResult(
34 | display_url=web_page["displayUrl"],
35 | url=web_page["url"],
36 | name=web_page["name"],
37 | snippet=web_page["snippet"],
38 | )
39 | )
40 |
41 | return results
42 | except Exception as ex:
43 | raise ex
44 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-open-deep-research-clone/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "mcp-server-open-deep-research-clone"
3 | version = "0.1.0"
4 | description = "Uses the web to research a given topic."
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11"
8 | dependencies = [
9 | "mcp>=1.2.1",
10 | "skill-library>=0.1.0",
11 | "content-safety>=0.1.0",
12 | "openai-client>=0.1.0",
13 | "assistant-drive>=0.1.0",
14 | "mcp-extensions[openai]>=0.1.0",
15 | ]
16 |
17 | [project.scripts]
18 | mcp-server-open-deep-research-clone = "mcp_server_open_deep_research_clone.start:main"
19 |
20 | [dependency-groups]
21 | dev = [
22 | "pytest>=8.3.1",
23 | "pytest-asyncio>=0.23.8",
24 | "pytest-repeat>=0.9.3",
25 | "pyright>=1.1.389",
26 | ]
27 |
28 | [tool.uv]
29 | package = true
30 |
31 | [tool.uv.sources]
32 | skill-library = { path = "../../libraries/python/skills/skill-library", editable = true }
33 | content-safety = { path = "../../libraries/python/content-safety", editable = true }
34 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
35 | assistant-drive = { path = "../../libraries/python/assistant-drive", editable = true }
36 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
37 |
38 | [build-system]
39 | requires = ["hatchling"]
40 | build-backend = "hatchling.build"
41 |
42 | [tool.pyright]
43 | exclude = ["**/.venv", "**/.data", "**/__pycache__"]
44 |
45 | [tool.pytest.ini_options]
46 | addopts = ["-vv", "--capture=no"]
47 | log_cli = true
48 | log_cli_level = "WARNING"
49 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
50 | asyncio_mode = "auto"
51 | asyncio_default_fixture_loop_scope = "function"
52 |
```
--------------------------------------------------------------------------------
/examples/dotnet/dotnet-02-message-types-demo/MyAgentConfig.cs:
--------------------------------------------------------------------------------
```csharp
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | using System.Text.Json.Serialization;
4 | using Microsoft.SemanticWorkbench.Connector;
5 |
6 | namespace AgentExample;
7 |
8 | public class MyAgentConfig : AgentConfigBase
9 | {
10 | [JsonPropertyName(nameof(this.ReplyToAgents))]
11 | [JsonPropertyOrder(10)]
12 | [AgentConfigProperty("type", "boolean")]
13 | [AgentConfigProperty("title", "Reply to other assistants in conversations")]
14 | [AgentConfigProperty("description", "Reply to assistants")]
15 | [AgentConfigProperty("default", false)]
16 | public bool ReplyToAgents { get; set; } = false;
17 |
18 | [JsonPropertyName(nameof(this.CommandsEnabled))]
19 | [JsonPropertyOrder(20)]
20 | [AgentConfigProperty("type", "boolean")]
21 | [AgentConfigProperty("title", "Support commands")]
22 | [AgentConfigProperty("description", "Support commands, e.g. /say")]
23 | [AgentConfigProperty("default", false)]
24 | public bool CommandsEnabled { get; set; } = false;
25 |
26 | [JsonPropertyName(nameof(this.Behavior))]
27 | [JsonPropertyOrder(30)]
28 | [AgentConfigProperty("type", "string")]
29 | [AgentConfigProperty("default", "echo")]
30 | [AgentConfigProperty("enum", new[] { "echo", "reverse", "safety check", "markdown sample", "code sample", "json sample", "mermaid sample", "html sample", "music sample", "none" })]
31 | [AgentConfigProperty("title", "How to reply")]
32 | [AgentConfigProperty("description", "How to reply to messages, what logic to use.")]
33 | [AgentConfigProperty("uischema", "radiobutton")]
34 | public string Behavior { get; set; } = "none";
35 | }
36 |
```
--------------------------------------------------------------------------------
/examples/dotnet/dotnet-02-message-types-demo/ConnectorExtensions.cs:
--------------------------------------------------------------------------------
```csharp
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | using System.Text;
4 | using Microsoft.SemanticWorkbench.Connector;
5 |
6 | namespace AgentExample;
7 |
8 | public static class ConnectorExtensions
9 | {
10 | public static string GetParticipantName(this Conversation conversation, string id)
11 | {
12 | if (conversation.Participants.TryGetValue(id, out Participant? participant))
13 | {
14 | return participant.Name;
15 | }
16 |
17 | return "Unknown";
18 | }
19 |
20 | public static string ToHtmlString(
21 | this Conversation conversation,
22 | string assistantId)
23 | {
24 | var result = new StringBuilder();
25 | result.AppendLine("<style>");
26 | result.AppendLine("DIV.conversationHistory { padding: 0 20px 60px 20px; }");
27 | result.AppendLine("DIV.conversationHistory P { margin: 0 0 8px 0; }");
28 | result.AppendLine("</style>");
29 | result.AppendLine("<div class='conversationHistory'>");
30 |
31 | foreach (var msg in conversation.Messages)
32 | {
33 | result.AppendLine("<p>");
34 | if (msg.Sender.Id == assistantId)
35 | {
36 | result.AppendLine("<b>Assistant</b><br/>");
37 | }
38 | else
39 | {
40 | result
41 | .Append("<b>")
42 | .Append(conversation.GetParticipantName(msg.Sender.Id))
43 | .AppendLine("</b><br/>");
44 | }
45 |
46 | result.AppendLine(msg.Content).AppendLine("</p>");
47 | }
48 |
49 | result.Append("</div>");
50 |
51 | return result.ToString();
52 | }
53 | }
54 |
```
--------------------------------------------------------------------------------
/libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/storage.py:
--------------------------------------------------------------------------------
```python
1 | import logging
2 | import os
3 | import pathlib
4 | from typing import Any, Iterator, TypeVar
5 |
6 | from pydantic import BaseModel
7 | from pydantic_settings import BaseSettings, SettingsConfigDict
8 |
9 | logger = logging.getLogger(__name__)
10 |
11 |
12 | class FileStorageSettings(BaseSettings):
13 | model_config = SettingsConfigDict(extra="allow")
14 |
15 | root: str = ".data/files"
16 |
17 |
18 | def write_model(
19 | file_path: os.PathLike,
20 | value: BaseModel,
21 | serialization_context: dict[str, Any] | None = None,
22 | ) -> None:
23 | """Write a pydantic model to a file."""
24 | path = pathlib.Path(file_path)
25 | if not path.parent.exists():
26 | path.parent.mkdir(parents=True)
27 |
28 | data_json = value.model_dump_json(context=serialization_context, indent=2)
29 | path.write_text(data_json, encoding="utf-8")
30 |
31 |
32 | ModelT = TypeVar("ModelT", bound=BaseModel)
33 |
34 |
35 | def read_model(
36 | file_path: os.PathLike | str, cls: type[ModelT], strict: bool | None = None
37 | ) -> ModelT | None:
38 | """Read a pydantic model from a file."""
39 | path = pathlib.Path(file_path)
40 |
41 | try:
42 | data_json = path.read_text(encoding="utf-8")
43 | except (FileNotFoundError, ValueError):
44 | return None
45 |
46 | return cls.model_validate_json(data_json, strict=strict)
47 |
48 |
49 | def read_models_in_dir(dir_path: os.PathLike, cls: type[ModelT]) -> Iterator[ModelT]:
50 | """Read pydantic models from all files in a directory."""
51 | path = pathlib.Path(dir_path)
52 | if not path.is_dir():
53 | return
54 |
55 | for file_path in path.iterdir():
56 | value = read_model(file_path, cls)
57 | if value is not None:
58 | yield value
59 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-giphy/mcp_server/giphy_search.py:
--------------------------------------------------------------------------------
```python
1 | # Giphy Search Functionality
2 |
3 | from typing import List, Optional
4 | from .config import settings
5 |
6 | import requests
7 | from mcp.server.fastmcp import Context
8 | from mcp_extensions import send_tool_call_progress
9 | from pydantic import BaseModel
10 |
11 | from mcp_server.sampling import perform_sampling
12 |
13 |
14 | class GiphyResponse(BaseModel):
15 | data: List[dict]
16 |
17 |
18 | async def perform_search(context: str, search_term: str, ctx: Context) -> Optional[dict]:
19 | await send_tool_call_progress(ctx, "searching for images...")
20 |
21 | # Perform GIPHY search
22 | search_results = await search(search_term)
23 |
24 | if not search_results:
25 | return None
26 |
27 | # Create sampling request message, integrating search results and context
28 | sampling_result = await perform_sampling(
29 | context=context,
30 | search_results=search_results,
31 | ctx=ctx,
32 | )
33 |
34 | if sampling_result.type == "image":
35 | return {
36 | "data": sampling_result.data,
37 | "mimeType": sampling_result.mimeType,
38 | }
39 | else:
40 | return {
41 | "text": sampling_result.text,
42 | }
43 |
44 |
45 | async def search(search_term: str) -> Optional[List[dict]]:
46 | if not settings.giphy_api_key:
47 | raise ValueError("Giphy API key is not set in the configuration.")
48 |
49 | giphy_url = f"https://api.giphy.com/v1/gifs/search?api_key={settings.giphy_api_key}&q={search_term}&limit=5"
50 | response = requests.get(giphy_url)
51 | if response.status_code == 200:
52 | return GiphyResponse(**response.json()).data
53 | else:
54 | raise Exception("Failed to retrieve Giphy results.")
55 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/FrontDoor/Chat/ConversationDrawer.tsx:
--------------------------------------------------------------------------------
```typescript
1 | import React from 'react';
2 | import { Conversation } from '../../../models/Conversation';
3 | import { ConversationFile } from '../../../models/ConversationFile';
4 | import { ConversationParticipant } from '../../../models/ConversationParticipant';
5 | import { ConversationCanvas } from '../../Conversations/Canvas/ConversationCanvas';
6 | import { CanvasDrawer, CanvasDrawerOptions } from './CanvasDrawer';
7 |
8 | interface ConversationDrawerProps {
9 | drawerOptions: CanvasDrawerOptions;
10 | readOnly: boolean;
11 | conversation: Conversation;
12 | conversationParticipants: ConversationParticipant[];
13 | conversationFiles: ConversationFile[];
14 | preventAssistantModifyOnParticipantIds?: string[];
15 | }
16 |
17 | export const ConversationDrawer: React.FC<ConversationDrawerProps> = (props) => {
18 | const {
19 | drawerOptions,
20 | readOnly,
21 | conversation,
22 | conversationParticipants,
23 | conversationFiles,
24 | preventAssistantModifyOnParticipantIds,
25 | } = props;
26 |
27 | const options: CanvasDrawerOptions = React.useMemo(
28 | () => ({
29 | ...drawerOptions,
30 | size: 'small',
31 | }),
32 | [drawerOptions],
33 | );
34 |
35 | return (
36 | <CanvasDrawer options={options}>
37 | <ConversationCanvas
38 | readOnly={readOnly}
39 | conversation={conversation}
40 | conversationParticipants={conversationParticipants}
41 | conversationFiles={conversationFiles}
42 | preventAssistantModifyOnParticipantIds={preventAssistantModifyOnParticipantIds}
43 | />
44 | </CanvasDrawer>
45 | );
46 | };
47 |
```
--------------------------------------------------------------------------------
/libraries/python/mcp-tunnel/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "python.analysis.autoFormatStrings": true,
14 | "python.analysis.autoImportCompletions": true,
15 | "python.analysis.diagnosticMode": "workspace",
16 | "python.analysis.fixAll": [
17 | "source.unusedImports"
18 | ],
19 | "python.analysis.inlayHints.functionReturnTypes": true,
20 | "python.analysis.typeCheckingMode": "standard",
21 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
22 | "python.testing.pytestEnabled": false,
23 | "[python]": {
24 | "editor.defaultFormatter": "charliermarsh.ruff",
25 | "editor.formatOnSave": true,
26 | "editor.codeActionsOnSave": {
27 | "source.fixAll": "explicit",
28 | "source.unusedImports": "explicit",
29 | "source.organizeImports": "explicit",
30 | "source.formatDocument": "explicit"
31 | }
32 | },
33 | "ruff.nativeServer": "on",
34 | "search.exclude": {
35 | "**/.venv": true,
36 | "**/.data": true,
37 | "**/__pycache__": true
38 | },
39 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
40 | "cSpell.ignorePaths": [
41 | ".venv",
42 | "node_modules",
43 | "package-lock.json",
44 | "settings.json",
45 | "uv.lock"
46 | ],
47 | "cSpell.words": [
48 | "asyncio",
49 | "deepmerge",
50 | "fastmcp",
51 | "interoperating",
52 | "Lifecycles",
53 | "pydantic",
54 | "pyright",
55 | "pytest"
56 | ]
57 | }
58 |
```
--------------------------------------------------------------------------------
/libraries/python/mcp-extensions/mcp_extensions/server/storage.py:
--------------------------------------------------------------------------------
```python
1 | import os
2 | import pathlib
3 | from typing import Annotated, Any, Iterator, TypeVar
4 |
5 | from pydantic import BaseModel, Field
6 | from pydantic_settings import BaseSettings, SettingsConfigDict
7 |
8 |
9 | class FileStorageSettings(BaseSettings):
10 | model_config = SettingsConfigDict(extra="allow")
11 |
12 | root: Annotated[str, Field(validation_alias="file_storage_root")] = ".data/files"
13 |
14 |
15 | settings = FileStorageSettings()
16 |
17 |
18 | def write_model(file_path: os.PathLike, value: BaseModel, serialization_context: dict[str, Any] | None = None) -> None:
19 | """Write a pydantic model to a file."""
20 | path = pathlib.Path(file_path)
21 | if not path.parent.exists():
22 | path.parent.mkdir(parents=True)
23 |
24 | data_json = value.model_dump_json(context=serialization_context)
25 | path.write_text(data_json, encoding="utf-8")
26 |
27 |
28 | ModelT = TypeVar("ModelT", bound=BaseModel)
29 |
30 |
31 | def read_model(file_path: os.PathLike | str, cls: type[ModelT], strict: bool | None = None) -> ModelT | None:
32 | """Read a pydantic model from a file."""
33 | path = pathlib.Path(file_path)
34 |
35 | try:
36 | data_json = path.read_text(encoding="utf-8")
37 | except (FileNotFoundError, ValueError):
38 | return None
39 |
40 | return cls.model_validate_json(data_json, strict=strict)
41 |
42 |
43 | def read_models_in_dir(dir_path: os.PathLike, cls: type[ModelT]) -> Iterator[ModelT]:
44 | """Read pydantic models from all files in a directory."""
45 | path = pathlib.Path(dir_path)
46 | if not path.is_dir():
47 | return
48 |
49 | for file_path in path.iterdir():
50 | value = read_model(file_path, cls)
51 | if value is not None:
52 | yield value
53 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_ctf_writeup/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are a seasoned cyber security veteran. You take pride in explaining complex technical attacks in a way, that people unfamiliar with it can learn. You focus on concise, step by step explanations after giving a short summary of the executed attack.
4 |
5 | Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
6 |
7 | # STEPS
8 |
9 | - Extract a management summary of the content in less than 50 words. Include the Vulnerabilities found and the learnings into a section called SUMMARY.
10 |
11 | - Extract a list of all exploited vulnerabilities. Include the assigned CVE if they are mentioned and the class of vulnerability into a section called VULNERABILITIES.
12 |
13 | - Extract a timeline of the attacks demonstrated. Structure it in a chronological list with the steps as sub-lists. Include details such as used tools, file paths, URLs, version information etc. The section is called TIMELINE.
14 |
15 | - Extract all mentions of tools, websites, articles, books, reference materials and other sources of information mentioned by the speakers into a section called REFERENCES. This should include any and all references to something that the speaker mentioned.
16 |
17 |
18 |
19 | # OUTPUT INSTRUCTIONS
20 |
21 | - Only output Markdown.
22 |
23 | - Do not give warnings or notes; only output the requested sections.
24 |
25 | - You use bulleted lists for output, not numbered lists.
26 |
27 | - Do not repeat ideas, quotes, facts, or resources.
28 |
29 | - Do not start items with the same opening words.
30 |
31 | - Ensure you follow ALL these instructions when creating your output.
32 |
33 | # INPUT
34 |
35 | INPUT:
36 |
```
--------------------------------------------------------------------------------
/libraries/python/semantic-workbench-assistant/tests/test_storage.py:
--------------------------------------------------------------------------------
```python
1 | import tempfile
2 | from pathlib import Path
3 | from typing import Annotated
4 |
5 | import pydantic
6 | import pytest
7 | from pydantic import AliasChoices, BaseModel, Field
8 | from semantic_workbench_assistant import storage
9 |
10 |
11 | def test_read_non_existing():
12 | class TestModel(BaseModel):
13 | pass
14 |
15 | result = storage.read_model("./x", TestModel)
16 |
17 | assert result is None
18 |
19 |
20 | def test_write_read_model():
21 | class SubModel(BaseModel):
22 | sub_name: str
23 |
24 | class TestModel(BaseModel):
25 | name: str
26 | sub: SubModel
27 |
28 | with tempfile.TemporaryDirectory() as temp_dir:
29 | value = TestModel(name="test", sub=SubModel(sub_name="sub"))
30 |
31 | value_path = Path(temp_dir) / "model.json"
32 | storage.write_model(file_path=value_path, value=value)
33 |
34 | assert storage.read_model(value_path, TestModel) == value
35 |
36 |
37 | def test_write_read_updated_model():
38 | class TestModel(BaseModel):
39 | name: str
40 |
41 | class TestModelBreaking(BaseModel):
42 | name_new: str
43 |
44 | class TestModelSupportsOldName(BaseModel):
45 | name_new: Annotated[
46 | str,
47 | Field(validation_alias=AliasChoices("name", "name_new")),
48 | ]
49 |
50 | with tempfile.TemporaryDirectory() as temp_dir:
51 | value = TestModel(name="test")
52 |
53 | value_path = Path(temp_dir) / "model.json"
54 | storage.write_model(file_path=value_path, value=value)
55 |
56 | with pytest.raises(pydantic.ValidationError):
57 | storage.read_model(value_path, TestModelBreaking)
58 |
59 | assert storage.read_model(value_path, TestModelSupportsOldName) == TestModelSupportsOldName(name_new="test")
60 |
```
--------------------------------------------------------------------------------
/libraries/python/mcp-extensions/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "python.analysis.autoFormatStrings": true,
14 | "python.analysis.autoImportCompletions": true,
15 | "python.analysis.diagnosticMode": "workspace",
16 | "python.analysis.fixAll": ["source.unusedImports"],
17 | "python.analysis.inlayHints.functionReturnTypes": true,
18 | "python.analysis.typeCheckingMode": "standard",
19 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
20 | "python.testing.pytestEnabled": true,
21 | "[python]": {
22 | "editor.defaultFormatter": "charliermarsh.ruff",
23 | "editor.formatOnSave": true,
24 | "editor.codeActionsOnSave": {
25 | "source.fixAll": "explicit",
26 | "source.unusedImports": "explicit",
27 | "source.organizeImports": "explicit",
28 | "source.formatDocument": "explicit"
29 | }
30 | },
31 | "ruff.nativeServer": "on",
32 | "search.exclude": {
33 | "**/.venv": true,
34 | "**/.data": true,
35 | "**/__pycache__": true
36 | },
37 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
38 | "cSpell.ignorePaths": [
39 | ".venv",
40 | "node_modules",
41 | "package-lock.json",
42 | "settings.json",
43 | "uv.lock"
44 | ],
45 | "cSpell.words": [
46 | "aoai",
47 | "asyncio",
48 | "deepmerge",
49 | "fastmcp",
50 | "interoperating",
51 | "Lifecycles",
52 | "OAIAPI",
53 | "pydantic",
54 | "pyright",
55 | "pytest"
56 | ]
57 | }
58 |
```
--------------------------------------------------------------------------------
/libraries/python/chat-context-toolkit/chat_context_toolkit/virtual_filesystem/tools/_tools.py:
--------------------------------------------------------------------------------
```python
1 | import json
2 | from typing import Iterable
3 |
4 | from openai.types.chat import ChatCompletionContentPartTextParam, ChatCompletionMessageToolCallParam
5 |
6 | from chat_context_toolkit.virtual_filesystem._types import ToolDefinition
7 |
8 |
9 | class ToolCollection(list[ToolDefinition]):
10 | def __init__(self, tools: Iterable[ToolDefinition]):
11 | super().__init__(tools)
12 |
13 | def has_tool(self, tool_name: str) -> bool:
14 | return self.get_tool(tool_name) is not None
15 |
16 | def get_tool(self, tool_name: str) -> ToolDefinition | None:
17 | for tool in self:
18 | if tool.tool_param["function"]["name"] == tool_name:
19 | return tool
20 | return None
21 |
22 | async def execute_tool(
23 | self, tool_call: ChatCompletionMessageToolCallParam
24 | ) -> str | Iterable[ChatCompletionContentPartTextParam]:
25 | """Execute a tool with the given name and arguments."""
26 |
27 | tool_name = tool_call["function"]["name"]
28 |
29 | tool_definition = self.get_tool(tool_name)
30 | if tool_definition is None:
31 | raise ValueError(f"Tool not found: {tool_name}")
32 |
33 | try:
34 | args = json.loads(tool_call["function"]["arguments"])
35 | except json.JSONDecodeError:
36 | return f"Error: Invalid JSON arguments: {tool_call['function']['arguments']}"
37 |
38 | return await tool_definition.execute(args)
39 |
40 |
41 | def tool_result_to_string(tool_result: str | Iterable[ChatCompletionContentPartTextParam]) -> str:
42 | match tool_result:
43 | case str():
44 | return tool_result
45 | case Iterable():
46 | return "\n".join(part["text"] for part in tool_result)
47 |
```
--------------------------------------------------------------------------------
/workbench-app/src/libs/AppStorage.ts:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | import debug from 'debug';
4 | import { Constants } from '../Constants';
5 |
6 | const log = debug(Constants.debug.root).extend('app-storage');
7 |
8 | export class AppStorage {
9 | public static instance: AppStorage | undefined;
10 |
11 | public static getInstance = () => {
12 | if (!this.instance) {
13 | this.instance = new AppStorage();
14 | }
15 | return this.instance;
16 | };
17 |
18 | public getValueOrDefault = <T>(storageKey: string, defaultValue: T) => {
19 | const value = window.localStorage.getItem(storageKey);
20 | if (value) {
21 | return value as T;
22 | }
23 | return defaultValue;
24 | };
25 |
26 | public saveValue = (storageKey: string, value?: unknown) => {
27 | if (!value) {
28 | window.localStorage.removeItem(storageKey);
29 | return;
30 | }
31 |
32 | window.localStorage.setItem(storageKey, value as string);
33 | };
34 |
35 | public loadObject = <T>(storageKey: string) => {
36 | return this.deserializeData<T>(window.localStorage.getItem(storageKey));
37 | };
38 |
39 | public saveObject = (storageKey: string, object?: unknown) => {
40 | if (!object) {
41 | window.localStorage.removeItem(storageKey);
42 | return;
43 | }
44 |
45 | window.localStorage.setItem(storageKey, JSON.stringify(object));
46 | };
47 |
48 | private readonly deserializeData = <T>(data: string | null) => {
49 | if (!data) {
50 | return undefined;
51 | }
52 | try {
53 | return JSON.parse(data) as T;
54 | } catch (error) {
55 | log(error);
56 | return undefined;
57 | }
58 | };
59 | }
60 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/explain_terms/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY
2 |
3 | You are the world's best explainer of terms required to understand a given piece of content. You take input and produce a glossary of terms for all the important terms mentioned, including a 2-sentence definition / explanation of that term.
4 |
5 | # STEPS
6 |
7 | - Consume the content.
8 |
9 | - Fully and deeply understand the content, and what it's trying to convey.
10 |
11 | - Look for the more obscure or advanced terms mentioned in the content, so not the basic ones but the more advanced terms.
12 |
13 | - Think about which of those terms would be best to explain to someone trying to understand this content.
14 |
15 | - Think about the order of terms that would make the most sense to explain.
16 |
17 | - Think of the name of the term, the definition or explanation, and also an analogy that could be useful in explaining it.
18 |
19 | # OUTPUT
20 |
21 | - Output the full list of advanced, terms used in the content.
22 |
23 | - For each term, use the following format for the output:
24 |
25 | ## EXAMPLE OUTPUT
26 |
27 | - STOCHASTIC PARROT: In machine learning, the term stochastic parrot is a metaphor to describe the theory that large language models, though able to generate plausible language, do not understand the meaning of the language they process.
28 | -- Analogy: A parrot that can recite a poem in a foreign language without understanding it.
29 | -- Why It Matters: It pertains to the debate about whether AI actually understands things vs. just mimicking patterns.
30 |
31 | # OUTPUT FORMAT
32 |
33 | - Output in the format above only using valid Markdown.
34 |
35 | - Do not use bold or italic formatting in the Markdown (no asterisks).
36 |
37 | - Do not complain about anything, just do what you're told.
38 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_git_diff/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 in a Git diff.
4 |
5 | # STEPS
6 |
7 | - Read the input and figure out what the major changes and upgrades were that happened.
8 |
9 | - Output a maximum 100 character intro sentence that says something like, "chore: refactored the `foobar` method to support new 'update' arg"
10 |
11 | - Create a section called CHANGES with a set of 7-10 word bullets that describe the feature changes and updates.
12 |
13 | - keep the number of bullets limited and succinct
14 |
15 | # OUTPUT INSTRUCTIONS
16 |
17 | - Use conventional commits - i.e. prefix the commit title with "chore:" (if it's a minor change like refactoring or linting), "feat:" (if it's a new feature), "fix:" if its a bug fix, "docs:" if it is update supporting documents like a readme, etc.
18 |
19 | - the full list of commit prefixes are: 'build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test'.
20 |
21 | - You only output human readable Markdown, except for the links, which should be in HTML format.
22 |
23 | - You only describe your changes in imperative mood, e.g. "make xyzzy do frotz" instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy to do frotz", as if you are giving orders to the codebase to change its behavior. Try to make sure your explanation can be understood without external resources. Instead of giving a URL to a mailing list archive, summarize the relevant points of the discussion.
24 |
25 | - You do not use past tense only the present tense
26 |
27 | - You follow the Deis Commit Style Guide
28 |
29 | # INPUT:
30 |
31 | INPUT:
32 |
```
--------------------------------------------------------------------------------
/assistants/document-assistant/assistant/filesystem/_model.py:
--------------------------------------------------------------------------------
```python
1 | # Copyright (c) Microsoft. All rights reserved.
2 |
3 | import datetime
4 | from typing import Annotated, Any, Literal, Protocol
5 |
6 | from pydantic import BaseModel, Field
7 | from semantic_workbench_assistant.assistant_app import ConversationContext
8 | from semantic_workbench_assistant.config import UISchema
9 |
10 |
11 | class AttachmentsConfigModel(BaseModel):
12 | context_description: Annotated[
13 | str,
14 | Field(
15 | description="The description of the context for general response generation.",
16 | ),
17 | UISchema(widget="textarea"),
18 | ] = (
19 | "These attachments were provided for additional context to accompany the conversation. Consider any rationale"
20 | " provided for why they were included."
21 | )
22 |
23 | preferred_message_role: Annotated[
24 | Literal["system", "user"],
25 | Field(
26 | description=(
27 | "The preferred role for attachment messages. Early testing suggests that the system role works best,"
28 | " but you can experiment with the other roles. Image attachments will always use the user role."
29 | ),
30 | ),
31 | ] = "system"
32 |
33 |
34 | class Attachment(BaseModel):
35 | filename: str
36 | content: str = ""
37 | error: str = ""
38 | metadata: dict[str, Any] = {}
39 | updated_datetime: datetime.datetime = Field(default=datetime.datetime.fromtimestamp(0, datetime.timezone.utc))
40 |
41 |
42 | class FilesystemFile(BaseModel):
43 | summary: str = ""
44 |
45 |
46 | class DocumentEditorConfigModel(Protocol):
47 | enabled: bool
48 |
49 |
50 | class DocumentEditorConfigProvider(Protocol):
51 | async def __call__(self, ctx: ConversationContext) -> DocumentEditorConfigModel: ...
52 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/App/ErrorListFromAppState.tsx:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | import { MessageBarGroup, makeStyles, mergeClasses, shorthands, tokens } from '@fluentui/react-components';
4 | import React from 'react';
5 | import { useAppDispatch, useAppSelector } from '../../redux/app/hooks';
6 | import { RootState } from '../../redux/app/store';
7 | import { removeError } from '../../redux/features/app/appSlice';
8 | import { ErrorMessageBar } from './ErrorMessageBar';
9 |
10 | const useClasses = makeStyles({
11 | root: {
12 | display: 'flex',
13 | flexDirection: 'column',
14 | alignItems: 'center',
15 | justifyContent: 'center',
16 | backgroundColor: tokens.colorPaletteRedBackground2,
17 | gap: tokens.spacingVerticalM,
18 | ...shorthands.padding(tokens.spacingVerticalM, tokens.spacingHorizontalM),
19 | },
20 | });
21 |
22 | interface ErrorListFromAppStateProps {
23 | className?: string;
24 | }
25 |
26 | export const ErrorListFromAppState: React.FC<ErrorListFromAppStateProps> = (props) => {
27 | const { className } = props;
28 | const classes = useClasses();
29 | const errors = useAppSelector((state: RootState) => state.app.errors);
30 | const dispatch = useAppDispatch();
31 |
32 | if (!errors || errors.length === 0) {
33 | return null;
34 | }
35 |
36 | return (
37 | <MessageBarGroup className={mergeClasses(classes.root, className)}>
38 | {errors.map((error) => (
39 | <ErrorMessageBar
40 | key={error.id}
41 | title={error.title}
42 | error={error.message}
43 | onDismiss={() => dispatch(removeError(error.id))}
44 | />
45 | ))}
46 | </MessageBarGroup>
47 | );
48 | };
49 |
```
--------------------------------------------------------------------------------
/assistants/prospector-assistant/assistant/legacy.py:
--------------------------------------------------------------------------------
```python
1 | import datetime
2 |
3 | from semantic_workbench_api_model.workbench_model import MessageType, NewConversationMessage
4 | from semantic_workbench_assistant.assistant_app.context import ConversationContext, storage_directory_for_context
5 |
6 | _legacy_prospector_cutoff_date = datetime.datetime(2024, 10, 29, 12, 40, tzinfo=datetime.UTC)
7 |
8 |
9 | async def provide_guidance_if_necessary(context: ConversationContext) -> None:
10 | """
11 | Check if the conversation is a legacy Prospector conversation and provide guidance to the user.
12 | """
13 | marker_path = storage_directory_for_context(context) / "legacy_prospector_check_completed"
14 |
15 | if marker_path.exists():
16 | return
17 |
18 | marker_path.parent.mkdir(parents=True, exist_ok=True)
19 | marker_path.touch()
20 |
21 | conversation_response = await context.get_conversation()
22 | # show the message if the conversation was created before the cutoff date
23 | if conversation_response.created_datetime.timestamp() >= _legacy_prospector_cutoff_date.timestamp():
24 | return
25 |
26 | await context.send_messages(
27 | NewConversationMessage(
28 | content=(
29 | "The Prospector Assistant is transitioning to an assistant-guided experience."
30 | " Since your conversation started before this change, we recommend the following"
31 | " steps to continue with the user-guided experience:\n\n"
32 | " 1. Open the side panel.\n"
33 | " 2. Remove the Prospector Assistant. \n"
34 | " 3. Add the Explorer Assistant (create one if necessary).\n"
35 | ),
36 | message_type=MessageType.notice,
37 | )
38 | )
39 |
```
--------------------------------------------------------------------------------
/libraries/python/openai-client/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "python.analysis.autoFormatStrings": true,
14 | "python.analysis.autoImportCompletions": true,
15 | "python.analysis.diagnosticMode": "workspace",
16 | "python.analysis.fixAll": [
17 | "source.unusedImports"
18 | ],
19 | "python.analysis.inlayHints.functionReturnTypes": true,
20 | "python.analysis.typeCheckingMode": "standard",
21 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
22 | "python.testing.pytestEnabled": true,
23 | "[python]": {
24 | "editor.defaultFormatter": "charliermarsh.ruff",
25 | "editor.formatOnSave": true,
26 | "editor.codeActionsOnSave": {
27 | "source.fixAll": "explicit",
28 | "source.unusedImports": "explicit",
29 | "source.organizeImports": "explicit",
30 | "source.formatDocument": "explicit"
31 | }
32 | },
33 | "ruff.nativeServer": "on",
34 | "search.exclude": {
35 | "**/.venv": true,
36 | "**/.data": true,
37 | "**/__pycache__": true
38 | },
39 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
40 | "cSpell.ignorePaths": [
41 | ".venv",
42 | "node_modules",
43 | "package-lock.json",
44 | "settings.json",
45 | "uv.lock"
46 | ],
47 | "cSpell.words": [
48 | "addopts",
49 | "asctime",
50 | "contentsafety",
51 | "elts",
52 | "levelname",
53 | "openai",
54 | "Pydantic",
55 | "pyright",
56 | "pytest",
57 | "testpaths",
58 | "tiktoken"
59 | ]
60 | }
```