#
tokens: 49263/50000 1/1784 files (page 126/145)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 126 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

--------------------------------------------------------------------------------
/ai_context/generated/ASSISTANTS_OVERVIEW.md:
--------------------------------------------------------------------------------

```markdown
   1 | # assistants/Makefile
   2 | 
   3 | [collect-files]
   4 | 
   5 | **Search:** ['assistants/Makefile']
   6 | **Exclude:** ['.venv', 'node_modules', '*.lock', '.git', '__pycache__', '*.pyc', '*.ruff_cache', 'logs', 'output']
   7 | **Include:** ['assistants/*/README.md', 'assistants/*/pyproject.toml']
   8 | **Date:** 5/29/2025, 11:45:28 AM
   9 | **Files:** 17
  10 | 
  11 | === File: assistants/Makefile ===
  12 | repo_root = $(shell git rev-parse --show-toplevel)
  13 | include $(repo_root)/tools/makefiles/recursive.mk
  14 | 
  15 | 
  16 | === File: assistants/codespace-assistant/README.md ===
  17 | # Codespace Assistant
  18 | 
  19 | NOTE: DO NOT DEPLOY THIS ASSISTANT OUTSIDE OF CODESPACES (OR LOCAL, BUT THIS HAS NOT BEEN TESTED)
  20 | 
  21 | This assistant is designed to help with development within the Semantic Workbench repo in Codespaces, and is not intended for deployment to production environments.
  22 | 
  23 | The Codespace Assistant is designed to help developers work within the **Semantic Workbench** repository, particularly in **GitHub Codespaces** and **VS Code**. It provides tools, guidance, and integrations to simplify coding, debugging, and interacting with your projects. While optimized for Codespaces, it can also be used in local environments with some caveats.
  24 | 
  25 | ---
  26 | 
  27 | ## Key Features
  28 | 
  29 | - **MCP Server Integration**:
  30 |   - Provides access to tools like the MCP filesystem and VS Code servers by default.
  31 |   - Additional tools (e.g., Bing Search, OpenAI integrations) can be enabled via configuration.
  32 | - **Content Safety and Guardrails**:
  33 |   - Integrated with Azure OpenAI and OpenAI APIs for responsible AI usage.
  34 |   - Includes prompts for instruction, guidance, and guardrails.
  35 | - **Codespaces Optimization**:
  36 |   - Ready to run directly within Codespaces for a streamlined developer experience.
  37 |   - Also supports local setups, but **Windows users must use WSL** due to Linux dependencies.
  38 | 
  39 | ---
  40 | 
  41 | ## Prerequisites
  42 | 
  43 | ### Codespaces Development
  44 | - Follow the guide in [Optimizing for Codespaces](../../.devcontainer/OPTIMIZING_FOR_CODESPACES.md) to set up your environment.
  45 | - **Using VS Code Desktop**:
  46 |   - Open the workspace: `/workspaces/semanticworkbench/semantic-workbench.code-workspace`.
  47 | 
  48 | ### Local Development
  49 | - Refer to [Setup Developer Environment](../../docs/SETUP_DEV_ENVIRONMENT.md) for full instructions.
  50 | - **Windows Users**:
  51 |   - Must host the repository in **WSL (Windows Subsystem for Linux)** due to Linux library dependencies.
  52 | 
  53 | ### Authentication
  54 | - You must authenticate with the Semantic Workbench using a **Microsoft or organizational account**. See [Workbench App Overview](../../docs/WORKBENCH_APP.md) for details.
  55 | 
  56 | ---
  57 | 
  58 | ## Setup Instructions
  59 | 
  60 | ### Creating a Codespace
  61 | 1. Go to the **Semantic Workbench** repository in GitHub.
  62 | 2. Create a new Codespace.
  63 | 3. Open the Codespace in **VS Code Desktop**.
  64 |    - Open the workspace file: `/workspaces/semanticworkbench/semantic-workbench.code-workspace`.
  65 | 
  66 | ### Configure `.env` Variables
  67 | 1. Navigate to the folder: `/assistants/codespace-assistant`.
  68 | 2. Copy `.env.example` to `.env`.
  69 | 3. Replace default values with your resource details for **Azure OpenAI** and **OpenAI** APIs.
  70 |    - **Azure**:
  71 |      - `ASSISTANT__AZURE_OPENAI_ENDPOINT`: Azure OpenAI endpoint.
  72 |      - `ASSISTANT__AZURE_OPENAI_API_KEY`: Azure API key (use managed identities if possible).
  73 |      - `ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT`: Azure Content Safety endpoint.
  74 |    - **OpenAI**:
  75 |      - `ASSISTANT__OPENAI_API_KEY`: API key for OpenAI.
  76 |      - `ASSISTANT__OPENAI_ORGANIZATION_ID`: Organization ID (optional).
  77 | 
  78 | ### First Launch
  79 | 1. Go to the **Debug** pane in VS Code.
  80 | 2. Select `assistants: codespace-assistant (demo)`.
  81 | 3. Start the assistant.
  82 |    - For more MCP servers, select `assistants: codespace-assistant (for dev)` (requires custom API keys).
  83 | 4. Open your browser: [https://127.0.0.1:4000/](https://127.0.0.1:4000/).
  84 |    - Click "Advanced" > "Proceed to localhost" to bypass security warnings.
  85 | 5. Create a conversation and add the assistant:
  86 |    - Provide a title.
  87 |    - Create a new assistant and select the Codespace Assistant service.
  88 |    - Start interacting with the assistant (e.g., ask questions about the repo).
  89 | 
  90 | ---
  91 | 
  92 | ## Extending Functionality
  93 | 
  94 | ### Add Your Own Code
  95 | 1. Open a terminal in VS Code.
  96 | 2. Navigate to the `/workspaces` directory (default MCP filesystem server location).
  97 | 3. Clone your repository or create a new folder.
  98 |    - Optionally, add it to the workspace using **File > Add Folder to Workspace**.
  99 | 
 100 | The assistant can now read, write, and edit your custom code.
 101 | 
 102 | ---
 103 | 
 104 | ## Additional MCP Servers (Advanced)
 105 | 
 106 | The `assistants: codespace-assistant (for dev)` debug configuration enables additional MCP servers not active by default. These servers can extend the assistant's functionality, but they require custom API keys to activate.
 107 | 
 108 | ### Available MCP Servers
 109 | 
 110 | 1. **Bing Search**:
 111 |    - **Command**: `http://127.0.0.1:6030/sse`
 112 |    - **Purpose**: Enables search capabilities via Bing.
 113 | 
 114 | 2. **Open Deep Research**:
 115 |    - **Command**: `http://127.0.0.1:6020/sse`
 116 |    - **Purpose**: Facilitates deeper research workflows.
 117 | 
 118 | 3. **Giphy**:
 119 |    - **Command**: `http://127.0.0.1:6000/sse`
 120 |    - **Purpose**: Fetches GIFs for use in conversations.
 121 | 
 122 | 4. **Memory**:
 123 |    - **Command**: `npx @modelcontextprotocol/server-memory`
 124 |    - **Purpose**: Integrates a memory or knowledge graph system.
 125 | 
 126 | 5. **Sequential Thinking**:
 127 |    - **Command**: `npx @modelcontextprotocol/server-sequential-thinking`
 128 |    - **Purpose**: Enables tools for sequential reasoning tasks.
 129 | 
 130 | ### How to Enable Additional MCP Servers
 131 | 
 132 | 1. Use the assistant configuration interface to enable these MCP servers directly. In the Semantic Workbench, navigate to the assistant's configuration panel, locate the MCP server settings, and toggle the desired servers on.
 133 | 3. Check the `.env.example` file for each server's required API keys and configuration.
 134 | 4. To enable a server, update the `.env` file with the necessary values and restart the assistant.
 135 | 
 136 | ---
 137 | 
 138 | ## Frequently Asked Questions (FAQs)
 139 | 
 140 | ### Authentication and Access
 141 | - **Q**: How do I log into the Semantic Workbench?
 142 |   - **A**: Log in using your Microsoft or organizational account. See [Workbench App Overview](../../docs/WORKBENCH_APP.md).
 143 | 
 144 | ### Common Errors
 145 | 1. **Azure Content Safety Error**:
 146 |    - Issue: `Bearer token authentication is not permitted for non-HTTPS URLs.`
 147 |    - Solution: Configure the endpoint properly.
 148 | 2. **Blank Screen on Startup**:
 149 |    - Check if pop-up blockers are preventing access.
 150 | 3. **Connection Issues on 127.0.0.1**:
 151 |    - Ensure you're navigating to `https://127.0.0.1:4000/`.
 152 | 
 153 | ### Enabling MCP Servers
 154 | - Navigate to the assistant configuration panel and enable or configure servers as needed.
 155 | - By default, the filesystem and VS Code servers are active. Others, like Bing Search or Giphy, can be enabled manually.
 156 | 
 157 | ### Limits and Customization
 158 | 1. **Maximum Steps Reached**:
 159 |    - Expand the assistant's steps by updating the `Maximum Steps` setting in the assistant configuration.
 160 | 2. **Folder Not Found**:
 161 |    - Verify the path is under `/workspaces`. Adjust permissions if needed.
 162 | 
 163 | ---
 164 | 
 165 | ## Additional Resources
 166 | 
 167 | - [Optimizing for Codespaces](../../.devcontainer/OPTIMIZING_FOR_CODESPACES.md)
 168 | - [Workbench App Overview](../../docs/WORKBENCH_APP.md)
 169 | - [Setup Developer Environment](../../docs/SETUP_DEV_ENVIRONMENT.md)
 170 | - [Assistant Development Guide](../../docs/ASSISTANT_DEVELOPMENT_GUIDE.md)
 171 | 
 172 | For issues, see the [Semantic Workbench README](../../README.md) or raise a question in the repository.
 173 | 
 174 | === File: assistants/codespace-assistant/pyproject.toml ===
 175 | [project]
 176 | name = "codespace-assistant"
 177 | version = "0.1.0"
 178 | description = "A python Semantic Workbench OpenAI assistant for assisting with development in codespaces."
 179 | authors = [{ name = "Semantic Workbench Team" }]
 180 | readme = "README.md"
 181 | requires-python = ">=3.11,<3.13"
 182 | dependencies = [
 183 |     "assistant-drive>=0.1.0",
 184 |     "assistant-extensions[attachments, mcp]>=0.1.0",
 185 |     "mcp-extensions[openai]>=0.1.0",
 186 |     "content-safety>=0.1.0",
 187 |     "deepmerge>=2.0",
 188 |     "openai>=1.61.0",
 189 |     "openai-client>=0.1.0",
 190 |     "tiktoken>=0.8.0",
 191 | ]
 192 | 
 193 | [tool.hatch.build.targets.wheel]
 194 | packages = ["assistant"]
 195 | 
 196 | [tool.uv]
 197 | package = true
 198 | 
 199 | [tool.uv.sources]
 200 | anthropic-client = { path = "../../libraries/python/anthropic-client", editable = true }
 201 | assistant-drive = { path = "../../libraries/python/assistant-drive", editable = true }
 202 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
 203 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
 204 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
 205 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
 206 | 
 207 | [build-system]
 208 | requires = ["hatchling"]
 209 | build-backend = "hatchling.build"
 210 | 
 211 | [dependency-groups]
 212 | dev = ["pyright>=1.1.389"]
 213 | 
 214 | 
 215 | === File: assistants/document-assistant/README.md ===
 216 | # Document Assistant
 217 | 
 218 | NOTE: DO NOT DEPLOY THIS ASSISTANT OUTSIDE OF CODESPACES (OR LOCAL, BUT THIS HAS NOT BEEN TESTED)
 219 | 
 220 | This assistant is designed to help with development within the Semantic Workbench repo in Codespaces, and is not intended for deployment to production environments.
 221 | 
 222 | The Document Assistant is an AI assistant focused on being easy to use for everyone with a core feature being
 223 | reliable document creation and editing, grounded in all of your context across files and the conversation.
 224 | 
 225 | ---
 226 | 
 227 | ## Key Features
 228 | 
 229 | - **MCP Server Integration**:
 230 |   - Provides access to tools like the MCP filesystem and VS Code servers by default.
 231 |   - Additional tools (e.g., Bing Search, OpenAI integrations) can be enabled via configuration.
 232 | - **Content Safety and Guardrails**:
 233 |   - Integrated with Azure OpenAI and OpenAI APIs for responsible AI usage.
 234 |   - Includes prompts for instruction, guidance, and guardrails.
 235 | - **Codespaces Optimization**:
 236 |   - Ready to run directly within Codespaces for a streamlined developer experience.
 237 |   - Also supports local setups, but **Windows users must use WSL** due to Linux dependencies.
 238 | 
 239 | ---
 240 | 
 241 | ## Prerequisites
 242 | 
 243 | ### Codespaces Development
 244 | 
 245 | - Follow the guide in [Optimizing for Codespaces](../../.devcontainer/OPTIMIZING_FOR_CODESPACES.md) to set up your environment.
 246 | - **Using VS Code Desktop**:
 247 |   - Open the workspace: `/workspaces/semanticworkbench/semantic-workbench.code-workspace`.
 248 | 
 249 | ### Local Development
 250 | 
 251 | - Refer to [Setup Developer Environment](../../docs/SETUP_DEV_ENVIRONMENT.md) for full instructions.
 252 | - **Windows Users**:
 253 |   - Must host the repository in **WSL (Windows Subsystem for Linux)** due to Linux library dependencies.
 254 | 
 255 | ### Authentication
 256 | 
 257 | - You must authenticate with the Semantic Workbench using a **Microsoft or organizational account**. See [Workbench App Overview](../../docs/WORKBENCH_APP.md) for details.
 258 | 
 259 | ---
 260 | 
 261 | ## Setup Instructions
 262 | 
 263 | ### Creating a Codespace
 264 | 
 265 | 1. Go to the **Semantic Workbench** repository in GitHub.
 266 | 2. Create a new Codespace.
 267 | 3. Open the Codespace in **VS Code Desktop**.
 268 |    - Open the workspace file: `/workspaces/semanticworkbench/semantic-workbench.code-workspace`.
 269 | 
 270 | ### Configure `.env` Variables
 271 | 
 272 | 1. Navigate to the folder: `/assistants/codespace-assistant`.
 273 | 2. Copy `.env.example` to `.env`.
 274 | 3. Replace default values with your resource details for **Azure OpenAI** and **OpenAI** APIs.
 275 |    - **Azure**:
 276 |      - `ASSISTANT__AZURE_OPENAI_ENDPOINT`: Azure OpenAI endpoint.
 277 |      - `ASSISTANT__AZURE_OPENAI_API_KEY`: Azure API key (use managed identities if possible).
 278 |      - `ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT`: Azure Content Safety endpoint.
 279 |    - **OpenAI**:
 280 |      - `ASSISTANT__OPENAI_API_KEY`: API key for OpenAI.
 281 |      - `ASSISTANT__OPENAI_ORGANIZATION_ID`: Organization ID (optional).
 282 | 
 283 | ### First Launch
 284 | 
 285 | 1. Go to the **Debug** pane in VS Code.
 286 | 2. Select `assistants: codespace-assistant (demo)`.
 287 | 3. Start the assistant.
 288 |    - For more MCP servers, select `assistants: codespace-assistant (for dev)` (requires custom API keys).
 289 | 4. Open your browser: [https://127.0.0.1:4000/](https://127.0.0.1:4000/).
 290 |    - Click "Advanced" > "Proceed to localhost" to bypass security warnings.
 291 | 5. Create a conversation and add the assistant:
 292 |    - Provide a title.
 293 |    - Create a new assistant and select the Codespace Assistant service.
 294 |    - Start interacting with the assistant (e.g., ask questions about the repo).
 295 | 
 296 | ---
 297 | 
 298 | ## Extending Functionality
 299 | 
 300 | ### Add Your Own Code
 301 | 
 302 | 1. Open a terminal in VS Code.
 303 | 2. Navigate to the `/workspaces` directory (default MCP filesystem server location).
 304 | 3. Clone your repository or create a new folder.
 305 |    - Optionally, add it to the workspace using **File > Add Folder to Workspace**.
 306 | 
 307 | The assistant can now read, write, and edit your custom code.
 308 | 
 309 | ---
 310 | 
 311 | ## Additional MCP Servers (Advanced)
 312 | 
 313 | The `assistants: codespace-assistant (for dev)` debug configuration enables additional MCP servers not active by default. These servers can extend the assistant's functionality, but they require custom API keys to activate.
 314 | 
 315 | ### Available MCP Servers
 316 | 
 317 | 1. **Bing Search**:
 318 | 
 319 |    - **Command**: `http://127.0.0.1:6030/sse`
 320 |    - **Purpose**: Enables search capabilities via Bing.
 321 | 
 322 | 2. **Open Deep Research**:
 323 | 
 324 |    - **Command**: `http://127.0.0.1:6020/sse`
 325 |    - **Purpose**: Facilitates deeper research workflows.
 326 | 
 327 | 3. **Giphy**:
 328 | 
 329 |    - **Command**: `http://127.0.0.1:6000/sse`
 330 |    - **Purpose**: Fetches GIFs for use in conversations.
 331 | 
 332 | 4. **Memory**:
 333 | 
 334 |    - **Command**: `npx @modelcontextprotocol/server-memory`
 335 |    - **Purpose**: Integrates a memory or knowledge graph system.
 336 | 
 337 | 5. **Sequential Thinking**:
 338 |    - **Command**: `npx @modelcontextprotocol/server-sequential-thinking`
 339 |    - **Purpose**: Enables tools for sequential reasoning tasks.
 340 | 
 341 | ### How to Enable Additional MCP Servers
 342 | 
 343 | 1. Use the assistant configuration interface to enable these MCP servers directly. In the Semantic Workbench, navigate to the assistant's configuration panel, locate the MCP server settings, and toggle the desired servers on.
 344 | 2. Check the `.env.example` file for each server's required API keys and configuration.
 345 | 3. To enable a server, update the `.env` file with the necessary values and restart the assistant.
 346 | 
 347 | ---
 348 | 
 349 | ## Frequently Asked Questions (FAQs)
 350 | 
 351 | ### Authentication and Access
 352 | 
 353 | - **Q**: How do I log into the Semantic Workbench?
 354 |   - **A**: Log in using your Microsoft or organizational account. See [Workbench App Overview](../../docs/WORKBENCH_APP.md).
 355 | 
 356 | ### Common Errors
 357 | 
 358 | 1. **Azure Content Safety Error**:
 359 |    - Issue: `Bearer token authentication is not permitted for non-HTTPS URLs.`
 360 |    - Solution: Configure the endpoint properly.
 361 | 2. **Blank Screen on Startup**:
 362 |    - Check if pop-up blockers are preventing access.
 363 | 3. **Connection Issues on 127.0.0.1**:
 364 |    - Ensure you're navigating to `https://127.0.0.1:4000/`.
 365 | 
 366 | ### Enabling MCP Servers
 367 | 
 368 | - Navigate to the assistant configuration panel and enable or configure servers as needed.
 369 | - By default, the filesystem and VS Code servers are active. Others, like Bing Search or Giphy, can be enabled manually.
 370 | 
 371 | ### Limits and Customization
 372 | 
 373 | 1. **Maximum Steps Reached**:
 374 |    - Expand the assistant's steps by updating the `Maximum Steps` setting in the assistant configuration.
 375 | 2. **Folder Not Found**:
 376 |    - Verify the path is under `/workspaces`. Adjust permissions if needed.
 377 | 
 378 | ---
 379 | 
 380 | ## Additional Resources
 381 | 
 382 | - [Optimizing for Codespaces](../../.devcontainer/OPTIMIZING_FOR_CODESPACES.md)
 383 | - [Workbench App Overview](../../docs/WORKBENCH_APP.md)
 384 | - [Setup Developer Environment](../../docs/SETUP_DEV_ENVIRONMENT.md)
 385 | - [Assistant Development Guide](../../docs/ASSISTANT_DEVELOPMENT_GUIDE.md)
 386 | 
 387 | For issues, see the [Semantic Workbench README](../../README.md) or raise a question in the repository.
 388 | 
 389 | 
 390 | === File: assistants/document-assistant/pyproject.toml ===
 391 | [project]
 392 | name = "document-assistant"
 393 | version = "0.1.0"
 394 | description = "A python Semantic Workbench OpenAI assistant for document editing."
 395 | authors = [{ name = "Semantic Workbench Team" }]
 396 | readme = "README.md"
 397 | requires-python = ">=3.11,<3.13"
 398 | dependencies = [
 399 |     "assistant-drive>=0.1.0",
 400 |     "assistant-extensions[attachments, mcp]>=0.1.0",
 401 |     "mcp-extensions[openai]>=0.1.0",
 402 |     "content-safety>=0.1.0",
 403 |     "deepmerge>=2.0",
 404 |     "markitdown[docx,outlook,pptx,xlsx]==0.1.1",
 405 |     "openai>=1.61.0",
 406 |     "openai-client>=0.1.0",
 407 |     "pdfplumber>=0.11.2",
 408 |     "pendulum>=3.1,<4.0",
 409 |     "python-liquid>=2.0,<3.0",
 410 |     "tiktoken>=0.9.0",
 411 | ]
 412 | 
 413 | [tool.hatch.build.targets.wheel]
 414 | packages = ["assistant"]
 415 | 
 416 | [tool.uv]
 417 | package = true
 418 | 
 419 | [tool.uv.sources]
 420 | anthropic-client = { path = "../../libraries/python/anthropic-client", editable = true }
 421 | assistant-drive = { path = "../../libraries/python/assistant-drive", editable = true }
 422 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
 423 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
 424 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
 425 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
 426 | 
 427 | [build-system]
 428 | requires = ["hatchling"]
 429 | build-backend = "hatchling.build"
 430 | 
 431 | [dependency-groups]
 432 | dev = ["pyright>=1.1.389", "pytest", "pytest-asyncio"]
 433 | 
 434 | [tool.pytest.ini_options]
 435 | asyncio_default_fixture_loop_scope = "function"
 436 | asyncio_mode = "auto"
 437 | 
 438 | 
 439 | === File: assistants/explorer-assistant/README.md ===
 440 | # Using Semantic Workbench with python assistants
 441 | 
 442 | This project provides an assistant to help explore assistant ideas and capabilities, leveraging OpenAI or Azure OpenAI (or any OpenAI compatible service), allowing to use **Semantic Workbench** to test it.
 443 | 
 444 | ## Responsible AI
 445 | 
 446 | The chatbot includes some important best practices for AI development, such as:
 447 | 
 448 | - **System prompt safety**, ie a set of LLM guardrails to protect users. As a developer you should understand how these
 449 |   guardrails work in your scenarios, and how to change them if needed. The system prompt and the prompt safety
 450 |   guardrails are split in two to help with testing. When talking to LLM models, prompt safety is injected before the
 451 |   system prompt.
 452 |   - See https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message for more details
 453 |     about protecting application and users in different scenarios.
 454 | - **Content moderation**, via [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety)
 455 |   or [OpenAI Content Moderation](https://platform.openai.com/docs/guides/moderation).
 456 | 
 457 | See the [Responsible AI FAQ](../../RESPONSIBLE_AI_FAQ.md) for more information.
 458 | 
 459 | # Suggested Development Environment
 460 | 
 461 | - Use GitHub Codespaces for a quick, turn-key dev environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
 462 | - VS Code is recommended for development
 463 | 
 464 | ## Pre-requisites
 465 | 
 466 | - Set up your dev environment
 467 |   - SUGGESTED: Use GitHub Codespaces for a quick, easy, and consistent dev
 468 |     environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
 469 |   - ALTERNATIVE: Local setup following the [main README](../../README.md#local-development-environment)
 470 | - Set up and verify that the workbench app and service are running using the [semantic-workbench.code-workspace](../../semantic-workbench.code-workspace)
 471 | - If using Azure OpenAI, set up an Azure account and create a Content Safety resource
 472 |   - See [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety) for more information
 473 |   - Copy the `.env.example` to `.env` and update the `ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT` value with the endpoint of your Azure Content Safety resource
 474 |   - From VS Code > `Terminal`, run `az login` to authenticate with Azure prior to starting the assistant
 475 | 
 476 | ## Steps
 477 | 
 478 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `semantic-workbench` to start the app and service from this workspace
 479 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `launch assistant` to start the assistant.
 480 | - If running in a devcontainer, follow the instructions in [.devcontainer/POST_SETUP_README.md](../../.devcontainer/POST_SETUP_README.md#start-the-app-and-service) for any additional steps.
 481 | - Return to the workbench app to interact with the assistant
 482 | - Add a new assistant from the main menu of the app, choose the assistant name as defined by the `service_name` in [chat.py](./explorer_assistant/chat.py)
 483 | - Click the newly created assistant to configure and interact with it
 484 | 
 485 | ## Starting the example from CLI
 486 | 
 487 | If you're not using VS Code and/or Codespaces, you can also work from the
 488 | command line, using `uv`:
 489 | 
 490 | ```
 491 | cd <PATH TO THIS FOLDER>
 492 | 
 493 | uv run start-assistant
 494 | ```
 495 | 
 496 | ## Create your own assistant
 497 | 
 498 | Copy the contents of this folder to your project.
 499 | 
 500 | - The paths are already set if you put in the same repo root and relative path of `/<your_projects>/<your_assistant_name>`
 501 | - If placed in a different location, update the references in the `pyproject.toml` to point to the appropriate locations for the `semantic-workbench-*` packages
 502 | 
 503 | ## From Development to Production
 504 | 
 505 | It's important to highlight how Semantic Workbench is a development tool, and it's not designed to host agents in
 506 | a production environment. The workbench helps with testing and debugging, in a development and isolated environment, usually your localhost.
 507 | 
 508 | The core of your assistant/AI application, e.g. how it reacts to users, how it invokes tools, how it stores data, can be
 509 | developed with any framework, such as Semantic Kernel, Langchain, OpenAI assistants, etc. That is typically the code
 510 | you will add to `chat.py`.
 511 | 
 512 | **Semantic Workbench is not a framework**. Dependencies on `semantic-workbench-assistant` package are used only to test and debug your code in Semantic Workbench. **When an assistant is fully developed and ready for production, configurable settings should be hard coded, dependencies on `semantic-workbench-assistant` and similar should be removed**.
 513 | 
 514 | 
 515 | === File: assistants/explorer-assistant/pyproject.toml ===
 516 | [project]
 517 | name = "explorer-assistant"
 518 | version = "0.1.0"
 519 | description = "A python Semantic Workbench OpenAI assistant for exploring capabilities."
 520 | authors = [{ name = "Semantic Workbench Team" }]
 521 | readme = "README.md"
 522 | requires-python = ">=3.11"
 523 | dependencies = [
 524 |     "anthropic>=0.40.0",
 525 |     "anthropic-client>=0.1.0",
 526 |     "assistant-drive>=0.1.0",
 527 |     "assistant-extensions[attachments]>=0.1.0",
 528 |     "content-safety>=0.1.0",
 529 |     "deepmerge>=2.0",
 530 |     "html2docx>=1.6.0",
 531 |     "markdown>=3.6",
 532 |     "openai>=1.61.0",
 533 |     "openai-client>=0.1.0",
 534 | ]
 535 | 
 536 | [tool.hatch.build.targets.wheel]
 537 | packages = ["assistant"]
 538 | 
 539 | [tool.uv]
 540 | package = true
 541 | 
 542 | [tool.uv.sources]
 543 | anthropic-client = { path = "../../libraries/python/anthropic-client", editable = true }
 544 | assistant-drive = { path = "../../libraries/python/assistant-drive", editable = true }
 545 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
 546 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
 547 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
 548 | 
 549 | [build-system]
 550 | requires = ["hatchling"]
 551 | build-backend = "hatchling.build"
 552 | 
 553 | [dependency-groups]
 554 | dev = ["pyright>=1.1.389"]
 555 | 
 556 | 
 557 | === File: assistants/guided-conversation-assistant/README.md ===
 558 | # Using Semantic Workbench with python assistants
 559 | 
 560 | This project provides an assistant to demonstrate how to guide a user towards a goal, leveraging the [guided-conversation library](../../libraries/python/guided-conversation/), which is a modified copy of the [guided-conversation](https://github.com/microsoft/semantic-kernel/tree/main/python/samples/demos/guided_conversations) library from the [Semantic Kernel](https://github.com/microsoft/semantic-kernel) repository.
 561 | 
 562 | ## Responsible AI
 563 | 
 564 | The chatbot includes some important best practices for AI development, such as:
 565 | 
 566 | - **System prompt safety**, ie a set of LLM guardrails to protect users. As a developer you should understand how these
 567 |   guardrails work in your scenarios, and how to change them if needed. The system prompt and the prompt safety
 568 |   guardrails are split in two to help with testing. When talking to LLM models, prompt safety is injected before the
 569 |   system prompt.
 570 |   - See https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message for more details
 571 |     about protecting application and users in different scenarios.
 572 | - **Content moderation**, via [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety)
 573 |   or [OpenAI Content Moderation](https://platform.openai.com/docs/guides/moderation).
 574 | 
 575 | See the [Responsible AI FAQ](../../RESPONSIBLE_AI_FAQ.md) for more information.
 576 | 
 577 | # Suggested Development Environment
 578 | 
 579 | - Use GitHub Codespaces for a quick, turn-key dev environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
 580 | - VS Code is recommended for development
 581 | 
 582 | ## Pre-requisites
 583 | 
 584 | - Set up your dev environment
 585 |   - SUGGESTED: Use GitHub Codespaces for a quick, easy, and consistent dev
 586 |     environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
 587 |   - ALTERNATIVE: Local setup following the [main README](../../README.md#local-development-environment)
 588 | - Set up and verify that the workbench app and service are running using the [semantic-workbench.code-workspace](../../semantic-workbench.code-workspace)
 589 | - If using Azure OpenAI, set up an Azure account and create a Content Safety resource
 590 |   - See [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety) for more information
 591 |   - Copy the `.env.example` to `.env` and update the `ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT` value with the endpoint of your Azure Content Safety resource
 592 |   - From VS Code > `Terminal`, run `az login` to authenticate with Azure prior to starting the assistant
 593 | 
 594 | ## Steps
 595 | 
 596 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `semantic-workbench` to start the app and service from this workspace
 597 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `launch assistant` to start the assistant.
 598 | - If running in a devcontainer, follow the instructions in [.devcontainer/POST_SETUP_README.md](../../.devcontainer/POST_SETUP_README.md#start-the-app-and-service) for any additional steps.
 599 | - Return to the workbench app to interact with the assistant
 600 | - Add a new assistant from the main menu of the app, choose the assistant name as defined by the `service_name` in [chat.py](./assistant/chat.py)
 601 | - Click the newly created assistant to configure and interact with it
 602 | 
 603 | ## Starting the example from CLI
 604 | 
 605 | If you're not using VS Code and/or Codespaces, you can also work from the
 606 | command line, using `uv`:
 607 | 
 608 | ```
 609 | cd <PATH TO THIS FOLDER>
 610 | 
 611 | uv run start-assistant
 612 | ```
 613 | 
 614 | ## Create your own assistant
 615 | 
 616 | Copy the contents of this folder to your project.
 617 | 
 618 | - The paths are already set if you put in the same repo root and relative path of `/<your_projects>/<your_assistant_name>`
 619 | - If placed in a different location, update the references in the `pyproject.toml` to point to the appropriate locations for the `semantic-workbench-*` packages
 620 | 
 621 | ## From Development to Production
 622 | 
 623 | It's important to highlight how Semantic Workbench is a development tool, and it's not designed to host agents in
 624 | a production environment. The workbench helps with testing and debugging, in a development and isolated environment, usually your localhost.
 625 | 
 626 | The core of your assistant/AI application, e.g. how it reacts to users, how it invokes tools, how it stores data, can be
 627 | developed with any framework, such as Semantic Kernel, Langchain, OpenAI assistants, etc. That is typically the code
 628 | you will add to `chat.py`.
 629 | 
 630 | **Semantic Workbench is not a framework**. Dependencies on `semantic-workbench-assistant` package are used only to test and debug your code in Semantic Workbench. **When an assistant is fully developed and ready for production, configurable settings should be hard coded, dependencies on `semantic-workbench-assistant` and similar should be removed**.
 631 | 
 632 | 
 633 | === File: assistants/guided-conversation-assistant/pyproject.toml ===
 634 | [project]
 635 | name = "assistant"
 636 | version = "0.1.0"
 637 | description = "An assistant that will guide users through a conversation towards a specific goal."
 638 | authors = [{ name = "Semantic Workbench Team" }]
 639 | readme = "README.md"
 640 | requires-python = ">=3.11"
 641 | dependencies = [
 642 |     "deepmerge>=2.0",
 643 |     "docx2txt>=0.8",
 644 |     "html2docx>=1.6.0",
 645 |     "markdown>=3.6",
 646 |     "openai>=1.61.0",
 647 |     "pdfplumber>=0.11.2",
 648 |     "tiktoken>=0.8.0",
 649 |     "semantic-workbench-assistant>=0.1.0",
 650 |     "content-safety>=0.1.0",
 651 |     "semantic-kernel>=1.11.0",
 652 |     "guided-conversation>=0.1.0",
 653 |     "openai-client>=0.1.0",
 654 | ]
 655 | 
 656 | [tool.uv]
 657 | package = true
 658 | 
 659 | [tool.uv.sources]
 660 | semantic-workbench-assistant = { path = "../../libraries/python/semantic-workbench-assistant", editable = true }
 661 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
 662 | guided-conversation = { path = "../../libraries/python/guided-conversation", editable = true }
 663 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
 664 | 
 665 | [build-system]
 666 | requires = ["hatchling"]
 667 | build-backend = "hatchling.build"
 668 | 
 669 | [dependency-groups]
 670 | dev = ["pyright>=1.1.389"]
 671 | 
 672 | [tool.pyright]
 673 | exclude = ["**/.venv", "**/.data", "**/__pycache__"]
 674 | 
 675 | 
 676 | === File: assistants/navigator-assistant/README.md ===
 677 | # Navigator Assistant
 678 | 
 679 | This assistant is designed to help with navigating the Semantic Workbench application and assistants.
 680 | 
 681 | ---
 682 | 
 683 | ## Key Features
 684 | 
 685 | - **MCP Server Integration**:
 686 |   - Provides access to tools like the MCP filesystem and VS Code servers by default.
 687 |   - Additional tools (e.g., Bing Search, OpenAI integrations) can be enabled via configuration.
 688 | - **Content Safety and Guardrails**:
 689 |   - Integrated with Azure OpenAI and OpenAI APIs for responsible AI usage.
 690 |   - Includes prompts for instruction, guidance, and guardrails.
 691 | - **Codespaces Optimization**:
 692 |   - Ready to run directly within Codespaces for a streamlined developer experience.
 693 |   - Also supports local setups, but **Windows users must use WSL** due to Linux dependencies.
 694 | 
 695 | 
 696 | === File: assistants/navigator-assistant/pyproject.toml ===
 697 | [project]
 698 | name = "navigator-assistant"
 699 | version = "0.1.0"
 700 | description = "A python Semantic Workbench OpenAI assistant for navigating the workbench and assistants."
 701 | authors = [{ name = "Semantic Workbench Team" }]
 702 | readme = "README.md"
 703 | requires-python = ">=3.11,<3.13"
 704 | dependencies = [
 705 |     "assistant-drive>=0.1.0",
 706 |     "assistant-extensions[attachments, mcp]>=0.1.0",
 707 |     "mcp-extensions[openai]>=0.1.0",
 708 |     "content-safety>=0.1.0",
 709 |     "deepmerge>=2.0",
 710 |     "openai>=1.61.0",
 711 |     "openai-client>=0.1.0",
 712 |     "tiktoken>=0.8.0",
 713 | ]
 714 | 
 715 | [tool.hatch.build.targets.wheel]
 716 | packages = ["assistant"]
 717 | 
 718 | [tool.uv]
 719 | package = true
 720 | 
 721 | [tool.uv.sources]
 722 | anthropic-client = { path = "../../libraries/python/anthropic-client", editable = true }
 723 | assistant-drive = { path = "../../libraries/python/assistant-drive", editable = true }
 724 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
 725 | mcp-extensions = { path = "../../libraries/python/mcp-extensions", editable = true }
 726 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
 727 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
 728 | 
 729 | [build-system]
 730 | requires = ["hatchling"]
 731 | build-backend = "hatchling.build"
 732 | 
 733 | [dependency-groups]
 734 | dev = ["pyright>=1.1.389"]
 735 | 
 736 | 
 737 | === File: assistants/project-assistant/README.md ===
 738 | # Project Assistant
 739 | 
 740 | A dual-mode context transfer system that facilitates collaborative projects between Coordinators and Team members in the Semantic Workbench.
 741 | 
 742 | ## Overview
 743 | 
 744 | The Project Assistant is designed to bridge the information gap between project Coordinators and Team members by providing a structured communication system with shared artifacts, real-time updates, and bidirectional information flow. It enables:
 745 | 
 746 | - **Project Definition**: Coordinators can create detailed project briefs with goals and success criteria
 747 | - **Information Sharing**: Knowledge transfer between separate conversations
 748 | - **Information Requests**: Team members can request information or assistance from Coordinators
 749 | - **Progress Tracking**: Real-time project dashboard updates and completion criteria
 750 | - **Inspector Panel**: Visual dashboard showing project state and progress
 751 | 
 752 | ## Key Features
 753 | 
 754 | ### Conversation Types and Dual Mode Operation 
 755 | 
 756 | The Project Assistant creates and manages three distinct types of conversations:
 757 | 
 758 | 1. **Coordinator Conversation**: The personal conversation used by the project coordinator/owner to create and manage the project.
 759 | 
 760 | 2. **Shareable Team Conversation**: A template conversation that's automatically created along with a share URL. This conversation is never directly used - it serves as the template for creating individual team conversations when users click the share link.
 761 | 
 762 | 3. **Team Conversation(s)**: Individual conversations for team members, created when they redeem the share URL. Each team member gets their own personal conversation connected to the project.
 763 | 
 764 | The assistant operates in two distinct modes with different capabilities:
 765 | 
 766 | 1. **Coordinator Mode (Planning Stage)**
 767 |    - Create project briefs with clear goals and success criteria
 768 |    - Maintain an auto-updating project whiteboard with critical information
 769 |    - Provide guidance and respond to information requests
 770 |    - Control the "Ready for Working" milestone when project definition is complete
 771 | 
 772 | 2. **Team Mode (Working Stage)**
 773 |    - Access project brief and project whiteboard
 774 |    - Mark success criteria as completed
 775 |    - Log requests for information or assistance from Coordinators
 776 |    - Update project dashboard with progress information
 777 |    - Report project completion when all criteria are met
 778 | 
 779 | ### Key Artifacts
 780 | 
 781 | The system manages several core artifacts that support project operations:
 782 | 
 783 | - **Project Brief**: Details project goals and success criteria
 784 | - **Project Whiteboard**: Dynamically updated information repository that captures key project context
 785 | - **Information Requests**: Documented information needs from Team members
 786 | - **Project Dashboard**: Real-time progress tracking and state information
 787 | 
 788 | ### State Management
 789 | 
 790 | The assistant uses a multi-layered state management approach:
 791 | 
 792 | - **Cross-Conversation Linking**: Connects Coordinator and Team conversations
 793 | - **File Synchronization**: Automatic file sharing between conversations, including when files are uploaded by Coordinators or when team members return to a conversation
 794 | - **Inspector Panel**: Real-time visual status dashboard for project progress
 795 | - **Conversation-Specific Storage**: Each conversation maintains role-specific state
 796 | 
 797 | ## Usage
 798 | 
 799 | ### Commands
 800 | 
 801 | #### Common Commands
 802 | - `/status` - View current project status and progress
 803 | - `/info [brief|whiteboard|requests|all]` - View project information
 804 | 
 805 | #### Coordinator Commands
 806 | - `/create-project <name> | <description>` - Create a new project
 807 | - `/add-goal <name> | <description> | [criteria1;criteria2;...]` - Add a project goal
 808 | - `/add-kb-section <title> | <content>` - Add whiteboard content manually
 809 | - `/ready-for-working` - Mark project as ready for team operations
 810 | - `/invite` - Generate project invitation for team members
 811 | - `/resolve <request-id> | <resolution>` - Resolve an information request
 812 | 
 813 | #### Team Commands
 814 | - `/join <invitation-code>` - Join an existing project
 815 | - `/request-info <title> | <description> | [priority]` - Create information request
 816 | - `/update-status <status> | <progress> | <message>` - Update project status
 817 | - `/complete-criteria <goal-index> <criteria-index>` - Mark criterion as complete
 818 | - `/complete-project` - Report project completion
 819 | 
 820 | ### Workflow
 821 | 
 822 | 1. **Coordinator Preparation**:
 823 |    - Create project brief with goals and success criteria
 824 |    - The project whiteboard automatically updates with key information
 825 |    - Generate invitation link for team members
 826 |    - Mark project as ready for working
 827 | 
 828 | 2. **Team Operations**:
 829 |    - Join project using invitation link
 830 |    - Review project brief and whiteboard content
 831 |    - Execute project tasks and track progress
 832 |    - Create information requests when information is needed
 833 |    - Mark criteria as completed when achieved
 834 |    - Report project completion when all goals are met
 835 | 
 836 | 3. **Collaborative Cycle**:
 837 |    - Coordinator responds to information requests
 838 |    - Team updates project status with progress
 839 |    - Both sides can view project status and progress via inspector panel
 840 | 
 841 | ## Development
 842 | 
 843 | ### Project Structure
 844 | 
 845 | - `/assistant/`: Core implementation files
 846 |   - `chat.py`: Main assistant implementation with event handlers
 847 |   - `project_tools.py`: Tool functions for the LLM to use
 848 |   - `state_inspector.py`: Inspector panel implementation
 849 |   - `project_manager.py`: Project state and artifact management
 850 |   - `artifact_messaging.py`: Cross-conversation artifact sharing
 851 |   - `command_processor.py`: Command handling logic
 852 | 
 853 | - `/docs/`: Documentation files
 854 |   - `DESIGN.md`: System design and architecture
 855 |   - `DEV_GUIDE.md`: Development guidelines
 856 |   - `ASSISTANT_LIBRARY_NOTES.md`: Notes on the assistant library
 857 |   - `WORKBENCH_NOTES.md`: Workbench state management details
 858 | 
 859 | - `/tests/`: Test files covering key functionality
 860 | 
 861 | ### Development Commands
 862 | 
 863 | ```bash
 864 | # Install dependencies
 865 | make install
 866 | 
 867 | # Run tests
 868 | make test
 869 | 
 870 | # Type checking
 871 | make type-check
 872 | 
 873 | # Linting
 874 | make lint
 875 | ```
 876 | 
 877 | ## Architecture
 878 | 
 879 | The Project Assistant leverages the Semantic Workbench Assistant library for core functionality and extends it with:
 880 | 
 881 | 1. **Cross-Conversation Communication**: Using the conversation sharing API
 882 | 2. **Artifact Management**: Structured data models for project information
 883 | 3. **State Inspection**: Real-time project status dashboard
 884 | 4. **Tool-based Interaction**: LLM functions for project tasks
 885 | 5. **Role-Specific Experiences**: Tailored interfaces for Coordinator and Team roles
 886 | 
 887 | The system follows a centralized artifact storage model with event-driven updates to keep all conversations synchronized.
 888 | 
 889 | 
 890 | === File: assistants/project-assistant/pyproject.toml ===
 891 | [project]
 892 | name = "assistant"
 893 | version = "0.1.0"
 894 | description = "A file-sharing mediator assistant for collaborative projects."
 895 | authors = [{ name = "Semantic Workbench Team" }]
 896 | readme = "README.md"
 897 | requires-python = ">=3.11"
 898 | dependencies = [
 899 |     "assistant-extensions[attachments]>=0.1.0",
 900 |     "content-safety>=0.1.0",
 901 |     "deepmerge>=2.0",
 902 |     "openai>=1.61.0",
 903 |     "openai-client>=0.1.0",
 904 |     "semantic-workbench-assistant>=0.1.0",
 905 |     "tiktoken>=0.8.0",
 906 | ]
 907 | 
 908 | [dependency-groups]
 909 | dev = [
 910 |     "pytest>=8.3.1",
 911 |     "pytest-asyncio>=0.23.8",
 912 |     "pytest-repeat>=0.9.3",
 913 |     "pyright>=1.1.389",
 914 | ]
 915 | 
 916 | [tool.uv]
 917 | package = true
 918 | 
 919 | [tool.uv.sources]
 920 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
 921 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
 922 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
 923 | semantic-workbench-assistant = { path = "../../libraries/python/semantic-workbench-assistant", editable = true }
 924 | 
 925 | [build-system]
 926 | requires = ["hatchling"]
 927 | build-backend = "hatchling.build"
 928 | 
 929 | [tool.pyright]
 930 | exclude = ["**/.venv", "**/.data", "**/__pycache__"]
 931 | 
 932 | [tool.pytest.ini_options]
 933 | addopts = "-vv"
 934 | log_cli = true
 935 | log_cli_level = "WARNING"
 936 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
 937 | asyncio_mode = "auto"
 938 | asyncio_default_fixture_loop_scope = "function"
 939 | 
 940 | 
 941 | === File: assistants/prospector-assistant/README.md ===
 942 | # Using Semantic Workbench with python assistants
 943 | 
 944 | This project provides an assistant to help mine artifacts for ideas, leveraging OpenAI or Azure OpenAI (or any OpenAI compatible service), allowing to use **Semantic Workbench** to test it.
 945 | 
 946 | ## Responsible AI
 947 | 
 948 | The chatbot includes some important best practices for AI development, such as:
 949 | 
 950 | - **System prompt safety**, ie a set of LLM guardrails to protect users. As a developer you should understand how these
 951 |   guardrails work in your scenarios, and how to change them if needed. The system prompt and the prompt safety
 952 |   guardrails are split in two to help with testing. When talking to LLM models, prompt safety is injected before the
 953 |   system prompt.
 954 |   - See https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message for more details
 955 |     about protecting application and users in different scenarios.
 956 | - **Content moderation**, via [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety)
 957 |   or [OpenAI Content Moderation](https://platform.openai.com/docs/guides/moderation).
 958 | 
 959 | See the [Responsible AI FAQ](../../RESPONSIBLE_AI_FAQ.md) for more information.
 960 | 
 961 | # Suggested Development Environment
 962 | 
 963 | - Use GitHub Codespaces for a quick, turn-key dev environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
 964 | - VS Code is recommended for development
 965 | 
 966 | ## Pre-requisites
 967 | 
 968 | - Set up your dev environment
 969 |   - SUGGESTED: Use GitHub Codespaces for a quick, easy, and consistent dev
 970 |     environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
 971 |   - ALTERNATIVE: Local setup following the [main README](../../README.md#local-development-environment)
 972 | - Set up and verify that the workbench app and service are running using the [semantic-workbench.code-workspace](../../semantic-workbench.code-workspace)
 973 | - If using Azure OpenAI, set up an Azure account and create a Content Safety resource
 974 |   - See [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety) for more information
 975 |   - Copy the `.env.example` to `.env` and update the `ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT` value with the endpoint of your Azure Content Safety resource
 976 |   - From VS Code > `Terminal`, run `az login` to authenticate with Azure prior to starting the assistant
 977 | 
 978 | ## Steps
 979 | 
 980 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `semantic-workbench` to start the app and service from this workspace
 981 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `launch assistant` to start the assistant.
 982 | - If running in a devcontainer, follow the instructions in [.devcontainer/POST_SETUP_README.md](../../.devcontainer/POST_SETUP_README.md#start-the-app-and-service) for any additional steps.
 983 | - Return to the workbench app to interact with the assistant
 984 | - Add a new assistant from the main menu of the app, choose the assistant name as defined by the `service_name` in [chat.py](./assistant/chat.py)
 985 | - Click the newly created assistant to configure and interact with it
 986 | 
 987 | ## Starting the example from CLI
 988 | 
 989 | If you're not using VS Code and/or Codespaces, you can also work from the
 990 | command line, using `uv`:
 991 | 
 992 | ```
 993 | cd <PATH TO THIS FOLDER>
 994 | 
 995 | uv run start-assistant
 996 | ```
 997 | 
 998 | ## Create your own assistant
 999 | 
1000 | Copy the contents of this folder to your project.
1001 | 
1002 | - The paths are already set if you put in the same repo root and relative path of `/<your_projects>/<your_assistant_name>`
1003 | - If placed in a different location, update the references in the `pyproject.toml` to point to the appropriate locations for the `semantic-workbench-*` packages
1004 | 
1005 | ## From Development to Production
1006 | 
1007 | It's important to highlight how Semantic Workbench is a development tool, and it's not designed to host agents in
1008 | a production environment. The workbench helps with testing and debugging, in a development and isolated environment, usually your localhost.
1009 | 
1010 | The core of your assistant/AI application, e.g. how it reacts to users, how it invokes tools, how it stores data, can be
1011 | developed with any framework, such as Semantic Kernel, Langchain, OpenAI assistants, etc. That is typically the code
1012 | you will add to `chat.py`.
1013 | 
1014 | **Semantic Workbench is not a framework**. Dependencies on `semantic-workbench-assistant` package are used only to test and debug your code in Semantic Workbench. **When an assistant is fully developed and ready for production, configurable settings should be hard coded, dependencies on `semantic-workbench-assistant` and similar should be removed**.
1015 | 
1016 | 
1017 | === File: assistants/prospector-assistant/pyproject.toml ===
1018 | [project]
1019 | name = "assistant"
1020 | version = "0.1.0"
1021 | description = "Exploration of a python Semantic Workbench OpenAI assistant to help mine artifacts for ideas."
1022 | authors = [{ name = "Semantic Workbench Team" }]
1023 | readme = "README.md"
1024 | requires-python = ">=3.11"
1025 | dependencies = [
1026 |     "assistant-extensions[attachments]>=0.1.0",
1027 |     "content-safety>=0.1.0",
1028 |     "deepmerge>=2.0",
1029 |     "guided-conversation>=0.1.0",
1030 |     "html2docx>=1.6.0",
1031 |     "markdown>=3.6",
1032 |     "openai-client>=0.1.0",
1033 |     "openai>=1.61.0",
1034 | ]
1035 | 
1036 | [tool.uv]
1037 | package = true
1038 | 
1039 | [tool.uv.sources]
1040 | assistant-drive = { path = "../../libraries/python/assistant-drive", editable = true }
1041 | assistant-extensions = { path = "../../libraries/python/assistant-extensions", editable = true }
1042 | content-safety = { path = "../../libraries/python/content-safety/", editable = true }
1043 | guided-conversation = { path = "../../libraries/python/guided-conversation", editable = true }
1044 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
1045 | 
1046 | [build-system]
1047 | requires = ["hatchling"]
1048 | build-backend = "hatchling.build"
1049 | 
1050 | [dependency-groups]
1051 | dev = [
1052 |     "pyright>=1.1.399",
1053 |     "pytest>=8.3.4",
1054 |     "pytest-asyncio>=0.25.3",
1055 |     "pytest-httpx>=0.35.0",
1056 |     "pytest-repeat>=0.9.3",
1057 | ]
1058 | 
1059 | [tool.pytest.ini_options]
1060 | addopts = "-vv --color=yes"
1061 | log_cli = true
1062 | log_cli_level = "INFO"
1063 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
1064 | asyncio_mode = "auto"
1065 | asyncio_default_fixture_loop_scope = "function"
1066 | 
1067 | 
1068 | === File: assistants/skill-assistant/README.md ===
1069 | # Skill Assistant
1070 | 
1071 | The Skill Assistant serves as a demonstration of integrating the Skill Library within an Assistant in the Semantic Workbench. Specifically, this assistant showcases the Posix skill and the chat driver. The [Posix skill](../../libraries/python/skills/skills/posix-skill/README.md) demonstrates file system management by allowing the assistant to perform posix-style actions. The [chat driver](../../libraries/python/openai-client/openai_client/chat_driver/README.md) handles conversations and interacts with underlying AI models like OpenAI and Azure OpenAI.
1072 | 
1073 | ## Overview
1074 | 
1075 | [skill_controller.py](assistant/skill_controller.py) file is responsible for managing the assistants. It includes functionality to create and retrieve assistants, configure chat drivers, and map skill events to the Semantic Workbench.
1076 | 
1077 | - AssistantRegistry: Manages multiple assistants, each associated with a unique conversation.
1078 | - \_event_mapper: Maps skill events to message types understood by the Semantic Workbench.
1079 | - create_assistant: Defines how to create and configure a new assistant.
1080 | 
1081 | [skill_assistant.py](assistant/skill_assistant.py) file defines the main Skill Assistant class that integrates with the Semantic Workbench. It handles workbench events and coordinates the assistant's responses based on the conversation state.
1082 | 
1083 | - SkillAssistant Class: The main class that integrates with the Semantic Workbench.
1084 | - on_workbench_event: Handles various workbench events to drive the assistant's behavior.
1085 | 
1086 | [config.py](assistant/config.py) file defines the configuration model for the Skill Assistant. It includes settings for both Azure OpenAI and OpenAI services, along with request-specific settings such as max_tokens and response_tokens.
1087 | 
1088 | - RequestConfig: Defines parameters for generating responses, including tokens settings.
1089 | 
1090 | ## Responsible AI
1091 | 
1092 | The assistant includes some important best practices for AI development, such as:
1093 | 
1094 | - **System prompt safety**, ie a set of LLM guardrails to protect users. As a developer you should understand how these
1095 |   guardrails work in your scenarios, and how to change them if needed. The system prompt and the prompt safety
1096 |   guardrails are split in two to help with testing. When talking to LLM models, prompt safety is injected before the
1097 |   system prompt.
1098 |   - See https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message for more details
1099 |     about protecting application and users in different scenarios.
1100 | - **Content moderation**, via [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety)
1101 |   or [OpenAI Content Moderation](https://platform.openai.com/docs/guides/moderation).
1102 | 
1103 | See the [Responsible AI FAQ](../../RESPONSIBLE_AI_FAQ.md) for more information.
1104 | 
1105 | # Suggested Development Environment
1106 | 
1107 | - Use GitHub Codespaces for a quick, turn-key dev environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
1108 | - VS Code is recommended for development
1109 | 
1110 | ## Pre-requisites
1111 | 
1112 | - Set up your dev environment
1113 |   - SUGGESTED: Use GitHub Codespaces for a quick, easy, and consistent dev
1114 |     environment: [/.devcontainer/README.md](../../.devcontainer/README.md)
1115 |   - ALTERNATIVE: Local setup following the [main README](../../README.md#local-development-environment)
1116 | - Set up and verify that the workbench app and service are running using the [semantic-workbench.code-workspace](../../semantic-workbench.code-workspace)
1117 | - If using Azure OpenAI, set up an Azure account and create a Content Safety resource
1118 |   - See [Azure AI Content Safety](https://azure.microsoft.com/products/ai-services/ai-content-safety) for more information
1119 |   - Copy the `.env.example` to `.env` and update the `ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT` value with the endpoint of your Azure Content Safety resource
1120 |   - From VS Code > `Terminal`, run `az login` to authenticate with Azure prior to starting the assistant
1121 | 
1122 | ## Steps
1123 | 
1124 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `semantic-workbench` to start the app and service from this workspace
1125 | - Use VS Code > `Run and Debug` (ctrl/cmd+shift+d) > `launch assistant` to start the assistant.
1126 | - If running in a devcontainer, follow the instructions in [.devcontainer/POST_SETUP_README.md](../../.devcontainer/POST_SETUP_README.md#start-the-app-and-service) for any additional steps.
1127 | - Return to the workbench app to interact with the assistant
1128 | - Add a new assistant from the main menu of the app, choose the assistant name as defined by the `service_name` in [chat.py](./assistant/skill_assistant.py)
1129 | - Click the newly created assistant to configure and interact with it
1130 | 
1131 | ## Starting the example from CLI
1132 | 
1133 | If you're not using VS Code and/or Codespaces, you can also work from the
1134 | command line, using `uv`:
1135 | 
1136 | ```
1137 | cd <PATH TO THIS FOLDER>
1138 | 
1139 | uv run start-assistant
1140 | ```
1141 | 
1142 | ## Create your own assistant
1143 | 
1144 | Copy the contents of this folder to your project.
1145 | 
1146 | - The paths are already set if you put in the same repo root and relative path of `/<your_projects>/<your_assistant_name>`
1147 | - If placed in a different location, update the references in the `pyproject.toml` to point to the appropriate locations for the `semantic-workbench-*` packages
1148 | 
1149 | ## From Development to Production
1150 | 
1151 | It's important to highlight how Semantic Workbench is a development tool, and it's not designed to host agents in
1152 | a production environment. The workbench helps with testing and debugging, in a development and isolated environment, usually your localhost.
1153 | 
1154 | The core of your assistant/AI application, e.g. how it reacts to users, how it invokes tools, how it stores data, can be
1155 | developed with any framework, such as Semantic Kernel, Langchain, OpenAI assistants, etc. That is typically the code
1156 | you will add to `chat.py`.
1157 | 
1158 | **Semantic Workbench is not a framework**. Dependencies on `semantic-workbench-assistant` package are used only to test and debug your code in Semantic Workbench. **When an assistant is fully developed and ready for production, configurable settings should be hard coded, dependencies on `semantic-workbench-assistant` and similar should be removed**.
1159 | 
1160 | 
1161 | === File: assistants/skill-assistant/pyproject.toml ===
1162 | [project]
1163 | name = "assistant"
1164 | version = "0.1.0"
1165 | description = "MADE:Exploration skill assistant."
1166 | authors = [{ name = "MADE:Exploration" }]
1167 | readme = "README.md"
1168 | requires-python = ">=3.11"
1169 | dependencies = [
1170 |     "azure-ai-contentsafety>=1.0.0",
1171 |     "azure-core[aio]>=1.30.0",
1172 |     "azure-identity>=1.16.0",
1173 |     "content-safety>=0.1.0",
1174 |     "openai-client>=0.1.0",
1175 |     "openai>=1.61.0",
1176 |     "semantic-workbench-assistant>=0.1.0",
1177 |     "bs4>=0.0.2",
1178 |     "skill-library>=0.1.0",
1179 | ]
1180 | 
1181 | [dependency-groups]
1182 | dev = [
1183 |     "pytest>=8.3.1",
1184 |     "pytest-asyncio>=0.23.8",
1185 |     "pytest-repeat>=0.9.3",
1186 |     "ipykernel>=6.29.4",
1187 |     "pyright>=1.1.389",
1188 | ]
1189 | 
1190 | [tool.uv]
1191 | package = true
1192 | 
1193 | [tool.uv.sources]
1194 | skill-library = { path = "../../libraries/python/skills/skill-library", editable = true }
1195 | content-safety = { path = "../../libraries/python/content-safety", editable = true }
1196 | openai-client = { path = "../../libraries/python/openai-client", editable = true }
1197 | semantic-workbench-assistant = { path = "../../libraries/python/semantic-workbench-assistant", editable = true }
1198 | 
1199 | [build-system]
1200 | requires = ["hatchling"]
1201 | build-backend = "hatchling.build"
1202 | 
1203 | [tool.pyright]
1204 | exclude = ["**/.venv", "**/.data", "**/__pycache__"]
1205 | 
1206 | [tool.pytest.ini_options]
1207 | addopts = "-vv"
1208 | log_cli = true
1209 | log_cli_level = "WARNING"
1210 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s"
1211 | asyncio_mode = "auto"
1212 | asyncio_default_fixture_loop_scope = "function"
1213 | 
1214 | 
1215 | 
```
Page 126/145FirstPrevNextLast