├── .devcontainer ├── .vscode │ └── settings.json ├── OPTIMIZING_FOR_CODESPACES.md ├── POST_SETUP_README.md ├── README.md └── devcontainer.json ├── .dockerignore ├── .gitattributes ├── .github ├── policheck.yml └── workflows │ ├── assistants-codespace-assistant.yml │ ├── assistants-document-assistant.yml │ ├── assistants-explorer-assistant.yml │ ├── assistants-guided-conversation-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 ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── KNOWN_ISSUES.md ├── LICENSE ├── Makefile ├── README.md ├── RESPONSIBLE_AI_FAQ.md ├── SECURITY.md ├── SUPPORT.md ├── ai_context └── generated │ ├── ASPIRE_ORCHESTRATOR.md │ ├── ASSISTANTS_OTHER.md │ ├── ASSISTANTS_OVERVIEW.md │ ├── ASSISTANT_CODESPACE.md │ ├── ASSISTANT_DOCUMENT.md │ ├── ASSISTANT_NAVIGATOR.md │ ├── ASSISTANT_PROJECT.md │ ├── ASSISTANT_PROSPECTOR.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 │ ├── Aspire.AppHost.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ └── appsettings.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 ├── SemanticWorkbench.Aspire.sln ├── SemanticWorkbench.Aspire.sln.DotSettings └── run.sh ├── assistants ├── Makefile ├── codespace-assistant │ ├── .env.example │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── assistant │ │ ├── __init__.py │ │ ├── assets │ │ │ ├── icon.svg │ │ │ └── icon_context_transfer.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 │ │ │ │ ├── formatting_utils.py │ │ │ │ ├── message_utils.py │ │ │ │ └── openai_utils.py │ │ ├── text_includes │ │ │ ├── card_content.md │ │ │ ├── card_content_context_transfer.md │ │ │ ├── codespace_assistant_info.md │ │ │ ├── context_transfer_assistant_info.md │ │ │ ├── guardrails_prompt.txt │ │ │ ├── guidance_prompt.txt │ │ │ ├── guidance_prompt_context_transfer.txt │ │ │ ├── instruction_prompt.txt │ │ │ └── instruction_prompt_context_transfer.txt │ │ └── whiteboard │ │ │ ├── __init__.py │ │ │ ├── _inspector.py │ │ │ └── _whiteboard.py │ ├── pyproject.toml │ └── uv.lock ├── document-assistant │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── assistant │ │ ├── __init__.py │ │ ├── assets │ │ │ └── icon.svg │ │ ├── chat.py │ │ ├── config.py │ │ ├── filesystem │ │ │ ├── __init__.py │ │ │ ├── _convert.py │ │ │ ├── _filesystem.py │ │ │ ├── _inspector.py │ │ │ ├── _model.py │ │ │ └── _prompts.py │ │ ├── guidance │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── dynamic_ui_inspector.py │ │ │ ├── guidance_config.py │ │ │ └── guidance_prompts.py │ │ ├── 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 │ │ ├── text_includes │ │ │ └── document_assistant_info.md │ │ └── whiteboard │ │ │ ├── __init__.py │ │ │ ├── _inspector.py │ │ │ └── _whiteboard.py │ ├── pyproject.toml │ ├── tests │ │ ├── __init__.py │ │ ├── test_convert.py │ │ └── test_data │ │ │ ├── Formatting Test.docx │ │ │ ├── blank_image.png │ │ │ ├── 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 │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── assistant │ │ ├── __init__.py │ │ ├── chat.py │ │ ├── config.py │ │ ├── helpers.py │ │ ├── response │ │ │ ├── __init__.py │ │ │ ├── model.py │ │ │ ├── response.py │ │ │ ├── response_anthropic.py │ │ │ └── response_openai.py │ │ └── text_includes │ │ │ └── guardrails_prompt.txt │ ├── pyproject.toml │ └── uv.lock ├── guided-conversation-assistant │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── 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 │ ├── pyproject.toml │ └── uv.lock ├── navigator-assistant │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ ├── pyproject.toml │ └── uv.lock ├── project-assistant │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── CLAUDE.md │ ├── Makefile │ ├── README.md │ ├── assistant │ │ ├── __init__.py │ │ ├── assets │ │ │ ├── icon.svg │ │ │ └── icon_context_transfer.svg │ │ ├── chat.py │ │ ├── command_processor.py │ │ ├── config.py │ │ ├── configs │ │ │ ├── __init__.py │ │ │ ├── default.py │ │ │ └── knowledge_transfer.py │ │ ├── conversation_clients.py │ │ ├── conversation_project_link.py │ │ ├── logging.py │ │ ├── project_analysis.py │ │ ├── project_common.py │ │ ├── project_data.py │ │ ├── project_files.py │ │ ├── project_manager.py │ │ ├── project_notifications.py │ │ ├── project_storage.py │ │ ├── project_storage_models.py │ │ ├── respond.py │ │ ├── state_inspector.py │ │ ├── string_utils.py │ │ ├── team_welcome.py │ │ ├── text_includes │ │ │ ├── card_content.md │ │ │ ├── coordinator_instructions.txt │ │ │ ├── coordinator_role.txt │ │ │ ├── knowledge_transfer_assistant_info.md │ │ │ ├── knowledge_transfer_card_content.md │ │ │ ├── knowledge_transfer_coordinator_instructions.txt │ │ │ ├── knowledge_transfer_coordinator_role.txt │ │ │ ├── knowledge_transfer_information_request_detection.txt │ │ │ ├── knowledge_transfer_team_instructions.txt │ │ │ ├── knowledge_transfer_team_role.txt │ │ │ ├── knowledge_transfer_welcome_message_generation.txt │ │ │ ├── knowledge_transfer_whiteboard_prompt.txt │ │ │ ├── project_assistant_info.md │ │ │ ├── project_information_request_detection.txt │ │ │ ├── team_instructions.txt │ │ │ ├── team_role.txt │ │ │ ├── welcome_message_generation.txt │ │ │ ├── whiteboard_instructions.txt │ │ │ └── whiteboard_prompt.txt │ │ ├── tools.py │ │ └── utils.py │ ├── docs │ │ ├── ASSISTANT_LIBRARY_NOTES.md │ │ ├── CLAUDE_PROMPTS.md │ │ ├── DESIGN.md │ │ ├── DEV_GUIDE.md │ │ ├── WORKBENCH_NOTES.md │ │ └── notable_claude_conversations │ │ │ ├── clarifying_quad_modal_design.md │ │ │ └── trying_the_context_agent.md │ ├── project-assistant.code-workspace │ ├── pyproject.toml │ ├── test_inspector.py │ ├── tests │ │ ├── __init__.py │ │ ├── test_artifact_loading.py │ │ ├── test_project_manager.py │ │ ├── test_project_storage.py │ │ ├── test_project_tools.py │ │ └── test_team_mode.py │ └── uv.lock ├── prospector-assistant │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── 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 │ ├── 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.png │ │ │ └── sk_send_request_prep.png │ ├── pyproject.toml │ └── uv.lock └── skill-assistant │ ├── .env.example │ ├── .vscode │ ├── launch.json │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── 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 │ ├── pyproject.toml │ ├── tests │ └── test_setup.py │ └── uv.lock ├── docs ├── .vscode │ └── settings.json ├── ASSISTANT_CONFIG.md ├── ASSISTANT_DEVELOPMENT_GUIDE.md ├── CUSTOM_APP_REGISTRATION.md ├── HOSTED_ASSISTANT_WITH_LOCAL_MCP_SERVERS.md ├── LOCAL_ASSISTANT_WITH_REMOTE_WORKBENCH.md ├── SETUP_DEV_ENVIRONMENT.md ├── WORKBENCH_APP.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 ├── examples ├── Makefile ├── dotnet │ ├── .editorconfig │ ├── dotnet-01-echo-bot │ │ ├── MyAgent.cs │ │ ├── MyAgentConfig.cs │ │ ├── MyWorkbenchConnector.cs │ │ ├── Program.cs │ │ ├── README.md │ │ ├── appsettings.json │ │ └── dotnet-01-echo-bot.csproj │ ├── dotnet-02-message-types-demo │ │ ├── ConnectorExtensions.cs │ │ ├── MyAgent.cs │ │ ├── MyAgentConfig.cs │ │ ├── MyWorkbenchConnector.cs │ │ ├── Program.cs │ │ ├── README.md │ │ ├── appsettings.json │ │ ├── docs │ │ │ ├── abc.png │ │ │ ├── code.png │ │ │ ├── config.png │ │ │ ├── echo.png │ │ │ ├── markdown.png │ │ │ ├── mermaid.png │ │ │ ├── reverse.png │ │ │ └── safety-check.png │ │ └── dotnet-02-message-types-demo.csproj │ └── dotnet-03-simple-chatbot │ │ ├── ConnectorExtensions.cs │ │ ├── MyAgent.cs │ │ ├── MyAgentConfig.cs │ │ ├── MyWorkbenchConnector.cs │ │ ├── Program.cs │ │ ├── README.md │ │ ├── appsettings.json │ │ └── dotnet-03-simple-chatbot.csproj └── python │ ├── python-01-echo-bot │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── assistant │ │ ├── __init__.py │ │ ├── chat.py │ │ └── config.py │ ├── pyproject.toml │ └── uv.lock │ ├── python-02-simple-chatbot │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── assistant │ │ ├── __init__.py │ │ ├── chat.py │ │ ├── config.py │ │ └── text_includes │ │ │ └── guardrails_prompt.txt │ ├── pyproject.toml │ └── uv.lock │ └── python-03-multimodel-chatbot │ ├── .env.example │ ├── .vscode │ ├── launch.json │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant.code-workspace │ ├── assistant │ ├── __init__.py │ ├── chat.py │ ├── config.py │ ├── model_adapters.py │ └── text_includes │ │ └── guardrails_prompt.txt │ ├── pyproject.toml │ └── uv.lock ├── libraries ├── Makefile ├── dotnet │ ├── .editorconfig │ ├── README.md │ ├── SemanticWorkbench.sln │ ├── SemanticWorkbench.sln.DotSettings │ ├── WorkbenchConnector │ │ ├── AgentBase.cs │ │ ├── AgentConfig │ │ │ ├── AgentConfigBase.cs │ │ │ ├── AgentConfigPropertyAttribute.cs │ │ │ └── ConfigUtils.cs │ │ ├── Constants.cs │ │ ├── IAgentBase.cs │ │ ├── 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 │ │ └── icon.png │ └── pack.sh └── python │ ├── Makefile │ ├── anthropic-client │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── anthropic_client │ │ ├── __init__.py │ │ ├── client.py │ │ ├── config.py │ │ └── messages.py │ ├── pyproject.toml │ └── uv.lock │ ├── assistant-drive │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── assistant_drive │ │ ├── __init__.py │ │ ├── drive.py │ │ └── tests │ │ │ └── test_basic.py │ ├── pyproject.toml │ ├── pytest.ini │ ├── usage.ipynb │ └── uv.lock │ ├── assistant-extensions │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ │ │ └── tests │ │ │ │ └── test_attachments.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 │ ├── pyproject.toml │ └── uv.lock │ ├── content-safety │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── content_safety │ │ ├── README.md │ │ ├── __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 │ ├── pyproject.toml │ └── uv.lock │ ├── events │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── events │ │ ├── __init__.py │ │ └── events.py │ ├── pyproject.toml │ └── uv.lock │ ├── guided-conversation │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ ├── pyproject.toml │ └── uv.lock │ ├── llm-client │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── llm_client │ │ ├── __init__.py │ │ └── model.py │ ├── pyproject.toml │ └── uv.lock │ ├── mcp-extensions │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ ├── tests │ │ └── test_tool_utils.py │ └── uv.lock │ ├── mcp-tunnel │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── mcp_tunnel │ │ ├── __init__.py │ │ ├── _devtunnel.py │ │ ├── _dir.py │ │ └── _main.py │ ├── pyproject.toml │ └── uv.lock │ ├── openai-client │ ├── .vscode │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── openai_client │ │ ├── __init__.py │ │ ├── chat_driver │ │ │ ├── README.md │ │ │ ├── __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 │ │ ├── client.py │ │ ├── completion.py │ │ ├── config.py │ │ ├── errors.py │ │ ├── logging.py │ │ ├── messages.py │ │ ├── tokens.py │ │ └── tools.py │ ├── pyproject.toml │ ├── 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 │ ├── README.md │ ├── pyproject.toml │ ├── 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 │ ├── README.md │ ├── pyproject.toml │ ├── 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 │ ├── Makefile │ ├── README.md │ ├── docs │ └── vs-recipe-tool.md │ ├── pyproject.toml │ ├── skill_library │ ├── README.md │ ├── __init__.py │ ├── chat_driver_helpers.py │ ├── cli │ │ ├── README.md │ │ ├── azure_openai.py │ │ ├── conversation_history.py │ │ ├── run_routine.py │ │ ├── settings.py │ │ └── skill_logger.py │ ├── engine.py │ ├── llm_info.txt │ ├── logging.py │ ├── routine_stack.py │ ├── skill.py │ ├── skills │ │ ├── README.md │ │ ├── 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 │ │ │ │ │ ├── README.md │ │ │ │ │ ├── dmiessler │ │ │ │ │ │ └── extract_wisdom-1.0.0 │ │ │ │ │ │ │ ├── system.md │ │ │ │ │ │ │ └── user.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 │ │ │ │ │ ├── README.md │ │ │ │ │ ├── dmiessler │ │ │ │ │ │ └── extract_wisdom-1.0.0 │ │ │ │ │ │ │ ├── system.md │ │ │ │ │ │ │ └── user.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 │ │ │ │ │ ├── README.md │ │ │ │ │ ├── dmiessler │ │ │ │ │ │ └── extract_wisdom-1.0.0 │ │ │ │ │ │ │ ├── system.md │ │ │ │ │ │ │ └── user.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 │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── meta_skill.py │ │ │ └── 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 │ │ ├── research │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── 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 │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── research_skill.py │ │ │ └── routines │ │ │ │ ├── facts.py │ │ │ │ ├── make_final_report.py │ │ │ │ ├── research.py │ │ │ │ ├── search.py │ │ │ │ ├── search_plan.py │ │ │ │ └── visit_pages.py │ │ └── web_research │ │ │ ├── README.md │ │ │ ├── __init__.py │ │ │ ├── research_skill.py │ │ │ └── routines │ │ │ ├── facts.py │ │ │ ├── make_final_report.py │ │ │ ├── research.py │ │ │ ├── search.py │ │ │ ├── search_plan.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 ├── mcp-servers ├── Makefile ├── ai-assist-content │ ├── .vscode │ │ └── settings.json │ ├── README.md │ ├── 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 ├── mcp-server-bing-search │ ├── .env.example │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ ├── tests │ │ └── test_tools.py │ └── uv.lock ├── mcp-server-bundle │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── mcp_server_bundle │ │ ├── __init__.py │ │ └── main.py │ ├── pyinstaller.spec │ ├── pyproject.toml │ └── uv.lock ├── mcp-server-filesystem-edit │ ├── .env.example │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── data │ │ ├── attachments │ │ │ ├── Daily Game Ideas.txt │ │ │ ├── Frontend Framework Proposal.txt │ │ │ ├── ReDoodle.txt │ │ │ └── Research Template.tex │ │ ├── test_cases.yaml │ │ └── transcripts │ │ │ ├── transcript_Startup_Idea_1_202503031513.md │ │ │ ├── transcript_Startup_Idea_2_202503031659.md │ │ │ ├── transcript_Web_Frontends_202502281551.md │ │ │ └── transcript_research_simple.md │ ├── 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.py │ │ │ ├── edit_adapters │ │ │ │ ├── __init__.py │ │ │ │ ├── common.py │ │ │ │ ├── latex.py │ │ │ │ └── markdown.py │ │ │ └── helpers.py │ │ └── types.py │ ├── pyproject.toml │ ├── 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-filesystem │ ├── .env.example │ ├── .github │ │ └── workflows │ │ │ └── ci.yml │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── mcp_server_filesystem │ │ ├── __init__.py │ │ ├── config.py │ │ ├── server.py │ │ └── start.py │ ├── pyproject.toml │ ├── tests │ │ └── test_filesystem.py │ └── uv.lock ├── mcp-server-fusion │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── AddInIcon.svg │ ├── FusionMCPServerAddIn.manifest │ ├── FusionMCPServerAddIn.py │ ├── README.md │ ├── config.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 │ └── requirements.txt ├── mcp-server-giphy │ ├── .env.example │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── mcp_server │ │ ├── __init__.py │ │ ├── config.py │ │ ├── giphy_search.py │ │ ├── sampling.py │ │ ├── server.py │ │ ├── start.py │ │ └── utils.py │ ├── pyproject.toml │ └── uv.lock ├── mcp-server-memory-user-bio │ ├── .env.example │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── mcp_server_memory_user_bio │ │ ├── __init__.py │ │ ├── config.py │ │ ├── server.py │ │ └── start.py │ ├── pyproject.toml │ └── uv.lock ├── mcp-server-memory-whiteboard │ ├── .env.example │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── mcp_server_memory_whiteboard │ │ ├── __init__.py │ │ ├── config.py │ │ ├── server.py │ │ └── start.py │ ├── pyproject.toml │ └── uv.lock ├── mcp-server-office │ ├── .env.example │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ ├── 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 │ ├── tests │ │ └── test_word_editor.py │ └── uv.lock ├── mcp-server-open-deep-research-clone │ ├── .env.example │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ ├── test │ │ └── test_open_deep_research_clone.py │ └── uv.lock ├── mcp-server-open-deep-research │ ├── .env.example │ ├── .gitignore │ ├── .vscode │ │ ├── launch.json │ │ └── settings.json │ ├── Makefile │ ├── README.md │ ├── 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 │ └── uv.lock ├── mcp-server-template │ ├── .taplo.toml │ ├── .vscode │ │ └── settings.json │ ├── README.md │ ├── copier.yml │ └── template │ │ └── {{ project_slug }} │ │ ├── .env.example.jinja │ │ ├── .gitignore │ │ ├── .vscode │ │ ├── launch.json.jinja │ │ └── settings.json │ │ ├── Makefile.jinja │ │ ├── README.md.jinja │ │ ├── pyproject.toml.jinja │ │ └── {{ module_name }} │ │ ├── __init__.py │ │ ├── config.py.jinja │ │ ├── server.py.jinja │ │ └── start.py.jinja ├── mcp-server-vscode │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .npmrc │ ├── .vscode-test.mjs │ ├── .vscode │ │ ├── extensions.json │ │ ├── launch.json │ │ ├── settings.json │ │ └── tasks.json │ ├── .vscodeignore │ ├── ASSISTANT_BOOTSTRAP.md │ ├── LICENSE │ ├── Makefile │ ├── README.md │ ├── eslint.config.mjs │ ├── images │ │ └── icon.png │ ├── 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 │ ├── 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 │ ├── README.md │ ├── 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 │ ├── test │ └── test_web_research.py │ └── uv.lock ├── ruff.toml ├── semantic-workbench.code-workspace ├── tools ├── build_ai_context_files.py ├── collect_files.py ├── docker │ ├── Dockerfile.assistant │ ├── Dockerfile.mcp-server │ ├── azure_website_sshd.conf │ └── docker-entrypoint.sh ├── 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 ├── Dockerfile ├── Makefile ├── README.md ├── docker-entrypoint.sh ├── docs │ ├── APP_DEV_GUIDE.md │ ├── MESSAGE_METADATA.md │ ├── MESSAGE_TYPES.md │ ├── README.md │ └── STATE_INSPECTORS.md ├── index.html ├── 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 ├── run.sh ├── src │ ├── Constants.ts │ ├── Root.tsx │ ├── 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 │ │ ├── AssistantServiceRegistrations │ │ │ ├── AssistantServiceRegistrationApiKey.tsx │ │ │ ├── AssistantServiceRegistrationApiKeyReset.tsx │ │ │ ├── AssistantServiceRegistrationCreate.tsx │ │ │ └── AssistantServiceRegistrationRemove.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 │ │ ├── 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 │ │ │ ├── ConversationTranscript.tsx │ │ │ ├── ConversationsImport.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 │ │ │ │ └── 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 │ ├── global.d.ts │ ├── index.css │ ├── libs │ │ ├── AppStorage.ts │ │ ├── AuthHelper.ts │ │ ├── EventSubscriptionManager.ts │ │ ├── Theme.ts │ │ ├── Utility.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 │ ├── 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 │ │ │ ├── AppState.ts │ │ │ └── appSlice.ts │ │ │ ├── chatCanvas │ │ │ ├── ChatCanvasState.ts │ │ │ └── chatCanvasSlice.ts │ │ │ ├── localUser │ │ │ ├── LocalUserState.ts │ │ │ └── localUserSlice.ts │ │ │ └── settings │ │ │ ├── SettingsState.ts │ │ │ └── settingsSlice.ts │ ├── 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 ├── Dockerfile ├── Makefile ├── README.md ├── alembic.ini ├── devdb ├── docker-compose.yaml └── postgresql-init.sh ├── migrations ├── README ├── env.py ├── 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 ├── pyproject.toml ├── semantic_workbench_service ├── __init__.py ├── api.py ├── assistant_api_key.py ├── auth.py ├── azure_speech.py ├── config.py ├── controller │ ├── __init__.py │ ├── assistant.py │ ├── assistant_service_client_pool.py │ ├── assistant_service_registration.py │ ├── conversation.py │ ├── conversation_share.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.py ├── service_user_principals.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 /.devcontainer/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "aarontamasfe", 4 | "charliermarsh", 5 | "Codespace", 6 | "codespaces", 7 | "datawrangler", 8 | "dbaeumer", 9 | "debugpy", 10 | "devcontainer", 11 | "devcontainers", 12 | "Dotfiles", 13 | "epivision", 14 | "esbenp", 15 | "jungaretti", 16 | "pipx", 17 | "prebuild", 18 | "pylance", 19 | "robbert", 20 | "rudge", 21 | "semanticworkbench", 22 | "tamasfe", 23 | "toolsai", 24 | "zoma" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # files 2 | 3 | **/.DS_Store 4 | **/.dockerignore 5 | **/.env 6 | **/.env.example 7 | **/.gitignore 8 | **/Dockerfile 9 | **/Dockerfile.* 10 | **/Makefile 11 | 12 | # dirs 13 | 14 | .github 15 | .devcontainer 16 | **/.vscode 17 | **/.data 18 | **/__pycache__ 19 | **/.pytest_cache 20 | **/.venv 21 | .azure 22 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto-detect text files, ensure they use LF. 2 | * text=auto eol=lf working-tree-encoding=UTF-8 3 | 4 | # Bash scripts 5 | *.sh text eol=lf 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Private settings 2 | **/certs/*.pem 3 | **/certs/config.json 4 | **/certs/mkcert 5 | .env 6 | *.local 7 | *.user 8 | *__local__* 9 | .data 10 | .idea/ 11 | appsettings.*.json 12 | **/.DS_Store 13 | 14 | # Dependencies and build cache 15 | node_modules 16 | .venv 17 | __pycache__ 18 | .pytest_cache 19 | .ruff_cache 20 | .cache 21 | *.egg-info 22 | bin 23 | obj 24 | dist 25 | build 26 | 27 | # Logs 28 | *.log 29 | npm-debug.log* 30 | yarn-debug.log* 31 | yarn-error.log* 32 | pnpm-debug.log* 33 | lerna-debug.log* 34 | 35 | #azd files 36 | .azure 37 | azure.yaml 38 | next-steps.md 39 | -------------------------------------------------------------------------------- /.multi-root-tools/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/shell.mk 3 | 4 | VENV_DIR := .venv 5 | PYTHON_VERSION := 3.11 6 | 7 | .PHONY: install 8 | 9 | install: $(VENV_DIR) 10 | 11 | $(VENV_DIR): 12 | uv venv --python $(PYTHON_VERSION) $(VENV_DIR) 13 | 14 | .PHONY: clean 15 | clean: 16 | $(rm_dir) $(VENV_DIR) $(ignore_failure) 17 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "aaron-bond.better-comments", 4 | "aarontamasfe.even-better-toml", 5 | "charliermarsh.ruff", 6 | "dbaeumer.vscode-eslint", 7 | "esbenp.prettier-vscode", 8 | "ms-vscode.makefile-tools", 9 | "ms-python.python", 10 | "streetsidesoftware.code-spell-checker" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Microsoft Open Source Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | 5 | Resources: 6 | 7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) 8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns 10 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | this_dir = $(patsubst %/,%,$(dir $(realpath $(lastword $(MAKEFILE_LIST))))) 2 | include $(this_dir)/tools/makefiles/recursive.mk 3 | 4 | # AI Context Files Generation - runs at repo root only 5 | .PHONY: ai-context-files 6 | ai-context-files: 7 | @echo "Building AI context files..." 8 | @python tools/build_ai_context_files.py 9 | @echo "AI context files generated in ai_context/generated/" 10 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | ## How to file issues and get help 4 | 5 | This project uses GitHub Issues to track bugs and feature requests. Please search the existing 6 | issues before filing new issues to avoid duplicates. For new issues, file your bug or 7 | feature request as a new Issue. 8 | 9 | For help and questions about using this project, please create a new GitHub Issue with your request. 10 | 11 | ## Microsoft Support Policy 12 | 13 | Support for this project is limited to the resources listed above. 14 | -------------------------------------------------------------------------------- /aspire-orchestrator/Aspire.AppHost/.gitignore: -------------------------------------------------------------------------------- 1 | .azure 2 | -------------------------------------------------------------------------------- /aspire-orchestrator/Aspire.AppHost/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning", 6 | "Aspire.Hosting.Dcp": "Warning" 7 | } 8 | }, 9 | "Workbench": { 10 | // Used only when running Aspire locally, ie not in the cloud 11 | // Port 4000 is the default port used also when not using Aspire. 12 | // Using the same port allows to keep cookies and other local settings. 13 | "AppPort": 4000 14 | }, 15 | "EntraID": { 16 | "Authority": "https://login.microsoftonline.com/common", 17 | "ClientId": "22cb77c3-ca98-4a26-b4db-ac4dcecba690" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /aspire-orchestrator/Aspire.Extensions/UvAppResource.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | namespace Aspire.Hosting.ComponentModel; 4 | 5 | public class UvAppResource(string name, string workingDirectory) 6 | : ExecutableResource(name, "uv", workingDirectory), IResourceWithServiceDiscovery 7 | { 8 | internal const string HttpEndpointName = "http"; 9 | } 10 | -------------------------------------------------------------------------------- /assistants/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/recursive.mk 3 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["semanticworkbenchteam.mcp-server-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "assistants/codespace-assistant" 6 | }, 7 | { 8 | "path": "../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | from .config import AssistantConfigModel 3 | 4 | __all__ = ["app", "AssistantConfigModel"] 5 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/assets/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/assets/icon_context_transfer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/helpers.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | 3 | 4 | # helper for loading an include from a text file 5 | def load_text_include(filename) -> str: 6 | # get directory relative to this module 7 | directory = pathlib.Path(__file__).parent 8 | 9 | # get the file path for the prompt file 10 | file_path = directory / "text_includes" / filename 11 | 12 | # read the prompt from the file 13 | return file_path.read_text(encoding="utf-8") 14 | 15 | 16 | __all__ = ["load_text_include"] 17 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/response/__init__.py: -------------------------------------------------------------------------------- 1 | from .response import respond_to_conversation 2 | 3 | __all__ = ["respond_to_conversation"] 4 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/response/models.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Literal 2 | 3 | from attr import dataclass 4 | 5 | 6 | @dataclass 7 | class StepResult: 8 | status: Literal["final", "error", "continue"] 9 | conversation_tokens: int = 0 10 | metadata: dict[str, Any] | None = None 11 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/text_includes/card_content.md: -------------------------------------------------------------------------------- 1 | Code faster with Al support 2 | 3 | - Generate code from requirements 4 | - Find & fix bugs with suggestions 5 | - Learn programming concepts as you build 6 | - Optimize your code performance 7 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/text_includes/card_content_context_transfer.md: -------------------------------------------------------------------------------- 1 | Make complex information easy to understand 2 | 3 | - Get simple explanations for concepts 4 | - Visualize information with diagrams 5 | - Find answers without information overload 6 | - Learn with personalized teaching 7 | -------------------------------------------------------------------------------- /assistants/codespace-assistant/assistant/whiteboard/__init__.py: -------------------------------------------------------------------------------- 1 | from ._inspector import WhiteboardInspector 2 | from ._whiteboard import notify_whiteboard 3 | 4 | __all__ = [ 5 | "notify_whiteboard", 6 | "WhiteboardInspector", 7 | ] 8 | -------------------------------------------------------------------------------- /assistants/document-assistant/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /assistants/document-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/document-assistant/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "assistants/document-assistant" 6 | }, 7 | { 8 | "path": "../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /assistants/document-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | from .config import AssistantConfigModel 3 | 4 | __all__ = ["app", "AssistantConfigModel"] 5 | -------------------------------------------------------------------------------- /assistants/document-assistant/assistant/assets/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assistants/document-assistant/assistant/guidance/README.md: -------------------------------------------------------------------------------- 1 | # Assistant Guidance 2 | 3 | This directory contains code for implementing assistant guidance. 4 | Guidance in this context refers to making the experience easier for new users (part of the cold start problem with new assistants/users), 5 | and helping users throughout their experience with the assistant. 6 | 7 | One core piece of this is dynamic UI component generation so that users can click components 8 | in an inspector tab rather than typing all of their preferences and relying on the assistant to always ask for preferences. 9 | -------------------------------------------------------------------------------- /assistants/document-assistant/assistant/guidance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/assistant/guidance/__init__.py -------------------------------------------------------------------------------- /assistants/document-assistant/assistant/response/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/assistant/response/__init__.py -------------------------------------------------------------------------------- /assistants/document-assistant/assistant/response/models.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Literal 2 | 3 | from attr import dataclass 4 | 5 | 6 | @dataclass 7 | class StepResult: 8 | status: Literal["final", "error", "continue"] 9 | conversation_tokens: int = 0 10 | metadata: dict[str, Any] | None = None 11 | -------------------------------------------------------------------------------- /assistants/document-assistant/assistant/whiteboard/__init__.py: -------------------------------------------------------------------------------- 1 | from ._inspector import WhiteboardInspector 2 | from ._whiteboard import notify_whiteboard 3 | 4 | __all__ = [ 5 | "notify_whiteboard", 6 | "WhiteboardInspector", 7 | ] 8 | -------------------------------------------------------------------------------- /assistants/document-assistant/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/tests/__init__.py -------------------------------------------------------------------------------- /assistants/document-assistant/tests/test_data/Formatting Test.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/tests/test_data/Formatting Test.docx -------------------------------------------------------------------------------- /assistants/document-assistant/tests/test_data/blank_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/tests/test_data/blank_image.png -------------------------------------------------------------------------------- /assistants/document-assistant/tests/test_data/sample_data.csv: -------------------------------------------------------------------------------- 1 | Name,Age,Department,Salary 2 | Alice,30,HR,50000 3 | Bob,24,Engineering,70000 4 | Charlie,29,Marketing,60000 5 | -------------------------------------------------------------------------------- /assistants/document-assistant/tests/test_data/sample_data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/tests/test_data/sample_data.xlsx -------------------------------------------------------------------------------- /assistants/document-assistant/tests/test_data/sample_page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Sample HTML Page 6 | 7 | 8 |

My Heading 1

9 |

This is a simple HTML page to test.

10 |

My Heading 3

11 |

This is a bulleted list:

12 |
    13 |
  • Item 1
  • 14 |
  • Item 2
  • 15 |
16 | Simple Line Plot 17 | 18 | 19 | -------------------------------------------------------------------------------- /assistants/document-assistant/tests/test_data/sample_presentation.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/tests/test_data/sample_presentation.pptx -------------------------------------------------------------------------------- /assistants/document-assistant/tests/test_data/simple_pdf.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/document-assistant/tests/test_data/simple_pdf.pdf -------------------------------------------------------------------------------- /assistants/explorer-assistant/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /assistants/explorer-assistant/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "assistants: explorer-assistant", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}" 11 | // "justMyCode": false, // Set to false to debug external libraries 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /assistants/explorer-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/explorer-assistant/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "assistants/explorer-assistant" 6 | }, 7 | { 8 | "path": "../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /assistants/explorer-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | from .config import AssistantConfigModel 3 | 4 | __all__ = ["app", "AssistantConfigModel"] 5 | -------------------------------------------------------------------------------- /assistants/explorer-assistant/assistant/helpers.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | 3 | 4 | # helper for loading an include from a text file 5 | def load_text_include(filename) -> str: 6 | # get directory relative to this module 7 | directory = pathlib.Path(__file__).parent 8 | 9 | # get the file path for the prompt file 10 | file_path = directory / "text_includes" / filename 11 | 12 | # read the prompt from the file 13 | return file_path.read_text() 14 | 15 | 16 | __all__ = ["load_text_include"] 17 | -------------------------------------------------------------------------------- /assistants/explorer-assistant/assistant/response/__init__.py: -------------------------------------------------------------------------------- 1 | from .response import respond_to_conversation 2 | 3 | __all__ = ["respond_to_conversation"] 4 | -------------------------------------------------------------------------------- /assistants/guided-conversation-assistant/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /assistants/guided-conversation-assistant/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "assistants: guided-conversation-assistant", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /assistants/guided-conversation-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/guided-conversation-assistant/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "assistants/guided-conversation-assistant" 6 | }, 7 | { 8 | "path": "../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /assistants/guided-conversation-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | from .config import AssistantConfigModel 3 | 4 | __all__ = ["app", "AssistantConfigModel"] 5 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "assistants: navigator-assistant", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}", 11 | "justMyCode": false // Set to false to debug external libraries 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | from .config import AssistantConfigModel 3 | 4 | __all__ = ["app", "AssistantConfigModel"] 5 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/assets/card_content.md: -------------------------------------------------------------------------------- 1 | Find the right AI assistant for your needs 2 | 3 | - Discover specialized assistants for your task 4 | - Get guidance on assistant capabilities 5 | - Learn which template fits your use case 6 | - Get help using the Semantic Workbench 7 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/assets/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/helpers.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | 3 | 4 | # helper for loading an include from a text file 5 | def load_text_include(filename) -> str: 6 | # get directory relative to this module 7 | directory = pathlib.Path(__file__).parent 8 | 9 | # get the file path for the prompt file 10 | file_path = directory / "text_includes" / filename 11 | 12 | # read the prompt from the file 13 | return file_path.read_text(encoding="utf-8") 14 | 15 | 16 | __all__ = ["load_text_include"] 17 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/response/__init__.py: -------------------------------------------------------------------------------- 1 | from .response import respond_to_conversation 2 | 3 | __all__ = ["respond_to_conversation"] 4 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/response/local_tool/__init__.py: -------------------------------------------------------------------------------- 1 | from .add_assistant_to_conversation import tool as add_assistant_to_conversation_tool 2 | from .list_assistant_services import tool as list_assistant_services_tool 3 | from .model import LocalTool 4 | 5 | __all__ = [ 6 | "LocalTool", 7 | "list_assistant_services_tool", 8 | "add_assistant_to_conversation_tool", 9 | ] 10 | -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/text_includes/guidance_prompt.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/navigator-assistant/assistant/text_includes/guidance_prompt.md -------------------------------------------------------------------------------- /assistants/navigator-assistant/assistant/whiteboard/__init__.py: -------------------------------------------------------------------------------- 1 | from ._inspector import WhiteboardInspector 2 | from ._whiteboard import get_whiteboard_service_config, notify_whiteboard 3 | 4 | __all__ = [ 5 | "notify_whiteboard", 6 | "WhiteboardInspector", 7 | "get_whiteboard_service_config", 8 | ] 9 | -------------------------------------------------------------------------------- /assistants/project-assistant/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /assistants/project-assistant/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "assistants: project-assistant", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}", 11 | "justMyCode": false // Set to false to debug external libraries 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /assistants/project-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/project-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | from .logging import logger, setup_file_logging 3 | 4 | # Set up file logging 5 | log_file = setup_file_logging() 6 | logger.debug(f"Project Assistant initialized with log file: {log_file}") 7 | 8 | __all__ = ["app"] 9 | -------------------------------------------------------------------------------- /assistants/project-assistant/assistant/assets/icon_context_transfer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assistants/project-assistant/assistant/configs/__init__.py: -------------------------------------------------------------------------------- 1 | from .default import AssistantConfigModel, CoordinatorConfig, RequestConfig, TeamConfig 2 | from .knowledge_transfer import KnowledgeTransferConfigModel 3 | 4 | __all__ = [ 5 | "AssistantConfigModel", 6 | "KnowledgeTransferConfigModel", 7 | "CoordinatorConfig", 8 | "RequestConfig", 9 | "TeamConfig", 10 | ] 11 | -------------------------------------------------------------------------------- /assistants/project-assistant/assistant/text_includes/card_content.md: -------------------------------------------------------------------------------- 1 | Keep your team aligned and productive 2 | 3 | - Coordinate projects across teams 4 | - Track tasks and deadlines automatically 5 | - Run more effective meetings 6 | - Ensure information accessibility 7 | -------------------------------------------------------------------------------- /assistants/project-assistant/assistant/text_includes/knowledge_transfer_card_content.md: -------------------------------------------------------------------------------- 1 | Make complex information easy to understand 2 | 3 | - Get simple explanations for concepts 4 | - Visualize information with diagrams 5 | - Find answers without information overload 6 | - Learn with personalized teaching 7 | -------------------------------------------------------------------------------- /assistants/project-assistant/assistant/text_includes/welcome_message_generation.txt: -------------------------------------------------------------------------------- 1 | Create a welcome message specific to this project. It should be something like: 2 | 3 | ``` 4 | # Welcome! 5 | 6 | This is your personal conversation for gaining deeper understanding of the project shared with you! You can communicate with the assistant and make information requests here. See more information in the side panel. 7 | ``` 8 | 9 | Your output format should be markdown. Do NOT include any other commentary. Do NOT include backticks. Do NOT surround it with quotes. 10 | -------------------------------------------------------------------------------- /assistants/project-assistant/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Tests for project assistant 2 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "assistants: prospector-assistant", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "assistants/prospector-assistant" 6 | }, 7 | { 8 | "path": "../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | from .config import AssistantConfigModel 3 | 4 | __all__ = ["app", "AssistantConfigModel"] 5 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/artifact_creation_extension/__init__.py: -------------------------------------------------------------------------------- 1 | from .extension import ArtifactCreationExtension 2 | 3 | __all__ = [ 4 | "ArtifactCreationExtension", 5 | ] 6 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/artifact_creation_extension/config.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from typing import Callable 3 | 4 | from openai import AsyncOpenAI 5 | from openai.types.chat import ChatCompletionReasoningEffort 6 | 7 | 8 | @dataclass 9 | class LLMConfig: 10 | openai_client_factory: Callable[[], AsyncOpenAI] 11 | openai_model: str 12 | max_response_tokens: int 13 | reasoning_effort: ChatCompletionReasoningEffort | None = None 14 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/form_fill_extension/__init__.py: -------------------------------------------------------------------------------- 1 | from .config import FormFillConfig 2 | from .extension import FormFillExtension 3 | from .steps.types import LLMConfig 4 | 5 | __all__ = [ 6 | "FormFillExtension", 7 | "LLMConfig", 8 | "FormFillConfig", 9 | ] 10 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/form_fill_extension/steps/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/assistant/form_fill_extension/steps/__init__.py -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/helpers.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | 3 | 4 | # helper for loading an include from a text file 5 | def load_text_include(filename) -> str: 6 | # get directory relative to this module 7 | directory = pathlib.Path(__file__).parent 8 | 9 | # get the file path for the prompt file 10 | file_path = directory / "text_includes" / filename 11 | 12 | # read the prompt from the file 13 | return file_path.read_text() 14 | 15 | 16 | __all__ = ["load_text_include"] 17 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/text_includes/artifact_agent_enabled.md: -------------------------------------------------------------------------------- 1 | The artifact support is experimental and disabled by default. Enable it to poke at the early features, but be aware that you may lose data or experience unexpected behavior. 2 | 3 | **NOTE: This feature requires an OpenAI or Azure OpenAI service that supports Structured Outputs with response formats.** 4 | 5 | Supported models: 6 | 7 | - OpenAI: gpt-4o or gpt-4o-mini > 2024-08-06 8 | - Azure OpenAI: gpt-4o > 2024-08-06 9 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/text_includes/guided_conversation_agent_enabled.md: -------------------------------------------------------------------------------- 1 | The guided conversation support is experimental and disabled by default. Enable it to poke at the early features, but be aware that you may lose data or experience unexpected behavior. 2 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/assistant/text_includes/skills_agent_enabled.md: -------------------------------------------------------------------------------- 1 | The skills support is experimental and disabled by default. Enable it to poke at the early features, but be aware that you may lose data or experience unexpected behavior. 2 | -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_conversation_plan_fcn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_conversation_plan_fcn.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_conversation_plan_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_conversation_plan_template.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_execute_plan_callstack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_execute_plan_callstack.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_functions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_functions.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_generate_plan_callstack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_generate_plan_callstack.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_get_resource_instructions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_get_resource_instructions.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_get_termination_instructions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_get_termination_instructions.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_kernel_arguments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_kernel_arguments.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_plan_calls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_plan_calls.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/gc_termination_instructions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/gc_termination_instructions.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/sk_get_chat_message_contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/sk_get_chat_message_contents.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/sk_inner_get_chat_message_contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/sk_inner_get_chat_message_contents.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/sk_send_request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/sk_send_request.png -------------------------------------------------------------------------------- /assistants/prospector-assistant/gc_learnings/images/sk_send_request_prep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/assistants/prospector-assistant/gc_learnings/images/sk_send_request_prep.png -------------------------------------------------------------------------------- /assistants/skill-assistant/.env.example: -------------------------------------------------------------------------------- 1 | GENERAL_MODEL_ENDPOINT=https://semantic-wb-openai-eastus-02.openai.azure.com/ 2 | GENERAL_MODEL_API_VERSION=2024-10-21 3 | GENERAL_MODEL_DEPLOYMENT=gpt-4o 4 | 5 | REASONING_MODEL_ENDPOINT=https://semantic-wb-openai-eastus-02.openai.azure.com/ 6 | REASONING_MODEL_API_VERSION=2024-12-01-preview 7 | REASONING_MODEL_DEPLOYMENT=o1 8 | 9 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 10 | BING_SUBSCRIPTION_KEY= 11 | BING_SEARCH_URL=https://api.bing.microsoft.com/v7.0/search 12 | -------------------------------------------------------------------------------- /assistants/skill-assistant/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "assistants: skill-assistant", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /assistants/skill-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-assistant.mk 4 | -------------------------------------------------------------------------------- /assistants/skill-assistant/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "assistants/skill-assistant" 6 | }, 7 | { 8 | "path": "../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /assistants/skill-assistant/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .skill_assistant import app 2 | 3 | __all__ = ["app"] 4 | -------------------------------------------------------------------------------- /assistants/skill-assistant/tests/test_setup.py: -------------------------------------------------------------------------------- 1 | def test_setup(): 2 | assert True 3 | -------------------------------------------------------------------------------- /docs/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "cffi", 4 | "Cmder", 5 | "Codespace", 6 | "Codespaces", 7 | "deadsnakes", 8 | "devcontainer", 9 | "devtunnel", 10 | "DWORD", 11 | "ensurepath", 12 | "ezwinports", 13 | "HKEY", 14 | "msal", 15 | "pipx", 16 | "regedit", 17 | "winget" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /docs/images/architecture-animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/architecture-animation.gif -------------------------------------------------------------------------------- /docs/images/configure_assistant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/configure_assistant.png -------------------------------------------------------------------------------- /docs/images/conversation_canvas_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/conversation_canvas_open.png -------------------------------------------------------------------------------- /docs/images/conversation_duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/conversation_duplicate.png -------------------------------------------------------------------------------- /docs/images/conversation_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/conversation_export.png -------------------------------------------------------------------------------- /docs/images/conversation_share_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/conversation_share_dialog.png -------------------------------------------------------------------------------- /docs/images/conversation_share_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/conversation_share_link.png -------------------------------------------------------------------------------- /docs/images/dashboard_configured_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/dashboard_configured_view.png -------------------------------------------------------------------------------- /docs/images/dashboard_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/dashboard_view.png -------------------------------------------------------------------------------- /docs/images/license_agreement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/license_agreement.png -------------------------------------------------------------------------------- /docs/images/message_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/message_bar.png -------------------------------------------------------------------------------- /docs/images/message_inspection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/message_inspection.png -------------------------------------------------------------------------------- /docs/images/message_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/message_link.png -------------------------------------------------------------------------------- /docs/images/new_prospector_assistant_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/new_prospector_assistant_dialog.png -------------------------------------------------------------------------------- /docs/images/open_conversation_canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/open_conversation_canvas.png -------------------------------------------------------------------------------- /docs/images/prospector_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/prospector_example.png -------------------------------------------------------------------------------- /docs/images/readme1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/readme1.png -------------------------------------------------------------------------------- /docs/images/readme2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/readme2.png -------------------------------------------------------------------------------- /docs/images/readme3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/readme3.png -------------------------------------------------------------------------------- /docs/images/rewind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/rewind.png -------------------------------------------------------------------------------- /docs/images/signin_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/signin_page.png -------------------------------------------------------------------------------- /docs/images/splash_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/docs/images/splash_screen.png -------------------------------------------------------------------------------- /examples/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/recursive.mk 3 | -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/abc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/abc.png -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/code.png -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/config.png -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/echo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/echo.png -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/markdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/markdown.png -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/mermaid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/mermaid.png -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/reverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/reverse.png -------------------------------------------------------------------------------- /examples/dotnet/dotnet-02-message-types-demo/docs/safety-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/examples/dotnet/dotnet-02-message-types-demo/docs/safety-check.png -------------------------------------------------------------------------------- /examples/python/python-01-echo-bot/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | # The ASSISTANT__ prefix is used to group all the environment variables related to the assistant service. 11 | ASSISTANT__ENABLE_DEBUG_OUTPUT=True 12 | -------------------------------------------------------------------------------- /examples/python/python-01-echo-bot/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "examples: python-01-echo-bot", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /examples/python/python-01-echo-bot/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /examples/python/python-01-echo-bot/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "examples/python/python-01-echo-bot" 6 | }, 7 | { 8 | "path": "../../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /examples/python/python-01-echo-bot/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | 3 | __all__ = ["app"] 4 | -------------------------------------------------------------------------------- /examples/python/python-02-simple-chatbot/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /examples/python/python-02-simple-chatbot/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "examples: python-02-simple-chatbot", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /examples/python/python-02-simple-chatbot/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /examples/python/python-02-simple-chatbot/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "examples/python/python-02-simple-chatbot" 6 | }, 7 | { 8 | "path": "../../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /examples/python/python-02-simple-chatbot/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | 3 | __all__ = ["app"] 4 | -------------------------------------------------------------------------------- /examples/python/python-03-multimodel-chatbot/.env.example: -------------------------------------------------------------------------------- 1 | # Description: Example of .env file 2 | # Usage: Copy this file to .env and set the values 3 | 4 | # NOTE: 5 | # - Environment variables in the host environment will take precedence over values in this file. 6 | # - When running with VS Code, you must 'stop' and 'start' the process for changes to take effect. 7 | # It is not enough to just use the VS Code 'restart' button 8 | 9 | # Assistant Service 10 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 11 | ASSISTANT__AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 12 | -------------------------------------------------------------------------------- /examples/python/python-03-multimodel-chatbot/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "examples: python-03-multimodel-chatbot", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "consoleTitle": "${workspaceFolderBasename}", 11 | "justMyCode": false 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /examples/python/python-03-multimodel-chatbot/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /examples/python/python-03-multimodel-chatbot/assistant.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": ".", 5 | "name": "examples/python/python-03-multimodel-chatbot" 6 | }, 7 | { 8 | "path": "../../.." 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /examples/python/python-03-multimodel-chatbot/assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat import app 2 | 3 | __all__ = ["app"] 4 | -------------------------------------------------------------------------------- /libraries/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/recursive.mk 3 | -------------------------------------------------------------------------------- /libraries/dotnet/WorkbenchConnector/AgentConfig/AgentConfigPropertyAttribute.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | using System; 4 | 5 | // ReSharper disable once CheckNamespace 6 | namespace Microsoft.SemanticWorkbench.Connector; 7 | 8 | [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)] 9 | public class AgentConfigPropertyAttribute : Attribute 10 | { 11 | public string Name { get; } 12 | public object Value { get; } 13 | 14 | public AgentConfigPropertyAttribute(string name, object value) 15 | { 16 | this.Name = name; 17 | this.Value = value; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libraries/dotnet/WorkbenchConnector/IAgentBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | namespace Microsoft.SemanticWorkbench.Connector; 4 | 5 | public interface IAgentBase 6 | { 7 | public string Id { get; } 8 | public AgentInfo ToDataModel(); 9 | } 10 | -------------------------------------------------------------------------------- /libraries/dotnet/WorkbenchConnector/Models/DebugInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | using System.Collections.Generic; 4 | 5 | // ReSharper disable once CheckNamespace 6 | namespace Microsoft.SemanticWorkbench.Connector; 7 | 8 | public class DebugInfo : Dictionary 9 | { 10 | public DebugInfo() 11 | { 12 | } 13 | 14 | public DebugInfo(string key, object? info) 15 | { 16 | this.Add(key, info); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libraries/dotnet/WorkbenchConnector/Models/MessageMetadata.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | using System.Text.Json.Serialization; 4 | 5 | // ReSharper disable once CheckNamespace 6 | namespace Microsoft.SemanticWorkbench.Connector; 7 | 8 | public class MessageMetadata 9 | { 10 | [JsonPropertyName("attribution")] 11 | public string Attribution { get; set; } = string.Empty; 12 | 13 | [JsonPropertyName("debug")] 14 | [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] 15 | public object? Debug { get; set; } = null; 16 | } 17 | -------------------------------------------------------------------------------- /libraries/dotnet/WorkbenchConnector/Models/Sender.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | using System.Text.Json.Serialization; 4 | 5 | // ReSharper disable once CheckNamespace 6 | namespace Microsoft.SemanticWorkbench.Connector; 7 | 8 | public class Sender 9 | { 10 | [JsonPropertyName("participant_role")] 11 | public string Role { get; set; } = string.Empty; 12 | 13 | [JsonPropertyName("participant_id")] 14 | public string Id { get; set; } = string.Empty; 15 | } 16 | -------------------------------------------------------------------------------- /libraries/dotnet/WorkbenchConnector/Storage/AgentInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | using System.Text.Json.Serialization; 4 | 5 | // ReSharper disable once CheckNamespace 6 | namespace Microsoft.SemanticWorkbench.Connector; 7 | 8 | public class AgentInfo 9 | { 10 | [JsonPropertyName("id")] 11 | [JsonPropertyOrder(0)] 12 | public string Id { get; set; } = string.Empty; 13 | 14 | [JsonPropertyName("name")] 15 | [JsonPropertyOrder(1)] 16 | public string Name { get; set; } = string.Empty; 17 | 18 | [JsonPropertyName("config")] 19 | [JsonPropertyOrder(2)] 20 | public object Config { get; set; } = null!; 21 | } 22 | -------------------------------------------------------------------------------- /libraries/dotnet/WorkbenchConnector/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/dotnet/WorkbenchConnector/icon.png -------------------------------------------------------------------------------- /libraries/dotnet/pack.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | HERE="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)" 5 | cd $HERE 6 | 7 | cd WorkbenchConnector 8 | dotnet build -c Release --nologo 9 | -------------------------------------------------------------------------------- /libraries/python/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/recursive.mk 3 | -------------------------------------------------------------------------------- /libraries/python/anthropic-client/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/anthropic-client/README.md: -------------------------------------------------------------------------------- 1 | # OpenAI Client Library (for assistants) 2 | 3 | The OpenAI Client Library provides a convenient way to create and configure OpenAI clients using various authentication methods. 4 | This library supports both OpenAI and Azure OpenAI services. 5 | 6 | ## Features 7 | 8 | - Supports OpenAI and Azure OpenAI services 9 | - Multiple authentication methods: 10 | - API Key 11 | - Azure Identity 12 | - Asynchronous client creation 13 | - Configuration through service configuration schemas 14 | -------------------------------------------------------------------------------- /libraries/python/anthropic-client/anthropic_client/client.py: -------------------------------------------------------------------------------- 1 | from anthropic import AsyncAnthropic 2 | 3 | from .config import AnthropicServiceConfig 4 | 5 | 6 | def create_client(service_config: AnthropicServiceConfig) -> AsyncAnthropic: 7 | """ 8 | Creates an AsyncAnthropic client based on the provided service configuration. 9 | """ 10 | return AsyncAnthropic(api_key=service_config.anthropic_api_key) 11 | -------------------------------------------------------------------------------- /libraries/python/assistant-drive/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | .pytest_cache 3 | *.egg* 4 | .data 5 | .venv 6 | venv 7 | .env 8 | 9 | poetry.lock 10 | -------------------------------------------------------------------------------- /libraries/python/assistant-drive/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "aarontamasfe.even-better-toml", 4 | "charliermarsh.ruff", 5 | "ms-python.python" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /libraries/python/assistant-drive/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/assistant-drive/README.md: -------------------------------------------------------------------------------- 1 | # Assistant Drive 2 | 3 | These are file storage capabilities. -------------------------------------------------------------------------------- /libraries/python/assistant-drive/assistant_drive/__init__.py: -------------------------------------------------------------------------------- 1 | from .drive import Drive, DriveConfig, IfDriveFileExistsBehavior 2 | 3 | __all__ = [ 4 | "Drive", 5 | "DriveConfig", 6 | "IfDriveFileExistsBehavior", 7 | ] 8 | -------------------------------------------------------------------------------- /libraries/python/assistant-drive/pytest.ini: -------------------------------------------------------------------------------- 1 | # pytest.ini 2 | [pytest] 3 | minversion = 6.0 4 | addopts = -vv -rP 5 | pythonpath = . 6 | testpaths = **/tests 7 | filterwarnings = 8 | ignore::DeprecationWarning 9 | ignore::PendingDeprecationWarning 10 | asyncio_mode = auto 11 | log_cli = true 12 | log_cli_level = INFO 13 | log_cli_format = %(asctime)s | %(levelname)-7s | %(name)s | %(message)s 14 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/__init__.py: -------------------------------------------------------------------------------- 1 | from . import ai_clients, artifacts, attachments, dashboard_card, navigator, workflows 2 | 3 | __all__ = ["artifacts", "attachments", "ai_clients", "workflows", "navigator", "dashboard_card"] 4 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/artifacts/__init__.py: -------------------------------------------------------------------------------- 1 | from ._artifacts import ArtifactsExtension, ArtifactsProcessingErrorHandler 2 | from ._model import Artifact, ArtifactsConfigModel 3 | 4 | __all__ = ["ArtifactsExtension", "ArtifactsConfigModel", "Artifact", "ArtifactsProcessingErrorHandler"] 5 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/attachments/__init__.py: -------------------------------------------------------------------------------- 1 | from ._attachments import AttachmentProcessingErrorHandler, AttachmentsExtension 2 | from ._model import Attachment, AttachmentsConfigModel 3 | 4 | __all__ = ["AttachmentsExtension", "AttachmentsConfigModel", "Attachment", "AttachmentProcessingErrorHandler"] 5 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/dashboard_card/__init__.py: -------------------------------------------------------------------------------- 1 | from ._dashboard_card import image_to_url, metadata, TemplateConfig, CardContent, extract_metadata_for_dashboard_card 2 | 3 | __all__ = ["metadata", "image_to_url", "TemplateConfig", "CardContent", "extract_metadata_for_dashboard_card"] 4 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/document_editor/__init__.py: -------------------------------------------------------------------------------- 1 | from ._extension import DocumentEditorExtension 2 | from ._model import DocumentEditorConfigModel 3 | 4 | __all__ = [ 5 | "DocumentEditorConfigModel", 6 | "DocumentEditorExtension", 7 | ] 8 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/document_editor/_model.py: -------------------------------------------------------------------------------- 1 | from typing import Protocol 2 | 3 | from semantic_workbench_assistant.assistant_app import ConversationContext 4 | 5 | 6 | class DocumentEditorConfigModel(Protocol): 7 | enabled: bool 8 | 9 | 10 | class DocumentEditorConfigProvider(Protocol): 11 | async def __call__(self, ctx: ConversationContext) -> DocumentEditorConfigModel: ... 12 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/navigator/__init__.py: -------------------------------------------------------------------------------- 1 | from ._navigator import extract_metadata_for_assistant_navigator, metadata_for_assistant_navigator 2 | 3 | __all__ = [ 4 | "metadata_for_assistant_navigator", 5 | "extract_metadata_for_assistant_navigator", 6 | ] 7 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/navigator/_navigator.py: -------------------------------------------------------------------------------- 1 | from typing import Any 2 | 3 | navigator_metadata_key = "_assistant_navigator" 4 | 5 | 6 | def metadata_for_assistant_navigator(metadata_for_navigator: dict[str, str]) -> dict[str, Any]: 7 | return { 8 | navigator_metadata_key: metadata_for_navigator, 9 | } 10 | 11 | 12 | def extract_metadata_for_assistant_navigator(assistant_metadata: dict[str, Any]) -> dict[str, str] | None: 13 | return assistant_metadata.get(navigator_metadata_key) 14 | -------------------------------------------------------------------------------- /libraries/python/assistant-extensions/assistant_extensions/workflows/__init__.py: -------------------------------------------------------------------------------- 1 | from ._model import WorkflowsConfigModel 2 | from ._workflows import WorkflowsExtension, WorkflowsProcessingErrorHandler 3 | 4 | __all__ = ["WorkflowsExtension", "WorkflowsConfigModel", "WorkflowsProcessingErrorHandler"] 5 | -------------------------------------------------------------------------------- /libraries/python/content-safety/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/content-safety/content_safety/__init__.py: -------------------------------------------------------------------------------- 1 | from . import evaluators 2 | 3 | __all__ = ["evaluators"] 4 | -------------------------------------------------------------------------------- /libraries/python/content-safety/content_safety/evaluators/__init__.py: -------------------------------------------------------------------------------- 1 | from . import azure_content_safety, openai_moderations 2 | from .config import CombinedContentSafetyEvaluatorConfig 3 | from .evaluator import CombinedContentSafetyEvaluator 4 | 5 | __all__ = [ 6 | "CombinedContentSafetyEvaluatorConfig", 7 | "CombinedContentSafetyEvaluator", 8 | "azure_content_safety", 9 | "openai_moderations", 10 | ] 11 | -------------------------------------------------------------------------------- /libraries/python/content-safety/content_safety/evaluators/azure_content_safety/__init__.py: -------------------------------------------------------------------------------- 1 | from .config import AzureContentSafetyEvaluatorConfig 2 | from .evaluator import AzureContentSafetyEvaluator 3 | 4 | __all__ = ["AzureContentSafetyEvaluatorConfig", "AzureContentSafetyEvaluator"] 5 | -------------------------------------------------------------------------------- /libraries/python/content-safety/content_safety/evaluators/openai_moderations/__init__.py: -------------------------------------------------------------------------------- 1 | from .config import OpenAIContentSafetyEvaluatorConfig 2 | from .evaluator import OpenAIContentSafetyEvaluator 3 | 4 | __all__ = ["OpenAIContentSafetyEvaluatorConfig", "OpenAIContentSafetyEvaluator"] 5 | -------------------------------------------------------------------------------- /libraries/python/events/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/events/README.md: -------------------------------------------------------------------------------- 1 | # Events 2 | 3 | These are standard events used by the [Skill Library](../skills/skill-library/README.md), [Chat 4 | Driver](../chat-driver/README.md), and other MADE:Exploration projects. 5 | 6 | The events here mirror are designed to mirror the event types used in the 7 | [Semantic Workbench](../../../workbench-service/README.md). Think of these as 8 | the types of events that can be emitted by an assistant and handled by the 9 | workbench. 10 | -------------------------------------------------------------------------------- /libraries/python/events/events/__init__.py: -------------------------------------------------------------------------------- 1 | from .events import ( 2 | BaseEvent, 3 | ErrorEvent, 4 | EventProtocol, 5 | InformationEvent, 6 | MessageEvent, 7 | NoticeEvent, 8 | StatusUpdatedEvent, 9 | TEvent, 10 | ) 11 | 12 | __all__ = [ 13 | "BaseEvent", 14 | "ErrorEvent", 15 | "EventProtocol", 16 | "InformationEvent", 17 | "MessageEvent", 18 | "NoticeEvent", 19 | "StatusUpdatedEvent", 20 | "TEvent", 21 | ] 22 | -------------------------------------------------------------------------------- /libraries/python/events/pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "events" 3 | version = "0.1.0" 4 | description = "MADE:Exploration Chat Events" 5 | authors = [{name="MADE:Explorers"}] 6 | readme = "README.md" 7 | requires-python = ">=3.11" 8 | dependencies = [ 9 | "pydantic>=2.6.1", 10 | ] 11 | 12 | [tool.uv] 13 | package = true 14 | 15 | [build-system] 16 | requires = ["hatchling"] 17 | build-backend = "hatchling.build" 18 | 19 | [dependency-groups] 20 | dev = [ 21 | "pyright>=1.1.389", 22 | ] 23 | -------------------------------------------------------------------------------- /libraries/python/guided-conversation/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/guided-conversation/guided_conversation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/guided-conversation/guided_conversation/__init__.py -------------------------------------------------------------------------------- /libraries/python/guided-conversation/guided_conversation/functions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/guided-conversation/guided_conversation/functions/__init__.py -------------------------------------------------------------------------------- /libraries/python/guided-conversation/guided_conversation/plugins/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/guided-conversation/guided_conversation/plugins/__init__.py -------------------------------------------------------------------------------- /libraries/python/guided-conversation/guided_conversation/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/guided-conversation/guided_conversation/utils/__init__.py -------------------------------------------------------------------------------- /libraries/python/guided-conversation/pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "guided-conversation" 3 | version = "0.1.0" 4 | description = "MADE:Exploration Guided Conversation" 5 | authors = [{name="MADE:Explorers"}] 6 | readme = "README.md" 7 | requires-python = ">=3.11" 8 | dependencies = [ 9 | "semantic-kernel>=1.11.0", 10 | ] 11 | 12 | [tool.uv] 13 | package = true 14 | 15 | [tool.uv.sources] 16 | 17 | [build-system] 18 | requires = ["hatchling"] 19 | build-backend = "hatchling.build" 20 | 21 | [dependency-groups] 22 | dev = [ 23 | "pyright>=1.1.389", 24 | ] 25 | 26 | [tool.pyright] 27 | exclude = ["**/.venv", "**/.data", "**/__pycache__"] 28 | -------------------------------------------------------------------------------- /libraries/python/llm-client/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/llm-client/README.md: -------------------------------------------------------------------------------- 1 | # LLM client models 2 | -------------------------------------------------------------------------------- /libraries/python/llm-client/llm_client/__init__.py: -------------------------------------------------------------------------------- 1 | from .model import ( 2 | CompletionMessage, 3 | CompletionMessageImageContent, 4 | CompletionMessageTextContent, 5 | RequestConfigBaseModel, 6 | ) 7 | 8 | __all__ = [ 9 | "CompletionMessage", 10 | "CompletionMessageImageContent", 11 | "CompletionMessageTextContent", 12 | "RequestConfigBaseModel", 13 | ] 14 | -------------------------------------------------------------------------------- /libraries/python/llm-client/pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "llm-client" 3 | version = "0.1.0" 4 | description = "LLM client types" 5 | authors = [{ name = "Semantic Workbench Team" }] 6 | readme = "README.md" 7 | requires-python = ">=3.11" 8 | dependencies = [ 9 | "pydantic>=2.10.6", 10 | ] 11 | 12 | [dependency-groups] 13 | dev = ["pyright>=1.1.389"] 14 | 15 | [build-system] 16 | requires = ["hatchling"] 17 | build-backend = "hatchling.build" 18 | 19 | [tool.pytest.ini_options] 20 | addopts = ["-vv"] 21 | log_cli = true 22 | log_cli_level = "INFO" 23 | log_cli_format = "%(asctime)s | %(levelname)-7s | %(name)s | %(message)s" 24 | testpaths = ["tests"] 25 | -------------------------------------------------------------------------------- /libraries/python/mcp-extensions/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/mcp-extensions/mcp_extensions/llm/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/mcp-extensions/mcp_extensions/llm/__init__.py -------------------------------------------------------------------------------- /libraries/python/mcp-extensions/mcp_extensions/server/__init__.py: -------------------------------------------------------------------------------- 1 | from .storage import read_model, read_models_in_dir, settings, write_model 2 | 3 | __all__ = ["settings", "write_model", "read_model", "read_models_in_dir"] 4 | -------------------------------------------------------------------------------- /libraries/python/mcp-tunnel/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/mcp-tunnel/mcp_tunnel/__init__.py: -------------------------------------------------------------------------------- 1 | from ._main import MCPServer, main, tunnel_servers 2 | 3 | __all__ = ["tunnel_servers", "main", "MCPServer"] 4 | -------------------------------------------------------------------------------- /libraries/python/mcp-tunnel/mcp_tunnel/_dir.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | 4 | def get_mcp_tunnel_dir() -> Path: 5 | mcp_tunnel_dir = Path.home() / ".mcp-tunnel" 6 | mcp_tunnel_dir.mkdir(exist_ok=True) 7 | return mcp_tunnel_dir 8 | -------------------------------------------------------------------------------- /libraries/python/mcp-tunnel/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["hatchling"] 3 | build-backend = "hatchling.build" 4 | 5 | [project] 6 | name = "mcp-tunnel" 7 | version = "0.1.0" 8 | description = "Command line tool for opening tunnels to local MCP servers." 9 | authors = [{ name = "Semantic Workbench Team" }] 10 | readme = "README.md" 11 | requires-python = ">=3.11" 12 | dependencies = [ 13 | "pyyaml>=6.0.2", 14 | "termcolor>=2.5.0", 15 | ] 16 | 17 | [project.optional-dependencies] 18 | 19 | 20 | [project.scripts] 21 | mcp-tunnel = "mcp_tunnel._main:main" 22 | 23 | 24 | [dependency-groups] 25 | dev = ["pyright>=1.1.389"] 26 | -------------------------------------------------------------------------------- /libraries/python/openai-client/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/openai-client/README.md: -------------------------------------------------------------------------------- 1 | # OpenAI Client Library (for assistants) 2 | 3 | The OpenAI Client Library provides a convenient way to create and configure OpenAI clients using various authentication methods. 4 | This library supports both OpenAI and Azure OpenAI services. 5 | 6 | ## Features 7 | 8 | - Supports OpenAI and Azure OpenAI services 9 | - Multiple authentication methods: 10 | - API Key 11 | - Azure Identity 12 | - Asynchronous client creation 13 | - Configuration through service configuration schemas 14 | -------------------------------------------------------------------------------- /libraries/python/openai-client/openai_client/chat_driver/__init__.py: -------------------------------------------------------------------------------- 1 | from .chat_driver import ( 2 | ChatDriver, 3 | ChatDriverConfig, 4 | ) 5 | from .message_history_providers import ( 6 | InMemoryMessageHistoryProvider, 7 | LocalMessageHistoryProvider, 8 | LocalMessageHistoryProviderConfig, 9 | MessageHistoryProviderProtocol, 10 | ) 11 | 12 | __all__ = [ 13 | "ChatDriver", 14 | "ChatDriverConfig", 15 | "InMemoryMessageHistoryProvider", 16 | "LocalMessageHistoryProvider", 17 | "LocalMessageHistoryProviderConfig", 18 | "MessageHistoryProviderProtocol", 19 | ] 20 | -------------------------------------------------------------------------------- /libraries/python/openai-client/openai_client/chat_driver/message_history_providers/__init__.py: -------------------------------------------------------------------------------- 1 | from .in_memory_message_history_provider import InMemoryMessageHistoryProvider 2 | from .local_message_history_provider import ( 3 | LocalMessageHistoryProvider, 4 | LocalMessageHistoryProviderConfig, 5 | ) 6 | from .message_history_provider import MessageHistoryProviderProtocol 7 | 8 | __all__ = [ 9 | "LocalMessageHistoryProvider", 10 | "LocalMessageHistoryProviderConfig", 11 | "InMemoryMessageHistoryProvider", 12 | "MessageHistoryProviderProtocol", 13 | ] 14 | -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-api-model/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-api-model/README.md: -------------------------------------------------------------------------------- 1 | # Semantic Workbench Models and Clients (API) 2 | 3 | - If you want to talk from an assistant to the workbench: Workbench Client (assistant services provide these to you). 4 | - If you want to talk from the workbench to an assistant: Assistant Client (the workbench service is the only user of this). 5 | -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-api-model/semantic_workbench_api_model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/semantic-workbench-api-model/semantic_workbench_api_model/__init__.py -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-assistant/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "canonical-assistant", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_assistant.start", 10 | "args": ["semantic_workbench_assistant.canonical:app"], 11 | "consoleTitle": "canonical-assistant" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-assistant/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/__init__.py: -------------------------------------------------------------------------------- 1 | from . import settings 2 | 3 | settings = settings.Settings() 4 | -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/assistant_app/error.py: -------------------------------------------------------------------------------- 1 | class AssistantError(Exception): 2 | pass 3 | 4 | 5 | class BadRequestError(AssistantError): 6 | pass 7 | 8 | 9 | class ConflictError(BadRequestError): 10 | pass 11 | 12 | 13 | class NotFoundError(BadRequestError): 14 | pass 15 | -------------------------------------------------------------------------------- /libraries/python/semantic-workbench-assistant/tests/conftest.py: -------------------------------------------------------------------------------- 1 | import tempfile 2 | from typing import Iterator 3 | 4 | import pytest 5 | from semantic_workbench_assistant import settings, storage 6 | 7 | 8 | @pytest.fixture 9 | def storage_settings(request: pytest.FixtureRequest) -> Iterator[storage.FileStorageSettings]: 10 | storage_settings = settings.storage.model_copy() 11 | 12 | with tempfile.TemporaryDirectory() as temp_dir: 13 | storage_settings.root = temp_dir 14 | yield storage_settings 15 | -------------------------------------------------------------------------------- /libraries/python/skills/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "levelname" 4 | ] 5 | } -------------------------------------------------------------------------------- /libraries/python/skills/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/recursive.mk 3 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/cli/README.md: -------------------------------------------------------------------------------- 1 | # Skill Library command line utility 2 | 3 | ## Install 4 | 5 | ```bash 6 | uv pip install -e . 7 | ``` 8 | 9 | ## Usage 10 | 11 | ```bash 12 | run-routine 13 | ``` 14 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/README.md: -------------------------------------------------------------------------------- 1 | # Skill library packaged skills 2 | 3 | The skill library doesn't require using a particular package, but for 4 | convenience sake, we've gathered some routines we're playing with here in a 5 | common package. 6 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/common/__init__.py: -------------------------------------------------------------------------------- 1 | from .common_skill import CommonSkill, CommonSkillConfig 2 | 3 | __all__ = ["CommonSkill", "CommonSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/common/common_skill.py: -------------------------------------------------------------------------------- 1 | from assistant_drive import Drive 2 | from skill_library import LanguageModel, Skill, SkillConfig 3 | 4 | 5 | class CommonSkillConfig(SkillConfig): 6 | """Configuration for the common skill""" 7 | 8 | language_model: LanguageModel 9 | drive: Drive 10 | bing_subscription_key: str = "" 11 | bing_search_url: str = "https://api.bing.microsoft.com/v7.0/search" 12 | 13 | 14 | class CommonSkill(Skill): 15 | config: CommonSkillConfig 16 | 17 | def __init__(self, config: CommonSkillConfig): 18 | super().__init__(config) 19 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/common/routines/echo.py: -------------------------------------------------------------------------------- 1 | """ 2 | web research skill 3 | """ 4 | 5 | from typing import Any 6 | 7 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn 8 | 9 | 10 | async def main( 11 | context: RunContext, 12 | routine_state: dict[str, Any], 13 | emit: EmitFn, 14 | run: RunRoutineFn, 15 | ask_user: AskUserFn, 16 | ) -> str: 17 | await ask_user("What do you want to echo?") 18 | history = (await context.conversation_history()).messages 19 | message = history[-1].content 20 | return message 21 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/common/routines/gather_context.py: -------------------------------------------------------------------------------- 1 | from typing import Any 2 | 3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn 4 | 5 | 6 | async def main( 7 | context: RunContext, 8 | routine_state: dict[str, Any], 9 | emit: EmitFn, 10 | run: RunRoutineFn, 11 | ask_user: AskUserFn, 12 | ): 13 | """ 14 | Execute a research plan by following the steps outlined in the plan. 15 | """ 16 | pass 17 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/eval/__init__.py: -------------------------------------------------------------------------------- 1 | from .eval_skill import EvalSkill, EvalSkillConfig 2 | 3 | __all__ = ["EvalSkill", "EvalSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/eval/eval_skill.py: -------------------------------------------------------------------------------- 1 | from assistant_drive import Drive 2 | from skill_library import LanguageModel, Skill, SkillConfig 3 | 4 | 5 | class EvalSkillConfig(SkillConfig): 6 | """Configuration for the evaluation skill""" 7 | 8 | language_model: LanguageModel 9 | drive: Drive 10 | 11 | 12 | class EvalSkill(Skill): 13 | config: EvalSkillConfig 14 | 15 | def __init__(self, config: EvalSkillConfig): 16 | super().__init__(config) 17 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/__init__.py: -------------------------------------------------------------------------------- 1 | from .fabric_skill import FabricSkill, FabricSkillConfig 2 | 3 | __all__ = ["FabricSkill", "FabricSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/fabric_skill.py: -------------------------------------------------------------------------------- 1 | from assistant_drive import Drive 2 | from skill_library import LanguageModel, Skill, SkillConfig 3 | 4 | 5 | class FabricSkillConfig(SkillConfig): 6 | language_model: LanguageModel 7 | drive: Drive 8 | 9 | 10 | class FabricSkill(Skill): 11 | config: FabricSkillConfig 12 | 13 | def __init__(self, config: FabricSkillConfig): 14 | super().__init__(config) 15 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/agility_story/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/agility_story/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/ai/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY and PURPOSE 2 | 3 | You are an expert at interpreting the heart and spirit of a question and answering in an insightful manner. 4 | 5 | # STEPS 6 | 7 | - Deeply understand what's being asked. 8 | 9 | - Create a full mental model of the input and the question on a virtual whiteboard in your mind. 10 | 11 | - Answer the question in 3-5 Markdown bullets of 10 words each. 12 | 13 | # OUTPUT INSTRUCTIONS 14 | 15 | - Only output Markdown bullets. 16 | 17 | - Do not output warnings or notes—just the requested sections. 18 | 19 | # INPUT: 20 | 21 | INPUT: 22 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_candidates/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_candidates/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_claims/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_claims/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_email_headers/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_email_headers/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_incident/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_incident/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_paper/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_paper/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_proposition/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_proposition/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_prose/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_prose/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_prose_json/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_prose_json/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_spiritual_text/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_spiritual_text/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_tech_impact/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_tech_impact/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_threat_report/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/analyze_threat_report_trends/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/check_agreement/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/check_agreement/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/clean_text/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/clean_text/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/compare_and_contrast/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY and PURPOSE 2 | 3 | Please be brief. Compare and contrast the list of items. 4 | 5 | # STEPS 6 | 7 | Compare and contrast the list of items 8 | 9 | # OUTPUT INSTRUCTIONS 10 | Please put it into a markdown table. 11 | Items along the left and topics along the top. 12 | 13 | # INPUT: 14 | 15 | INPUT: -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/compare_and_contrast/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/compare_and_contrast/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_aphorisms/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY and PURPOSE 2 | 3 | You are an expert finder and printer of existing, known aphorisms. 4 | 5 | # Steps 6 | 7 | Take the input given and use it as the topic(s) to create a list of 20 aphorisms, from real people, and include the person who said each one at the end. 8 | 9 | # OUTPUT INSTRUCTIONS 10 | 11 | - Ensure they don't all start with the keywords given. 12 | - You only output human readable Markdown. 13 | - Do not output warnings or notes—just the requested sections. 14 | 15 | # INPUT: 16 | 17 | INPUT: 18 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_aphorisms/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_aphorisms/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_better_frame/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_better_frame/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_command/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_command/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_git_diff_commit/README.md: -------------------------------------------------------------------------------- 1 | # Usage for this pattern: 2 | 3 | ```bash 4 | git diff 5 | ``` 6 | 7 | Get the diffs since the last commit 8 | ```bash 9 | git show HEAD 10 | ``` 11 | 12 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_logo/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_logo/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_network_threat_landscape/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_newsletter_entry/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_newsletter_entry/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_npc/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_npc/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_prd/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY 2 | 3 | // Who you are 4 | 5 | You create precise and accurate PRDs from the input you receive. 6 | 7 | # GOAL 8 | 9 | // What we are trying to achieve 10 | 11 | 1. Create a great PRD. 12 | 13 | # STEPS 14 | 15 | - Read through all the input given and determine the best structure for a PRD. 16 | 17 | # OUTPUT INSTRUCTIONS 18 | 19 | - Create the PRD in Markdown. 20 | 21 | # INPUT 22 | 23 | INPUT: 24 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_report_finding/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_security_update/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_security_update/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_video_chapters/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/create_video_chapters/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/explain_code/user.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/explain_docs/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/explain_docs/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/explain_math/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY and PURPOSE 2 | I want you to act as a math teacher. I will provide some mathematical equations or concepts, and it will be your job to explain them in easy-to-understand terms. This could include providing step-by-step instructions for solving a problem, demonstrating various techniques with visuals or suggesting online resources for further study. 3 | 4 | # OUTPUT INSTRUCTIONS 5 | - Only output Markdown. 6 | - Ensure you follow ALL these instructions when creating your output. 7 | 8 | # INPUT 9 | My first request is: -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_algorithm_update_recommendations/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_algorithm_update_recommendations/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_article_wisdom/dmiessler/extract_wisdom-1.0.0/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_article_wisdom/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_latest_video/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY and PURPOSE 2 | 3 | You are an expert at extracting the latest video URL from a YouTube RSS feed. 4 | 5 | # Steps 6 | 7 | - Read the full RSS feed. 8 | 9 | - Find the latest posted video URL. 10 | 11 | - Output the full video URL and nothing else. 12 | 13 | # EXAMPLE OUTPUT 14 | 15 | https://www.youtube.com/watch?v=abc123 16 | 17 | # OUTPUT INSTRUCTIONS 18 | 19 | - Do not output warnings or notes—just the requested sections. 20 | 21 | # INPUT: 22 | 23 | INPUT: 24 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_poc/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_poc/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_product_features/dmiessler/extract_wisdom-1.0.0/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_recipe/README.md: -------------------------------------------------------------------------------- 1 | # extract_ctf_writeup 2 | 3 |

extract_ctf_writeup is a Fabric pattern that extracts a recipe.

4 | 5 | 6 | ## Description 7 | 8 | This pattern is used to create a short recipe, consisting of two parts: 9 | - A list of ingredients 10 | - A step by step guide on how to prepare the meal 11 | 12 | ## Meta 13 | 14 | - **Author**: Martin Riedel 15 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_recommendations/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY and PURPOSE 2 | 3 | You are an expert interpreter of the recommendations present within a piece of content. 4 | 5 | # Steps 6 | 7 | Take the input given and extract the concise, practical recommendations that are either explicitly made in the content, or that naturally flow from it. 8 | 9 | # OUTPUT INSTRUCTIONS 10 | 11 | - Output a bulleted list of up to 20 recommendations, each of no more than 16 words. 12 | 13 | # OUTPUT EXAMPLE 14 | 15 | - Recommendation 1 16 | - Recommendation 2 17 | - Recommendation 3 18 | 19 | # INPUT: 20 | 21 | INPUT: 22 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_recommendations/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_recommendations/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_references/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_references/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_videoid/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_videoid/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/extract_wisdom/dmiessler/extract_wisdom-1.0.0/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/improve_academic_writing/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/improve_academic_writing/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/improve_report_finding/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/improve_writing/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/improve_writing/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/loaded: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/loaded -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/rate_content/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/rate_value/README.md: -------------------------------------------------------------------------------- 1 | # Credit 2 | 3 | Co-created by Daniel Miessler and Jason Haddix based on influences from Claude Shannon's Information Theory and Mr. Beast's insanely viral content techniques. 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/rate_value/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/rate_value/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/raw_query/system.md: -------------------------------------------------------------------------------- 1 | # IDENTITY 2 | 3 | You are a universal AI that yields the best possible result given the input. 4 | 5 | # GOAL 6 | 7 | - Fully digest the input. 8 | 9 | - Deeply contemplate the input and what it means and what the sender likely wanted you to do with it. 10 | 11 | # OUTPUT 12 | 13 | - Output the best possible output based on your understanding of what was likely wanted. 14 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize/dmiessler/summarize/user.md: -------------------------------------------------------------------------------- 1 | CONTENT: 2 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_micro/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_micro/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_newsletter/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_newsletter/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_paper/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_paper/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_pull-requests/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/summarize_pull-requests/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/transcribe_minutes/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/transcribe_minutes/README.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/write_nuclei_template_rule/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/write_nuclei_template_rule/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/write_semgrep_rule/user.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/fabric/patterns/write_semgrep_rule/user.md -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/fabric/routines/list.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import Any 3 | 4 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn 5 | 6 | 7 | async def main( 8 | context: RunContext, 9 | routine_state: dict[str, Any], 10 | emit: EmitFn, 11 | run: RunRoutineFn, 12 | ask_user: AskUserFn, 13 | ) -> str: 14 | """List fabric patterns.""" 15 | 16 | pattern_dir = Path(__file__).parent.parent / "patterns" 17 | dirs = [d.name for d in pattern_dir.iterdir() if d.is_dir()] 18 | patterns = "\n- ".join(dirs) 19 | return f"```markdown\n{patterns}\n```" 20 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/guided_conversation/__init__.py: -------------------------------------------------------------------------------- 1 | from .guide import ConversationGuide 2 | from .guided_conversation_skill import GuidedConversationSkill 3 | from .resources import ResourceConstraint, ResourceConstraintMode, ResourceConstraintUnit 4 | 5 | __all__ = [ 6 | "GuidedConversationSkill", 7 | "ConversationGuide", 8 | "ResourceConstraint", 9 | "ResourceConstraintMode", 10 | "ResourceConstraintUnit", 11 | ] 12 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/guided_conversation/conversation_guides/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/skills/guided_conversation/conversation_guides/__init__.py -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/guided_conversation/guide.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Optional 2 | 3 | from pydantic import BaseModel 4 | 5 | from .resources import ResourceConstraint 6 | 7 | 8 | class ConversationGuide(BaseModel): 9 | artifact_schema: dict[str, Any] 10 | rules: list[str] 11 | conversation_context: str 12 | conversation_flow: Optional[str] = None 13 | resource_constraint: Optional[ResourceConstraint] = None 14 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/meta/README.md: -------------------------------------------------------------------------------- 1 | # Meta Skill 2 | 3 | This skill is intended to gather routines related to creating, running, and 4 | evaluating routines. 5 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/meta/__init__.py: -------------------------------------------------------------------------------- 1 | from .meta_skill import MetaSkill, MetaSkillConfig 2 | 3 | __all__ = ["MetaSkill", "MetaSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/meta/meta_skill.py: -------------------------------------------------------------------------------- 1 | from assistant_drive import Drive 2 | from skill_library import LanguageModel, Skill, SkillConfig 3 | 4 | 5 | class MetaSkillConfig(SkillConfig): 6 | """Configuration for the skill meta skill""" 7 | 8 | language_model: LanguageModel 9 | drive: Drive 10 | 11 | 12 | class MetaSkill(Skill): 13 | config: MetaSkillConfig 14 | 15 | def __init__(self, config: MetaSkillConfig): 16 | super().__init__(config) 17 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/posix/__init__.py: -------------------------------------------------------------------------------- 1 | from .posix_skill import PosixSkill, PosixSkillConfig 2 | 3 | __all__ = ["PosixSkill", "PosixSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/posix/posix_skill.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from skill_library.engine import Skill, SkillConfig 4 | 5 | from .sandbox_shell import SandboxShell 6 | 7 | 8 | class PosixSkillConfig(SkillConfig): 9 | """Configuration for the common skill""" 10 | 11 | sandbox_dir: Path 12 | mount_dir: str = "/mnt/data" 13 | 14 | 15 | class PosixSkill(Skill): 16 | shell: SandboxShell 17 | 18 | def __init__(self, config: PosixSkillConfig): 19 | super().__init__(config) 20 | self.shell = SandboxShell(config.sandbox_dir, config.mount_dir) 21 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/posix/routines/ls.py: -------------------------------------------------------------------------------- 1 | from typing import Any, cast 2 | 3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn 4 | from skill_library.skills.posix import PosixSkill 5 | 6 | 7 | async def main( 8 | context: RunContext, 9 | routine_state: dict[str, Any], 10 | emit: EmitFn, 11 | run: RunRoutineFn, 12 | ask_user: AskUserFn, 13 | path: str = ".", 14 | ) -> list[str]: 15 | """ 16 | Change the current working directory. 17 | """ 18 | posix_skill = cast(PosixSkill, context.skills["posix"]) 19 | shell = posix_skill.shell 20 | return shell.ls(path) 21 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/posix/routines/pwd.py: -------------------------------------------------------------------------------- 1 | from typing import Any, cast 2 | 3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn 4 | from skill_library.skills.posix import PosixSkill 5 | 6 | 7 | async def main( 8 | context: RunContext, 9 | routine_state: dict[str, Any], 10 | emit: EmitFn, 11 | run: RunRoutineFn, 12 | ask_user: AskUserFn, 13 | ) -> str: 14 | """ 15 | Return the current directory. 16 | """ 17 | posix_skill = cast(PosixSkill, context.skills["posix"]) 18 | shell = posix_skill.shell 19 | return shell.pwd() 20 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/posix/routines/read_file.py: -------------------------------------------------------------------------------- 1 | from typing import Any, cast 2 | 3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn 4 | from skill_library.skills.posix import PosixSkill 5 | 6 | 7 | async def main( 8 | context: RunContext, 9 | routine_state: dict[str, Any], 10 | emit: EmitFn, 11 | run: RunRoutineFn, 12 | ask_user: AskUserFn, 13 | filename: str, 14 | ) -> str: 15 | """ 16 | Read the contents of a file. 17 | """ 18 | posix_skill = cast(PosixSkill, context.skills["posix"]) 19 | shell = posix_skill.shell 20 | return shell.read_file(filename) 21 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/posix/routines/rm.py: -------------------------------------------------------------------------------- 1 | from typing import Any, cast 2 | 3 | from skill_library import AskUserFn, EmitFn, RunContext, RunRoutineFn 4 | from skill_library.skills.posix import PosixSkill 5 | 6 | 7 | async def main( 8 | context: RunContext, routine_state: dict[str, Any], emit: EmitFn, run: RunRoutineFn, ask_user: AskUserFn, path: str 9 | ) -> str: 10 | """ 11 | Remove a file or directory. 12 | """ 13 | posix_skill = cast(PosixSkill, context.skills["posix"]) 14 | shell = posix_skill.shell 15 | shell.rm(path) 16 | return f"Removed {path}." 17 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/research/__init__.py: -------------------------------------------------------------------------------- 1 | from .research_skill import ResearchSkill, ResearchSkillConfig 2 | 3 | __all__ = ["ResearchSkill", "ResearchSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/research/research_skill.py: -------------------------------------------------------------------------------- 1 | from assistant_drive import Drive 2 | from skill_library import LanguageModel, Skill, SkillConfig 3 | 4 | 5 | class ResearchSkillConfig(SkillConfig): 6 | """Configuration for the common skill""" 7 | 8 | language_model: LanguageModel 9 | drive: Drive 10 | 11 | 12 | class ResearchSkill(Skill): 13 | config: ResearchSkillConfig 14 | 15 | def __init__(self, config: ResearchSkillConfig): 16 | super().__init__(config) 17 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/research2/README.md: -------------------------------------------------------------------------------- 1 | # Research 2 Skill 2 | 3 | This is a second take on a Research Skill. It is a demo of a skill used to do 4 | deep research on a topic and is constructed to mirror the Open Deep Research MCP 5 | functionality as close as possible for a 1:1 comparison. The Open Deep Research 6 | uses an agentic framework (smolagents), so this is kindofa reverse-engineering 7 | of the prompts that get created on an agentic run. 8 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/research2/__init__.py: -------------------------------------------------------------------------------- 1 | from .research_skill import ResearchSkill, ResearchSkillConfig 2 | 3 | __all__ = ["ResearchSkill", "ResearchSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/research2/research_skill.py: -------------------------------------------------------------------------------- 1 | from assistant_drive import Drive 2 | from skill_library import LanguageModel, Skill, SkillConfig 3 | 4 | 5 | class ResearchSkillConfig(SkillConfig): 6 | language_model: LanguageModel 7 | reasoning_language_model: LanguageModel 8 | drive: Drive 9 | 10 | 11 | class ResearchSkill(Skill): 12 | config: ResearchSkillConfig 13 | 14 | def __init__(self, config: ResearchSkillConfig): 15 | super().__init__(config) 16 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/web_research/README.md: -------------------------------------------------------------------------------- 1 | # Research 2 Skill 2 | 3 | This is a second take on a Research Skill. It is a demo of a skill used to do 4 | deep research on a topic and is constructed to mirror the Open Deep Research MCP 5 | functionality as close as possible for a 1:1 comparison. The Open Deep Research 6 | uses an agentic framework (smolagents), so this is kindofa reverse-engineering 7 | of the prompts that get created on an agentic run. 8 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/web_research/__init__.py: -------------------------------------------------------------------------------- 1 | from .research_skill import WebResearchSkill, WebResearchSkillConfig 2 | 3 | __all__ = ["WebResearchSkill", "WebResearchSkillConfig"] 4 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/skills/web_research/research_skill.py: -------------------------------------------------------------------------------- 1 | from assistant_drive import Drive 2 | from skill_library import LanguageModel, Skill, SkillConfig 3 | 4 | 5 | class WebResearchSkillConfig(SkillConfig): 6 | language_model: LanguageModel 7 | reasoning_language_model: LanguageModel 8 | drive: Drive 9 | 10 | 11 | class WebResearchSkill(Skill): 12 | config: WebResearchSkillConfig 13 | 14 | def __init__(self, config: WebResearchSkillConfig): 15 | super().__init__(config) 16 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/tests/tst_skill/__init__.py: -------------------------------------------------------------------------------- 1 | # tst_skill/__init__.py 2 | from skill_library.engine import Skill, SkillConfig 3 | 4 | 5 | class TstSkillConfig(SkillConfig): 6 | name: str 7 | 8 | 9 | class TstSkill(Skill): 10 | def __init__(self, config: TstSkillConfig): 11 | super().__init__(config) 12 | self.call_count = 0 # Add any test state we need 13 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/tests/tst_skill/routines/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/libraries/python/skills/skill-library/skill_library/tests/tst_skill/routines/__init__.py -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/tests/tst_skill/routines/a_routine.py: -------------------------------------------------------------------------------- 1 | # tst_skill/routines/a_routine.py 2 | from typing import Any 3 | 4 | from skill_library.types import ( 5 | AskUserFn, 6 | EmitFn, 7 | RunContext, 8 | RunRoutineFn, 9 | ) 10 | 11 | 12 | async def main( 13 | context: RunContext, 14 | routine_state: dict[str, Any], 15 | emit: EmitFn, 16 | run: RunRoutineFn, 17 | ask_user: AskUserFn, 18 | ) -> str: 19 | # Call an action from the same skill 20 | await run("tst_skill.an_action") 21 | # Test asking user something 22 | response = await ask_user("test question") 23 | return response 24 | -------------------------------------------------------------------------------- /libraries/python/skills/skill-library/skill_library/tests/utilities/test_find_template_vars.py: -------------------------------------------------------------------------------- 1 | from skill_library.utilities import find_template_vars 2 | 3 | 4 | def test_find_template_vars(): 5 | template = "This is a {{test}} template with {{multiple}} variables. See: {{test}}" 6 | variables = find_template_vars(template) 7 | 8 | # Should be deduplicated, but kept in order of first appearance. 9 | assert variables == ["test", "multiple"] 10 | -------------------------------------------------------------------------------- /mcp-servers/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/recursive.mk 3 | -------------------------------------------------------------------------------- /mcp-servers/ai-assist-content/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | // disable spell checker for all files in this project 3 | "cSpell.ignorePaths": ["*"] 4 | } 5 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bing-search/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | # Required for the service 5 | BING_SEARCH_API_KEY= 6 | ASSISTANT__AZURE_OPENAI_ENDPOINT= 7 | 8 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bing-search/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-bing-search", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server_bing_search.start", 10 | "args": ["--transport", "sse", "--port", "6030"], 11 | "consoleTitle": "mcp-server-bing-search" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bing-search/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bing-search/mcp_server_bing_search/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft. All rights reserved. 2 | 3 | from dotenv import load_dotenv 4 | 5 | from . import config 6 | 7 | # Load environment variables from .env into the settings object. 8 | load_dotenv() 9 | settings = config.Settings() 10 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bing-search/mcp_server_bing_search/prompts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-bing-search/mcp_server_bing_search/prompts/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bing-search/mcp_server_bing_search/web/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-bing-search/mcp_server_bing_search/web/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bundle/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-bundle", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server_bundle.main", 10 | "args": [], 11 | "consoleTitle": "mcp-server-bundle" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bundle/README.md: -------------------------------------------------------------------------------- 1 | # MCP Server Bundle 2 | 3 | This project bundles the mcp-filesystem-edit and mcp-tunnel tools into a single executable package for easy distribution and use. 4 | 5 | ## Features 6 | 7 | - Single executable that starts mcp-filesystem-edit and mcp-tunnel 8 | - Graceful shutdown with Ctrl+C (kills all child processes) 9 | - Windows and macOS executable packaging 10 | 11 | ## Usage 12 | 13 | 1. Run `make package` to build the executable. It will be output into the `dist` directory. 14 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-bundle/mcp_server_bundle/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-bundle/mcp_server_bundle/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | # For Development 5 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 6 | 7 | 8 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-filesystem-edit", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server_filesystem_edit.start", 10 | "args": ["--transport", "sse", "--port", "25567"], 11 | "consoleTitle": "mcp-server-filesystem-edit", 12 | "justMyCode": false 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | 3 | from . import config 4 | 5 | # Load environment variables from .env into the settings object. 6 | load_dotenv() 7 | settings = config.Settings() 8 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/app_handling/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/app_handling/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/evals/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/evals/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/prompts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/prompts/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/tools/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/tools/edit_adapters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-filesystem-edit/mcp_server_filesystem_edit/tools/edit_adapters/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem/.gitignore: -------------------------------------------------------------------------------- 1 | # Python files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Virtual environment 6 | .venv 7 | 8 | # Poetry 9 | poetry.lock 10 | 11 | # Byte-compiled / optimized / DLL files 12 | __pycache__/ 13 | *.py[cod] 14 | *$py.class 15 | 16 | # Unit test / coverage reports 17 | htmlcov/ 18 | .tox/ 19 | .nox/ 20 | .coverage 21 | .coverage.* 22 | .cache 23 | 24 | # Byte-compiled / optimized / DLL files 25 | __pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .nox/ 33 | .coverage 34 | .coverage.* 35 | .cache 36 | 37 | # Environment variables 38 | .env 39 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | 4 | # Detect OS 5 | ifeq ($(OS),Windows_NT) 6 | DETECTED_OS := Windows 7 | else 8 | DETECTED_OS := $(shell uname -s) 9 | endif 10 | 11 | .PHONY: package 12 | 13 | package: install 14 | uv run pyinstaller --onefile --name=mcp-server-filesystem --distpath=./dist mcp_server_filesystem/start.py 15 | $(rm_file) *.spec 16 | 17 | .PHONY: clean-package 18 | 19 | clean: clean-package 20 | 21 | clean-package: 22 | $(rm_dir) dist $(ignore_failure) 23 | $(rm_dir) build $(ignore_failure) 24 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem/mcp_server_filesystem/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | from . import config 3 | 4 | # Load environment variables from .env into the settings object. 5 | load_dotenv() 6 | settings = config.Settings() 7 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-filesystem/mcp_server_filesystem/config.py: -------------------------------------------------------------------------------- 1 | import os 2 | from typing import List 3 | from pydantic_settings import BaseSettings 4 | 5 | log_level = os.environ.get("LOG_LEVEL", "INFO") 6 | 7 | 8 | def load_required_env_var(env_var_name: str) -> str: 9 | value = os.environ.get(env_var_name, "") 10 | if not value: 11 | raise ValueError(f"Missing required environment variable: {env_var_name}") 12 | return value 13 | 14 | 15 | class Settings(BaseSettings): 16 | log_level: str = log_level 17 | allowed_directories: List[str] = [] 18 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-fusion/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": ["addin", "fastmcp", "futil", "levelname"] 3 | } 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-fusion/FusionMCPServerAddIn.manifest: -------------------------------------------------------------------------------- 1 | { 2 | "autodeskProduct": "Fusion", 3 | "type": "addin", 4 | "id": "872f127f-65bc-4603-aa29-db6bd9823e6f", 5 | "author": "Semantic Workbench Team", 6 | "description": { 7 | "": "Fusion MCP Server add-in for creating 3D models" 8 | }, 9 | "version": "0.1.0", 10 | "runOnStartup": false, 11 | "supportedOS": "windows|mac", 12 | "editEnabled": true, 13 | "iconFilename": "AddInIcon.svg" 14 | } 15 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-fusion/mcp_server_fusion/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | # Add the vendor directory to sys.path so that packages like pydantic can be imported 5 | vendor_path = os.path.join(os.path.dirname(__file__), 'vendor') 6 | if vendor_path not in sys.path: 7 | sys.path.insert(0, vendor_path) 8 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-fusion/mcp_server_fusion/fusion_utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .general_utils import log, handle_error 2 | from .event_utils import ( 3 | clear_handlers, 4 | add_handler, 5 | ) 6 | from .tool_utils import ( 7 | convert_direction, 8 | errorHandler, 9 | FusionContext, 10 | GeometryValidator, 11 | get_sketch_by_name, 12 | UnitsConverter, 13 | ) 14 | 15 | __all__ = [ 16 | 'add_handler', 17 | 'clear_handlers', 18 | 'convert_direction', 19 | 'errorHandler', 20 | 'FusionContext', 21 | 'GeometryValidator', 22 | 'get_sketch_by_name', 23 | 'handle_error', 24 | 'log', 25 | 'UnitsConverter', 26 | ] 27 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-fusion/mcp_server_fusion/mcp_tools/__init__.py: -------------------------------------------------------------------------------- 1 | from .fusion_3d_operation import Fusion3DOperationTools 2 | from .fusion_geometry import FusionGeometryTools 3 | from .fusion_pattern import FusionPatternTools 4 | from .fusion_sketch import FusionSketchTools 5 | 6 | __all__ = [ 7 | "Fusion3DOperationTools", 8 | "FusionGeometryTools", 9 | "FusionPatternTools", 10 | "FusionSketchTools", 11 | ] 12 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-fusion/mcp_server_fusion/vendor/README.md: -------------------------------------------------------------------------------- 1 | This directory contains vendored third-party dependencies for the Fusion MCP Add-In. 2 | 3 | Dependencies are included here to make the add-in portable and self-contained, since Fusion 360's embedded Python environment does not resolve external dependencies automatically. 4 | 5 | Install from project root: 6 | 7 | ```bash 8 | # from project root directory, where requirements.txt is located 9 | pip install -r requirements.txt --target ./mcp_server_fusion/vendor 10 | ``` 11 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-fusion/requirements.txt: -------------------------------------------------------------------------------- 1 | adsk>=2.0.0 2 | mcp==1.3.0 3 | pydantic==2.10.6 4 | pydantic-settings==2.8.0 5 | anyio==4.8.0 6 | httpx==0.28.1 7 | debugpy>=1.8.12 8 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-giphy/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | # Required for the service 5 | GIPHY_API_KEY=REPLACE_WITH_YOUR_GIPHY_API_KEY 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-giphy/.gitignore: -------------------------------------------------------------------------------- 1 | # Python files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Virtual environment 6 | .venv 7 | 8 | # Poetry 9 | poetry.lock 10 | 11 | # Byte-compiled / optimized / DLL files 12 | __pycache__/ 13 | *.py[cod] 14 | *$py.class 15 | 16 | # Unit test / coverage reports 17 | htmlcov/ 18 | .tox/ 19 | .nox/ 20 | .coverage 21 | .coverage.* 22 | .cache 23 | 24 | # Byte-compiled / optimized / DLL files 25 | __pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .nox/ 33 | .coverage 34 | .coverage.* 35 | .cache 36 | 37 | # Environment variables 38 | .env 39 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-giphy/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-giphy", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server.start", 10 | "args": ["--transport", "sse", "--port", "6040"], 11 | "consoleTitle": "mcp-server-giphy", 12 | "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-giphy/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-mcp-server.mk 4 | 5 | MCP_SERVER_MAIN_MODULE=mcp_server.start 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-giphy/mcp_server/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | 3 | load_dotenv() 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-giphy/mcp_server/config.py: -------------------------------------------------------------------------------- 1 | from pydantic_settings import BaseSettings 2 | 3 | 4 | class Settings(BaseSettings): 5 | log_level: str = "INFO" 6 | giphy_api_key: str = "" 7 | 8 | 9 | settings = Settings() 10 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-giphy/mcp_server/utils.py: -------------------------------------------------------------------------------- 1 | import aiohttp 2 | 3 | 4 | async def fetch_url(image_url: str) -> bytes: 5 | async with aiohttp.ClientSession() as session: 6 | async with session.get(image_url) as response: 7 | response.raise_for_status() 8 | return await response.read() 9 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-user-bio/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-user-bio/.gitignore: -------------------------------------------------------------------------------- 1 | # Python files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Virtual environment 6 | .venv 7 | 8 | # Poetry 9 | poetry.lock 10 | 11 | # Byte-compiled / optimized / DLL files 12 | __pycache__/ 13 | *.py[cod] 14 | *$py.class 15 | 16 | # Unit test / coverage reports 17 | htmlcov/ 18 | .tox/ 19 | .nox/ 20 | .coverage 21 | .coverage.* 22 | .cache 23 | 24 | # Byte-compiled / optimized / DLL files 25 | __pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .nox/ 33 | .coverage 34 | .coverage.* 35 | .cache 36 | 37 | # Environment variables 38 | .env 39 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-user-bio/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-memory-user-bio", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server_memory_user_bio.start", 10 | "args": [ 11 | "--transport", 12 | "sse", 13 | "--port", 14 | "34737", 15 | "--enable-client-roots" 16 | ], 17 | "consoleTitle": "mcp-server-memory-user-bio" 18 | // "justMyCode": false // Set to false to debug external libraries 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-user-bio/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-mcp-server.mk 4 | 5 | MCP_SERVER_MAIN_MODULE=mcp_server_memory_user_bio.start 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-user-bio/mcp_server_memory_user_bio/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-memory-user-bio/mcp_server_memory_user_bio/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-user-bio/mcp_server_memory_user_bio/config.py: -------------------------------------------------------------------------------- 1 | from typing import Annotated 2 | 3 | from pydantic import Field 4 | from pydantic_settings import BaseSettings 5 | 6 | 7 | class Settings(BaseSettings): 8 | log_level: Annotated[str, Field(validation_alias="log_level")] = "INFO" 9 | enable_client_roots: Annotated[bool, Field(validation_alias="enable_client_roots")] = False 10 | 11 | 12 | settings = Settings() 13 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-whiteboard/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 5 | AZURE_OPENAI_DEPLOYMENT= 6 | AZURE_OPENAI_MODEL= 7 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-whiteboard/.gitignore: -------------------------------------------------------------------------------- 1 | # Python files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Virtual environment 6 | .venv 7 | 8 | # Poetry 9 | poetry.lock 10 | 11 | # Byte-compiled / optimized / DLL files 12 | __pycache__/ 13 | *.py[cod] 14 | *$py.class 15 | 16 | # Unit test / coverage reports 17 | htmlcov/ 18 | .tox/ 19 | .nox/ 20 | .coverage 21 | .coverage.* 22 | .cache 23 | 24 | # Byte-compiled / optimized / DLL files 25 | __pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .nox/ 33 | .coverage 34 | .coverage.* 35 | .cache 36 | 37 | # Environment variables 38 | .env 39 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-whiteboard/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-memory-whiteboard", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server_memory_whiteboard.start", 10 | "args": ["--transport", "sse", "--port", "38733"], 11 | "consoleTitle": "mcp-server-memory-whiteboard" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-whiteboard/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-mcp-server.mk 4 | 5 | MCP_SERVER_MAIN_MODULE=mcp_server_memory_whiteboard.start 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-whiteboard/mcp_server_memory_whiteboard/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-memory-whiteboard/mcp_server_memory_whiteboard/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-memory-whiteboard/mcp_server_memory_whiteboard/config.py: -------------------------------------------------------------------------------- 1 | from typing import Annotated 2 | 3 | from pydantic import Field 4 | from pydantic_settings import BaseSettings 5 | 6 | 7 | class Settings(BaseSettings): 8 | log_level: Annotated[str, Field(validation_alias="LOG_LEVEL")] = "INFO" 9 | 10 | 11 | settings = Settings() 12 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | # For Development 5 | ASSISTANT__AZURE_OPENAI_ENDPOINT=https://.openai.azure.com/ 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-office", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server.start", 10 | "args": ["--transport", "sse", "--port", "25566"], 11 | "consoleTitle": "mcp-server-office" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This script builds the standalone executable using PyInstaller 3 | pyinstaller --onefile --name=mcp-server-office --distpath=./dist mcp_server/start.py 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/mcp_server/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | from . import config 3 | 4 | # Load environment variables from .env into the settings object. 5 | load_dotenv() 6 | settings = config.Settings() 7 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/mcp_server/app_interaction/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-office/mcp_server/app_interaction/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/mcp_server/config.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft. All rights reserved. 2 | 3 | import os 4 | 5 | from pydantic_settings import BaseSettings 6 | 7 | log_level = os.environ.get("LOG_LEVEL", "INFO") 8 | 9 | 10 | def load_required_env_var(env_var_name: str) -> str: 11 | value = os.environ.get(env_var_name, "") 12 | if not value: 13 | raise ValueError(f"Missing required environment variable: {env_var_name}") 14 | return value 15 | 16 | 17 | class Settings(BaseSettings): 18 | log_level: str = log_level 19 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/mcp_server/evals/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-office/mcp_server/evals/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/mcp_server/markdown_edit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-office/mcp_server/markdown_edit/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-office/mcp_server/prompts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-office/mcp_server/prompts/__init__.py -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research-clone/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | # Required for the service 5 | AZURE_OPENAI_ENDPOINT= 6 | AZURE_OPENAI_DEPLOYMENT=gpt-4o 7 | AZURE_OPENAI_REASONING_DEPLOYMENT=o1 8 | BING_SUBSCRIPTION_KEY= 9 | BING_SEARCH_URL=https://api.bing.microsoft.com/v7.0/search 10 | # AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 11 | SERPAPI_API_KEY="" 12 | HUGGINGFACE_TOKEN="" 13 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research-clone/.gitignore: -------------------------------------------------------------------------------- 1 | # Python files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Virtual environment 6 | .venv 7 | 8 | # Poetry 9 | poetry.lock 10 | 11 | # Byte-compiled / optimized / DLL files 12 | __pycache__/ 13 | *.py[cod] 14 | *$py.class 15 | 16 | # Unit test / coverage reports 17 | htmlcov/ 18 | .tox/ 19 | .nox/ 20 | .coverage 21 | .coverage.* 22 | .cache 23 | 24 | # Byte-compiled / optimized / DLL files 25 | __pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .nox/ 33 | .coverage 34 | .coverage.* 35 | .cache 36 | 37 | # Environment variables 38 | .env 39 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research-clone/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-open-deep-research-clone", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server_open_deep_research_clone.start", 10 | "args": ["--transport", "sse", "--port", "6061"], 11 | "consoleTitle": "mcp-server-open-deep-research-clone" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research-clone/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-mcp-server.mk 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research-clone/mcp_server_open_deep_research_clone/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | 3 | load_dotenv() 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research-clone/mcp_server_open_deep_research_clone/utils.py: -------------------------------------------------------------------------------- 1 | import aiohttp 2 | 3 | 4 | async def fetch_url(image_url: str) -> bytes: 5 | async with aiohttp.ClientSession() as session: 6 | async with session.get(image_url) as response: 7 | response.raise_for_status() 8 | return await response.read() 9 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #DATA_FOLDER=.data 3 | #LOG_LEVEL=DEBUG 4 | 5 | # Required for the service 6 | HUGGINGFACE_TOKEN=YOUR_HUGGINGFACE_API_KEY 7 | OPENAI_API_KEY=YOUR_OPENAI_API_KEY 8 | SERP_API_KEY=YOUR_SERP_API_KEY 9 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research/.gitignore: -------------------------------------------------------------------------------- 1 | # Python files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Virtual environment 6 | .venv 7 | 8 | # Poetry 9 | poetry.lock 10 | 11 | # Byte-compiled / optimized / DLL files 12 | __pycache__/ 13 | *.py[cod] 14 | *$py.class 15 | 16 | # Unit test / coverage reports 17 | htmlcov/ 18 | .tox/ 19 | .nox/ 20 | .coverage 21 | .coverage.* 22 | .cache 23 | 24 | # Byte-compiled / optimized / DLL files 25 | __pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .nox/ 33 | .coverage 34 | .coverage.* 35 | .cache 36 | 37 | # Environment variables 38 | .env 39 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-open-deep-research", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server.start", 10 | "args": ["--transport", "sse", "--port", "6020"], 11 | "consoleTitle": "mcp-server-open-deep-research" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-open-deep-research/mcp_server/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | from . import config 3 | 4 | # Load environment variables from .env into the settings object. 5 | load_dotenv() 6 | settings = config.Settings() 7 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-template/.taplo.toml: -------------------------------------------------------------------------------- 1 | exclude = ["{{project_slug}}/pyproject.toml"] 2 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-template/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "evenBetterToml.taplo.configFile.enabled": true, 3 | "python.analysis.ignore": ["template"], 4 | "cSpell.ignorePaths": ["template", ".vscode"], 5 | "cSpell.words": ["pyproject"] 6 | } 7 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-template/template/{{ project_slug }}/.env.example.jinja: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | {% if mcp_env_vars %}# Required for the service 5 | {% for var in mcp_env_vars %}{{ var }}= 6 | {% endfor %}{% endif %} 7 | 8 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-template/template/{{ project_slug }}/.vscode/launch.json.jinja: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: {{ project_slug }}", 8 | "cwd": "${workspaceFolder}", 9 | "module": "{{ module_name }}.start", 10 | "args": ["--transport", "sse", "--port", "{{ default_port }}"], 11 | "consoleTitle": "{{ project_slug }}" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-template/template/{{ project_slug }}/Makefile.jinja: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-template/template/{{ project_slug }}/pyproject.toml.jinja: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "{{ project_slug }}" 3 | version = "0.1.0" 4 | description = "{{ description }}" 5 | authors = [{ name = "{{ author_name }}" }] 6 | readme = "README.md" 7 | requires-python = ">=3.11" 8 | dependencies = ["mcp>=1.2.1"] 9 | 10 | [dependency-groups] 11 | dev = ["pyright>=1.1.389"] 12 | 13 | [tool.uv] 14 | package = true 15 | 16 | [project.scripts] 17 | {{ project_slug }} = "{{ module_name }}.start:main" 18 | 19 | [build-system] 20 | requires = ["hatchling"] 21 | build-backend = "hatchling.build" 22 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-template/template/{{ project_slug }}/{{ module_name }}/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | from . import config 3 | 4 | # Load environment variables from .env into the settings object. 5 | load_dotenv() 6 | settings = config.Settings() 7 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/.gitignore: -------------------------------------------------------------------------------- 1 | *.vsix 2 | .vscode-test/** 3 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/.npmrc: -------------------------------------------------------------------------------- 1 | enable-pre-post-scripts = true 2 | node-linker=hoisted 3 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/.vscode-test.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from '@vscode/test-cli'; 2 | 3 | export default defineConfig({ 4 | files: 'out/test/**/*.test.js', 5 | }); 6 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint", 6 | "amodio.tsl-problem-matcher", 7 | "ms-vscode.extension-test-runner" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/** 4 | node_modules/** 5 | src/** 6 | .gitignore 7 | .yarnrc 8 | webpack.config.js 9 | vsc-extension-quickstart.md 10 | **/tsconfig.json 11 | **/eslint.config.mjs 12 | **/*.map 13 | **/*.ts 14 | **/.vscode-test.* 15 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/Makefile: -------------------------------------------------------------------------------- 1 | .DEFAULT_GOAL := install 2 | 3 | repo_root = $(shell git rev-parse --show-toplevel) 4 | 5 | .PHONY: clean 6 | clean: 7 | $(rm_dir) node_modules $(ignore_failure) 8 | 9 | .PHONY: install 10 | install: 11 | pnpm install 12 | 13 | .PHONY: package 14 | package: 15 | pnpm run package-extension 16 | 17 | include $(repo_root)/tools/makefiles/shell.mk 18 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/mcp-servers/mcp-server-vscode/images/icon.png -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/out/extension.d.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | export declare const activate: (context: vscode.ExtensionContext) => Promise; 3 | export declare function deactivate(): void; 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/out/test/extension.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/out/tools/code_checker.d.ts: -------------------------------------------------------------------------------- 1 | import { DiagnosticSeverity } from 'vscode'; 2 | export declare const codeCheckerTool: (severityLevel?: DiagnosticSeverity) => { 3 | content: { 4 | type: string; 5 | text: string; 6 | }[]; 7 | isError: boolean; 8 | }; 9 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/out/tools/focus_editor.d.ts: -------------------------------------------------------------------------------- 1 | export declare const focusEditorTool: ({ filePath, line, column, startLine, startColumn, endLine, endColumn, }: { 2 | filePath: string; 3 | line?: number; 4 | column?: number; 5 | startLine?: number; 6 | startColumn?: number; 7 | endLine?: number; 8 | endColumn?: number; 9 | }) => Promise<{ 10 | success: boolean; 11 | content: { 12 | type: "text"; 13 | text: string; 14 | }[]; 15 | }>; 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/out/tools/search_symbol.d.ts: -------------------------------------------------------------------------------- 1 | export declare function searchSymbolTool({ query, useDefinition, maxResults, openFile, }: { 2 | query: string; 3 | useDefinition?: boolean; 4 | maxResults?: number; 5 | openFile?: boolean; 6 | }): Promise<{ 7 | definition: { 8 | file: string; 9 | startLine: number; 10 | startColumn: number; 11 | endLine: number; 12 | endColumn: number; 13 | snippet: string; 14 | } | null; 15 | globalSearch: Array<{ 16 | file: string; 17 | line: number; 18 | snippet: string; 19 | }>; 20 | }>; 21 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/out/utils/port.d.ts: -------------------------------------------------------------------------------- 1 | export declare function resolvePort(desiredPort: number): Promise; 2 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/prettier.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: true, 3 | printWidth: 120, 4 | singleQuote: true, 5 | tabWidth: 4, 6 | trailingComma: 'all', 7 | useTabs: false, 8 | }; 9 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/src/extension.d.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | export declare const activate: (context: vscode.ExtensionContext) => Promise; 3 | export declare function deactivate(): void; 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/src/test/extension.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/src/test/extension.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | 3 | // You can import and use all API from the 'vscode' module 4 | // as well as import your extension to test it 5 | import * as vscode from 'vscode'; 6 | // import * as myExtension from '../../extension'; 7 | 8 | suite('Extension Test Suite', () => { 9 | vscode.window.showInformationMessage('Start all tests.'); 10 | 11 | test('Sample test', () => { 12 | assert.strictEqual(-1, [1, 2, 3].indexOf(5)); 13 | assert.strictEqual(-1, [1, 2, 3].indexOf(0)); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/src/tools/code_checker.d.ts: -------------------------------------------------------------------------------- 1 | import { DiagnosticSeverity } from 'vscode'; 2 | export declare const codeCheckerTool: (severityLevel?: DiagnosticSeverity) => { 3 | content: { 4 | type: string; 5 | text: string; 6 | }[]; 7 | isError: boolean; 8 | }; 9 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/src/tools/focus_editor.d.ts: -------------------------------------------------------------------------------- 1 | export declare const focusEditorTool: ({ filePath, line, column, startLine, startColumn, endLine, endColumn, }: { 2 | filePath: string; 3 | line?: number; 4 | column?: number; 5 | startLine?: number; 6 | startColumn?: number; 7 | endLine?: number; 8 | endColumn?: number; 9 | }) => Promise<{ 10 | success: boolean; 11 | content: { 12 | type: "text"; 13 | text: string; 14 | }[]; 15 | }>; 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/src/tools/search_symbol.d.ts: -------------------------------------------------------------------------------- 1 | export declare function searchSymbolTool({ query, useDefinition, maxResults, openFile, }: { 2 | query: string; 3 | useDefinition?: boolean; 4 | maxResults?: number; 5 | openFile?: boolean; 6 | }): Promise<{ 7 | definition: { 8 | file: string; 9 | startLine: number; 10 | startColumn: number; 11 | endLine: number; 12 | endColumn: number; 13 | snippet: string; 14 | } | null; 15 | globalSearch: Array<{ 16 | file: string; 17 | line: number; 18 | snippet: string; 19 | }>; 20 | }>; 21 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-vscode/src/utils/port.d.ts: -------------------------------------------------------------------------------- 1 | export declare function resolvePort(desiredPort: number): Promise; 2 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-web-research/.env.example: -------------------------------------------------------------------------------- 1 | # Optional for the service 2 | #LOG_LEVEL=DEBUG 3 | 4 | # Required for the service 5 | AZURE_OPENAI_ENDPOINT= 6 | AZURE_OPENAI_DEPLOYMENT=gpt-4o 7 | AZURE_OPENAI_REASONING_DEPLOYMENT=o3-mini 8 | BING_SUBSCRIPTION_KEY= 9 | BING_SEARCH_URL=https://api.bing.microsoft.com/v7.0/search 10 | # AZURE_CONTENT_SAFETY_ENDPOINT=https://.cognitiveservices.azure.com/ 11 | SERPAPI_API_KEY="" 12 | HUGGINGFACE_TOKEN="" 13 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-web-research/.gitignore: -------------------------------------------------------------------------------- 1 | # Python files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # Virtual environment 6 | .venv 7 | 8 | # Poetry 9 | poetry.lock 10 | 11 | # Byte-compiled / optimized / DLL files 12 | __pycache__/ 13 | *.py[cod] 14 | *$py.class 15 | 16 | # Unit test / coverage reports 17 | htmlcov/ 18 | .tox/ 19 | .nox/ 20 | .coverage 21 | .coverage.* 22 | .cache 23 | 24 | # Byte-compiled / optimized / DLL files 25 | __pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | 29 | # Unit test / coverage reports 30 | htmlcov/ 31 | .tox/ 32 | .nox/ 33 | .coverage 34 | .coverage.* 35 | .cache 36 | 37 | # Environment variables 38 | .env 39 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-web-research/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "mcp-servers: mcp-server-web-research", 8 | "cwd": "${workspaceFolder}", 9 | "module": "mcp_server_web_research.start", 10 | "args": ["--transport", "sse", "--port", "6060"], 11 | "consoleTitle": "mcp-server-web-research" 12 | // "justMyCode": false // Set to false to debug external libraries 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-web-research/Makefile: -------------------------------------------------------------------------------- 1 | repo_root = $(shell git rev-parse --show-toplevel) 2 | include $(repo_root)/tools/makefiles/python.mk 3 | include $(repo_root)/tools/makefiles/docker-mcp-server.mk 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-web-research/mcp_server_web_research/__init__.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | 3 | load_dotenv() 4 | -------------------------------------------------------------------------------- /mcp-servers/mcp-server-web-research/mcp_server_web_research/utils.py: -------------------------------------------------------------------------------- 1 | import aiohttp 2 | 3 | 4 | async def fetch_url(image_url: str) -> bytes: 5 | async with aiohttp.ClientSession() as session: 6 | async with session.get(image_url) as response: 7 | response.raise_for_status() 8 | return await response.read() 9 | -------------------------------------------------------------------------------- /ruff.toml: -------------------------------------------------------------------------------- 1 | line-length = 120 2 | target-version = "py311" 3 | 4 | [format] 5 | docstring-code-format = true 6 | line-ending = "lf" 7 | preview = true 8 | -------------------------------------------------------------------------------- /tools/docker/azure_website_sshd.conf: -------------------------------------------------------------------------------- 1 | Port 2222 2 | ListenAddress 0.0.0.0 3 | LoginGraceTime 180 4 | X11Forwarding yes 5 | Ciphers aes128-cbc,3des-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr 6 | MACs hmac-sha1,hmac-sha1-96 7 | StrictModes yes 8 | SyslogFacility DAEMON 9 | PasswordAuthentication yes 10 | PermitEmptyPasswords no 11 | PermitRootLogin yes 12 | Subsystem sftp internal-sftp 13 | -------------------------------------------------------------------------------- /tools/docker/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # if SSHD_PORT is set, start sshd 6 | if [ -n "${SSHD_PORT}" ]; then 7 | service ssh start 8 | fi 9 | 10 | cmd=$(echo "$@" | envsubst) 11 | exec ${cmd} 12 | -------------------------------------------------------------------------------- /tools/reset-service-data.ps1: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env pwsh 2 | 3 | # Exit on error 4 | $ErrorActionPreference = "Stop" 5 | 6 | # Determine the root directory of the script 7 | $scriptPath = $PSScriptRoot 8 | $root = Resolve-Path "$scriptPath\.." 9 | 10 | # Change directory to the root 11 | Set-Location $root 12 | 13 | # ================================================================ 14 | 15 | # Remove the specified files 16 | Remove-Item -Force "workbench-service/.data/workbench.db" -------------------------------------------------------------------------------- /tools/reset-service-data.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | ROOT="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && cd .. && pwd)" 5 | cd $ROOT 6 | # ================================================================ 7 | 8 | rm -f workbench-service/.data/workbench.db 9 | -------------------------------------------------------------------------------- /tools/run-canonical-agent.ps1: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env pwsh 2 | 3 | # Exit on error 4 | $ErrorActionPreference = "Stop" 5 | 6 | # Determine the root directory of the script 7 | $scriptPath = $PSScriptRoot 8 | $root = Resolve-Path "$scriptPath\.." 9 | 10 | # Change directory to the root 11 | Set-Location $root 12 | # ================================================================ 13 | 14 | # Change directory to workbench-service 15 | Set-Location "workbench-service" 16 | 17 | # Run the command 18 | uv run start-assistant semantic_workbench_assistant.canonical:app 19 | -------------------------------------------------------------------------------- /tools/run-canonical-agent.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | ROOT="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && cd .. && pwd)" 5 | cd $ROOT 6 | # ================================================================ 7 | 8 | cd workbench-service 9 | 10 | uv run start-assistant semantic_workbench_assistant.canonical:app 11 | -------------------------------------------------------------------------------- /tools/run-python-example1.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | ROOT="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && cd .. && pwd)" 5 | cd $ROOT 6 | # ================================================================ 7 | 8 | cd examples/python/python-01-echo-bot 9 | 10 | uv run start-assistant 11 | -------------------------------------------------------------------------------- /tools/run-python-example2.ps1: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env pwsh 2 | 3 | # Exit on error 4 | $ErrorActionPreference = "Stop" 5 | 6 | # Determine the root directory of the script 7 | $scriptPath = $PSScriptRoot 8 | $root = Resolve-Path "$scriptPath\.." 9 | 10 | # Change directory to the root 11 | Set-Location $root 12 | # ================================================================ 13 | 14 | # Change directory to examples/python/python-02-simple-chatbot 15 | Set-Location "examples/python/python-02-simple-chatbot" 16 | 17 | # Run the commands 18 | uv run start-assistant 19 | -------------------------------------------------------------------------------- /tools/run-python-example2.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | ROOT="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && cd .. && pwd)" 5 | cd $ROOT 6 | # ================================================================ 7 | 8 | cd examples/python/python-02-simple-chatbot 9 | 10 | uv run start-assistant 11 | -------------------------------------------------------------------------------- /tools/run-service.ps1: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env pwsh 2 | 3 | # Exit on error 4 | $ErrorActionPreference = "Stop" 5 | 6 | # Determine the root directory of the script 7 | $scriptPath = $PSScriptRoot 8 | $root = Resolve-Path "$scriptPath\.." 9 | 10 | # Change directory to the root 11 | Set-Location $root 12 | # ================================================================ 13 | 14 | # Change directory to workbench-service 15 | Set-Location "workbench-service" 16 | 17 | # Note: this creates the .data folder at 18 | # path ./workbench-service/.data 19 | # rather than ./workbench-service/.data 20 | uv run start-service 21 | -------------------------------------------------------------------------------- /tools/run-service.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | ROOT="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && cd .. && pwd)" 5 | cd $ROOT 6 | # ================================================================ 7 | 8 | cd workbench-service 9 | 10 | # Note: this creates the .data folder at 11 | # path ./workbench-service/.data 12 | # rather than ./workbench-service/.data 13 | uv run start-service 14 | -------------------------------------------------------------------------------- /tools/run-workbench-chatbot.ps1: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env pwsh 2 | 3 | # Exit on error 4 | $ErrorActionPreference = "Stop" 5 | 6 | # Determine the root directory of the script 7 | $scriptPath = $PSScriptRoot 8 | $root = Resolve-Path "$scriptPath\.." 9 | 10 | # Change directory to the root 11 | Set-Location $root 12 | 13 | # Run the scripts 14 | Start-Process -FilePath "pwsh" -ArgumentList "-NoExit", "-File", "$root\tools\run-service.ps1" -PassThru 15 | Start-Process -FilePath "pwsh" -ArgumentList "-NoExit", "-File", "$root\tools\run-python-example2.ps1" -PassThru 16 | Start-Process -FilePath "pwsh" -ArgumentList "-NoExit", "-File", "$root\tools\run-app.ps1" -PassThru 17 | -------------------------------------------------------------------------------- /workbench-app/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /workbench-app/Makefile: -------------------------------------------------------------------------------- 1 | .DEFAULT_GOAL := install 2 | 3 | repo_root = $(shell git rev-parse --show-toplevel) 4 | 5 | .PHONY: clean 6 | clean: 7 | $(rm_dir) node_modules $(ignore_failure) 8 | 9 | .PHONY: install 10 | install: 11 | pnpm install 12 | 13 | .PHONY: lock-upgrade 14 | lock-upgrade: 15 | pnpm update 16 | 17 | .PHONY: test type-check 18 | test type-check: install 19 | pnpm run type-check 20 | 21 | .PHONY: format 22 | format: install 23 | pnpm run format 24 | 25 | .PHONY: lint 26 | lint: install 27 | pnpm run lint 28 | 29 | .PHONY: start 30 | start: 31 | pnpm run start 32 | 33 | include $(repo_root)/tools/makefiles/shell.mk 34 | -------------------------------------------------------------------------------- /workbench-app/nginx.conf: -------------------------------------------------------------------------------- 1 | # Required so that nginx can resolve IPs when working with Docker Compose 2 | resolver 127.0.0.11 ipv6=off; 3 | 4 | index index.html index.htm; 5 | 6 | server { 7 | listen $PORT; 8 | server_name reverseproxy 127.0.0.1; 9 | 10 | location / { 11 | root /usr/share/nginx/html; 12 | } 13 | } -------------------------------------------------------------------------------- /workbench-app/prettier.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: true, 3 | printWidth: 120, 4 | singleQuote: true, 5 | tabWidth: 4, 6 | trailingComma: 'all', 7 | useTabs: false, 8 | }; 9 | -------------------------------------------------------------------------------- /workbench-app/public/assets/background-1-upscaled.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/background-1-upscaled.jpg -------------------------------------------------------------------------------- /workbench-app/public/assets/background-1-upscaled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/background-1-upscaled.png -------------------------------------------------------------------------------- /workbench-app/public/assets/background-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/background-1.jpg -------------------------------------------------------------------------------- /workbench-app/public/assets/background-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/background-1.png -------------------------------------------------------------------------------- /workbench-app/public/assets/background-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/background-2.jpg -------------------------------------------------------------------------------- /workbench-app/public/assets/background-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/background-2.png -------------------------------------------------------------------------------- /workbench-app/public/assets/experimental-feature.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/experimental-feature.jpg -------------------------------------------------------------------------------- /workbench-app/public/assets/workflow-designer-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/workflow-designer-1.jpg -------------------------------------------------------------------------------- /workbench-app/public/assets/workflow-designer-outlets.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/workflow-designer-outlets.jpg -------------------------------------------------------------------------------- /workbench-app/public/assets/workflow-designer-states.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/workflow-designer-states.jpg -------------------------------------------------------------------------------- /workbench-app/public/assets/workflow-designer-transitions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-app/public/assets/workflow-designer-transitions.jpg -------------------------------------------------------------------------------- /workbench-app/src/components/App/FormWidgets/InspectableWidget.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import { WidgetProps } from '@rjsf/utils'; 4 | import React from 'react'; 5 | import { DebugInspector } from '../../Conversations/DebugInspector'; 6 | 7 | export const InspectableWidget: React.FC = (props) => { 8 | const { value } = props; 9 | 10 | let jsonValue = undefined; 11 | try { 12 | jsonValue = JSON.parse(value as string); 13 | } catch (e) { 14 | return null; 15 | } 16 | 17 | return ; 18 | }; 19 | -------------------------------------------------------------------------------- /workbench-app/src/components/Conversations/ContentRenderers/ContentListRenderer.tsx: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import React from 'react'; 4 | import { ContentRenderer } from './ContentRenderer'; 5 | 6 | interface ContentListRendererProps { 7 | contentList: string[]; 8 | } 9 | 10 | export const ContentListRenderer: React.FC = (props) => { 11 | const { contentList } = props; 12 | return ( 13 |
14 | {contentList.map((content, index) => ( 15 | 16 | ))} 17 |
18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /workbench-app/src/components/Conversations/ContentRenderers/MusicABCContentRenderer.css: -------------------------------------------------------------------------------- 1 | /* Copyright (c) Microsoft. All rights reserved. */ 2 | 3 | .abc-midi-link a { 4 | display: block; 5 | text-align: center; 6 | color: #0078d4; 7 | } 8 | -------------------------------------------------------------------------------- /workbench-app/src/global.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | // Allow static build of React code to access env vars 4 | // SEE https://create-react-app.dev/docs/title-and-meta-tags/#injecting-data-from-the-server-into-the-page 5 | declare global { 6 | interface Window { 7 | VITE_SEMANTIC_WORKBENCH_SERVICE_URL?: string; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /workbench-app/src/models/AssistantCapability.ts: -------------------------------------------------------------------------------- 1 | export enum AssistantCapability { 2 | SupportsConversationFiles = 'supports_conversation_files', 3 | } 4 | -------------------------------------------------------------------------------- /workbench-app/src/models/AssistantServiceInfo.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import { Config } from './Config'; 4 | 5 | export interface AssistantTemplate { 6 | id: string; 7 | name: string; 8 | description: string; 9 | defaultConfig: Config; 10 | } 11 | 12 | export interface AssistantServiceInfo { 13 | assistantServiceId: string; 14 | templates: AssistantTemplate[]; 15 | metadata: { 16 | [key: string]: any; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /workbench-app/src/models/Config.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import { RJSFSchema, UiSchema } from '@rjsf/utils'; 4 | 5 | export type Config = { 6 | config: object; 7 | jsonSchema?: RJSFSchema; 8 | uiSchema?: UiSchema; 9 | }; 10 | -------------------------------------------------------------------------------- /workbench-app/src/models/Conversation.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import { ConversationMessage } from './ConversationMessage'; 4 | import { ConversationParticipant } from './ConversationParticipant'; 5 | 6 | export interface Conversation { 7 | id: string; 8 | ownerId: string; 9 | title: string; 10 | created: string; 11 | latest_message?: ConversationMessage; 12 | participants: ConversationParticipant[]; 13 | metadata: { 14 | [key: string]: any; 15 | }; 16 | conversationPermission: 'read' | 'read_write'; 17 | importedFromConversationId?: string; 18 | } 19 | -------------------------------------------------------------------------------- /workbench-app/src/models/ConversationFile.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface ConversationFile { 4 | name: string; 5 | created: string; 6 | updated: string; 7 | size: number; 8 | version: number; 9 | contentType: string; 10 | metadata: { 11 | [key: string]: any; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /workbench-app/src/models/ConversationMessageDebug.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface ConversationMessageDebug { 4 | id: string; 5 | debugData: { 6 | [key: string]: any; 7 | }; 8 | } 9 | 10 | export const conversationMessageDebugFromJSON = (json: any): ConversationMessageDebug => { 11 | return { 12 | id: json.id, 13 | debugData: json.debug_data, 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /workbench-app/src/models/ConversationParticipant.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface ConversationParticipant { 4 | role: 'user' | 'assistant' | 'service'; 5 | id: string; 6 | conversationId: string; 7 | name: string; 8 | image?: string; 9 | online?: boolean; 10 | status: string | null; 11 | statusTimestamp: string | null; 12 | conversationPermission: 'read' | 'read_write'; 13 | active: boolean; 14 | metadata: { 15 | [key: string]: any; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /workbench-app/src/models/ConversationShare.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import { User } from './User'; 4 | 5 | export interface ConversationShare { 6 | id: string; 7 | createdByUser: User; 8 | label: string; 9 | conversationId: string; 10 | conversationTitle: string; 11 | conversationPermission: 'read' | 'read_write'; 12 | isRedeemable: boolean; 13 | createdDateTime: string; 14 | metadata: { 15 | [key: string]: any; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /workbench-app/src/models/ConversationShareRedemption.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import { User } from './User'; 4 | 5 | export interface ConversationShareRedemption { 6 | id: string; 7 | conversationShareId: string; 8 | conversationId: string; 9 | redeemedByUser: User; 10 | conversationPermission: 'read' | 'read_write'; 11 | createdDateTime: string; 12 | isNewParticipant: boolean; 13 | } 14 | -------------------------------------------------------------------------------- /workbench-app/src/models/ConversationState.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | import { RJSFSchema, UiSchema } from '@rjsf/utils'; 4 | 5 | export type ConversationState = { 6 | id: string; 7 | data: object; 8 | jsonSchema?: RJSFSchema; 9 | uiSchema?: UiSchema; 10 | }; 11 | -------------------------------------------------------------------------------- /workbench-app/src/models/ConversationStateDescription.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface ConversationStateDescription { 4 | id: string; 5 | displayName: string; 6 | description: string; 7 | enabled: boolean; 8 | } 9 | -------------------------------------------------------------------------------- /workbench-app/src/models/ServiceEnvironment.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface ServiceEnvironment { 4 | id: string; 5 | name: string; 6 | url: string; 7 | brand?: string; 8 | } 9 | -------------------------------------------------------------------------------- /workbench-app/src/models/User.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface User { 4 | id: string; 5 | name: string; 6 | image?: string; 7 | } 8 | -------------------------------------------------------------------------------- /workbench-app/src/redux/app/hooks.ts: -------------------------------------------------------------------------------- 1 | import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'; 2 | import type { AppDispatch, RootState } from './store'; 3 | 4 | // Use throughout your app instead of plain `useDispatch` and `useSelector` 5 | export const useAppDispatch: () => AppDispatch = useDispatch; 6 | export const useAppSelector: TypedUseSelectorHook = useSelector; 7 | -------------------------------------------------------------------------------- /workbench-app/src/redux/features/app/AppState.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface AppState { 4 | // persisted 5 | devMode: boolean; 6 | completedFirstRun: { 7 | app: boolean; 8 | experimental: boolean; 9 | }; 10 | hideExperimentalNotice: boolean; 11 | chatWidthPercent: number; 12 | globalContentOpen: boolean; 13 | // transient 14 | isDraggingOverBody?: boolean; 15 | activeConversationId?: string; 16 | errors: { 17 | id: string; 18 | title?: string; 19 | message?: string; 20 | }[]; 21 | } 22 | -------------------------------------------------------------------------------- /workbench-app/src/redux/features/chatCanvas/ChatCanvasState.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface ChatCanvasState { 4 | // persisted 5 | open: boolean; 6 | mode: 'conversation' | 'assistant'; 7 | selectedAssistantId?: string; 8 | selectedAssistantStateId?: string; 9 | } 10 | -------------------------------------------------------------------------------- /workbench-app/src/redux/features/localUser/LocalUserState.ts: -------------------------------------------------------------------------------- 1 | export interface LocalUserState { 2 | id?: string; 3 | name?: string; 4 | email?: string; 5 | avatar: { 6 | name?: string; 7 | image?: { 8 | src: string; 9 | }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /workbench-app/src/redux/features/settings/SettingsState.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export interface SettingsState { 4 | // persisted 5 | theme?: string; 6 | environmentId?: string; 7 | } 8 | -------------------------------------------------------------------------------- /workbench-app/src/services/workbench/index.ts: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. 2 | 3 | export * from './assistant'; 4 | export * from './assistantService'; 5 | export * from './conversation'; 6 | export * from './file'; 7 | export * from './participant'; 8 | export * from './state'; 9 | export * from './workbench'; 10 | -------------------------------------------------------------------------------- /workbench-app/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /workbench-app/tools/filtered-ts-prune.cjs: -------------------------------------------------------------------------------- 1 | const { exec } = require('child_process'); 2 | 3 | exec('ts-prune', (error, stdout, stderr) => { 4 | if (error) { 5 | console.error(`Error: ${error.message}`); 6 | return; 7 | } 8 | if (stderr) { 9 | console.error(`Stderr: ${stderr}`); 10 | return; 11 | } 12 | const filteredOutput = stdout 13 | .split('\n') 14 | .filter((line) => !line.includes('used in module')) 15 | .join('\n'); 16 | console.log(filteredOutput); 17 | }); 18 | -------------------------------------------------------------------------------- /workbench-service/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "aaron-bond.better-comments", 4 | "charliermarsh.ruff", 5 | "dbaeumer.vscode-eslint", 6 | "epivision.vscode-file-header", 7 | "esbenp.prettier-vscode", 8 | "github.vscode-github-actions", 9 | "ms-azuretools.vscode-docker", 10 | "ms-python.debugpy", 11 | "ms-python.python", 12 | "ms-vscode.makefile-tools", 13 | "ms-vscode.vscode-node-azure-pack", 14 | "tamasfe.even-better-toml", 15 | "streetsidesoftware.code-spell-checker" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /workbench-service/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "debugpy", 6 | "request": "launch", 7 | "name": "service: semantic-workbench-service", 8 | "cwd": "${workspaceFolder}", 9 | "module": "semantic_workbench_service.start", 10 | "justMyCode": false, 11 | "consoleTitle": "semantic-workbench-service" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /workbench-service/devdb/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | volumes: 2 | postgres-data: 3 | services: 4 | postgres: 5 | image: postgres:15 6 | environment: 7 | POSTGRES_USER: ${USER:-${USERNAME:-postgres}} 8 | POSTGRES_HOST_AUTH_METHOD: trust 9 | volumes: 10 | - postgres-data:/var/lib/postgresql/data # save data between restarts 11 | - ./postgresql-init.sh:/docker-entrypoint-initdb.d/1-postgresql-init.sh:delegated 12 | ports: 13 | - 5432:${POSTGRESQL_PORT:-5432} 14 | -------------------------------------------------------------------------------- /workbench-service/devdb/postgresql-init.sh: -------------------------------------------------------------------------------- 1 | set -e 2 | echo "Creating database: workbench; user: $POSTGRES_USER" 3 | psql -v ON_ERROR_STOP=1 --no-psqlrc --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOF 4 | CREATE database workbench; 5 | EOF 6 | -------------------------------------------------------------------------------- /workbench-service/migrations/README: -------------------------------------------------------------------------------- 1 | alembic migrations for workbench postgresql db 2 | -------------------------------------------------------------------------------- /workbench-service/migrations/versions/2024_09_19_000000_69dcda481c14_init.py: -------------------------------------------------------------------------------- 1 | """init 2 | 3 | Revision ID: 69dcda481c14 4 | Revises: None 5 | Create Date: 2024-09-24 18:26:06.987227 6 | 7 | """ 8 | 9 | from typing import Sequence, Union 10 | 11 | # revision identifiers, used by Alembic. 12 | revision: str = "69dcda481c14" 13 | down_revision: Union[str, None] = None 14 | branch_labels: Union[str, Sequence[str], None] = None 15 | depends_on: Union[str, Sequence[str], None] = None 16 | 17 | 18 | def upgrade() -> None: 19 | pass 20 | 21 | 22 | def downgrade() -> None: 23 | pass 24 | -------------------------------------------------------------------------------- /workbench-service/semantic_workbench_service/__init__.py: -------------------------------------------------------------------------------- 1 | from . import config 2 | 3 | settings = config.Settings() 4 | -------------------------------------------------------------------------------- /workbench-service/semantic_workbench_service/event.py: -------------------------------------------------------------------------------- 1 | from typing import Literal 2 | 3 | from pydantic import BaseModel 4 | from semantic_workbench_api_model.workbench_model import ConversationEvent 5 | 6 | 7 | class ConversationEventQueueItem(BaseModel): 8 | event: ConversationEvent 9 | event_audience: set[Literal["user", "assistant"]] = set(["user", "assistant"]) 10 | -------------------------------------------------------------------------------- /workbench-service/semantic_workbench_service/service_user_principals.py: -------------------------------------------------------------------------------- 1 | from . import auth 2 | 3 | workflow = auth.ServiceUserPrincipal(user_id="workflow", name="Workflow Service") 4 | 5 | semantic_workbench = auth.ServiceUserPrincipal(user_id="semantic-workbench", name="Semantic Workbench Service") 6 | -------------------------------------------------------------------------------- /workbench-service/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/semanticworkbench/30b006a1ca7cc0509beab96fa5b8404a1cfab618/workbench-service/tests/__init__.py -------------------------------------------------------------------------------- /workbench-service/tests/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | postgres: 3 | image: postgres:15 4 | environment: 5 | POSTGRES_USER: ${USER:-${USERNAME:-postgres}} 6 | POSTGRES_HOST_AUTH_METHOD: trust 7 | ports: 8 | - 5444:5432 9 | --------------------------------------------------------------------------------