#
tokens: 49901/50000 23/1784 files (page 27/145)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 27 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/skills/skill-library/skill_library/skills/fabric/patterns/analyze_threat_report_cmds/system.md:
--------------------------------------------------------------------------------

```markdown
 1 | # IDENTITY and PURPOSE
 2 | 
 3 | You are tasked with interpreting and responding to cybersecurity-related prompts by synthesizing information from a diverse panel of experts in the field. Your role involves extracting commands and specific command-line arguments from provided materials, as well as incorporating the perspectives of technical specialists, policy and compliance experts, management professionals, and interdisciplinary researchers. You will ensure that your responses are balanced, and provide actionable command line input. You should aim to clarify complex commands for non-experts. Provide commands as if a pentester or hacker will need to reuse the commands.
 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 commands related to cybersecurity from the given paper or video.
10 | 
11 | - Add specific command line arguments and additional details related to the tool use and application.
12 | 
13 | - Use a template that incorporates a diverse panel of cybersecurity experts for analysis.
14 | 
15 | - Reference recent research and reports from reputable sources.
16 | 
17 | - Use a specific format for citations.
18 | 
19 | - Maintain a professional tone while making complex topics accessible.
20 | 
21 | - Offer to clarify any technical terms or concepts that may be unfamiliar to non-experts.
22 | 
23 | # OUTPUT INSTRUCTIONS
24 | 
25 | - The only output format is Markdown.
26 | 
27 | - Ensure you follow ALL these instructions when creating your output.
28 | 
29 | ## EXAMPLE
30 | 
31 | - Reconnaissance and Scanning Tools:
32 | Nmap: Utilized for scanning and writing custom scripts via the Nmap Scripting Engine (NSE).
33 | Commands:
34 | nmap -p 1-65535 -T4 -A -v <Target IP>: A full scan of all ports with service detection, OS detection, script scanning, and traceroute.
35 | nmap --script <NSE Script Name> <Target IP>: Executes a specific Nmap Scripting Engine script against the target.
36 | 
37 | - Exploits and Vulnerabilities:
38 | CVE Exploits: Example usage of scripts to exploit known CVEs.
39 | Commands:
40 | CVE-2020-1472:
41 | Exploited using a Python script or Metasploit module that exploits the Zerologon vulnerability.
42 | CVE-2021-26084:
43 | python confluence_exploit.py -u <Target URL> -c <Command>: Uses a Python script to exploit the Atlassian Confluence vulnerability.
44 | 
45 | - BloodHound: Used for Active Directory (AD) reconnaissance.
46 | Commands:
47 | SharpHound.exe -c All: Collects data from the AD environment to find attack paths.
48 | 
49 | CrackMapExec: Used for post-exploitation automation.
50 | Commands:
51 | cme smb <Target IP> -u <User> -p <Password> --exec-method smbexec --command <Command>: Executes a command on a remote system using the SMB protocol.
52 | 
53 | 
54 | # INPUT
55 | 
56 | INPUT:
57 | 
```

--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/types.py:
--------------------------------------------------------------------------------

```python
 1 | # Copyright (c) Microsoft. All rights reserved.
 2 | 
 3 | from typing import Any, Callable, Literal
 4 | 
 5 | from mcp.server.fastmcp import Context
 6 | from mcp_extensions.llm.llm_types import MessageT, ToolCall
 7 | from pydantic import BaseModel, Field
 8 | 
 9 | 
10 | class CustomContext(BaseModel):
11 |     chat_history: list[MessageT]
12 |     document: str
13 |     file_type: Literal["markdown", "latex"] = Field(default="markdown")
14 |     additional_context: str
15 | 
16 | 
17 | class FileOpRequest(BaseModel):
18 |     context: Context | CustomContext
19 |     request_type: Literal["dev", "mcp"] = Field(default="mcp")
20 |     chat_completion_client: Callable[..., Any] | None = Field(default=None)
21 |     file_type: Literal["markdown", "latex", "word", "powerpoint"] = Field(default="markdown")
22 |     file_content: str = Field(default="")
23 |     task: str = Field(default="")
24 | 
25 | 
26 | class EditOutput(BaseModel):
27 |     change_summary: str
28 |     output_message: str
29 |     new_content: str
30 |     reasoning: str
31 |     tool_calls: list[ToolCall]
32 |     llm_latency: float
33 | 
34 | 
35 | class CommentOutput(BaseModel):
36 |     new_content: str
37 |     comment_instructions: str
38 |     reasoning: str
39 |     tool_calls: list[ToolCall]
40 |     llm_latency: float
41 | 
42 | 
43 | class Block(BaseModel):
44 |     id: int
45 |     content: str
46 | 
47 | 
48 | class EditOperation(BaseModel):
49 |     type: str
50 | 
51 | 
52 | class InsertOperation(EditOperation):
53 |     type: str = "insert"
54 |     index: int
55 |     content: str
56 | 
57 | 
58 | class UpdateOperation(EditOperation):
59 |     type: str = "update"
60 |     index: int
61 |     content: str
62 | 
63 | 
64 | class RemoveOperation(EditOperation):
65 |     type: str = "remove"
66 |     start_index: int
67 |     end_index: int
68 | 
69 | 
70 | class TestCase(BaseModel):
71 |     test_case_name: str
72 |     test_case_type: Literal["writing", "comments", "presentation"] = Field(default="writing")
73 |     file_type: Literal["markdown", "latex"] = Field(default="markdown")
74 |     transcription_file: str
75 |     open_file: str | None = Field(
76 |         default=None, description="The txt or md file to load containing the document content."
77 |     )
78 |     next_ask: str
79 |     attachments: list[str] = Field(default_factory=list)
80 | 
81 | 
82 | class FileOpTelemetry(BaseModel):
83 |     reasoning_latency: float = Field(default=0.0, description="Time spent on reasoning LLM call in seconds")
84 |     convert_latency: float = Field(default=0.0, description="Time spent on convert LLM call in seconds")
85 |     change_summary_latency: float = Field(default=0.0, description="Time spent on change summary LLM call in seconds")
86 |     total_latency: float = Field(default=0.0, description="Total LLM latency in seconds")
87 | 
88 |     def reset(self) -> None:
89 |         self.reasoning_latency = 0.0
90 |         self.convert_latency = 0.0
91 |         self.change_summary_latency = 0.0
92 |         self.total_latency = 0.0
93 | 
```

--------------------------------------------------------------------------------
/libraries/python/openai-client/tests/test_formatted_messages.py:
--------------------------------------------------------------------------------

```python
 1 | from textwrap import dedent
 2 | 
 3 | from openai_client.messages import format_with_liquid
 4 | 
 5 | 
 6 | def test_formatted_messages() -> None:
 7 |     # Set instructions.
 8 |     instructions = [
 9 |         dedent("""
10 |         Generate an outline for the document, including title. The outline should include the key points that will be covered in the document. Consider the attachments, the rationale for why they were uploaded, and the conversation that has taken place. The outline should be a hierarchical structure with multiple levels of detail, and it should be clear and easy to understand. The outline should be generated in a way that is consistent with the document that will be generated from it.
11 |         """).strip(),
12 |         "<CHAT_HISTORY>{{chat_history}}</CHAT_HISTORY>",
13 |         "<ATTACHMENTS>{% for attachment in attachments %}<ATTACHMENT><FILENAME>{{attachment.filename}}</FILENAME><CONTENT>{{attachment.content}}</CONTENT></ATTACHMENT>{% endfor %}</ATTACHMENTS>",
14 |         "<EXISTING_OUTLINE>{{outline_versions.last}}</EXISTING_OUTLINE>",
15 |         "<USER_FEEDBACK>{{user_feedback}}</USER_FEEDBACK>",
16 |     ]
17 | 
18 |     # Set vars.
19 |     attachments = [
20 |         {"filename": "filename1", "content": "content1"},
21 |         {"filename": "filename2", "content": "content2"},
22 |     ]
23 |     outline_versions = ["outline1", "outline2"]
24 |     user_feedback = "feedback"
25 |     chat_history = "history"
26 | 
27 |     actual = [
28 |         format_with_liquid(
29 |             template=instruction,
30 |             vars={
31 |                 "attachments": attachments,
32 |                 "outline_versions": outline_versions,
33 |                 "user_feedback": user_feedback,
34 |                 "chat_history": chat_history,
35 |             },
36 |         )
37 |         for instruction in instructions
38 |     ]
39 | 
40 |     expected = [
41 |         "Generate an outline for the document, including title. The outline should include the key points that will be covered in the document. Consider the attachments, the rationale for why they were uploaded, and the conversation that has taken place. The outline should be a hierarchical structure with multiple levels of detail, and it should be clear and easy to understand. The outline should be generated in a way that is consistent with the document that will be generated from it.",
42 |         "<CHAT_HISTORY>history</CHAT_HISTORY>",
43 |         "<ATTACHMENTS><ATTACHMENT><FILENAME>filename1</FILENAME><CONTENT>content1</CONTENT></ATTACHMENT><ATTACHMENT><FILENAME>filename2</FILENAME><CONTENT>content2</CONTENT></ATTACHMENT></ATTACHMENTS>",
44 |         "<EXISTING_OUTLINE>outline2</EXISTING_OUTLINE>",
45 |         "<USER_FEEDBACK>feedback</USER_FEEDBACK>",
46 |     ]
47 | 
48 |     assert actual == expected
49 | 
```

--------------------------------------------------------------------------------
/assistants/prospector-assistant/assistant/artifact_creation_extension/test/test_completion_with_tools.py:
--------------------------------------------------------------------------------

```python
 1 | import logging
 2 | from typing import Iterable
 3 | from unittest.mock import AsyncMock
 4 | from uuid import uuid4
 5 | 
 6 | import openai_client
 7 | import pytest
 8 | from assistant.artifact_creation_extension._llm import (
 9 |     CompletionTool,
10 |     MessageResponse,
11 |     ToolCallResponse,
12 |     completion_with_tools,
13 | )
14 | from assistant.artifact_creation_extension.extension import LLMs
15 | from openai.types.chat import ChatCompletionMessageParam
16 | from pydantic import BaseModel
17 | 
18 | logger = logging.getLogger(__name__)
19 | 
20 | 
21 | @pytest.mark.repeat(5)
22 | async def test_completion_with_tools_error_handling(llms: LLMs):
23 |     class MockToolArgs(BaseModel):
24 |         arg1: str
25 | 
26 |     mock_tool_function = AsyncMock()
27 |     mock_tool_function.__name__ = "mock_tool_function"
28 |     mock_tool_function.__doc__ = "The only tool you'll ever need"
29 | 
30 |     success_message = "Success on the second call!" + uuid4().hex
31 |     # Simulate a tool that fails once before succeeding
32 |     mock_tool_function.side_effect = [
33 |         Exception("An error occurred on the first call"),
34 |         success_message,
35 |     ]
36 | 
37 |     tools = [
38 |         CompletionTool(
39 |             function=mock_tool_function,
40 |             argument_model=MockToolArgs,
41 |         )
42 |     ]
43 | 
44 |     async def head_messages() -> Iterable[ChatCompletionMessageParam]:
45 |         return [openai_client.create_system_message("Call the tool. Once it succeeds, let me know.")]
46 | 
47 |     async def tail_messages() -> Iterable[ChatCompletionMessageParam]:
48 |         return []
49 | 
50 |     # Call the function and collect responses
51 |     responses = []
52 |     async for response in completion_with_tools(
53 |         llm_config=llms.chat,
54 |         tools=tools,
55 |         head_messages=head_messages,
56 |         tail_messages=tail_messages,
57 |     ):
58 |         logger.info("Response: %s", response)
59 |         responses.append(response)
60 | 
61 |     assert responses, "Expected at least one response"
62 | 
63 |     tool_responses = []
64 |     message_responses = []
65 |     for response in responses:
66 |         if isinstance(response, ToolCallResponse):
67 |             tool_responses.append(response)
68 |             continue
69 | 
70 |         if isinstance(response, MessageResponse):
71 |             message_responses.append(response)
72 |             continue
73 | 
74 |         pytest.fail(f"Unexpected response type: {type(response)}")
75 | 
76 |     assert len(tool_responses) == 1, "Expected one tool response"
77 |     tool_response = tool_responses[0]
78 |     assert tool_response.tool_call.function.name == mock_tool_function.__name__
79 |     assert tool_response.result == success_message
80 | 
81 |     assert len(message_responses) >= 1, "Expected at least one message response"
82 |     for message_response in message_responses:
83 |         logger.info("Message: %s", message_response.message)
84 | 
```

--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_email_headers/system.md:
--------------------------------------------------------------------------------

```markdown
 1 | # IDENTITY and PURPOSE
 2 | 
 3 | You are a cybersecurity and email expert.
 4 | 
 5 | Provide a detailed analysis of the SPF, DKIM, DMARC, and ARC results from the provided email headers. Analyze domain alignment for SPF and DKIM. Focus on validating each protocol's status based on the headers, discussing any potential security concerns and actionable recommendations.
 6 | 
 7 | # OUTPUT
 8 | 
 9 | - Always start with a summary showing only pass/fail status for SPF, DKIM, DMARC, and ARC.
10 | - Follow this with the header from address, envelope from, and domain alignment.
11 | - Follow this with detailed findings.
12 | 
13 | ## OUTPUT EXAMPLE
14 | 
15 | # Email Header Analysis - (RFC 5322 From: address, NOT display name)
16 | 
17 | ## SUMMARY
18 | 
19 | | Header | Disposition |
20 | |--------|-------------| 
21 | | SPF    | Pass/Fail   |
22 | | DKIM   | Pass/Fail   |
23 | | DMARC  | Pass/Fail   |
24 | | ARC    | Pass/Fail/Not Present |
25 | 
26 | Header From: RFC 5322 address, NOT display name, NOT just the word address
27 | Envelope From: RFC 5321 address, NOT display name, NOT just the word address
28 | Domains Align: Pass/Fail
29 | 
30 | ## DETAILS
31 | 
32 | ### SPF (Sender Policy Framework)
33 | 
34 | ### DKIM (DomainKeys Identified Mail)
35 | 
36 | ### DMARC (Domain-based Message Authentication, Reporting, and Conformance)
37 | 
38 | ### ARC (Authenticated Received Chain)
39 | 
40 | ### Security Concerns and Recommendations
41 | 
42 | ### Dig Commands
43 | 
44 | - Here is a bash script I use to check mx, spf, dkim (M365, Google, other common defaults), and dmarc records. Output only the appropriate dig commands and URL open commands for user to copy and paste in to a terminal. Set DOMAIN environment variable to email from domain first. Use the exact DKIM checks provided, do not abstract to just "default."
45 | 
46 | ### check-dmarc.sh ###
47 | 
48 | #!/bin/bash
49 | # checks mx, spf, dkim (M365, Google, other common defaults), and dmarc records
50 | 
51 | DOMAIN="${1}"
52 | 
53 | echo -e "\nMX record:\n"
54 | dig +short mx $DOMAIN
55 | 
56 | echo -e "\nSPF record:\n"
57 | dig +short txt $DOMAIN | grep -i "spf"
58 | 
59 | echo -e "\nDKIM keys (M365 default selectors):\n"
60 | dig +short txt selector1._domainkey.$DOMAIN # m365 default selector
61 | dig +short txt selector2._domainkey.$DOMAIN # m365 default selector
62 | 
63 | echo -e "\nDKIM keys (Google default selector):"
64 | dig +short txt google._domainkey.$DOMAIN # m365 default selector
65 | 
66 | echo -e "\nDKIM keys (Other common default selectors):\n"
67 | dig +short txt s1._domainkey.$DOMAIN
68 | dig +short txt s2._domainkey.$DOMAIN
69 | dig +short txt k1._domainkey.$DOMAIN
70 | dig +short txt k2._domainkey.$DOMAIN
71 | 
72 | echo -e  "\nDMARC policy:\n"
73 | dig +short txt _dmarc.$DOMAIN
74 | dig +short ns _dmarc.$DOMAIN
75 | 
76 | # these should open in the default browser
77 | open "https://dmarcian.com/domain-checker/?domain=$DOMAIN"
78 | open "https://domain-checker.valimail.com/dmarc/$DOMAIN"
79 | 
```

--------------------------------------------------------------------------------
/assistants/knowledge-transfer-assistant/assistant/domain/knowledge_brief_manager.py:
--------------------------------------------------------------------------------

```python
 1 | """
 2 | Knowledge brief management operations for Knowledge Transfer Assistant.
 3 | 
 4 | Handles knowledge brief creation, updates, and retrieval.
 5 | """
 6 | 
 7 | from typing import Optional
 8 | 
 9 | from semantic_workbench_assistant.assistant_app import ConversationContext
10 | 
11 | from ..data import InspectorTab, KnowledgeBrief, LogEntryType
12 | from ..logging import logger
13 | from ..notifications import Notifications
14 | from ..storage import ShareStorage
15 | from ..utils import require_current_user
16 | from .share_manager import ShareManager
17 | 
18 | 
19 | class KnowledgeBriefManager:
20 |     """Manages knowledge brief operations."""
21 | 
22 |     @staticmethod
23 |     async def get_knowledge_brief(context: ConversationContext) -> Optional[KnowledgeBrief]:
24 |         share_id = await ShareManager.get_share_id(context)
25 |         if not share_id:
26 |             return None
27 |         return ShareStorage.read_knowledge_brief(share_id)
28 | 
29 |     @staticmethod
30 |     async def update_knowledge_brief(
31 |         context: ConversationContext,
32 |         title: str,
33 |         description: str,
34 |         timeline: Optional[str] = None,
35 |     ) -> Optional[KnowledgeBrief]:
36 |         share_id = await ShareManager.get_share_id(context)
37 |         if not share_id:
38 |             logger.error("Cannot update brief: no share associated with this conversation")
39 |             return
40 | 
41 |         current_user_id = await require_current_user(context, "update brief")
42 |         if not current_user_id:
43 |             return
44 | 
45 |         brief = KnowledgeBrief(
46 |             title=title,
47 |             content=description,
48 |             timeline=timeline,
49 |             created_by=current_user_id,
50 |             updated_by=current_user_id,
51 |             conversation_id=str(context.id),
52 |         )
53 | 
54 |         ShareStorage.write_knowledge_brief(share_id, brief)
55 | 
56 |         # Check if this is a creation or an update
57 |         existing_brief = ShareStorage.read_knowledge_brief(share_id)
58 |         if existing_brief:
59 |             # This is an update
60 |             await ShareStorage.log_share_event(
61 |                 context=context,
62 |                 share_id=share_id,
63 |                 entry_type=LogEntryType.BRIEFING_UPDATED.value,
64 |                 message=f"Updated brief: {title}",
65 |             )
66 |         else:
67 |             # This is a creation
68 |             await ShareStorage.log_share_event(
69 |                 context=context,
70 |                 share_id=share_id,
71 |                 entry_type=LogEntryType.BRIEFING_CREATED.value,
72 |                 message=f"Created brief: {title}",
73 |             )
74 | 
75 |         await Notifications.notify_all(context, share_id, "Knowledge brief has been updated")
76 |         await Notifications.notify_all_state_update(context, share_id, [InspectorTab.BRIEF])
77 | 
78 |         return brief
79 | 
```

--------------------------------------------------------------------------------
/libraries/python/openai-client/openai_client/errors.py:
--------------------------------------------------------------------------------

```python
 1 | from typing import Any
 2 | 
 3 | from openai import (
 4 |     APIConnectionError,
 5 |     APIStatusError,
 6 |     BadRequestError,
 7 |     RateLimitError,
 8 | )
 9 | from openai.types.chat import (
10 |     ParsedChatCompletion,
11 | )
12 | 
13 | 
14 | class CompletionInvalidError(Exception):
15 |     def __init__(self, message: str, body: dict[str, Any] | None = None) -> None:
16 |         self.message = message
17 |         self.body = body
18 |         super().__init__(self.message)
19 | 
20 | 
21 | class CompletionIsNoneError(CompletionInvalidError):
22 |     def __init__(self) -> None:
23 |         super().__init__("The completion response is None.")
24 | 
25 | 
26 | class CompletionRefusedError(CompletionInvalidError):
27 |     def __init__(self, refusal: str) -> None:
28 |         super().__init__(f"The model refused to complete the response: {refusal}", {"refusal": refusal})
29 | 
30 | 
31 | class CompletionWithoutStopError(CompletionInvalidError):
32 |     def __init__(self, finish_reason: str) -> None:
33 |         super().__init__(f"The model did not complete the response: {finish_reason}", {"finish_reason": finish_reason})
34 | 
35 | 
36 | class CompletionError(Exception):
37 |     def __init__(self, error: Exception) -> None:
38 |         if isinstance(error, APIConnectionError):
39 |             message = f"The server could not be reached: {error.__cause__}"
40 |             body = error.body
41 |         elif isinstance(error, RateLimitError):
42 |             message = "A 429 status code was received (rate limited); we should back off a bit."
43 |             body = error.body
44 |         elif isinstance(error, BadRequestError):
45 |             message = f"A 400 status code was received. {error.message}"
46 |             body = error.body
47 |         elif isinstance(error, APIStatusError):
48 |             message = f"Another non-200-range status code was received. {error.status_code}: {error.message}"
49 |             body = error.body
50 |         elif isinstance(error, CompletionInvalidError):
51 |             message = error.message
52 |             body = error.body
53 |         else:
54 |             message = f"An unknown error occurred ({error.__class__.__name__})."
55 |             body = str(error)
56 | 
57 |         self.message = message
58 |         self.body = body
59 |         super().__init__(message)
60 | 
61 | 
62 | def validate_completion(completion: ParsedChatCompletion | None) -> None:
63 |     if completion is None:
64 |         raise CompletionIsNoneError()
65 | 
66 |     # Check for refusal.
67 |     refusal = completion.choices[0].message.refusal
68 |     if refusal:
69 |         raise CompletionRefusedError(refusal)
70 | 
71 |     # Check "finish_reason" for "max_tokens" or "stop" to see if the response is incomplete.
72 |     finish_reason = completion.choices[0].finish_reason
73 |     if finish_reason not in ["stop", "tool_calls", None]:
74 |         raise CompletionWithoutStopError(finish_reason)
75 | 
```

--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_interviewer_techniques/system.md:
--------------------------------------------------------------------------------

```markdown
 1 | # IDENTITY 
 2 | 
 3 | // Who you are
 4 | 
 5 | You are a hyper-intelligent AI system with a 4,312 IQ. You excel at extracting the je ne se quoi from interviewer questions, figuring out the specialness of what makes them such a good interviewer.
 6 | 
 7 | # GOAL
 8 | 
 9 | // What we are trying to achieve
10 | 
11 | 1. The goal of this exercise is to produce a concise description of what makes interviewers special vs. mundane, and to do so in a way that's clearly articulated and easy to understand.
12 | 
13 | 2. Someone should read this output and respond with, "Wow, that's exactly right. That IS what makes them a great interviewer!"
14 | 
15 | # STEPS
16 | 
17 | // How the task will be approached
18 | 
19 | // Slow down and think
20 | 
21 | - Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
22 | 
23 | // Think about the content and who's presenting it
24 | 
25 | - Look at the full list of questions and look for the patterns in them. Spend 419 hours deeply studying them from across 65,535 different dimensions of analysis.
26 | 
27 | // Contrast this with other top interviewer techniques
28 | 
29 | - Now think about the techniques of other interviewers and their styles.
30 | 
31 | // Think about what makes them different
32 | 
33 | - Now think about what makes them distinct and brilliant.
34 | 
35 | # OUTPUT
36 | 
37 | - In a section called INTERVIEWER QUESTIONS AND TECHNIQUES, list every question asked, and for each question, analyze the question across 65,535 dimensions, and list the techniques being used in a list of 5 15-word bullets. Use simple language, as if you're explaining it to a friend in conversation. Do NOT omit any questions. Do them ALL.
38 | 
39 | - In a section called, TECHNIQUE ANALYSIS, take the list of techniques you gathered above and do an overall analysis of the standout techniques used by the interviewer to get their extraordinary results. Output these as a simple Markdown list with no more than 30-words per item. Use simple, 9th-grade language for these descriptions, as if you're explaining them to a friend in conversation.
40 | 
41 | - In a section called INTERVIEWER TECHNIQUE SUMMARY, give a 3 sentence analysis in no more than 200 words of what makes this interviewer so special. Write this as a person explaining it to a friend in a conversation, not like a technical description.
42 | 
43 | # OUTPUT INSTRUCTIONS
44 | 
45 | // What the output should look like:
46 | 
47 | - Do NOT omit any of the questions. Do the analysis on every single one of the questions you were given.
48 | 
49 | - Output only a Markdown list.
50 | 
51 | - Only output simple Markdown, with no formatting, asterisks, or other special characters.
52 | 
53 | - Do not ask any questions, just give me these sections as described in the OUTPUT section above. No matter what.
54 | 
55 | # INPUT
56 | 
57 | INPUT:
58 | 
```

--------------------------------------------------------------------------------
/examples/dotnet/dotnet-02-message-types-demo/Program.cs:
--------------------------------------------------------------------------------

```csharp
 1 | // Copyright (c) Microsoft. All rights reserved.
 2 | 
 3 | using Azure;
 4 | using Azure.AI.ContentSafety;
 5 | using Azure.Identity;
 6 | using Microsoft.SemanticWorkbench.Connector;
 7 | 
 8 | namespace AgentExample;
 9 | 
10 | internal static class Program
11 | {
12 |     private const string CORSPolicyName = "MY-CORS";
13 | 
14 |     internal static async Task Main(string[] args)
15 |     {
16 |         // Setup
17 |         WebApplicationBuilder appBuilder = WebApplication.CreateBuilder(args);
18 | 
19 |         // Load settings from files and env vars
20 |         appBuilder.Configuration
21 |             .AddJsonFile("appsettings.json")
22 |             .AddJsonFile("appsettings.Development.json", optional: true)
23 |             .AddJsonFile("appsettings.development.json", optional: true)
24 |             .AddEnvironmentVariables();
25 | 
26 |         // Storage layer to persist agents configuration and conversations
27 |         appBuilder.Services.AddSingleton<IAgentServiceStorage, AgentServiceStorage>();
28 | 
29 |         // Agent service to support multiple agent instances
30 |         appBuilder.Services.AddSingleton<WorkbenchConnector<MyAgentConfig>, MyWorkbenchConnector>();
31 | 
32 |         // Azure AI Content Safety, used to monitor I/O
33 |         appBuilder.Services.AddAzureAIContentSafety(appBuilder.Configuration.GetSection("AzureContentSafety"));
34 | 
35 |         // Misc
36 |         appBuilder.Services.AddLogging()
37 |             .AddCors(opt => opt.AddPolicy(CORSPolicyName, pol => pol.WithMethods("GET", "POST", "PUT", "DELETE")));
38 | 
39 |         // Build
40 |         WebApplication app = appBuilder.Build();
41 |         app.UseCors(CORSPolicyName);
42 | 
43 |         // Connect to workbench backend, keep alive, and accept incoming requests
44 |         var connectorApiPrefix = app.Configuration.GetSection("Workbench").Get<WorkbenchConfig>()!.ConnectorApiPrefix;
45 |         using var agentService = app.UseAgentWebservice<MyAgentConfig>(connectorApiPrefix, true);
46 |         await agentService.ConnectAsync().ConfigureAwait(false);
47 | 
48 |         // Start app and webservice
49 |         await app.RunAsync().ConfigureAwait(false);
50 |     }
51 | 
52 |     private static IServiceCollection AddAzureAIContentSafety(
53 |         this IServiceCollection services,
54 |         IConfiguration config)
55 |     {
56 |         var authType = config.GetValue<string>("AuthType");
57 |         var endpoint = new Uri(config.GetValue<string>("Endpoint")!) ?? throw new ArgumentException("Failed to set Azure AI Content Safety Endpoint");
58 |         var apiKey = config.GetValue<string>("ApiKey");
59 | 
60 |         return services.AddSingleton<ContentSafetyClient>(_ => authType == "AzureIdentity"
61 |             ? new ContentSafetyClient(endpoint, new DefaultAzureCredential())
62 |             : new ContentSafetyClient(endpoint, new AzureKeyCredential(apiKey!)));
63 |     }
64 | }
65 | 
```

--------------------------------------------------------------------------------
/assistants/project-assistant/assistant/text_includes/focus.md:
--------------------------------------------------------------------------------

```markdown
 1 | You are an AI assistant managing the focus of a task list related to a knowledge gathering process. You are not to add anything new to the task list, just help with organizing it.
 2 | 
 3 | The user creates consulting tasks about a lot of closely related things. Help the user by consolidating their tasks as appropriate.
 4 | - Sometimes the user has tasks that are contradictory. Help the user resolve these contradictions by proposing new tasks that resolve the conflicts.
 5 | - Sometimes the user may have tasks unrelated to their knowledge transfer consulting project. In such cases, remove those tasks entirely.
 6 | - Remove tasks that have already been completed.
 7 | 
 8 | ### Conversation Flow
 9 | 
10 | Help the user by reinforcing the approved knowledge transfer flow. The approved flow is:
11 | 
12 | ```
13 | Ensure that the knowledge package is complete and shared.
14 | 
15 | - If the knowledge share is missing key definition (audience, audience takeaways, required objectives/outcomes), help the client define these things.
16 | - If the knowledge package is missing necessary content (chat messages, files, etc.), help the client add it.
17 | - If the client has not defined learning objectives and outcomes or has NOT indicated they have no specific outcomes, ask if they want help defining them.
18 | - If the intended audience takeaways (and learning objectives) are not able to be achieved with the current knowledge package, help the client collect more content to fill in gaps.
19 | - If the knowledge package has no brief, help the client write one.
20 | - If the package is ready for transfer, provide the invitation link and help the client craft an appropriate sharing message tailored to the audience.
21 | 
22 | An example consulting flow for a knowledge transfer project:
23 | 
24 | - Defined the intended audience takeaways.
25 | - Define the audience.
26 | - Define optional learning objectives and outcomes.
27 | - Help the user add content to the knowledge package.
28 | - Help run a gap analysis and help the user fill in gaps.
29 | - Prepare the Knowledge brief.
30 | - Help create an invitation.
31 | 
32 | This is a general flow. The consultant should adapt it based on the client's needs and the current state of the knowledge package.
33 | ```
34 | 
35 | ### Post-Transfer Support
36 | 
37 | After the user/consultant is done helping their client with the knowledge sharing project, the user/consultant will continue to address any information requests from their clients but is also able to support updates to the audience definition, knowledge brief, objectives, outcomes, or knowledge package content at any time. Focus the user's task list for these purposes.
38 | 
39 | ### Output
40 | 
41 | Given the set of tasks, return a new set of focused tasks. If the user has no tasks, return an empty list.
42 | 
```

--------------------------------------------------------------------------------
/workbench-app/src/components/AssistantServiceRegistrations/AssistantServiceRegistrationRemove.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | // Copyright (c) Microsoft. All rights reserved.
 2 | 
 3 | import { DialogTrigger } from '@fluentui/react-components';
 4 | import { DeleteRegular } from '@fluentui/react-icons';
 5 | import React from 'react';
 6 | import { AssistantServiceRegistration } from '../../models/AssistantServiceRegistration';
 7 | import { useRemoveAssistantServiceRegistrationMutation } from '../../services/workbench';
 8 | import { CommandButton } from '../App/CommandButton';
 9 | 
10 | interface AssistantServiceRegistrationRemoveProps {
11 |     assistantServiceRegistration: AssistantServiceRegistration;
12 |     onRemove?: () => void;
13 |     iconOnly?: boolean;
14 |     asToolbarButton?: boolean;
15 | }
16 | 
17 | export const AssistantServiceRegistrationRemove: React.FC<AssistantServiceRegistrationRemoveProps> = (props) => {
18 |     const { assistantServiceRegistration, onRemove, iconOnly, asToolbarButton } = props;
19 |     const [removeAssistantServiceRegistration] = useRemoveAssistantServiceRegistrationMutation();
20 |     const [submitted, setSubmitted] = React.useState(false);
21 | 
22 |     if (!assistantServiceRegistration) {
23 |         throw new Error(`Assistant service registration not found`);
24 |     }
25 | 
26 |     const handleAssistantServiceRegistrationRemove = React.useCallback(async () => {
27 |         if (submitted) {
28 |             return;
29 |         }
30 |         setSubmitted(true);
31 | 
32 |         try {
33 |             await removeAssistantServiceRegistration(assistantServiceRegistration.assistantServiceId);
34 |             onRemove?.();
35 |         } finally {
36 |             setSubmitted(false);
37 |         }
38 |     }, [assistantServiceRegistration.assistantServiceId, onRemove, removeAssistantServiceRegistration, submitted]);
39 | 
40 |     return (
41 |         <CommandButton
42 |             icon={<DeleteRegular />}
43 |             iconOnly={iconOnly}
44 |             asToolbarButton={asToolbarButton}
45 |             description="Delete assistant service registration"
46 |             dialogContent={{
47 |                 title: 'Delete Assistant Service Registration',
48 |                 content: (
49 |                     <p>
50 |                         Are you sure you want to delete the assistant service registration{' '}
51 |                         <strong>{assistantServiceRegistration.name}</strong>?
52 |                     </p>
53 |                 ),
54 |                 closeLabel: 'Cancel',
55 |                 additionalActions: [
56 |                     <DialogTrigger key="delete" disableButtonEnhancement>
57 |                         <CommandButton
58 |                             icon={<DeleteRegular />}
59 |                             label="Delete"
60 |                             onClick={handleAssistantServiceRegistrationRemove}
61 |                         />
62 |                     </DialogTrigger>,
63 |                 ],
64 |             }}
65 |         />
66 |     );
67 | };
68 | 
```

--------------------------------------------------------------------------------
/workbench-app/src/components/Conversations/Canvas/AssistantCanvas.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | // Copyright (c) Microsoft. All rights reserved.
 2 | 
 3 | import { makeStyles, tokens } from '@fluentui/react-components';
 4 | import React from 'react';
 5 | import { Assistant } from '../../../models/Assistant';
 6 | import { useGetConversationStateDescriptionsQuery } from '../../../services/workbench';
 7 | import { ErrorMessageBar } from '../../App/ErrorMessageBar';
 8 | import { Loading } from '../../App/Loading';
 9 | import { AssistantInspectorList } from './AssistantInspectorList';
10 | 
11 | const useClasses = makeStyles({
12 |     inspectors: {
13 |         display: 'flex',
14 |         flexDirection: 'column',
15 |         backgroundColor: tokens.colorNeutralBackgroundAlpha,
16 |         height: '100%',
17 |         maxHeight: '100%',
18 |         overflowY: 'auto',
19 |         overflowX: 'hidden',
20 |     },
21 | });
22 | 
23 | interface AssistantCanvasProps {
24 |     assistant: Assistant;
25 |     conversationId: string;
26 | }
27 | 
28 | export const AssistantCanvas: React.FC<AssistantCanvasProps> = (props) => {
29 |     const { assistant, conversationId } = props;
30 |     const classes = useClasses();
31 |     const [stateDescriptionsErrorMessage, setStateDescriptionsErrorMessage] = React.useState<string>();
32 | 
33 |     const {
34 |         data: stateDescriptions,
35 |         error: stateDescriptionsError,
36 |         isLoading: isLoadingStateDescriptions,
37 |     } = useGetConversationStateDescriptionsQuery({ assistantId: assistant.id, conversationId: conversationId });
38 | 
39 |     React.useEffect(() => {
40 |         const errorMessage = stateDescriptionsError ? JSON.stringify(stateDescriptionsError) : undefined;
41 |         if (stateDescriptionsErrorMessage !== errorMessage) {
42 |             setStateDescriptionsErrorMessage(errorMessage);
43 |         }
44 |     }, [stateDescriptionsError, stateDescriptionsErrorMessage]);
45 | 
46 |     // watching fetching instead of load, to avoid passing the old data on assistant id change
47 |     if (isLoadingStateDescriptions && !stateDescriptionsErrorMessage) {
48 |         return <Loading />;
49 |     }
50 | 
51 |     const enabledStateDescriptions = stateDescriptions?.filter((stateDescription) => stateDescription.enabled) || [];
52 | 
53 |     return (
54 |         <div className={classes.inspectors}>
55 |             {enabledStateDescriptions.length === 0 ? (
56 |                 stateDescriptionsErrorMessage ? (
57 |                     <ErrorMessageBar title="Failed to load assistant states" error={stateDescriptionsErrorMessage} />
58 |                 ) : (
59 |                     <div>No states found for this assistant</div>
60 |                 )
61 |             ) : (
62 |                 <AssistantInspectorList
63 |                     conversationId={conversationId}
64 |                     assistant={assistant}
65 |                     stateDescriptions={enabledStateDescriptions}
66 |                 />
67 |             )}
68 |         </div>
69 |     );
70 | };
71 | 
```

--------------------------------------------------------------------------------
/workbench-app/src/components/Conversations/Message/ContentRenderer.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import { SystemMessage } from '@fluentui-copilot/react-copilot';
 2 | import {
 3 |     AlertUrgent24Regular,
 4 |     KeyCommandRegular,
 5 |     Note24Regular,
 6 |     TextBulletListSquareSparkleRegular,
 7 | } from '@fluentui/react-icons';
 8 | import React from 'react';
 9 | import { Conversation } from '../../../models/Conversation';
10 | import { ConversationMessage } from '../../../models/ConversationMessage';
11 | import { AssistantCard } from '../../FrontDoor/Controls/AssistantCard';
12 | import { MessageContent } from './MessageContent';
13 | 
14 | interface ContentRendererProps {
15 |     conversation: Conversation;
16 |     message: ConversationMessage;
17 | }
18 | 
19 | export const ContentRenderer: React.FC<ContentRendererProps> = (props) => {
20 |     const { conversation, message } = props;
21 | 
22 |     const appComponent = message.metadata?._appComponent;
23 |     if (appComponent) {
24 |         switch (appComponent.type) {
25 |             case 'AssistantCard':
26 |                 return (
27 |                     <AssistantCard
28 |                         assistantServiceId={appComponent.props.assistantServiceId}
29 |                         templateId={appComponent.props.templateId}
30 |                         existingConversationId={appComponent.props.existingConversationId}
31 |                         participantMetadata={appComponent.props.participantMetadata}
32 |                         hideContent
33 |                     />
34 |                 );
35 |             default:
36 |                 return null;
37 |         }
38 |     }
39 | 
40 |     const messageContent = <MessageContent message={message} conversation={conversation} />;
41 | 
42 |     const renderedContent =
43 |         message.messageType === 'notice' ||
44 |         message.messageType === 'note' ||
45 |         message.messageType === 'command' ||
46 |         message.messageType === 'command-response' ? (
47 |             <NoticeRenderer content={messageContent} messageType={message.messageType} />
48 |         ) : (
49 |             messageContent
50 |         );
51 | 
52 |     return renderedContent;
53 | };
54 | 
55 | interface MessageRendererProps {
56 |     content: JSX.Element;
57 |     messageType: string;
58 | }
59 | 
60 | const NoticeRenderer: React.FC<MessageRendererProps> = (props) => {
61 |     const { content, messageType } = props;
62 | 
63 |     let icon = null;
64 |     switch (messageType) {
65 |         case 'notice':
66 |             icon = <AlertUrgent24Regular />;
67 |             break;
68 |         case 'note':
69 |             icon = <Note24Regular />;
70 |             break;
71 |         case 'command':
72 |             icon = <KeyCommandRegular />;
73 |             break;
74 |         case 'command-response':
75 |             icon = <TextBulletListSquareSparkleRegular />;
76 |             break;
77 |         default:
78 |             break;
79 |     }
80 | 
81 |     return (
82 |         <SystemMessage icon={icon} message={content}>
83 |             {content}
84 |         </SystemMessage>
85 |     );
86 | };
87 | 
```

--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/research/routines/web_research.py:
--------------------------------------------------------------------------------

```python
 1 | """
 2 | web research skill
 3 | """
 4 | 
 5 | import json
 6 | from typing import Any
 7 | 
 8 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn
 9 | 
10 | 
11 | async def main(
12 |     context: RunContext,
13 |     routine_state: dict[str, Any],
14 |     emit: EmitFn,
15 |     run: RunRoutineFn,
16 |     ask_user: AskUserFn,
17 |     plan_name: str,
18 |     topic: str,
19 | ) -> str:
20 |     """Research a topic thoroughly and return a report."""
21 |     plan = await run("research.generate_research_plan", topic)
22 |     await run("posix.write_file", f"{plan_name}.txt", json.dumps(plan, indent=2))
23 | 
24 |     user_intent = "update"
25 | 
26 |     while user_intent == "update":
27 |         await ask_user("Does this plan look ok? If not, how would you like me to change it?")
28 |         user_intent = await run(
29 |             "common.select_user_intent",
30 |             {
31 |                 "confirm": "The user is happy with the plan and wants to execute it.",
32 |                 "update": "The user wants to change some things about the plan.",
33 |                 "exit": "The user wants to stop the research.",
34 |             },
35 |         )
36 |         if user_intent == "update":
37 |             plan = json.loads(await run("posix.read_file", f"{plan_name}.txt"))
38 |             plan = await run("research.update_research_plan", topic, plan)
39 |             await run("posix.write_file", f"{plan_name}.txt", json.dumps(plan, indent=2))
40 | 
41 |     if user_intent == "exit":
42 |         print("Exiting research.")
43 |         await run("posix.delete_file", f"{plan_name}.txt")
44 |         return ""
45 | 
46 |     plan = json.loads(await run("posix.read_file", f"{plan_name}.txt"))
47 |     research_answers_filename = f"{plan_name}_research_answers.md"
48 |     await run("posix.write_file", research_answers_filename, f"# Research on {topic}\n\n")
49 |     for question in plan:
50 |         is_good_answer = False
51 |         query = question
52 |         previous_searches = []
53 |         while not is_good_answer:
54 |             related_web_content = await run(
55 |                 "research.web_search", search_description=query, previous_searches=previous_searches
56 |             )
57 |             answer = await run("research.answer_question_about_content", related_web_content, question)
58 |             is_good_answer, reasoning = await run("research.evaluate_answer", question, answer)
59 |             if is_good_answer:
60 |                 await run("posix.append_file", research_answers_filename, f"## {question}\n\n{answer}\n\n")
61 |             else:
62 |                 previous_searches.append((query, reasoning))
63 | 
64 |     answers = await run("posix.read_file", research_answers_filename)
65 |     conclusion = await run("common.summarize", answers, topic)
66 |     await run("posix.append_file", research_answers_filename, f"## Conclusion\n\n{conclusion}\n\n")
67 | 
68 |     return conclusion
69 | 
```

--------------------------------------------------------------------------------
/workbench-app/src/libs/useNotify.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import {
 2 |     Slot,
 3 |     Toast,
 4 |     ToastBody,
 5 |     ToastFooter,
 6 |     ToastIntent,
 7 |     ToastTitle,
 8 |     ToastTrigger,
 9 |     useToastController,
10 | } from '@fluentui/react-components';
11 | import React from 'react';
12 | import { Constants } from '../Constants';
13 | 
14 | interface NotifyOptions {
15 |     id: string;
16 |     title?: string;
17 |     message: string;
18 |     subtitle?: string;
19 |     action?: Slot<'div'> | string;
20 |     additionalActions?: React.ReactElement[];
21 |     timeout?: number;
22 |     intent: ToastIntent;
23 | }
24 | 
25 | export const useNotify = (toasterId: string = Constants.app.globalToasterId) => {
26 |     const { dispatchToast } = useToastController(toasterId);
27 | 
28 |     const notify = React.useCallback(
29 |         (options: NotifyOptions) => {
30 |             const { id, title, message, subtitle, action, additionalActions, timeout, intent } = options;
31 | 
32 |             const getAction = () => {
33 |                 if (typeof action === 'string') {
34 |                     return (
35 |                         <ToastTrigger>
36 |                             <span>{action}</span>
37 |                         </ToastTrigger>
38 |                     );
39 |                 }
40 |                 return action;
41 |             };
42 | 
43 |             dispatchToast(
44 |                 <Toast>
45 |                     <ToastTitle action={getAction()}>{title}</ToastTitle>
46 |                     <ToastBody subtitle={subtitle}>{message}</ToastBody>
47 |                     {additionalActions && <ToastFooter>{additionalActions}</ToastFooter>}
48 |                 </Toast>,
49 |                 {
50 |                     toastId: id,
51 |                     timeout,
52 |                     intent,
53 |                 },
54 |             );
55 |         },
56 |         [dispatchToast],
57 |     );
58 | 
59 |     const notifySuccess = React.useCallback(
60 |         (options: Omit<NotifyOptions, 'intent'>) =>
61 |             notify({
62 |                 ...options,
63 |                 intent: 'success',
64 |             }),
65 |         [notify],
66 |     );
67 | 
68 |     const notifyInfo = React.useCallback(
69 |         (options: Omit<NotifyOptions, 'intent'>) =>
70 |             notify({
71 |                 ...options,
72 |                 intent: 'info',
73 |             }),
74 |         [notify],
75 |     );
76 | 
77 |     const notifyWarning = React.useCallback(
78 |         (options: Omit<NotifyOptions, 'intent'>) =>
79 |             notify({
80 |                 ...options,
81 |                 intent: 'warning',
82 |             }),
83 |         [notify],
84 |     );
85 | 
86 |     const notifyError = React.useCallback(
87 |         (options: Omit<NotifyOptions, 'intent'>) =>
88 |             notify({
89 |                 action: 'Dismiss',
90 |                 timeout: -1,
91 |                 ...options,
92 |                 intent: 'error',
93 |             }),
94 |         [notify],
95 |     );
96 | 
97 |     return { notify, notifySuccess, notifyInfo, notifyError, notifyWarning };
98 | };
99 | 
```

--------------------------------------------------------------------------------
/workbench-service/pyproject.toml:
--------------------------------------------------------------------------------

```toml
 1 | [project]
 2 | name = "semantic-workbench-service"
 3 | version = "0.1.0"
 4 | description = "Library for facilitating the implementation of FastAPI-based Semantic Workbench essistants."
 5 | authors = [{ name = "Semantic Workbench Team" }]
 6 | readme = "README.md"
 7 | requires-python = ">=3.11,<3.13"
 8 | dependencies = [
 9 |     "aiosqlite~=0.20.0",
10 |     "alembic~=1.13.1",
11 |     "asgi-correlation-id>=4.3.1",
12 |     "asyncpg~=0.29.0",
13 |     "azure-cognitiveservices-speech>=1.41.1",
14 |     "azure-core[aio]>=1.30.0",
15 |     "azure-identity>=1.16.0",
16 |     "azure-keyvault-secrets>=4.8.0",
17 |     "cachetools>=5.3.3",
18 |     "deepmerge>=2.0",
19 |     "fastapi[standard]~=0.115.0",
20 |     "greenlet~=3.0.3",
21 |     "jsonschema>=4.20.0",
22 |     "openai-client>=0.1.0",
23 |     "pydantic-settings>=2.2.0",
24 |     "python-dotenv>=1.0.0",
25 |     "python-jose[cryptography]>=3.3.0",
26 |     "python-json-logger>=2.0.7",
27 |     "rich>=13.7.0",
28 |     "semantic-workbench-api-model>=0.1.0",
29 |     "sqlmodel~=0.0.14",
30 |     "sse-starlette>=1.8.2",
31 | ]
32 | 
33 | [dependency-groups]
34 | dev = [
35 |     "asgi-lifespan>=2.1.0",
36 |     "pyright>=1.1.389",
37 |     "pytest>=7.4.3",
38 |     "pytest-asyncio>=0.23.5.post1",
39 |     "pytest-docker>=3.1.1",
40 |     "pytest-httpx>=0.30.0",
41 |     # semantic-workbench-assistant is used for integration tests
42 |     "semantic-workbench-assistant>=0.1.0",
43 | ]
44 | 
45 | [tool.uv.sources]
46 | openai-client = { path = "../libraries/python/openai-client", editable = true }
47 | semantic-workbench-api-model = { path = "../libraries/python/semantic-workbench-api-model", editable = true }
48 | semantic-workbench-assistant = { path = "../libraries/python/semantic-workbench-assistant", editable = true }
49 | 
50 | [project.scripts]
51 | start-semantic-workbench-service = "semantic_workbench_service.start:main"
52 | start-service = "semantic_workbench_service.start:main"
53 | 
54 | [build-system]
55 | requires = ["hatchling"]
56 | build-backend = "hatchling.build"
57 | 
58 | [tool.pytest.ini_options]
59 | addopts = "-vv"
60 | log_cli = true
61 | log_cli_level = "WARNING"
62 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
63 | testpaths = ["tests"]
64 | asyncio_mode = "auto"
65 | asyncio_default_fixture_loop_scope = "function"
66 | 
67 | 
68 | # fail tests on warnings that aren't explicitly ignored
69 | filterwarnings = [
70 |     "error",
71 |     # stream warnings are from bugs in starlette - hopefully they fix this
72 |     "ignore: Unclosed .MemoryObject(Send|Receive)Stream.:ResourceWarning",
73 |     # aiosqlite doesn't handle cancelations correctly
74 |     "ignore: Exception in thread Thread:pytest.PytestUnhandledThreadExceptionWarning",
75 |     # asyncpg sometimes fails to close sockets/transports/connections
76 |     "ignore: unclosed <socket.socket:ResourceWarning",
77 |     "ignore: unclosed transport:ResourceWarning",
78 |     "ignore: unclosed connection <asyncpg.connection:ResourceWarning",
79 | ]
80 | 
```

--------------------------------------------------------------------------------
/workbench-service/semantic_workbench_service/controller/user.py:
--------------------------------------------------------------------------------

```python
 1 | from typing import AsyncContextManager, Callable
 2 | 
 3 | from semantic_workbench_api_model import workbench_model
 4 | from sqlmodel import col, select
 5 | from sqlmodel.ext.asyncio.session import AsyncSession
 6 | 
 7 | from .. import auth, db
 8 | from . import convert
 9 | 
10 | 
11 | async def add_or_update_user_from(
12 |     session: AsyncSession,
13 |     user_principal: auth.UserPrincipal,
14 | ) -> None:
15 |     is_service_user = isinstance(user_principal, auth.ServiceUserPrincipal)
16 |     inserted = await db.insert_if_not_exists(
17 |         session, db.User(user_id=user_principal.user_id, name=user_principal.name, service_user=is_service_user)
18 |     )
19 |     if inserted:
20 |         return await session.commit()
21 | 
22 |     user = (
23 |         await session.exec(select(db.User).where(db.User.user_id == user_principal.user_id).with_for_update())
24 |     ).one()
25 |     user.name = user_principal.name
26 |     user.service_user = isinstance(user_principal, auth.ServiceUserPrincipal)
27 |     session.add(user)
28 |     await session.commit()
29 | 
30 | 
31 | class UserController:
32 |     def __init__(
33 |         self,
34 |         get_session: Callable[[], AsyncContextManager[AsyncSession]],
35 |     ) -> None:
36 |         self._get_session = get_session
37 | 
38 |     async def update_user(
39 |         self,
40 |         user_principal: auth.UserPrincipal,
41 |         user_id: str,
42 |         update_user: workbench_model.UpdateUser,
43 |     ) -> workbench_model.User:
44 |         async with self._get_session() as session:
45 |             inserted = await db.insert_if_not_exists(
46 |                 session, db.User(user_id=user_id, name=update_user.name or user_principal.name, image=update_user.image)
47 |             )
48 | 
49 |             user = (await session.exec(select(db.User).where(db.User.user_id == user_id).with_for_update())).one()
50 |             if not inserted:
51 |                 updates = update_user.model_dump(exclude_unset=True)
52 |                 for field, value in updates.items():
53 |                     setattr(user, field, value)
54 | 
55 |                 session.add(user)
56 | 
57 |             await session.commit()
58 | 
59 |         return convert.user_from_db(model=user)
60 | 
61 |     async def get_users(self, user_ids: list[str]) -> workbench_model.UserList:
62 |         async with self._get_session() as session:
63 |             users = (await session.exec(select(db.User).where(col(db.User.user_id).in_(user_ids)))).all()
64 | 
65 |         return convert.user_list_from_db(models=users)
66 | 
67 |     async def get_user_me(self, user_principal: auth.UserPrincipal) -> workbench_model.User:
68 |         async with self._get_session() as session:
69 |             await add_or_update_user_from(session, user_principal=user_principal)
70 |             user = (await session.exec(select(db.User).where(db.User.user_id == user_principal.user_id))).one()
71 | 
72 |         return convert.user_from_db(model=user)
73 | 
```

--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_report_finding/system.md:
--------------------------------------------------------------------------------

```markdown
 1 | # IDENTITY and PURPOSE
 2 | 
 3 | You are a extremely experienced 'jack-of-all-trades' cyber security consultant that is diligent, concise but informative and professional. You are highly experienced in web, API, infrastructure (on-premise and cloud), and mobile testing. Additionally, you are an expert in threat modeling and analysis.
 4 | 
 5 | You have been tasked with creating a markdown security finding that will be added to a cyber security assessment report. It must have the following sections: Description, Risk, Recommendations, References, One-Sentence-Summary, Trends, Quotes.
 6 | 
 7 | The user has provided a vulnerability title and a brief explanation of their finding.
 8 | 
 9 | Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
10 | 
11 | # STEPS
12 | 
13 | - Create a Title section that contains the title of the finding.
14 | 
15 | - Create a Description section that details the nature of the finding, including insightful and informative information. Do not use bullet point lists for this section.
16 | 
17 | - Create a Risk section that details the risk of the finding. Do not solely use bullet point lists for this section.
18 | 
19 | - Extract the 5 to 15 of the most surprising, insightful, and/or interesting recommendations that can be collected from the report into a section called Recommendations.
20 | 
21 | - Create a References section that lists 1 to 5 references that are suitibly named hyperlinks that provide instant access to knowledgeable and informative articles that talk about the issue, the tech and remediations. Do not hallucinate or act confident if you are unsure.
22 | 
23 | - Create a summary sentence that captures the spirit of the finding and its insights in less than 25 words in a section called One-Sentence-Summary:. Use plain and conversational language when creating this summary. Don't use jargon or marketing language.
24 | 
25 | - Extract 10 to 20 of the most surprising, insightful, and/or interesting quotes from the input into a section called Quotes:. Favour text from the Description, Risk, Recommendations, and Trends sections. Use the exact quote text from the input.
26 | 
27 | # OUTPUT INSTRUCTIONS
28 | 
29 | - Only output Markdown.
30 | - Do not output the markdown code syntax, only the content.
31 | - Do not use bold or italics formatting in the markdown output.
32 | - Extract at least 5 TRENDS from the content.
33 | - Extract at least 10 items for the other output sections.
34 | - Do not give warnings or notes; only output the requested sections.
35 | - You use bulleted lists for output, not numbered lists.
36 | - Do not repeat ideas, quotes, facts, or resources.
37 | - Do not start items with the same opening words.
38 | - Ensure you follow ALL these instructions when creating your output.
39 | 
40 | # INPUT
41 | 
42 | INPUT:
43 | 
```

--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/chat_driver_helpers.py:
--------------------------------------------------------------------------------

```python
 1 | import functools
 2 | import inspect
 3 | from typing import Callable
 4 | 
 5 | from .types import ActionFn, RunContextProvider
 6 | 
 7 | 
 8 | class ChatDriverFunctions:
 9 |     """
10 |     Functions used for chat drivers (tool functions) can be created from skill
11 |     actions functions by removing their run_context parameter and making the
12 |     run_context available through a RunContextProvider. Additionally, we need to
13 |     remove any default values for all parameters as OpenAI doesn't allow default
14 |     parameters in their tool functions.
15 | 
16 |     Initialize this class with a run context provider and a list of action
17 |     functions and it will generate wrapper methods for each action that can be
18 |     used in a chat driver.
19 | 
20 |     This is helpful for maing chat driver setup in a skill simpler.
21 |     """
22 | 
23 |     def __init__(self, actions: list[ActionFn], run_context_provider: RunContextProvider) -> None:
24 |         self.actions = {action.__name__: action for action in actions}
25 |         self.run_context_provider = run_context_provider
26 |         self._generate_wrappers()
27 | 
28 |     def _generate_wrappers(self) -> None:
29 |         """
30 |         Dynamically create wrapper methods for all actions.
31 |         """
32 |         for name, action in self.actions.items():
33 |             # Throw an error if the action does not have a run_context parameter.
34 |             if "run_context" not in inspect.signature(action).parameters:
35 |                 raise ValueError(f"Invalid action function. '{name}' must have a 'run_context' parameter.")
36 | 
37 |             # Remove default values from the parameters
38 |             original_signature = inspect.signature(action)
39 |             parameters = [
40 |                 param.replace(default=inspect.Parameter.empty) for param in original_signature.parameters.values()
41 |             ]
42 |             parameters = [param for param in parameters if param.name != "run_context"]
43 |             new_signature = original_signature.replace(parameters=parameters)
44 | 
45 |             def make_wrapper(action):
46 |                 @functools.wraps(action)
47 |                 def wrapper(*args, **kwargs):
48 |                     run_context = self.run_context_provider.create_run_context()
49 |                     return action(run_context, *args, **kwargs)
50 | 
51 |                 # Update the wrapper function's signature to match the modified signature
52 |                 wrapper.__signature__ = new_signature  # type: ignore
53 |                 return wrapper
54 | 
55 |             # Set the wrapper as an attribute of the instance.
56 |             setattr(self, name, make_wrapper(action))
57 | 
58 |     def all(self) -> list[Callable]:
59 |         """
60 |         Return a list of all dynamically created wrapper methods.
61 |         """
62 |         return [getattr(self, name) for name in self.actions.keys()]
63 | 
```

--------------------------------------------------------------------------------
/tools/makefiles/docker.mk:
--------------------------------------------------------------------------------

```
 1 | DOCKER_REGISTRY_NAME ?=
 2 | ifneq ($(DOCKER_REGISTRY_NAME),)
 3 | DOCKER_REGISTRY_HOST ?= $(DOCKER_REGISTRY_NAME).azurecr.io
 4 | endif
 5 | DOCKER_IMAGE_TAG ?= $(shell git rev-parse HEAD)
 6 | DOCKER_PUSH_LATEST ?= true
 7 | DOCKER_PATH ?= .
 8 | DOCKER_FILE ?= Dockerfile
 9 | DOCKER_BUILD_ARGS ?=
10 | 
11 | AZURE_WEBSITE_NAME ?=
12 | AZURE_WEBSITE_SLOT ?= staging
13 | AZURE_WEBSITE_TARGET_SLOT ?= production
14 | AZURE_WEBSITE_SUBSCRIPTION ?=
15 | AZURE_WEBSITE_RESOURCE_GROUP ?=
16 | 
17 | require_value = $(foreach var,$(1),$(if $(strip $($(var))),,$(error "Variable $(var) is not set: $($(var))")))
18 | 
19 | .PHONY: .docker-build
20 | .docker-build:
21 | 	$(call require_value,DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG DOCKER_FILE DOCKER_PATH)
22 | ifdef DOCKER_BUILD_ARGS
23 | 	docker build -t $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG) $(foreach arg,$(DOCKER_BUILD_ARGS),--build-arg $(arg)) $(DOCKER_PATH) -f $(DOCKER_FILE)
24 | else
25 | 	docker build -t $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG) $(DOCKER_PATH) -f $(DOCKER_FILE)
26 | endif
27 | 
28 | .PHONY: .docker-push
29 | .docker-push: .docker-build
30 | 	$(call require_value,DOCKER_REGISTRY_NAME DOCKER_REGISTRY_HOST DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG)
31 | 	az acr login --name $(DOCKER_REGISTRY_NAME)
32 | 	docker tag $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG) $(DOCKER_REGISTRY_HOST)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)
33 | 	docker push $(DOCKER_REGISTRY_HOST)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)
34 | ifeq ($(DOCKER_PUSH_LATEST),true)
35 | 	docker tag $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG) $(DOCKER_REGISTRY_HOST)/$(DOCKER_IMAGE_NAME)
36 | 	docker push $(DOCKER_REGISTRY_HOST)/$(DOCKER_IMAGE_NAME)
37 | endif
38 | 
39 | define update-container
40 | 	az webapp config container set \
41 | 		--subscription $(AZURE_WEBSITE_SUBSCRIPTION) \
42 | 		--resource-group $(AZURE_WEBSITE_RESOURCE_GROUP) \
43 | 		--name $(1) --slot $(AZURE_WEBSITE_SLOT) \
44 | 		--container-image-name $(DOCKER_REGISTRY_HOST)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)
45 | 
46 | endef
47 | 
48 | define swap-slots
49 | 	az webapp deployment slot swap \
50 | 		--subscription $(AZURE_WEBSITE_SUBSCRIPTION) \
51 | 		--resource-group $(AZURE_WEBSITE_RESOURCE_GROUP) \
52 | 		--name $(1) \
53 | 		--slot $(AZURE_WEBSITE_SLOT) \
54 | 		--target-slot $(AZURE_WEBSITE_TARGET_SLOT) \
55 | 		--verbose
56 | 
57 | endef
58 | 
59 | .PHONY: .azure-container-deploy
60 | .azure-container-deploy:
61 | 	$(call require_value,AZURE_WEBSITE_SUBSCRIPTION AZURE_WEBSITE_NAME AZURE_WEBSITE_SLOT AZURE_WEBSITE_RESOURCE_GROUP DOCKER_REGISTRY_HOST DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG)
62 | 	$(foreach website_name,$(AZURE_WEBSITE_NAME),$(call update-container,$(website_name)))
63 | ifneq ($(AZURE_WEBSITE_SLOT),$(AZURE_WEBSITE_TARGET_SLOT))
64 | 	$(foreach website_name,$(AZURE_WEBSITE_NAME),$(call swap-slots,$(website_name)))
65 | endif
66 | 
67 | ifndef DISABLE_DEFAULT_DOCKER_TARGETS
68 | docker-build: .docker-build
69 | docker-push: .docker-push
70 | docker-deploy: .azure-container-deploy
71 | endif
72 | 
```

--------------------------------------------------------------------------------
/workbench-app/src/components/App/DialogControl.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import {
 2 |     Button,
 3 |     Dialog,
 4 |     DialogActions,
 5 |     DialogBody,
 6 |     DialogContent,
 7 |     DialogOpenChangeData,
 8 |     DialogOpenChangeEvent,
 9 |     DialogSurface,
10 |     DialogTitle,
11 |     DialogTrigger,
12 |     makeStyles,
13 |     mergeClasses,
14 |     tokens,
15 | } from '@fluentui/react-components';
16 | import React from 'react';
17 | 
18 | const useClasses = makeStyles({
19 |     dialogContent: {
20 |         display: 'flex',
21 |         flexDirection: 'column',
22 |         gap: tokens.spacingVerticalM,
23 |     },
24 | });
25 | 
26 | export interface DialogControlContent {
27 |     open?: boolean;
28 |     defaultOpen?: boolean;
29 |     trigger?: React.ReactElement;
30 |     classNames?: {
31 |         dialogSurface?: string;
32 |         dialogContent?: string;
33 |     };
34 |     title?: string;
35 |     content?: React.ReactNode;
36 |     closeLabel?: string;
37 |     hideDismissButton?: boolean;
38 |     dismissButtonDisabled?: boolean;
39 |     additionalActions?: React.ReactElement[];
40 |     onOpenChange?: (event: DialogOpenChangeEvent, data: DialogOpenChangeData) => void;
41 | }
42 | 
43 | export const DialogControl: React.FC<DialogControlContent> = (props) => {
44 |     const {
45 |         open,
46 |         defaultOpen,
47 |         trigger,
48 |         classNames,
49 |         title,
50 |         content,
51 |         closeLabel,
52 |         dismissButtonDisabled,
53 |         hideDismissButton,
54 |         additionalActions,
55 |         onOpenChange,
56 |     } = props;
57 | 
58 |     const classes = useClasses();
59 | 
60 |     return (
61 |         <Dialog open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange} inertTrapFocus={true}>
62 |             <DialogTrigger disableButtonEnhancement>{trigger}</DialogTrigger>
63 |             <DialogSurface className={classNames?.dialogSurface}>
64 |                 <DialogBody>
65 |                     {title && <DialogTitle>{title}</DialogTitle>}
66 |                     {content && (
67 |                         <DialogContent className={mergeClasses(classes.dialogContent, classNames?.dialogContent)}>
68 |                             {content}
69 |                         </DialogContent>
70 |                     )}
71 |                     <DialogActions fluid>
72 |                         {!hideDismissButton && (
73 |                             <DialogTrigger disableButtonEnhancement action="close">
74 |                                 <Button
75 |                                     appearance={additionalActions ? 'secondary' : 'primary'}
76 |                                     disabled={dismissButtonDisabled}
77 |                                 >
78 |                                     {closeLabel ?? 'Close'}
79 |                                 </Button>
80 |                             </DialogTrigger>
81 |                         )}
82 |                         {additionalActions}
83 |                     </DialogActions>
84 |                 </DialogBody>
85 |             </DialogSurface>
86 |         </Dialog>
87 |     );
88 | };
89 | 
```

--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/research/routines/generate_research_plan.py:
--------------------------------------------------------------------------------

```python
 1 | from typing import Any, cast
 2 | 
 3 | from openai_client import (
 4 |     CompletionError,
 5 |     create_system_message,
 6 |     create_user_message,
 7 |     extra_data,
 8 |     make_completion_args_serializable,
 9 |     validate_completion,
10 | )
11 | from pydantic import BaseModel
12 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn
13 | from skill_library.logging import logger
14 | from skill_library.skills.common import CommonSkill
15 | 
16 | 
17 | async def main(
18 |     context: RunContext, routine_state: dict[str, Any], emit: EmitFn, run: RunRoutineFn, ask_user: AskUserFn, topic: str
19 | ) -> list[str]:
20 |     """
21 |     Generate a research plan on a given topic. The plan will consist of a set of
22 |     research questions to be answered.
23 |     """
24 |     common_skill = cast(CommonSkill, context.skills["common"])
25 |     language_model = common_skill.config.language_model
26 | 
27 |     class Output(BaseModel):
28 |         reasoning: str
29 |         research_questions: list[str]
30 | 
31 |     completion_args = {
32 |         "model": "gpt-4o",
33 |         "messages": [
34 |             create_system_message(
35 |                 "You are an expert research assistant. For any given topic, carefully analyze it to identify core, tangential, and nuanced areas requiring exploration. Approach the topic methodically, breaking it down into its fundamental aspects, associated themes, and interconnections. Thoroughly think through the subject step by step and aim to create a comprehensive set of research questions.",
36 |             ),
37 |             create_user_message(
38 |                 f"Topic: {topic}",
39 |             ),
40 |         ],
41 |         "response_format": Output,
42 |     }
43 | 
44 |     logger.debug("Completion call.", extra=extra_data(make_completion_args_serializable(completion_args)))
45 |     metadata = {}
46 |     metadata["completion_args"] = make_completion_args_serializable(completion_args)
47 |     try:
48 |         completion = await language_model.beta.chat.completions.parse(
49 |             **completion_args,
50 |         )
51 |         validate_completion(completion)
52 |         logger.debug("Completion response.", extra=extra_data({"completion": completion.model_dump()}))
53 |         metadata["completion"] = completion.model_dump()
54 |     except Exception as e:
55 |         completion_error = CompletionError(e)
56 |         metadata["completion_error"] = completion_error.message
57 |         logger.error(
58 |             completion_error.message,
59 |             extra=extra_data({"completion_error": completion_error.body}),
60 |         )
61 |         raise completion_error from e
62 |     else:
63 |         research_questions = cast(Output, completion.choices[0].message.parsed).research_questions
64 |         metadata["research_questions"] = research_questions
65 |         return research_questions
66 |     finally:
67 |         context.log("generate_research_plan", metadata)
68 | 
```

--------------------------------------------------------------------------------
/workbench-app/src/components/Conversations/Canvas/ConversationCanvas.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | // Copyright (c) Microsoft. All rights reserved.
 2 | 
 3 | import { Card, Text, makeStyles, tokens } from '@fluentui/react-components';
 4 | import React from 'react';
 5 | import { Conversation } from '../../../models/Conversation';
 6 | import { ConversationFile } from '../../../models/ConversationFile';
 7 | import { ConversationParticipant } from '../../../models/ConversationParticipant';
 8 | import { ContextWindow } from '../ContextWindow';
 9 | import { ConversationTranscript } from '../ConversationTranscript';
10 | import { FileList } from '../FileList';
11 | import { ParticipantList } from '../ParticipantList';
12 | 
13 | const useClasses = makeStyles({
14 |     root: {
15 |         display: 'flex',
16 |         flexDirection: 'column',
17 |         gap: tokens.spacingHorizontalM,
18 |         width: '100%',
19 |     },
20 |     card: {
21 |         overflow: 'visible',
22 |     },
23 | });
24 | 
25 | interface ConversationCanvasProps {
26 |     conversation: Conversation;
27 |     conversationParticipants: ConversationParticipant[];
28 |     conversationFiles: ConversationFile[];
29 |     preventAssistantModifyOnParticipantIds?: string[];
30 |     readOnly: boolean;
31 | }
32 | 
33 | export const ConversationCanvas: React.FC<ConversationCanvasProps> = (props) => {
34 |     const {
35 |         conversationParticipants,
36 |         conversationFiles,
37 |         conversation,
38 |         preventAssistantModifyOnParticipantIds,
39 |         readOnly,
40 |     } = props;
41 |     const classes = useClasses();
42 | 
43 |     return (
44 |         <div className={classes.root}>
45 |             <Card className={classes.card}>
46 |                 <Text size={400} weight="semibold">
47 |                     Participants
48 |                 </Text>
49 |                 <ParticipantList
50 |                     conversation={conversation}
51 |                     participants={conversationParticipants}
52 |                     preventAssistantModifyOnParticipantIds={preventAssistantModifyOnParticipantIds}
53 |                     readOnly={readOnly}
54 |                 />
55 |             </Card>
56 |             <Card className={classes.card}>
57 |                 <Text size={400} weight="semibold">
58 |                     Transcript
59 |                 </Text>
60 |                 <ConversationTranscript conversation={conversation} participants={conversationParticipants} />
61 |             </Card>
62 |             <Card className={classes.card}>
63 |                 <Text size={400} weight="semibold">
64 |                     Context window
65 |                 </Text>
66 |                 <ContextWindow conversation={conversation} />
67 |             </Card>
68 |             <Card className={classes.card}>
69 |                 <Text size={400} weight="semibold">
70 |                     Files
71 |                 </Text>
72 |                 <FileList readOnly={readOnly} conversation={conversation} conversationFiles={conversationFiles} />
73 |             </Card>
74 |         </div>
75 |     );
76 | };
77 | 
```
Page 27/145FirstPrevNextLast