This is page 18 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
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-open-deep-research-clone/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "[json]": {
14 | "editor.defaultFormatter": "esbenp.prettier-vscode",
15 | "editor.formatOnSave": true
16 | },
17 | "[jsonc]": {
18 | "editor.defaultFormatter": "esbenp.prettier-vscode",
19 | "editor.formatOnSave": true
20 | },
21 | "python.analysis.autoFormatStrings": true,
22 | "python.analysis.autoImportCompletions": true,
23 | "python.analysis.diagnosticMode": "workspace",
24 | "python.analysis.fixAll": ["source.unusedImports"],
25 | // Project specific paths
26 | "python.analysis.ignore": ["libs"],
27 | "python.analysis.inlayHints.functionReturnTypes": true,
28 | "python.analysis.typeCheckingMode": "standard",
29 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
30 | "[python]": {
31 | "editor.defaultFormatter": "charliermarsh.ruff",
32 | "editor.formatOnSave": true,
33 | "editor.codeActionsOnSave": {
34 | "source.fixAll": "explicit",
35 | "source.unusedImports": "explicit",
36 | "source.organizeImports": "explicit",
37 | "source.formatDocument": "explicit"
38 | }
39 | },
40 | "ruff.nativeServer": "on",
41 | "search.exclude": {
42 | "**/.venv": true,
43 | "**/.data": true
44 | },
45 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
46 | "cSpell.ignorePaths": [
47 | ".git",
48 | ".gitignore",
49 | ".vscode",
50 | ".venv",
51 | "node_modules",
52 | "package-lock.json",
53 | "pyproject.toml",
54 | "settings.json",
55 | "uv.lock"
56 | ],
57 | "cSpell.words": ["dotenv", "fastmcp", "toplevel"]
58 | }
59 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-template/template/{{ project_slug }}/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "[json]": {
14 | "editor.defaultFormatter": "esbenp.prettier-vscode",
15 | "editor.formatOnSave": true
16 | },
17 | "[jsonc]": {
18 | "editor.defaultFormatter": "esbenp.prettier-vscode",
19 | "editor.formatOnSave": true
20 | },
21 | "python.analysis.autoFormatStrings": true,
22 | "python.analysis.autoImportCompletions": true,
23 | "python.analysis.diagnosticMode": "workspace",
24 | "python.analysis.fixAll": ["source.unusedImports"],
25 | // Project specific paths
26 | "python.analysis.ignore": ["libs"],
27 | "python.analysis.inlayHints.functionReturnTypes": true,
28 | "python.analysis.typeCheckingMode": "standard",
29 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
30 | "[python]": {
31 | "editor.defaultFormatter": "charliermarsh.ruff",
32 | "editor.formatOnSave": true,
33 | "editor.codeActionsOnSave": {
34 | "source.fixAll": "explicit",
35 | "source.unusedImports": "explicit",
36 | "source.organizeImports": "explicit",
37 | "source.formatDocument": "explicit"
38 | }
39 | },
40 | "ruff.nativeServer": "on",
41 | "search.exclude": {
42 | "**/.venv": true,
43 | "**/.data": true
44 | },
45 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
46 | "cSpell.ignorePaths": [
47 | ".git",
48 | ".gitignore",
49 | ".vscode",
50 | ".venv",
51 | "node_modules",
52 | "package-lock.json",
53 | "pyproject.toml",
54 | "settings.json",
55 | "uv.lock"
56 | ],
57 | "cSpell.words": ["dotenv", "fastmcp", "toplevel"]
58 | }
59 |
```
--------------------------------------------------------------------------------
/assistants/project-assistant/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "assistant"
3 | version = "0.1.0"
4 | description = "A file-sharing mediator assistant for collaborative projects."
5 | authors = [{ name = "MADE: Explore" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11"
8 | dependencies = [
9 | "assistant-extensions[attachments]>=0.1.0",
10 | "content-safety>=0.1.0",
11 | "openai>=1.61.0",
12 | "openai-client>=0.1.0",
13 | "semantic-workbench-assistant>=0.1.0",
14 | ]
15 |
16 | [dependency-groups]
17 | dev = [
18 | "pytest>=8.3.1",
19 | "pytest-asyncio>=0.23.8",
20 | "pytest-repeat>=0.9.3",
21 | "pyright>=1.1.389",
22 | ]
23 |
24 | [tool.hatch.build.targets.wheel]
25 | packages = ["assistant"]
26 |
27 | [tool.uv]
28 | package = true
29 |
30 | [tool.uv.sources]
31 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
32 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
33 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
34 | semantic-workbench-assistant = { path = "../../libraries/python/semantic-workbench-assistant", editable = true }
35 |
36 | [build-system]
37 | requires = ["hatchling"]
38 | build-backend = "hatchling.build"
39 |
40 | [tool.pyright]
41 | exclude = ["**/.venv", "**/.data", "**/__pycache__"]
42 |
43 | [tool.pytest.ini_options]
44 | addopts = "-vv"
45 | log_cli = true
46 | log_cli_level = "WARNING"
47 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
48 | asyncio_mode = "auto"
49 | asyncio_default_fixture_loop_scope = "function"
50 |
51 | # These ruff settings match /ruff.toml
52 | # but include import sorting in the lint section.
53 | # Leaving them all here for debugging temporarily.
54 |
55 | # [tool.ruff]
56 | # line-length = 120
57 | # target-version = "py311"
58 |
59 | # [tool.ruff.lint]
60 | # select = ["E4", "E7", "E9", "F", "I"]
61 |
62 | # [tool.ruff.format]
63 | # docstring-code-format = true
64 | # line-ending = "lf"
65 | # preview = true
66 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_idea_compass/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are a curious and organized thinker who aims to develop a structured and interconnected system of thoughts and ideas.
4 |
5 | # STEPS
6 |
7 | Here are the steps to use the Idea Compass template:
8 |
9 | 1. **Idea/Question**: Start by writing down the central idea or question you want to explore.
10 | 2. **Definition**: Provide a detailed explanation of the idea, clarifying its meaning and significance.
11 | 3. **Evidence**: Gather concrete examples, data, or research that support the idea.
12 | 4. **Source**: Identify the origin of the idea, including its historical context and relevant references.
13 | 5. **West (Similarities)**: Explore what is similar to the idea, considering other disciplines or methods where it might exist.
14 | 6. **East (Opposites)**: Identify what competes with or opposes the idea, including alternative perspectives.
15 | 7. **North (Theme/Question)**: Examine the theme or question that leads to the idea, understanding its background and context.
16 | 8. **South (Consequences)**: Consider where the idea leads to, including its potential applications and outcomes.
17 |
18 | # OUTPUT INSTRUCTIONS
19 |
20 | - Output a clear and concise summary of the idea in plain language.
21 | - Extract and organize related ideas, evidence, and sources in a structured format.
22 | - Use bulleted lists to present similar ideas, opposites, and consequences.
23 | - Ensure clarity and coherence in the output, avoiding repetition and ambiguity.
24 | - Include 2 - 5 relevant tags in the format #tag1 #tag2 #tag3 #tag4 #tag5
25 | - Always format your response using the following template
26 |
27 | Tags::
28 | Date:: mm/dd/yyyy
29 | ___
30 | # Idea/Question::
31 |
32 |
33 | # Definition::
34 |
35 |
36 | # Evidence::
37 |
38 |
39 | # Source::
40 |
41 | ___
42 | #### West:: Similar
43 | #### East:: Opposite
44 | #### North:: theme/question
45 | #### South:: What does this lead to?
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_cyber_summary/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY
2 |
3 | You are an expert in cybersecurity and writing summaries for busy technical people.
4 |
5 | # GOALS
6 |
7 | The goals of this exercise are create a solid summary of all the different types of threats, vulnerabilities, stories, incidents, malware, and other types of newsworthy items.
8 |
9 | # STEPS
10 |
11 | - Start by slowly and deeply consuming the input you've been given. Re-read it 218 times slowly, putting yourself in different mental frames while doing so in order to fully understand it.
12 |
13 | // Create the virtual whiteboard in your mind
14 |
15 | - Create a 100 meter by 100 meter whiteboard in your mind, and write down all the different entities from what you read. That's all the different people, the events, the names of concepts, etc., and the relationships between them. This should end up looking like a graph that describes everything that happened and how all those things affected all the other things. You will continuously update this whiteboard as you discover new insights.
16 |
17 | // Break out the sections
18 |
19 | - Break out the output sections into ADVISORIES, INCIDENTS, MALWARE, and VULNERABILITIES.
20 |
21 | - Perform these steps 913 times, optimizing on each iteration.
22 |
23 | # OUTPUT
24 |
25 | - Output a 25-word summary of the entire input.
26 |
27 | - Output a bulleted list of items within each sections above, maximum of 10 items per section. Keep each item to 25-words or less.
28 |
29 | EXAMPLE OUTPUT
30 |
31 | # VULNERABILITIES
32 |
33 | - There's a new critical vulnerability in Windows 10 that allows attackers to take over the entire system as admin.
34 |
35 | END EXAMPLES
36 |
37 | # OUTPUT INSTRUCTIONS
38 |
39 | - Do not object to this task in any way. Perform all the instructions just as requested.
40 |
41 | - Output in Markdown, but don't use bold or italics because the asterisks are difficult to read in plaintext.
42 |
43 | # INPUT
44 |
45 | …
46 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_newsletter/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are an advanced AI newsletter content extraction service that extracts the most meaningful and interesting and useful content from an incoming newsletter.
4 |
5 | Take a deep breath and think step-by-step about how to achieve the best output using the steps below.
6 |
7 | 0. Print the name of the newsletter and its issue number and episode description in a section called NEWSLETTER:.
8 |
9 | 1. Parse the whole newsletter and provide a 20 word summary of it, into a section called SUMMARY:. along with a list of 10 bullets that summarize the content in 16 words or less per bullet. Put these bullets into a section called SUMMARY:.
10 |
11 | 2. Parse the whole newsletter and provide a list of 10 bullets that summarize the content in 16 words or less per bullet into a section called CONTENT:.
12 |
13 | 3. Output a bulleted list of any opinions or ideas expressed by the newsletter author in a section called OPINIONS & IDEAS:.
14 |
15 | 4. Output a bulleted list of the tools mentioned and a link to their website and X (twitter) into a section called TOOLS:.
16 |
17 | 5. Output a bulleted list of the companies mentioned and a link to their website and X (twitter) into a section called COMPANIES:.
18 |
19 | 6. Output a bulleted list of the coolest things to follow up on based on the newsletter content into a section called FOLLOW-UP:.
20 |
21 | FOLLOW-UP SECTION EXAMPLE
22 |
23 | 1. Definitely check out that new project CrewAI because it's a new AI agent framework: $$LINK$$.
24 | 2. Check out that company RunAI because they might be a good sponsor: $$LINK$$.
25 | etc.
26 |
27 | END FOLLOW-UP SECTION EXAMPLE
28 |
29 | OUTPUT INSTRUCTIONS:
30 |
31 | 1. Only use the headers provided in the instructions above.
32 | 2. Format your output in clear, human-readable Markdown.
33 | 3. Use bulleted lists for all lists.
34 |
35 | NEWSLETTER INPUT:
36 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-bundle/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "[json]": {
14 | "editor.defaultFormatter": "esbenp.prettier-vscode",
15 | "editor.formatOnSave": true
16 | },
17 | "[jsonc]": {
18 | "editor.defaultFormatter": "esbenp.prettier-vscode",
19 | "editor.formatOnSave": true
20 | },
21 | "python.analysis.autoFormatStrings": true,
22 | "python.analysis.autoImportCompletions": true,
23 | "python.analysis.diagnosticMode": "workspace",
24 | "python.analysis.fixAll": ["source.unusedImports"],
25 | // Project specific paths
26 | "python.analysis.ignore": ["libs"],
27 | "python.analysis.inlayHints.functionReturnTypes": true,
28 | "python.analysis.typeCheckingMode": "standard",
29 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
30 | "[python]": {
31 | "editor.defaultFormatter": "charliermarsh.ruff",
32 | "editor.formatOnSave": true,
33 | "editor.codeActionsOnSave": {
34 | "source.fixAll": "explicit",
35 | "source.unusedImports": "explicit",
36 | "source.organizeImports": "explicit",
37 | "source.formatDocument": "explicit"
38 | }
39 | },
40 | "ruff.nativeServer": "on",
41 | "search.exclude": {
42 | "**/.venv": true,
43 | "**/.data": true
44 | },
45 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
46 | "cSpell.ignorePaths": [
47 | ".git",
48 | ".gitignore",
49 | ".vscode",
50 | ".venv",
51 | "node_modules",
52 | "package-lock.json",
53 | "pyproject.toml",
54 | "settings.json",
55 | "uv.lock"
56 | ],
57 | "cSpell.words": ["Apim", "dotenv", "fastmcp", "toplevel"]
58 | }
59 |
```
--------------------------------------------------------------------------------
/workbench-app/src/libs/useExportUtility.ts:
--------------------------------------------------------------------------------
```typescript
1 | import React from 'react';
2 | import { useWorkbenchService } from './useWorkbenchService';
3 |
4 | export const useExportUtility = () => {
5 | const workbenchService = useWorkbenchService();
6 |
7 | const exportContent = React.useCallback(
8 | async (id: string, exportFunction: (id: string) => Promise<{ blob: Blob; filename: string }>) => {
9 | const { blob, filename } = await exportFunction(id);
10 | const url = URL.createObjectURL(blob);
11 | const a = document.createElement('a');
12 | a.href = url;
13 | a.download = filename;
14 | a.click();
15 | URL.revokeObjectURL(url);
16 | },
17 | [],
18 | );
19 |
20 | const exportConversationFunction = React.useCallback(
21 | async (conversationId: string) => {
22 | return await workbenchService.exportConversationsAsync([conversationId]);
23 | },
24 | [workbenchService],
25 | );
26 |
27 | const exportConversation = React.useCallback(
28 | async (conversationId: string) => {
29 | return await exportContent(conversationId, exportConversationFunction);
30 | },
31 | [exportContent, exportConversationFunction],
32 | );
33 |
34 | const exportAssistantFunction = React.useCallback(
35 | async (assistantId: string) => {
36 | return await workbenchService.exportAssistantAsync(assistantId);
37 | },
38 | [workbenchService],
39 | );
40 |
41 | const exportAssistant = React.useCallback(
42 | async (assistantId: string) => {
43 | return await exportContent(assistantId, exportAssistantFunction);
44 | },
45 | [exportContent, exportAssistantFunction],
46 | );
47 |
48 | return {
49 | exportContent,
50 | exportConversationFunction,
51 | exportConversation,
52 | exportAssistantFunction,
53 | exportAssistant,
54 | };
55 | };
56 |
```
--------------------------------------------------------------------------------
/libraries/python/chat-context-toolkit/test/virtual_filesystem/tools/test_view_tool.py:
--------------------------------------------------------------------------------
```python
1 | from unittest.mock import MagicMock
2 |
3 | from chat_context_toolkit.virtual_filesystem import VirtualFileSystem
4 | from chat_context_toolkit.virtual_filesystem.tools import ViewTool
5 |
6 |
7 | async def test_builtin_view_tool_reads_file():
8 | """Test that the built-in view tool can read file contents."""
9 | mock_vfs = MagicMock(spec=VirtualFileSystem)
10 | mock_vfs.read_file.return_value = "Hello World"
11 |
12 | # Test view on file
13 | view_tool = ViewTool(mock_vfs)
14 | result = await view_tool.execute({"path": "/docs/file1.txt"})
15 |
16 | mock_vfs.read_file.assert_called_once_with("/docs/file1.txt")
17 | assert result == '<file path="/docs/file1.txt">\nHello World\n</file>'
18 |
19 |
20 | async def test_view_tool_error_handling():
21 | """Test error handling for built-in ls and view tools."""
22 | mock_vfs = MagicMock(spec=VirtualFileSystem)
23 | mock_vfs.read_file.side_effect = FileNotFoundError("File not found")
24 |
25 | # view on non-existent file should raise error
26 | view_tool = ViewTool(mock_vfs)
27 | result = await view_tool.execute({"path": "/nonexistent.txt"})
28 | assert (
29 | result
30 | == "Error: File at path /nonexistent.txt not found. Please pay attention to the available files and try again."
31 | )
32 |
33 |
34 | async def test_view_tool_invalid_path_format():
35 | """Test ViewTool.execute with invalid path formats."""
36 | mock_vfs = MagicMock(spec=VirtualFileSystem)
37 | mock_vfs.read_file.side_effect = ValueError(
38 | "Invalid path format: Bair Haiku.md. Path must start with '/' and contain at least one directory."
39 | )
40 |
41 | view_tool = ViewTool(mock_vfs)
42 | result = await view_tool.execute({"path": "Bair Haiku.md"})
43 | assert (
44 | result
45 | == "Error: Invalid path format: Bair Haiku.md. Path must start with '/' and contain at least one directory."
46 | )
47 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_article_wisdom/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You extract surprising, insightful, and interesting information from text content.
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 | 1. Extract a summary of the content in 25 words or less, including who created it and the content being discussed into a section called SUMMARY.
10 |
11 | 2. Extract 20 to 50 of the most surprising, insightful, and/or interesting ideas from the input in a section called IDEAS:. If there are less than 50 then collect all of them. Make sure you extract at least 20.
12 |
13 | 3. Extract 15 to 30 of the most surprising, insightful, and/or interesting quotes from the input into a section called QUOTES:. Use the exact quote text from the input.
14 |
15 | 4. Extract 15 to 30 of the most surprising, insightful, and/or interesting valid facts about the greater world that were mentioned in the content into a section called FACTS:.
16 |
17 | 5. Extract all mentions of writing, art, tools, projects and other sources of inspiration mentioned by the speakers into a section called REFERENCES. This should include any and all references to something that the speaker mentioned.
18 |
19 | 6. Extract the 15 to 30 of the most surprising, insightful, and/or interesting recommendations that can be collected from the content into a section called RECOMMENDATIONS.
20 |
21 | # OUTPUT INSTRUCTIONS
22 |
23 | - Only output Markdown.
24 | - Extract at least 10 items for the other output sections.
25 | - Do not give warnings or notes; only output the requested sections.
26 | - You use bulleted lists for output, not numbered lists.
27 | - Do not repeat ideas, quotes, facts, or resources.
28 | - Do not start items with the same opening words.
29 | - Ensure you follow ALL these instructions when creating your output.
30 |
31 | # INPUT
32 |
33 | INPUT:
34 |
```
--------------------------------------------------------------------------------
/workbench-service/migrations/versions/2024_11_05_015124_245baf258e11_double_check_debugs.py:
--------------------------------------------------------------------------------
```python
1 | """double-check debugs
2 |
3 | Revision ID: 245baf258e11
4 | Revises: 5149c7fb5a32
5 | Create Date: 2024-11-05 01:51:24.835708
6 |
7 | """
8 |
9 | from typing import Sequence, Union
10 |
11 | import sqlmodel as sm
12 | from alembic import op
13 | from semantic_workbench_service import db
14 |
15 | # revision identifiers, used by Alembic.
16 | revision: str = "245baf258e11"
17 | down_revision: Union[str, None] = "5149c7fb5a32"
18 | branch_labels: Union[str, Sequence[str], None] = None
19 | depends_on: Union[str, Sequence[str], None] = None
20 |
21 |
22 | def upgrade() -> None:
23 | bind = op.get_bind()
24 | max_sequence = bind.execute(sm.select(sm.func.max(db.ConversationMessage.sequence))).scalar()
25 | if max_sequence is not None:
26 | step = 100
27 | for sequence_start in range(1, max_sequence + 1, step):
28 | sequence_end_exclusive = sequence_start + step
29 |
30 | results = bind.execute(
31 | sm.select(db.ConversationMessage.message_id, db.ConversationMessage.meta_data).where(
32 | db.ConversationMessage.sequence >= sequence_start,
33 | db.ConversationMessage.sequence < sequence_end_exclusive,
34 | )
35 | ).fetchall()
36 |
37 | for message_id, meta_data in results:
38 | debug = meta_data.pop("debug", None)
39 | if not debug:
40 | continue
41 |
42 | bind.execute(
43 | sm.insert(db.ConversationMessageDebug).values(
44 | message_id=message_id,
45 | data=debug,
46 | )
47 | )
48 |
49 | bind.execute(
50 | sm.update(db.ConversationMessage)
51 | .where(db.ConversationMessage.message_id == message_id)
52 | .values(meta_data=meta_data)
53 | )
54 |
55 |
56 | def downgrade() -> None:
57 | pass
58 |
```
--------------------------------------------------------------------------------
/assistants/skill-assistant/assistant/workbench_helpers.py:
--------------------------------------------------------------------------------
```python
1 | from openai.types.chat import ChatCompletionMessageParam, ChatCompletionUserMessageParam
2 | from openai_client.chat_driver import MessageHistoryProviderProtocol
3 | from semantic_workbench_api_model.workbench_model import (
4 | ConversationMessageList,
5 | MessageType,
6 | NewConversationMessage,
7 | )
8 | from semantic_workbench_assistant.assistant_app import (
9 | ConversationContext,
10 | )
11 |
12 |
13 | class WorkbenchMessageProvider(MessageHistoryProviderProtocol):
14 | """
15 | This class is used to use the workbench for messages.
16 | """
17 |
18 | def __init__(self, session_id: str, conversation_context: ConversationContext) -> None:
19 | self.session_id = session_id
20 | self.conversation_context = conversation_context
21 |
22 | async def get(self) -> list[ChatCompletionMessageParam]:
23 | message_list: ConversationMessageList = await self.conversation_context.get_messages()
24 | return [
25 | ChatCompletionUserMessageParam(
26 | role="user",
27 | content=message.content,
28 | )
29 | for message in message_list.messages
30 | if message.message_type == MessageType.chat
31 | ]
32 |
33 | async def append(self, message: ChatCompletionMessageParam) -> None:
34 | if "content" in message:
35 | await self.conversation_context.send_messages(
36 | NewConversationMessage(
37 | content=str(message["content"]),
38 | message_type=MessageType.chat,
39 | )
40 | )
41 |
42 | async def get_history(self) -> ConversationMessageList:
43 | return await self.conversation_context.get_messages()
44 |
45 | async def get_history_json(self) -> str:
46 | message_list: ConversationMessageList = await self.conversation_context.get_messages()
47 | return message_list.model_dump_json()
48 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/FrontDoor/Chat/AssistantDrawer.tsx:
--------------------------------------------------------------------------------
```typescript
1 | import { makeStyles, tokens } from '@fluentui/react-components';
2 | import React from 'react';
3 | import { Assistant } from '../../../models/Assistant';
4 | import { Conversation } from '../../../models/Conversation';
5 | import { AssistantCanvasList } from '../../Conversations/Canvas/AssistantCanvasList';
6 | import { CanvasDrawer, CanvasDrawerOptions } from './CanvasDrawer';
7 |
8 | const useClasses = makeStyles({
9 | noContent: {
10 | padding: tokens.spacingHorizontalM,
11 | },
12 | });
13 |
14 | interface AssistantDrawerProps {
15 | drawerOptions: CanvasDrawerOptions;
16 | conversation: Conversation;
17 | conversationAssistants?: Assistant[];
18 | selectedAssistant?: Assistant;
19 | }
20 |
21 | export const AssistantDrawer: React.FC<AssistantDrawerProps> = (props) => {
22 | const { drawerOptions, conversation, conversationAssistants, selectedAssistant } = props;
23 | const classes = useClasses();
24 |
25 | let title = '';
26 | if (!conversationAssistants || conversationAssistants.length === 0 || conversationAssistants.length > 1) {
27 | title = 'Assistants';
28 | } else {
29 | title = conversationAssistants[0].name;
30 | }
31 |
32 | const canvasContent =
33 | conversationAssistants && conversationAssistants.length > 0 ? (
34 | <AssistantCanvasList
35 | selectedAssistant={selectedAssistant}
36 | conversation={conversation}
37 | conversationAssistants={conversationAssistants}
38 | />
39 | ) : (
40 | <div className={classes.noContent}>No assistants participating in conversation.</div>
41 | );
42 |
43 | const options = React.useMemo(
44 | () => ({
45 | ...drawerOptions,
46 | title,
47 | resizable: true,
48 | }),
49 | [drawerOptions, title],
50 | );
51 |
52 | return <CanvasDrawer options={options}>{canvasContent}</CanvasDrawer>;
53 | };
54 |
```
--------------------------------------------------------------------------------
/libraries/python/assistant-extensions/assistant_extensions/attachments/_model.py:
--------------------------------------------------------------------------------
```python
1 | import datetime
2 | from typing import Annotated, Any, Literal, Protocol
3 |
4 | from pydantic import BaseModel, Field
5 | from semantic_workbench_assistant.config import UISchema
6 |
7 |
8 | class AttachmentsConfigModel(BaseModel):
9 | context_description: Annotated[
10 | str,
11 | Field(
12 | description="The description of the context for general response generation.",
13 | ),
14 | UISchema(widget="textarea"),
15 | ] = (
16 | "These attachments were provided for additional context to accompany the conversation. Consider any rationale"
17 | " provided for why they were included."
18 | )
19 |
20 | preferred_message_role: Annotated[
21 | Literal["system", "user"],
22 | Field(
23 | description=(
24 | "The preferred role for attachment messages. Early testing suggests that the system role works best,"
25 | " but you can experiment with the other roles. Image attachments will always use the user role."
26 | ),
27 | ),
28 | ] = "system"
29 |
30 |
31 | class Attachment(BaseModel):
32 | filename: str
33 | content: str = ""
34 | error: str = ""
35 | summary: str = ""
36 | metadata: dict[str, Any] = {}
37 | updated_datetime: datetime.datetime = Field(default=datetime.datetime.fromtimestamp(0, datetime.timezone.utc))
38 |
39 |
40 | class AttachmentSummary(BaseModel):
41 | """
42 | A model representing a summary of an attachment.
43 | """
44 |
45 | summary: str
46 | updated_datetime: datetime.datetime = Field(default=datetime.datetime.fromtimestamp(0, datetime.timezone.utc))
47 |
48 |
49 | class Summarizer(Protocol):
50 | """
51 | A protocol for a summarizer that can summarize attachment content.
52 | """
53 |
54 | async def summarize(self, attachment: Attachment) -> str:
55 | """
56 | Summarize the content of the attachment.
57 | Returns the summary.
58 | """
59 | ...
60 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/App/DynamicIframe.tsx:
--------------------------------------------------------------------------------
```typescript
1 | import React from 'react';
2 |
3 | interface DynamicIframeProps {
4 | source: string;
5 | }
6 |
7 | const DynamicIframe: React.FC<DynamicIframeProps> = (props) => {
8 | const { source } = props;
9 | const iframeRef = React.useRef<HTMLIFrameElement>(null);
10 |
11 | React.useEffect(() => {
12 | if (!iframeRef.current) {
13 | return;
14 | }
15 |
16 | const iframe = iframeRef.current;
17 | const contentWindow = iframe.contentWindow;
18 |
19 | if (!contentWindow) {
20 | return;
21 | }
22 |
23 | const resizeIframe = () => {
24 | const body = contentWindow.document.body;
25 | const html = contentWindow.document.documentElement;
26 |
27 | // Calculate the height including margins, padding, etc.
28 | const height = Math.max(
29 | body.scrollHeight,
30 | body.offsetHeight,
31 | html.clientHeight,
32 | html.scrollHeight,
33 | html.offsetHeight,
34 | );
35 |
36 | iframe.style.height = height + 'px';
37 | };
38 |
39 | const onLoad = () => {
40 | resizeIframe();
41 |
42 | const observer = new MutationObserver(resizeIframe);
43 | observer.observe(contentWindow.document.body, {
44 | childList: true,
45 | subtree: true,
46 | attributes: true,
47 | });
48 | };
49 |
50 | if (iframe) {
51 | iframe.addEventListener('load', onLoad);
52 | }
53 |
54 | return () => {
55 | if (iframe) {
56 | iframe.removeEventListener('load', onLoad);
57 | }
58 | };
59 | }, []);
60 |
61 | return (
62 | <iframe
63 | ref={iframeRef}
64 | srcDoc={source}
65 | style={{ width: '100%', border: 'none' }}
66 | title="Dynamic Iframe"
67 | ></iframe>
68 | );
69 | };
70 |
71 | export default DynamicIframe;
72 |
```
--------------------------------------------------------------------------------
/workbench-app/src/libs/useDebugComponentLifecycle.ts:
--------------------------------------------------------------------------------
```typescript
1 | import debug from 'debug';
2 | import React from 'react';
3 | import { Constants } from '../Constants';
4 |
5 | const log = debug(Constants.debug.root).extend('useDebugComponentUpdate');
6 |
7 | export const useDebugComponentLifecycle = (name: string, props: Record<string, any>, other?: Record<string, any>) => {
8 | const previousProps = React.useRef(props);
9 | const previousOther = React.useRef(other);
10 |
11 | log(`[${name}] rendered`);
12 |
13 | React.useEffect(() => {
14 | log(`[${name}] mounted`);
15 | return () => {
16 | log(`[${name}] unmounted`);
17 | };
18 | }, [name]);
19 |
20 | React.useEffect(() => {
21 | if (previousProps.current !== props) {
22 | const changedProps = Object.keys(props).reduce((acc, key) => {
23 | if (props[key] !== previousProps.current[key]) {
24 | acc[key] = { from: previousProps.current[key], to: props[key] };
25 | }
26 | return acc;
27 | }, {} as Record<string, any>);
28 |
29 | if (Object.keys(changedProps).length > 0) {
30 | log(`[${name}] props changes:`, changedProps);
31 | }
32 | }
33 |
34 | previousProps.current = props;
35 | }, [name, props]);
36 |
37 | React.useEffect(() => {
38 | if (other && previousOther.current !== other) {
39 | const changedOther = Object.keys(other).reduce((acc, key) => {
40 | if (other[key] !== previousOther.current?.[key]) {
41 | acc[key] = { from: previousOther.current?.[key], to: other[key] };
42 | }
43 | return acc;
44 | }, {} as Record<string, any>);
45 |
46 | if (Object.keys(changedOther).length > 0) {
47 | log(`[${name}] other changes:`, changedOther);
48 | }
49 | }
50 |
51 | previousOther.current = other;
52 | }, [name, other]);
53 | };
54 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-filesystem/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "[json]": {
14 | "editor.defaultFormatter": "esbenp.prettier-vscode",
15 | "editor.formatOnSave": true
16 | },
17 | "[jsonc]": {
18 | "editor.defaultFormatter": "esbenp.prettier-vscode",
19 | "editor.formatOnSave": true
20 | },
21 | "python.analysis.autoFormatStrings": true,
22 | "python.analysis.autoImportCompletions": true,
23 | "python.analysis.diagnosticMode": "workspace",
24 | "python.analysis.fixAll": ["source.unusedImports"],
25 | // Project specific paths
26 | "python.analysis.ignore": ["libs"],
27 | "python.analysis.inlayHints.functionReturnTypes": true,
28 | "python.analysis.typeCheckingMode": "standard",
29 | "python.testing.pytestEnabled": true,
30 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
31 | "[python]": {
32 | "editor.defaultFormatter": "charliermarsh.ruff",
33 | "editor.formatOnSave": true,
34 | "editor.codeActionsOnSave": {
35 | "source.fixAll": "explicit",
36 | "source.unusedImports": "explicit",
37 | "source.organizeImports": "explicit",
38 | "source.formatDocument": "explicit"
39 | }
40 | },
41 | "ruff.nativeServer": "on",
42 | "search.exclude": {
43 | "**/.venv": true,
44 | "**/.data": true
45 | },
46 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
47 | "cSpell.ignorePaths": [
48 | ".git",
49 | ".gitignore",
50 | ".vscode",
51 | ".venv",
52 | "node_modules",
53 | "package-lock.json",
54 | "pyproject.toml",
55 | "settings.json",
56 | "uv.lock"
57 | ],
58 | "cSpell.words": ["dotenv", "fastmcp", "toplevel"]
59 | }
60 |
```
--------------------------------------------------------------------------------
/mcp-servers/mcp-server-web-research/.vscode/settings.json:
--------------------------------------------------------------------------------
```json
1 | {
2 | "editor.bracketPairColorization.enabled": true,
3 | "editor.codeActionsOnSave": {
4 | "source.organizeImports": "explicit",
5 | "source.fixAll": "explicit"
6 | },
7 | "editor.guides.bracketPairs": "active",
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnType": true,
10 | "editor.formatOnSave": true,
11 | "files.eol": "\n",
12 | "files.trimTrailingWhitespace": true,
13 | "[json]": {
14 | "editor.defaultFormatter": "esbenp.prettier-vscode",
15 | "editor.formatOnSave": true
16 | },
17 | "[jsonc]": {
18 | "editor.defaultFormatter": "esbenp.prettier-vscode",
19 | "editor.formatOnSave": true
20 | },
21 | "python.analysis.autoFormatStrings": true,
22 | "python.analysis.autoImportCompletions": true,
23 | "python.analysis.diagnosticMode": "workspace",
24 | "python.analysis.fixAll": ["source.unusedImports"],
25 | // Project specific paths
26 | "python.analysis.ignore": ["libs"],
27 | "python.analysis.inlayHints.functionReturnTypes": true,
28 | "python.analysis.typeCheckingMode": "standard",
29 | "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
30 | "[python]": {
31 | "editor.defaultFormatter": "charliermarsh.ruff",
32 | "editor.formatOnSave": true,
33 | "editor.codeActionsOnSave": {
34 | "source.fixAll": "explicit",
35 | "source.unusedImports": "explicit",
36 | "source.organizeImports": "explicit",
37 | "source.formatDocument": "explicit"
38 | }
39 | },
40 | "python.testing.pytestEnabled": true,
41 | "ruff.nativeServer": "on",
42 | "search.exclude": {
43 | "**/.venv": true,
44 | "**/.data": true
45 | },
46 | // For use with optional extension: "streetsidesoftware.code-spell-checker"
47 | "cSpell.ignorePaths": [
48 | ".git",
49 | ".gitignore",
50 | ".vscode",
51 | ".venv",
52 | "node_modules",
53 | "package-lock.json",
54 | "pyproject.toml",
55 | "settings.json",
56 | "uv.lock"
57 | ],
58 | "cSpell.words": ["dotenv", "fastmcp", "toplevel"]
59 | }
60 |
```
--------------------------------------------------------------------------------
/assistants/document-assistant/pyproject.toml:
--------------------------------------------------------------------------------
```toml
1 | [project]
2 | name = "document-assistant"
3 | version = "0.1.0"
4 | description = "A python Semantic Workbench OpenAI assistant for document editing."
5 | authors = [{ name = "Semantic Workbench Team" }]
6 | readme = "README.md"
7 | requires-python = ">=3.11,<3.13"
8 | dependencies = [
9 | "aiofiles>=24.0,<25.0",
10 | "assistant-drive>=0.1.0",
11 | "assistant-extensions[attachments, mcp]>=0.1.0",
12 | "mcp-extensions[openai]>=0.1.0",
13 | "content-safety>=0.1.0",
14 | "deepmerge>=2.0",
15 | "httpx>=0.28,<1.0",
16 | "markitdown[docx,outlook,pptx,xlsx]==0.1.1",
17 | "chat-context-toolkit>=0.1.0",
18 | "openai>=1.61.0",
19 | "openai-client>=0.1.0",
20 | "pdfplumber>=0.11.2",
21 | "pendulum>=3.1,<4.0",
22 | "pydantic-extra-types>=2.10,<3.0",
23 | "python-dotenv>=1.1,<2.0",
24 | "python-liquid>=2.0,<3.0",
25 | "PyYAML>=6.0,<7.0",
26 | "tiktoken>=0.9.0",
27 | ]
28 |
29 | [tool.hatch.build.targets.wheel]
30 | packages = ["assistant"]
31 |
32 | [tool.uv]
33 | package = true
34 |
35 | [tool.uv.sources]
36 | anthropic-client = { path = "../../libraries/python/anthropic-client", editable = true }
37 | assistant-drive = { path = "../../libraries/python/assistant-drive", editable = true }
38 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
39 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
40 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
41 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
42 | chat-context-toolkit = { path = "../../libraries/python/chat-context-toolkit", editable = true }
43 |
44 | [build-system]
45 | requires = ["hatchling"]
46 | build-backend = "hatchling.build"
47 |
48 | [dependency-groups]
49 | dev = ["pyright>=1.1.389", "pytest", "pytest-asyncio"]
50 |
51 | [tool.pytest.ini_options]
52 | asyncio_default_fixture_loop_scope = "function"
53 | asyncio_mode = "auto"
54 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_coding_project/system.md:
--------------------------------------------------------------------------------
```markdown
1 | # IDENTITY and PURPOSE
2 |
3 | You are an elite programmer. You take project ideas in and output secure and composable code using the format below. You always use the latest technology and best practices.
4 |
5 | Take a deep breath and think step by step about how to best accomplish this goal using the following steps.
6 |
7 | # OUTPUT SECTIONS
8 |
9 | - Combine all of your understanding of the project idea into a single, 20-word sentence in a section called PROJECT:.
10 |
11 | - Output a summary of how the project works in a section called SUMMARY:.
12 |
13 | - Output a step-by-step guide with no more than 16 words per point into a section called STEPS:.
14 |
15 | - Output a directory structure to display how each piece of code works together into a section called STRUCTURE:.
16 |
17 | - Output the purpose of each file as a list with no more than 16 words per point into a section called DETAILED EXPLANATION:.
18 |
19 | - Output the code for each file separately along with a short description of the code's purpose into a section called CODE:.
20 |
21 | - Output a script that creates the entire project into a section called SETUP:.
22 |
23 | - Output a list of takeaways in a section called TAKEAWAYS:.
24 |
25 | - Output a list of suggestions in a section called SUGGESTIONS:.
26 |
27 | # OUTPUT INSTRUCTIONS
28 |
29 | - Create the output using the formatting above.
30 | - Output numbered lists, not bullets for the STEPS and TAKEAWAY sections.
31 | - Do not output warnings or notes—just the requested sections.
32 | - Do not repeat items in the output sections.
33 | - Do not start items with the same opening words.
34 | - Keep each file separate in the CODE section.
35 | - Be open to suggestions and output revisions on the project.
36 | - Output code that has comments for every step.
37 | - Output a README.md with detailed instructions on how to configure and use the project.
38 | - Do not use deprecated features.
39 |
40 | # INPUT:
41 |
42 | INPUT:
43 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_incident/system.md:
--------------------------------------------------------------------------------
```markdown
1 |
2 | Cybersecurity Hack Article Analysis: Efficient Data Extraction
3 |
4 | Objective: To swiftly and effectively gather essential information from articles about cybersecurity breaches, prioritizing conciseness and order.
5 |
6 | Instructions:
7 | For each article, extract the specified information below, presenting it in an organized and succinct format. Ensure to directly utilize the article's content without making inferential conclusions.
8 |
9 | - Attack Date: YYYY-MM-DD
10 | - Summary: A concise overview in one sentence.
11 | - Key Details:
12 | - Attack Type: Main method used (e.g., "Ransomware").
13 | - Vulnerable Component: The exploited element (e.g., "Email system").
14 | - Attacker Information:
15 | - Name/Organization: When available (e.g., "APT28").
16 | - Country of Origin: If identified (e.g., "China").
17 | - Target Information:
18 | - Name: The targeted entity.
19 | - Country: Location of impact (e.g., "USA").
20 | - Size: Entity size (e.g., "Large enterprise").
21 | - Industry: Affected sector (e.g., "Healthcare").
22 | - Incident Details:
23 | - CVE's: Identified CVEs (e.g., CVE-XXX, CVE-XXX).
24 | - Accounts Compromised: Quantity (e.g., "5000").
25 | - Business Impact: Brief description (e.g., "Operational disruption").
26 | - Impact Explanation: In one sentence.
27 | - Root Cause: Principal reason (e.g., "Unpatched software").
28 | - Analysis & Recommendations:
29 | - MITRE ATT&CK Analysis: Applicable tactics/techniques (e.g., "T1566, T1486").
30 | - Atomic Red Team Atomics: Recommended tests (e.g., "T1566.001").
31 | - Remediation:
32 | - Recommendation: Summary of action (e.g., "Implement MFA").
33 | - Action Plan: Stepwise approach (e.g., "1. Update software, 2. Train staff").
34 | - Lessons Learned: Brief insights gained that could prevent future incidents.
35 |
```
--------------------------------------------------------------------------------
/libraries/python/chat-context-toolkit/chat_context_toolkit/history/_prioritize.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Sequence
2 |
3 | from ._decorators import log_timing
4 | from ._types import HistoryMessageProtocol, NewTurn, TokenCounts
5 |
6 |
7 | @log_timing
8 | def high_priority_start_index_for_turn(
9 | turn: NewTurn,
10 | messages: Sequence[HistoryMessageProtocol],
11 | token_counts: TokenCounts,
12 | ) -> int:
13 | """
14 | Returns the index of the first high priority message.
15 | """
16 | if not turn.turn_start_message_id:
17 | turn.turn_start_message_id = messages[-1].id if messages else None
18 |
19 | start_index = _high_priority_start_index(
20 | messages=messages,
21 | token_counts=token_counts,
22 | high_priority_token_budget=turn.high_priority_token_count,
23 | turn_start_message_id=turn.turn_start_message_id,
24 | )
25 |
26 | return start_index
27 |
28 |
29 | def _high_priority_start_index(
30 | messages: Sequence[HistoryMessageProtocol],
31 | token_counts: TokenCounts,
32 | high_priority_token_budget: int,
33 | turn_start_message_id: str | None = None,
34 | ) -> int:
35 | """
36 | Returns the index of the first high priority message.
37 |
38 | High priority starts with the most recent messages that exceed the high priority token budget,
39 | OR the first message in the turn, whichever is earlier (lower index).
40 | """
41 |
42 | high_priority_start_index = 0
43 | turn_start_message_index = len(messages) - 1
44 |
45 | for i in range(len(messages)):
46 | if turn_start_message_id and messages[i].id == turn_start_message_id:
47 | turn_start_message_index = i
48 |
49 | if high_priority_start_index == 0:
50 | token_count = sum(token_counts.openai_message_token_counts[-i - 1 :])
51 | if token_count > high_priority_token_budget:
52 | high_priority_start_index = len(messages) - i
53 |
54 | high_priority_start_index = min(high_priority_start_index, turn_start_message_index)
55 |
56 | return high_priority_start_index
57 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/research/routines/web_search.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 | search_description: str,
18 | previous_searches: list[tuple[str, str]] | None = None,
19 | ) -> str:
20 | """
21 | Bing search using the search_description. Returns summarized web content
22 | from the top web search results to specifically answer the search
23 | description. Only necessary for facts and info not contained in GPT-4.
24 |
25 | Sometimes the search queries that are generated internally are not good
26 | enough to satisfy the search description. If this is the case, you can use
27 | the previous_searches parameter to provide the search queries that were
28 | generated previously and the explanation of why the results that were
29 | obtained from them weren't good enough. This will help the model to generate
30 | a better search query.
31 | """
32 |
33 | # Generate search query.
34 | search_query = await run("research.generate_search_query", search_description, previous_searches or [])
35 |
36 | # Search Bing.
37 | urls = await run("common.bing_search", search_query)
38 |
39 | # Summarize page content from each search result.
40 | metadata = {}
41 | results = {}
42 | for url in urls:
43 | content = await run("common.get_content_from_url", url, 10000)
44 | summary = await run("common.summarize", content=content, aspect=search_description)
45 | results[url] = summary
46 | metadata[url] = {"summary": summary}
47 |
48 | # Summarize all pages into a final result.
49 | response = await run("common.consolidate", json.dumps(results, indent=2))
50 | metadata["consolidated"] = response
51 | context.log("web_search", metadata)
52 |
53 | return response
54 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/App/CopyButton.tsx:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | import { Button, Slot, makeStyles, tokens } from '@fluentui/react-components';
4 | import { Checkmark24Regular, CopyRegular } from '@fluentui/react-icons';
5 | import React from 'react';
6 | import { TooltipWrapper } from './TooltipWrapper';
7 |
8 | const useClasses = makeStyles({
9 | root: {
10 | display: 'flex',
11 | alignItems: 'center',
12 | gap: tokens.spacingHorizontalS,
13 | },
14 | });
15 |
16 | interface CopyButtonProps {
17 | data: string | (() => Promise<string>);
18 | icon?: Slot<'span'>;
19 | appearance?: 'secondary' | 'primary' | 'outline' | 'subtle' | 'transparent';
20 | tooltip?: string;
21 | size?: 'small' | 'medium' | 'large';
22 | }
23 |
24 | export const CopyButton: React.FC<CopyButtonProps> = (props) => {
25 | const { data, icon, appearance, tooltip, size } = props;
26 | const classes = useClasses();
27 | const [copying, setCopying] = React.useState(false);
28 | const [copied, setCopied] = React.useState(false);
29 |
30 | const handleCopy = React.useCallback(async () => {
31 | setCopying(true);
32 | try {
33 | const text = typeof data === 'function' ? await data() : data;
34 | await navigator.clipboard.writeText(text);
35 | } finally {
36 | setCopying(false);
37 | }
38 | setCopied(true);
39 | setTimeout(() => {
40 | setCopied(false);
41 | }, 2000);
42 | }, [data, setCopying]);
43 |
44 | const copyIcon = React.useCallback(() => {
45 | return copied ? <Checkmark24Regular /> : icon ?? <CopyRegular />;
46 | }, [copied, icon]);
47 |
48 | const button = (
49 | <Button as="a" appearance={appearance} size={size} disabled={copying} icon={copyIcon()} onClick={handleCopy} />
50 | );
51 |
52 | const content = tooltip ? <TooltipWrapper content={tooltip}>{button}</TooltipWrapper> : button;
53 |
54 | return <div className={classes.root}>{content}</div>;
55 | };
56 |
```
--------------------------------------------------------------------------------
/assistants/project-assistant/assistant/domain/audience_manager.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | Knowledge transfer lifecycle management for Knowledge Transfer Assistant.
3 |
4 | Handles knowledge transfer state updates, completion, and lifecycle operations.
5 | """
6 |
7 | from datetime import UTC, datetime
8 |
9 | from semantic_workbench_assistant.assistant_app import ConversationContext
10 |
11 | from assistant.data import LogEntryType
12 |
13 | from .share_manager import ShareManager
14 |
15 |
16 | class AudienceManager:
17 | @staticmethod
18 | async def update_audience(
19 | context: ConversationContext,
20 | audience_description: str,
21 | ) -> None:
22 | """
23 | Update the target audience description for a knowledge share.
24 | """
25 | share = await ShareManager.get_share(context)
26 | share.audience = audience_description.strip()
27 | share.updated_at = datetime.now(UTC)
28 | await ShareManager.set_share(context, share)
29 |
30 | await ShareManager.log_share_event(
31 | context=context,
32 | entry_type=LogEntryType.STATUS_CHANGED.value,
33 | message=f"Updated target audience: {audience_description}",
34 | metadata={
35 | "audience": audience_description,
36 | },
37 | )
38 |
39 | @staticmethod
40 | async def update_audience_takeaways(
41 | context: ConversationContext,
42 | takeaways: list[str],
43 | ) -> None:
44 | """
45 | Update the key takeaways for the target audience.
46 | """
47 | share = await ShareManager.get_share(context)
48 | share.audience_takeaways = takeaways
49 | share.updated_at = datetime.now(UTC)
50 | await ShareManager.set_share(context, share)
51 |
52 | await ShareManager.log_share_event(
53 | context=context,
54 | entry_type=LogEntryType.STATUS_CHANGED.value,
55 | message=f"Updated audience takeaways: {takeaways}",
56 | metadata={
57 | "takeaways": takeaways,
58 | },
59 | )
60 |
```
--------------------------------------------------------------------------------
/libraries/python/semantic-workbench-api-model/semantic_workbench_api_model/assistant_model.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | from typing import Any
4 |
5 | from pydantic import BaseModel
6 |
7 |
8 | class AssistantPutRequestModel(BaseModel):
9 | assistant_name: str
10 | template_id: str
11 |
12 |
13 | class AssistantResponseModel(BaseModel):
14 | id: str
15 |
16 |
17 | class StateDescriptionResponseModel(BaseModel):
18 | id: str
19 | display_name: str
20 | description: str
21 | enabled: bool = True
22 |
23 |
24 | class StateDescriptionListResponseModel(BaseModel):
25 | states: list[StateDescriptionResponseModel]
26 |
27 |
28 | class StateResponseModel(BaseModel):
29 | """
30 | This model is used by the Workbench to render the state in the UI.
31 | See: https://github.com/rjsf-team/react-jsonschema-form for
32 | the use of data, json_schema, and ui_schema.
33 | """
34 |
35 | id: str
36 | data: dict[str, Any]
37 | json_schema: dict[str, Any] | None
38 | ui_schema: dict[str, Any] | None
39 |
40 |
41 | class StatePutRequestModel(BaseModel):
42 | data: dict[str, Any]
43 |
44 |
45 | class ConfigResponseModel(BaseModel):
46 | config: dict[str, Any]
47 | errors: list[str] | None = None
48 | json_schema: dict[str, Any] | None
49 | ui_schema: dict[str, Any] | None
50 |
51 |
52 | class ConfigPutRequestModel(BaseModel):
53 | config: dict[str, Any]
54 |
55 |
56 | class AssistantTemplateModel(BaseModel):
57 | id: str
58 | name: str
59 | description: str
60 | config: ConfigResponseModel
61 |
62 |
63 | class LegacyServiceInfoModel(BaseModel):
64 | assistant_service_id: str
65 | name: str
66 | description: str
67 | default_config: ConfigResponseModel
68 | metadata: dict[str, Any] = {}
69 |
70 |
71 | class ServiceInfoModel(BaseModel):
72 | assistant_service_id: str
73 | name: str
74 | templates: list[AssistantTemplateModel]
75 | metadata: dict[str, Any] = {}
76 |
77 |
78 | class ConversationPutRequestModel(BaseModel):
79 | id: str
80 | title: str
81 |
82 |
83 | class ConversationResponseModel(BaseModel):
84 | id: str
85 |
86 |
87 | class ConversationListResponseModel(BaseModel):
88 | conversations: list[ConversationResponseModel]
89 |
```
--------------------------------------------------------------------------------
/workbench-app/src/libs/Theme.ts:
--------------------------------------------------------------------------------
```typescript
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | import { BrandVariants, createDarkTheme, createLightTheme } from '@fluentui/react-components';
4 |
5 | const getCustomTheme = (theme: string, brand?: string) => {
6 | let customBrandRamp: BrandVariants;
7 | switch (brand) {
8 | case 'orange':
9 | customBrandRamp = ramp2;
10 | break;
11 | case 'purple':
12 | customBrandRamp = ramp3;
13 | break;
14 | default:
15 | customBrandRamp = ramp1;
16 | break;
17 | }
18 |
19 | return theme === 'light' ? createLightTheme(customBrandRamp) : createDarkTheme(customBrandRamp);
20 | };
21 |
22 | export const Theme = {
23 | getCustomTheme,
24 | };
25 |
26 | // Generate at: https://fluentuipr.z22.web.core.windows.net/pull/24507/theme-designer/storybook/index.html?path=/story/themedesigner--page
27 |
28 | const ramp1: BrandVariants = {
29 | 10: '#000000',
30 | 20: '#0F141D',
31 | 30: '#152133',
32 | 40: '#1A2E4C',
33 | 50: '#1E3D65',
34 | 60: '#1F4B80',
35 | 70: '#1F5B9C',
36 | 80: '#1D6BB9',
37 | 90: '#177BD6',
38 | 100: '#098BF5',
39 | 110: '#469BFF',
40 | 120: '#73ABFF',
41 | 130: '#94BBFF',
42 | 140: '#B1CCFF',
43 | 150: '#CDDDFF',
44 | 160: '#E6EEFF',
45 | };
46 |
47 | const ramp2: BrandVariants = {
48 | 10: '#000000',
49 | 20: '#210F04',
50 | 30: '#381608',
51 | 40: '#511C0B',
52 | 50: '#6B210C',
53 | 60: '#86260C',
54 | 70: '#A32A0B',
55 | 80: '#C02D09',
56 | 90: '#DE3005',
57 | 100: '#FD3300',
58 | 110: '#FF6134',
59 | 120: '#FF825B',
60 | 130: '#FF9F7E',
61 | 140: '#FFB9A0',
62 | 150: '#FFD1C1',
63 | 160: '#FFE9E1',
64 | };
65 |
66 | const ramp3: BrandVariants = {
67 | 10: '#000000',
68 | 20: '#1D0E20',
69 | 30: '#32143B',
70 | 40: '#481858',
71 | 50: '#5F1A76',
72 | 60: '#781A96',
73 | 70: '#9118B7',
74 | 80: '#AB12D9',
75 | 90: '#C602FC',
76 | 100: '#D142FF',
77 | 110: '#DA65FF',
78 | 120: '#E382FF',
79 | 130: '#EA9DFF',
80 | 140: '#F0B6FF',
81 | 150: '#F6CFFF',
82 | 160: '#FBE7FF',
83 | };
84 |
```
--------------------------------------------------------------------------------
/workbench-app/src/components/FrontDoor/Controls/AssistantSelector.tsx:
--------------------------------------------------------------------------------
```typescript
1 | import { Dropdown, Option, OptionGroup } from '@fluentui/react-components';
2 | import React from 'react';
3 | import { Assistant } from '../../../models/Assistant';
4 |
5 | interface AssistantSelectorProps {
6 | assistants?: Assistant[];
7 | defaultAssistant?: Assistant;
8 | onChange: (assistantId: string) => void;
9 | disabled?: boolean;
10 | }
11 |
12 | export const AssistantSelector: React.FC<AssistantSelectorProps> = (props) => {
13 | const { defaultAssistant, assistants, onChange, disabled } = props;
14 | const [emittedDefaultAssistant, setEmittedDefaultAssistant] = React.useState<boolean>(false);
15 |
16 | // Call onChange when defaultAssistant changes or on initial mount
17 | React.useEffect(() => {
18 | if (defaultAssistant && !emittedDefaultAssistant) {
19 | setEmittedDefaultAssistant(true);
20 | onChange(defaultAssistant.id);
21 | }
22 | }, [defaultAssistant, emittedDefaultAssistant, onChange]);
23 |
24 | return (
25 | <Dropdown
26 | placeholder="Select an assistant"
27 | disabled={disabled}
28 | onOptionSelect={(_event, data) => onChange(data.optionValue as string)}
29 | defaultSelectedOptions={defaultAssistant ? [defaultAssistant.id] : []}
30 | defaultValue={defaultAssistant ? defaultAssistant.name : undefined}
31 | >
32 | <OptionGroup>
33 | {assistants
34 | ?.slice()
35 | .sort((a, b) => a.name.localeCompare(b.name))
36 | .map((assistant) => (
37 | <Option key={assistant.id} text={assistant.name} value={assistant.id}>
38 | {assistant.name}
39 | </Option>
40 | ))}
41 | </OptionGroup>
42 | <Option text="Create new assistant" value="new">
43 | Create new assistant
44 | </Option>
45 | </Dropdown>
46 | );
47 | };
48 |
```
--------------------------------------------------------------------------------
/libraries/python/skills/skill-library/skill_library/skills/guided_conversation/tests/test_resource.py:
--------------------------------------------------------------------------------
```python
1 | from skill_library.skills.guided_conversation.resources import (
2 | ConversationResource,
3 | ResourceConstraintMode,
4 | ResourceConstraintUnit,
5 | )
6 |
7 |
8 | def test_resource_init_no_constraint() -> None:
9 | data = {}
10 | resource = ConversationResource.model_validate(data)
11 | assert resource.remaining_units == 0
12 | assert resource.elapsed_units == 0
13 |
14 |
15 | def test_resource_init_with_constraint() -> None:
16 | data = {
17 | "resource_constraint": {
18 | "quantity": 10,
19 | },
20 | }
21 | resource = ConversationResource.model_validate(data)
22 | assert resource.resource_constraint is not None
23 | assert resource.resource_constraint.mode == ResourceConstraintMode.MAXIMUM
24 | assert resource.resource_constraint.unit == ResourceConstraintUnit.TURNS
25 | assert resource.elapsed_units == 0
26 | assert resource.remaining_units == 10.0
27 |
28 | resource.increment_resource()
29 | assert resource.elapsed_units == 1
30 | assert resource.remaining_units == 9
31 |
32 |
33 | def test_resource_init() -> None:
34 | data = {
35 | "resource_constraint": {
36 | "quantity": 10,
37 | "mode": "maximum",
38 | "unit": "turns",
39 | },
40 | "turn_number": 3,
41 | "elapsed_units": 3,
42 | "remaining_units": 7,
43 | "initial_seconds_per_turn": 20,
44 | }
45 | resource = ConversationResource.model_validate(data)
46 | assert resource.resource_constraint is not None
47 | assert resource.resource_constraint.mode == ResourceConstraintMode.MAXIMUM
48 | assert resource.resource_constraint.unit == ResourceConstraintUnit.TURNS
49 | assert resource.elapsed_units == 3
50 | assert resource.remaining_units == 7
51 | assert resource.initial_seconds_per_turn == 20
52 | assert resource.turn_number == 3
53 |
54 | resource.increment_resource()
55 |
56 | assert resource.elapsed_units == 4
57 | assert resource.remaining_units == 6
58 | assert resource.turn_number == 4
59 |
```
--------------------------------------------------------------------------------
/libraries/dotnet/WorkbenchConnector/AgentConfig/AgentConfigBase.cs:
--------------------------------------------------------------------------------
```csharp
1 | // Copyright (c) Microsoft. All rights reserved.
2 |
3 | using System.Collections.Generic;
4 | using System.Reflection;
5 |
6 | // ReSharper disable once CheckNamespace
7 | namespace Microsoft.SemanticWorkbench.Connector;
8 |
9 | public abstract class AgentConfigBase
10 | {
11 | public object ToWorkbenchFormat()
12 | {
13 | Dictionary<string, object> result = [];
14 | Dictionary<string, object> defs = [];
15 | Dictionary<string, object> properties = [];
16 | Dictionary<string, object> jsonSchema = [];
17 | Dictionary<string, object> uiSchema = [];
18 |
19 | foreach (var property in this.GetType().GetProperties())
20 | {
21 | var config = new Dictionary<string, object>();
22 | var attributes = property.GetCustomAttributes<AgentConfigPropertyAttribute>();
23 | foreach (var attribute in attributes)
24 | {
25 | config[attribute.Name] = attribute.Value;
26 | }
27 |
28 | properties[property.Name] = config;
29 |
30 | if (config.TryGetValue("uischema", out var uiSchemaValue))
31 | {
32 | switch (uiSchemaValue)
33 | {
34 | case "textarea":
35 | ConfigUtils.UseTextAreaFor(property.Name, uiSchema);
36 | break;
37 | case "radiobutton":
38 | ConfigUtils.UseRadioButtonsFor(property.Name, uiSchema);
39 | break;
40 | default:
41 | break;
42 | }
43 | }
44 | }
45 |
46 | jsonSchema["type"] = "object";
47 | jsonSchema["title"] = "ConfigStateModel";
48 | jsonSchema["additionalProperties"] = false;
49 | jsonSchema["properties"] = properties;
50 | jsonSchema["$defs"] = defs;
51 |
52 | result["json_schema"] = jsonSchema;
53 | result["ui_schema"] = uiSchema;
54 | result["config"] = this;
55 |
56 | return result;
57 | }
58 | }
59 |
```