diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index cc08ec06fe1..467aa1b7470 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -44,8 +44,8 @@ jobs: with: python-version: ${{ matrix.python-version }} os: ${{ runner.os }} - # DuckDB has no Python 3.15 wheels yet, and RedisVL declares Python <3.15. - exclude-packages: ${{ matrix.python-version == '3.10' && 'agent-framework-github-copilot agent-framework-azure-cosmos-memory' || matrix.python-version == '3.15' && 'agent-framework-duckdb agent-framework-redis' || '' }} + # RedisVL still declares Python <3.15. + exclude-packages: ${{ matrix.python-version == '3.10' && 'agent-framework-github-copilot agent-framework-azure-cosmos-memory' || matrix.python-version == '3.15' && 'agent-framework-redis' || '' }} env: # Configure a constant location for the uv cache UV_CACHE_DIR: /tmp/.uv-cache diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md index 6cea2230e6e..a0a9a558769 100644 --- a/python/CHANGELOG.md +++ b/python/CHANGELOG.md @@ -7,6 +7,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.23.0] - 2026-10-22 + +### Added +- **agent-framework-a2a**: Add allowlisted forwarding of function-invocation and client arguments from A2A request metadata ([#9193](https://github.com/microsoft/agent-framework/pull/9193)) +- **agent-framework-core**, **agent-framework-orchestrations**: Add an opt-in synthetic trailing user turn for providers that return empty text after assistant-ending prompts ([#8779](https://github.com/microsoft/agent-framework/pull/8779)) + +### Changed +- **agent-framework**, **agent-framework-ag-ui**, **agent-framework-core**, **agent-framework-declarative**, **agent-framework-foundry-hosting**, **agent-framework-hosting-mcp**, **agent-framework-lab**: [BREAKING] Add the MCP 2.x compatibility foundation and migrate MCP transports, errors, schemas, and lifecycle handling ([#9236](https://github.com/microsoft/agent-framework/pull/9236)) +- **agent-framework-ag-ui**, **agent-framework-core**: [BREAKING] Require an explicit AG-UI authorization scope or single-user declaration for endpoint registration ([#9413](https://github.com/microsoft/agent-framework/pull/9413)) +- **agent-framework-tools**: [BREAKING] Rename Docker shell `extra_run_args` to `unsafe_extra_run_args` and make its trust requirements explicit ([#9453](https://github.com/microsoft/agent-framework/pull/9453)) +- **agent-framework-tools**: Raise the `psutil` floor to the first release with Windows ABI3 wheels for the supported Python range. +- **agent-framework**, **agent-framework-core**: Advance the exact Core pin and standard-install dependency cohort to the package versions released in this cut. +- **agent-framework-declarative**, **agent-framework-devui**, **agent-framework-foundry-hosting**, **agent-framework-orchestrations**: Raise the Core floor to 1.23 for packages that consume the new MCP lifecycle or executor behavior. +- **agent-framework-core**, **agent-framework-devui**: Define caller-owned and framework-owned MCP client lifecycles, remove DevUI's stale-connection workaround, and update lifecycle guidance and workflow samples ([#9237](https://github.com/microsoft/agent-framework/pull/9237), [#9532](https://github.com/microsoft/agent-framework/pull/9532)) +- **agent-framework**, **agent-framework-ag-ui**, **agent-framework-core**, **agent-framework-duckdb**, **agent-framework-hyperlight**: Add Python 3.15 support for DuckDB, Hyperlight, and the AG-UI A2UI extra by requiring DuckDB 2.0 on Python 3.15, Hyperlight 0.8, and A2UI toolkit 0.0.5, and adapt Hyperlight output-limit handling to the 0.8 size and quota behavior ([ag-ui-protocol/ag-ui#3057](https://github.com/ag-ui-protocol/ag-ui/issues/3057), [duckdb/duckdb-python#659](https://github.com/duckdb/duckdb-python/issues/659), [hyperlight-dev/hyperlight-sandbox#239](https://github.com/hyperlight-dev/hyperlight-sandbox/issues/239)) +- **agent-framework-devui**, **agent-framework-lab**, **tests**, **samples**: Refresh Hugging Face Hub, frontend, Agent Framework, Pydantic, OpenTelemetry, orjson, development-tooling, and security-constrained dependencies ([#9416](https://github.com/microsoft/agent-framework/pull/9416), [#9420](https://github.com/microsoft/agent-framework/pull/9420), [#9421](https://github.com/microsoft/agent-framework/pull/9421), [#9422](https://github.com/microsoft/agent-framework/pull/9422), [#9423](https://github.com/microsoft/agent-framework/pull/9423), [#9590](https://github.com/microsoft/agent-framework/pull/9590)) +- **docs**, **samples**: Refresh Content base64, Message URI, ChatResponse aggregation, and tool-normalization examples; ATR validation; Cosmos memory scoping; community MCP and Tracekit catalog entries; Foundry Toolbox setup; Foundry evals; Copilot Studio migrations; A2A hosting; ChatKit streaming; Purview middleware; and DevUI local-auth guidance ([#9332](https://github.com/microsoft/agent-framework/pull/9332), [#9333](https://github.com/microsoft/agent-framework/pull/9333), [#9433](https://github.com/microsoft/agent-framework/pull/9433), [#9443](https://github.com/microsoft/agent-framework/pull/9443), [#9447](https://github.com/microsoft/agent-framework/pull/9447), [#9467](https://github.com/microsoft/agent-framework/pull/9467), [#9497](https://github.com/microsoft/agent-framework/pull/9497), [#9518](https://github.com/microsoft/agent-framework/pull/9518), [#9521](https://github.com/microsoft/agent-framework/pull/9521), [#9523](https://github.com/microsoft/agent-framework/pull/9523), [#9550](https://github.com/microsoft/agent-framework/pull/9550), [#9551](https://github.com/microsoft/agent-framework/pull/9551), [#9553](https://github.com/microsoft/agent-framework/pull/9553), [#9575](https://github.com/microsoft/agent-framework/pull/9575), [#9576](https://github.com/microsoft/agent-framework/pull/9576), [#9577](https://github.com/microsoft/agent-framework/pull/9577)) +- **tests**: Expand DevUI coverage for reasoning chunks without text ([#9543](https://github.com/microsoft/agent-framework/pull/9543)) + +### Fixed +- **agent-framework-core**: Rebuild nested content, accept `Literal` workflow-edge sources, close abandoned inner streams, pass stream errors into nested streams during closure, make Memory and Todo writes atomic, bind background completion waits to execution identity, support keyword-only functional-workflow contexts, isolate MCP task contexts, normalize tool-name whitespace, improve settled approval matching, recover owned MCP connections safely, and omit span-only tool attributes from invocation metrics ([#9304](https://github.com/microsoft/agent-framework/pull/9304), [#9355](https://github.com/microsoft/agent-framework/pull/9355), [#9331](https://github.com/microsoft/agent-framework/pull/9331), [#9397](https://github.com/microsoft/agent-framework/pull/9397), [#9412](https://github.com/microsoft/agent-framework/pull/9412), [#9442](https://github.com/microsoft/agent-framework/pull/9442), [#9451](https://github.com/microsoft/agent-framework/pull/9451), [#9476](https://github.com/microsoft/agent-framework/pull/9476), [#9557](https://github.com/microsoft/agent-framework/pull/9557), [#9535](https://github.com/microsoft/agent-framework/pull/9535), [#9583](https://github.com/microsoft/agent-framework/pull/9583), [#9592](https://github.com/microsoft/agent-framework/pull/9592)) +- **agent-framework-ag-ui**: Preserve every queued approval result and repeated single-chunk text deltas ([#8851](https://github.com/microsoft/agent-framework/pull/8851), [#9339](https://github.com/microsoft/agent-framework/pull/9339)) +- **agent-framework-anthropic**: Keep bash tool-result files nested inside their shell tool result ([#9343](https://github.com/microsoft/agent-framework/pull/9343)) +- **agent-framework-azure-cosmos-memory**: Reject non-positive result limits and confidence values outside the supported range ([#9318](https://github.com/microsoft/agent-framework/pull/9318)) +- **agent-framework-bedrock**: Merge per-call client arguments into Converse requests, resolve embedding regions consistently, and report the requested model on non-streaming responses ([#9345](https://github.com/microsoft/agent-framework/pull/9345), [#9349](https://github.com/microsoft/agent-framework/pull/9349), [#9399](https://github.com/microsoft/agent-framework/pull/9399)) +- **agent-framework-declarative**: Match custom functions as whole calls and honor the configured variable in `SetValue` actions ([#9176](https://github.com/microsoft/agent-framework/pull/9176), [#9428](https://github.com/microsoft/agent-framework/pull/9428)) +- **agent-framework-devui**: Emit an empty reasoning delta when a reasoning chunk has no text ([#9546](https://github.com/microsoft/agent-framework/pull/9546)) +- **agent-framework-foundry-hosting**, **agent-framework-hosting-responses**: Sanitize unexpected streaming response failures before exposing them through Responses-shaped adapters ([#9460](https://github.com/microsoft/agent-framework/pull/9460)) +- **agent-framework-gemini**: Send extracted structured-output schemas through the Gemini JSON Schema request field and set the assistant role on streamed updates ([#9491](https://github.com/microsoft/agent-framework/pull/9491), [#9590](https://github.com/microsoft/agent-framework/pull/9590)) +- **agent-framework-lab**: Prefer the over-budget warning when a Tau2 sliding window exceeds its token limit ([#9341](https://github.com/microsoft/agent-framework/pull/9341)) +- **agent-framework-ollama**: Decode and validate inline image data before passing it to the Ollama SDK ([#9459](https://github.com/microsoft/agent-framework/pull/9459)) +- **agent-framework-redis**: Close the RedisVL search-index connection when the context provider owns it ([#9510](https://github.com/microsoft/agent-framework/pull/9510)) +- **agent-framework-tools**: Prevent stateless shell tools from inheriting host standard input ([#9469](https://github.com/microsoft/agent-framework/pull/9469)) + ## [1.22.0] - 2026-10-15 > [!IMPORTANT] @@ -1852,7 +1886,8 @@ Release candidate for **agent-framework-core** and **agent-framework-azure-ai** For more information, see the [announcement blog post](https://devblogs.microsoft.com/foundry/introducing-microsoft-agent-framework-the-open-source-engine-for-agentic-ai-apps/). -[Unreleased]: https://github.com/microsoft/agent-framework/compare/python-1.22.0...HEAD +[Unreleased]: https://github.com/microsoft/agent-framework/compare/python-1.23.0...HEAD +[1.23.0]: https://github.com/microsoft/agent-framework/compare/python-1.22.0...python-1.23.0 [1.22.0]: https://github.com/microsoft/agent-framework/compare/python-1.21.0...python-1.22.0 [1.21.0]: https://github.com/microsoft/agent-framework/compare/python-1.20.0...python-1.21.0 [1.20.0]: https://github.com/microsoft/agent-framework/compare/python-1.19.0...python-1.20.0 diff --git a/python/README.md b/python/README.md index 25fb14155da..080c4d45bb8 100644 --- a/python/README.md +++ b/python/README.md @@ -57,8 +57,6 @@ not provide exactly the same feature set as Python 3.14: | --- | --- | | Declarative Power Fx | `agent-framework-declarative` is installed, but its `powerfx` dependency is not. YAML values beginning with `=` produce a warning and remain unchanged instead of being evaluated. Declarative agents or workflows that rely on expressions may therefore use invalid literal values or fail later. | | Redis | `agent-framework-redis` is omitted from the standard install because RedisVL declares `Requires-Python <3.15`. Redis imports and Redis-backed history, context, and vector storage are unavailable. | -| Hyperlight | `agent-framework-hyperlight` is omitted because no compatible Python 3.15 sandbox backend wheel is published. Hyperlight CodeAct and its `execute_code` tool are unavailable. | -| AG-UI A2UI | The base `agent-framework-ag-ui` package works, but pip cannot install its optional `a2ui` extra because `ag-ui-a2ui-toolkit` declares `Requires-Python <3.15`. | ## 1. Setup API Keys diff --git a/python/packages/a2a/pyproject.toml b/python/packages/a2a/pyproject.toml index 66d6579372e..afb04ef66e6 100644 --- a/python/packages/a2a/pyproject.toml +++ b/python/packages/a2a/pyproject.toml @@ -4,7 +4,7 @@ description = "A2A integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/ag-ui/README.md b/python/packages/ag-ui/README.md index 44b6728bdc3..6b7769c9fc8 100644 --- a/python/packages/ag-ui/README.md +++ b/python/packages/ag-ui/README.md @@ -8,9 +8,7 @@ AG-UI protocol integration for Agent Framework, enabling seamless integration wi pip install agent-framework-ag-ui ``` -The base package supports Python 3.10–3.15. The optional A2UI integration -currently supports Python 3.10–3.14 because `ag-ui-a2ui-toolkit` declares -`Requires-Python <3.15`: +The base package and optional A2UI integration support Python 3.10–3.15: ```bash pip install "agent-framework-ag-ui[a2ui]" diff --git a/python/packages/ag-ui/pyproject.toml b/python/packages/ag-ui/pyproject.toml index a328a6d1c0f..2c229e05565 100644 --- a/python/packages/ag-ui/pyproject.toml +++ b/python/packages/ag-ui/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "agent-framework-ag-ui" -version = "1.6.0" +version = "1.7.0" description = "AG-UI protocol integration for Agent Framework" readme = "README.md" license-files = ["LICENSE"] @@ -38,10 +38,10 @@ dev = [ ] # A2UI (agent-generated UI) support. Optional: the agent_framework_ag_ui._a2ui # modules import this lazily, so the base package works without it. -# Floor 0.0.4 is the first release with singular-`child` validation and -# `child_cycle` detection (ag-ui-protocol/ag-ui#1944). +# Floor 0.0.5 adds Python 3.15 support while retaining singular-`child` +# validation and `child_cycle` detection (ag-ui-protocol/ag-ui#1944). a2ui = [ - "ag-ui-a2ui-toolkit>=0.0.4", + "ag-ui-a2ui-toolkit>=0.0.5", ] [dependency-groups] diff --git a/python/packages/anthropic/pyproject.toml b/python/packages/anthropic/pyproject.toml index e3a5c0445d8..008e0d53b3b 100644 --- a/python/packages/anthropic/pyproject.toml +++ b/python/packages/anthropic/pyproject.toml @@ -4,7 +4,7 @@ description = "Anthropic integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/azure-cosmos-memory/pyproject.toml b/python/packages/azure-cosmos-memory/pyproject.toml index bc4f87347ea..fa5a3d901a0 100644 --- a/python/packages/azure-cosmos-memory/pyproject.toml +++ b/python/packages/azure-cosmos-memory/pyproject.toml @@ -4,7 +4,7 @@ description = "Azure Cosmos DB Agent Memory Toolkit integration for Microsoft Ag authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.11" -version = "1.0.0a261015" +version = "1.0.0a261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/bedrock/pyproject.toml b/python/packages/bedrock/pyproject.toml index 59d359be5f4..fe817b3d2d6 100644 --- a/python/packages/bedrock/pyproject.toml +++ b/python/packages/bedrock/pyproject.toml @@ -4,7 +4,7 @@ description = "Amazon Bedrock integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/core/pyproject.toml b/python/packages/core/pyproject.toml index b5132f3b831..bbcdc3c84a8 100644 --- a/python/packages/core/pyproject.toml +++ b/python/packages/core/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Agent Framework for building AI Agents with Python. Thi authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.22.0" +version = "1.23.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -37,35 +37,35 @@ dependencies = [ all = [ "mcp>=2.2.0,<3", "tenacity>=9.1.4,<9.2.0", - "agent-framework-a2a>=1.0.0b261015,<2", - "agent-framework-ag-ui>=1.6.0,<2", - "agent-framework-anthropic>=1.0.0b261015,<2", + "agent-framework-a2a>=1.0.0b261022,<2", + "agent-framework-ag-ui>=1.7.0,<2", + "agent-framework-anthropic>=1.0.0b261022,<2", "agent-framework-azure-ai-search>=1.0.0b261015,<2", "agent-framework-azure-contentunderstanding>=1.0.0b261015,<2", "agent-framework-azure-cosmos>=1.0.0b261015,<2", "agent-framework-azurefunctions>=1.0.0b260922,<2", - "agent-framework-bedrock>=1.0.0b261015,<2", + "agent-framework-bedrock>=1.0.0b261022,<2", "agent-framework-chatkit>=1.0.0b261015,<2", "agent-framework-claude>=1.0.0b261015,<2", "agent-framework-copilotstudio>=1.0.0b261015,<2", - "agent-framework-declarative>=1.3.0,<2", - "agent-framework-devui>=1.0.0b261015,<2", + "agent-framework-declarative>=1.4.0,<2", + "agent-framework-devui>=1.0.0b261022,<2", "agent-framework-durabletask>=1.0.0b260922,<2", "agent-framework-foundry>=1.15.0,<2", - "agent-framework-foundry-hosting>=1.0.0b261015,<2", + "agent-framework-foundry-hosting>=1.0.0b261022,<2", "agent-framework-foundry-local>=1.0.0b261015,<2", - "agent-framework-gemini>=1.0.0b261015,<2", + "agent-framework-gemini>=1.0.0b261022,<2", "agent-framework-github-copilot>=2.1.0,<3; python_version >= '3.11'", - "agent-framework-hyperlight>=1.0.0b261015,<2; python_version < '3.15' and ((sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64'))", + "agent-framework-hyperlight>=1.0.0b261022,<2; (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')", "agent-framework-mem0>=1.0.0b261015,<2", "agent-framework-mistral>=1.0.0b261015,<2", "agent-framework-monty>=1.0.0b261015,<2", - "agent-framework-ollama>=1.0.0b261015,<2", + "agent-framework-ollama>=1.0.0b261022,<2", "agent-framework-openai>=1.17.0,<2", - "agent-framework-orchestrations>=1.3.2,<2", + "agent-framework-orchestrations>=1.4.0,<2", "agent-framework-purview>=1.0.0b261015,<2", - "agent-framework-redis>=1.0.0b261015,<2; python_version < '3.15'", - "agent-framework-tools>=1.0.0b261015,<2", + "agent-framework-redis>=1.0.0b261022,<2; python_version < '3.15'", + "agent-framework-tools>=1.0.0b261022,<2", ] [dependency-groups] diff --git a/python/packages/declarative/pyproject.toml b/python/packages/declarative/pyproject.toml index 05d9552dcf1..3572fe3249a 100644 --- a/python/packages/declarative/pyproject.toml +++ b/python/packages/declarative/pyproject.toml @@ -4,7 +4,7 @@ description = "Declarative specification support for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.3.0" +version = "1.4.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -22,7 +22,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.20.0,<2", + "agent-framework-core>=1.23.0,<2", "httpx>=0.27,<0.29", "httpx2>=2.0.0,<3", "powerfx>=0.0.32,<0.0.35; python_version < '3.14'", diff --git a/python/packages/devui/agent_framework_devui/ui/assets/index.js b/python/packages/devui/agent_framework_devui/ui/assets/index.js index f9335618aa0..b4189b21d8f 100644 --- a/python/packages/devui/agent_framework_devui/ui/assets/index.js +++ b/python/packages/devui/agent_framework_devui/ui/assets/index.js @@ -190,4 +190,4 @@ asyncio.run(main())`})]})]}),(0,K.jsxs)(`div`,{className:`flex gap-2 pt-4 border `+e:e);try{let n=t.type===`output_text`?JSON.parse(e):void 0;typeof n==`object`&&n&&(z.current=n)}catch{}}}}let a={type:`response.completed`,response:i,sequence_number:0};l([a]),t(a),await me()}catch(e){console.error(`Workflow execution error:`,e);let n={type:`response.failed`,response:{error:{message:e instanceof Error?e.message:`Workflow execution failed`}},sequence_number:0};l([n]),t(n)}}},[e,B,t,me]),Te=(0,y.useCallback)(async(e,t)=>{se?await Ce(e,t):await we(e,t)},[se,Ce,we]),Ee=(0,y.useCallback)(()=>{for(let e of N){let t=F[e.request_id]||{};if(!rb(e.request_schema,t))return!1}return!0},[N,F]),De=(0,y.useCallback)(async()=>{if(!e||e.type!==`workflow`)return;if(!Ee()){console.warn(`Cannot submit: Not all HIL forms are valid`);return}d(!0),P([]),I({});let n=A();try{let r={input_data:[{type:`message`,content:[{type:`workflow_hil_response`,responses:F}]}],conversation_id:B?.conversation_id||void 0},i=R_.streamWorkflowExecutionOpenAI(e.id,r,n),a=!1,o=[];for await(let e of i){if((e.type===`response.output_item.added`||e.type===`response.output_item.done`||e.type===`response.created`||e.type===`response.in_progress`||e.type===`response.completed`||e.type===`response.failed`||e.type===`response.workflow_event.completed`)&&l(t=>{let n=gN(e),r=Math.floor(Date.now()/1e3),i=t.length>0&&t[t.length-1]._uiTimestamp||0,a=n===void 0?Math.max(r,i+1):Math.max(n,i);return[...t,{...e,_uiTimestamp:a}]}),t(e),e.type===`response.request_info.requested`){let t=e;a=!0;let n={request_id:t.request_id,request_data:t.request_data,request_schema:t.request_schema};o.push(n);let r=t.request_schema,i={};r.properties&&Object.entries(r.properties).forEach(([e,t])=>{let n=t;n.enum&&n.enum.length>0?i[e]=n.enum[0]:n.default!==void 0&&(i[e]=n.default)}),I(e=>({...e,[t.request_id]:i}))}if(e.type===`response.output_item.added`){let t=e.item;if(t&&t.type===`executor_action`&&t.executor_id&&t.id&&(R.current=t.id,L.current[t.id]||(L.current[t.id]=``)),t&&t.type===`message`&&`content`in t&&Array.isArray(t.content)&&t.metadata?.workflow_output_kind!==`intermediate`)for(let e of t.content){let t=e.type===`output_text`?e.text:e.type===`refusal`?e.refusal:void 0;if(t){E(e=>e&&e.length>0?e+` -`+t:t);try{let n=e.type===`output_text`?JSON.parse(t):void 0;typeof n==`object`&&n&&(z.current=n)}catch{}}}}if((e.type===`response.output_text.delta`||e.type===`response.refusal.delta`)&&`delta`in e&&e.delta){let t=R.current;t&&(L.current[t]||(L.current[t]=``),L.current[t]+=e.delta)}e.type===`response.completed`&&await me(),e.type===`response.failed`&&await me()}a&&P(o),d(!1),await me()}catch(e){b_(e)?(console.log(`HIL submission cancelled by user`),p(!0)):console.error(`HIL submission error:`,e),d(!1),M(),await me()}},[e,F,t,B,Ee,A,M,me]);return i?(0,K.jsx)(Yy,{message:`Loading workflow...`,description:`Fetching workflow structure and configuration`}):o?(0,K.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,K.jsxs)(`div`,{className:`text-center max-w-md p-6`,children:[(0,K.jsx)(`div`,{className:`text-red-500 mb-4`,children:(0,K.jsx)(`svg`,{className:`w-16 h-16 mx-auto`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,K.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z`})})}),(0,K.jsx)(`h3`,{className:`text-lg font-semibold mb-2`,children:`Failed to Load Workflow`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground mb-4`,children:o}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`This may not be a valid workflow entity. Check the file contains a workflow export.`})]})}):!n?.workflow_dump&&!xe.length?(0,K.jsx)(Yy,{message:`Initializing workflow...`,description:`Setting up workflow execution environment`}):(0,K.jsxs)(`div`,{className:`workflow-view flex flex-col h-full`,children:[(0,K.jsxs)(`div`,{className:`border-b pb-2 p-4 flex-shrink-0`,children:[(0,K.jsxs)(`div`,{className:`flex flex-col lg:flex-row lg:items-center lg:justify-between gap-3 mb-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,K.jsx)(`h2`,{className:`font-semibold text-sm truncate`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(uf,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsx)(`span`,{className:`truncate`,children:e.name||e.id})]})}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>_(!0),className:`h-6 w-6 p-0 flex-shrink-0`,title:`View workflow details`,children:(0,K.jsx)(td,{className:`h-4 w-4`})}),e.source!==`in_memory`&&(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:fe,disabled:x,className:`h-6 w-6 p-0 flex-shrink-0`,title:x?`Reloading...`:`Reload entity code (hot reload)`,children:(0,K.jsx)(Nd,{className:`h-4 w-4 ${x?`animate-spin`:``}`})})]}),n&&(0,K.jsxs)(`div`,{className:`flex flex-col sm:flex-row items-stretch sm:items-center gap-2 flex-shrink-0`,children:[(0,K.jsxs)(Ny,{value:B?.conversation_id||``,onValueChange:ge,disabled:V,children:[(0,K.jsx)(Fy,{className:`w-full sm:w-64`,children:(0,K.jsx)(Py,{placeholder:V?`Loading...`:ee.length===0?`No checkpoint storages`:`Select checkpoint storage`,children:B&&(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:B.metadata.name||`Checkpoint Storage ${B.conversation_id.slice(-8)}`}),B.metadata.checkpoint_summary&&B.metadata.checkpoint_summary.count>0&&(0,K.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:B.metadata.checkpoint_summary.count}),B.metadata.checkpoint_summary.has_pending_hil&&(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:`HIL`})]})]})})}),(0,K.jsx)(Iy,{children:ee.map(e=>(0,K.jsx)(Ly,{value:e.conversation_id,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between w-full gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:e.metadata.name||`Checkpoint Storage ${e.conversation_id.slice(-8)}`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[e.created_at&&(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:new Date(e.created_at*1e3).toLocaleTimeString()}),e.metadata.checkpoint_summary&&e.metadata.checkpoint_summary.count>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:e.metadata.checkpoint_summary.count}),e.metadata.checkpoint_summary.has_pending_hil&&(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:`HIL`})]})]})]})},e.conversation_id))})]}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>b(!0),disabled:!B,className:`h-9 w-9 p-0 flex-shrink-0`,title:`View checkpoint details`,children:(0,K.jsx)(td,{className:`h-4 w-4`})}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:ve,disabled:!B||V,className:`h-9 w-9 p-0`,title:`Delete current session`,children:(0,K.jsx)(tf,{className:`h-4 w-4 `})}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:_e,disabled:V,className:`h-9 px-3`,title:`New session`,children:(0,K.jsx)(jd,{className:`h-4 w-4`})}),C&&(0,K.jsx)(xb,{inputSchema:n.input_schema,onRun:Te,onCancel:j,isSubmitting:u,isCancelling:k,workflowState:u?`running`:xe.length>0?`completed`:`ready`,checkpoints:D,showCheckpoints:!1})]})]}),e.description&&(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.description})]}),N.length>0&&(0,K.jsx)(`div`,{className:`bg-orange-100 dark:bg-orange-950/30 border-b border-orange-300 dark:border-orange-800 px-4 py-2`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(hu,{className:`w-4 h-4 text-orange-600 dark:text-orange-400`}),(0,K.jsxs)(`span`,{className:`text-sm font-medium text-orange-900 dark:text-orange-100`,children:[`Workflow is waiting for your input (`,N.length,` `,`request`,N.length>1?`s`:``,`)`]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[N.length>1&&(0,K.jsxs)(q,{size:`sm`,onClick:De,disabled:!Ee()||u,className:`gap-1`,children:[(0,K.jsx)(Ud,{className:`w-3.5 h-3.5`}),`Submit All`]}),(0,K.jsx)(q,{size:`sm`,variant:`ghost`,onClick:()=>{document.querySelector(`[data-hil-form]`)?.scrollIntoView({behavior:`smooth`,block:`center`})},className:`text-orange-700 hover:text-orange-900 dark:text-orange-400 dark:hover:text-orange-200`,children:`Jump to input →`})]})]})}),(0,K.jsxs)(`div`,{className:`flex-1 min-h-0 flex gap-0`,children:[(0,K.jsx)(`div`,{className:`flex-1 min-w-0 transition-all duration-300`,children:n?.workflow_dump&&(0,K.jsx)(oN,{workflowDump:n.workflow_dump,events:be,isStreaming:u,onNodeSelect:ye,className:`h-full`,viewOptions:U,onToggleViewOption:de,layoutDirection:le,onLayoutDirectionChange:ue,timelineVisible:!0})}),(0,K.jsx)(`div`,{className:`flex-shrink-0 overflow-hidden transition-all duration-300 ease-out border-l`,style:{width:C?`2.5rem`:`28rem`},children:C?(0,K.jsxs)(`div`,{className:`h-full w-10 bg-background flex flex-col items-center py-2 cursor-pointer hover:bg-accent/50 transition-colors`,onClick:()=>w(!1),title:`Expand timeline`,children:[(0,K.jsx)(`div`,{className:`h-8 w-8 flex items-center justify-center`,children:(0,K.jsx)(lu,{className:`h-4 w-4 text-muted-foreground`})}),(0,K.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-2 pointer-events-none`,children:[(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground select-none`,style:{writingMode:`vertical-rl`,transform:`rotate(180deg)`},children:`Execution Timeline`}),be.length>0&&(0,K.jsx)(`div`,{className:`bg-primary text-primary-foreground rounded-full w-5 h-5 flex items-center justify-center ${u?`animate-pulse`:``}`,style:{fontSize:`10px`},children:be.length})]})]}):(0,K.jsxs)(`div`,{className:`w-[28rem] h-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between p-2 border-b`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`h3`,{className:`text-sm font-medium`,children:`Execution Timeline`}),be.length>0&&(0,K.jsx)(`div`,{className:`bg-primary text-primary-foreground rounded-full px-2 h-5 flex items-center justify-center ${u?`animate-pulse`:``}`,style:{fontSize:`11px`,minWidth:`20px`},children:be.length})]}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>w(!0),className:`h-8 w-8 p-0`,title:`Minimize timeline`,children:(0,K.jsx)(du,{className:`h-4 w-4`})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden`,children:(0,K.jsx)(hN,{events:be,itemOutputs:L.current,currentExecutorId:Se[Se.length-1]||null,isStreaming:u,onExecutorClick:ye,selectedExecutorId:m,workflowResult:T,pendingHilRequests:N,hilResponses:F,onHilResponseChange:(e,t)=>{I(n=>({...n,[e]:t}))},onHilSubmit:De,isSubmittingHil:u,inputSchema:n?.input_schema,onRun:(e,t)=>{Te(e,t)},onCancel:j,isCancelling:k,workflowState:u?`running`:f?`cancelled`:xe.length>0?`completed`:`ready`,wasCancelled:f,checkpoints:D})})]})})]}),(0,K.jsx)(cN,{workflow:e,open:g,onOpenChange:_}),(0,K.jsx)(lN,{session:B||null,checkpoints:D,open:v,onOpenChange:b})]})}function vN({message:e,type:t=`info`,duration:n=4e3,onClose:r}){let[i,a]=(0,y.useState)(!0);(0,y.useEffect)(()=>{let e=setTimeout(()=>{a(!1),setTimeout(r,300)},n);return()=>clearTimeout(e)},[n,r]);let o={info:`bg-primary/10 border-primary/20`,success:`bg-green-50 dark:bg-green-950 border-green-200 dark:border-green-800`,warning:`bg-orange-50 dark:bg-orange-950 border-orange-200 dark:border-orange-800`,error:`bg-red-50 dark:bg-red-950 border-red-200 dark:border-red-800`}[t],s={info:`text-primary`,success:`text-green-800 dark:text-green-200`,warning:`text-orange-800 dark:text-orange-200`,error:`text-red-800 dark:text-red-200`}[t];return(0,K.jsxs)(`div`,{className:`fixed top-4 right-4 z-50 flex items-start gap-3 p-4 rounded-lg border shadow-lg max-w-md transition-all duration-300 ${i?`opacity-100 translate-x-0`:`opacity-0 translate-x-4`} ${o}`,children:[(0,K.jsx)(`p`,{className:`text-sm flex-1 ${s}`,children:e}),(0,K.jsx)(`button`,{onClick:()=>{a(!1),setTimeout(r,300)},className:`flex-shrink-0 hover:opacity-70 transition-opacity ${s}`,children:(0,K.jsx)(mf,{className:`h-4 w-4`})})]})}function yN({toasts:e,onRemove:t}){return(0,K.jsx)(`div`,{className:`fixed top-4 right-4 z-50 flex flex-col gap-2`,children:e.map(e=>(0,K.jsx)(vN,{message:e.message,type:e.type,duration:e.duration,onClose:()=>t(e.id)},e.id))})}vp();var bN=50;function xN(){let[e,t]=(0,y.useState)(!1),[n,r]=(0,y.useState)(``),[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)(``),c=(0,y.useRef)(null),l=(0,y.useRef)(0),u=Q(e=>e.agents),d=Q(e=>e.workflows),f=Q(e=>e.entities),p=Q(e=>e.selectedAgent),m=Q(e=>e.azureDeploymentEnabled),h=Q(e=>e.isLoadingEntities),g=Q(e=>e.entityError),_=Q(e=>e.oaiMode),v=Q(e=>e.uiMode),b=Q(e=>e.setAgents),x=Q(e=>e.setWorkflows),S=Q(e=>e.setEntities),C=Q(e=>e.selectEntity),w=Q(e=>e.updateAgent),T=Q(e=>e.updateWorkflow),E=Q(e=>e.setIsLoadingEntities),D=Q(e=>e.setEntityError),O=Q(e=>e.showDebugPanel),k=Q(e=>e.debugPanelMinimized),A=Q(e=>e.debugPanelWidth),j=Q(e=>e.debugEvents),M=Q(e=>e.isResizing),N=Q(e=>e.setShowDebugPanel),P=Q(e=>e.setDebugPanelMinimized),F=Q(e=>e.setDebugPanelWidth),I=Q(e=>e.addDebugEvent),L=Q(e=>e.clearDebugEvents),R=Q(e=>e.setIsResizing),z=Q(e=>e.showAboutModal),B=Q(e=>e.showGallery),ee=Q(e=>e.showDeployModal),V=Q(e=>e.showEntityNotFoundToast),H=Q(e=>e.setShowAboutModal),te=Q(e=>e.setShowGallery),ne=Q(e=>e.setShowDeployModal),re=Q(e=>e.setShowEntityNotFoundToast),ie=Q(e=>e.toasts),ae=Q(e=>e.addToast),oe=Q(e=>e.removeToast);(0,y.useEffect)(()=>{(async()=>{try{let e=await R_.getMeta();if(e.auth_required&&(t(!0),!R_.getAuthToken())){D(`UNAUTHORIZED`),E(!1);return}let n={instrumentation:e.capabilities.instrumentation??e.capabilities.tracing??!1,trace_retrieval:e.capabilities.trace_retrieval??!1,openai_proxy:e.capabilities.openai_proxy,deployment:e.capabilities.deployment};Q.getState().setServerMeta({uiMode:e.ui_mode,runtime:e.runtime,capabilities:n,authRequired:e.auth_required,version:e.version});let{entities:r,agents:i,workflows:a}=await R_.getEntities();S(r),b(i),x(a);let o=new URLSearchParams(window.location.search).get(`entity_id`),s;if(o&&(s=r.find(e=>e.id===o),s||re(!0)),!s){if(s=r.length>0?r[0]:void 0,s){let e=new URL(window.location.href);e.searchParams.set(`entity_id`,s.id),window.history.replaceState({},``,e)}else{let e=new URL(window.location.href);e.searchParams.delete(`entity_id`),window.history.replaceState({},``,e)}}if(s&&(C(s),s.metadata?.lazy_loaded===!1))try{if(s.type===`agent`){let e=await R_.getAgentInfo(s.id);w(e)}else{let e=await R_.getWorkflowInfo(s.id);T(e)}}catch(e){console.error(`Failed to load full info for first entity ${s.id}:`,e);let t=e instanceof Error?e.message:String(e);ae({type:`error`,message:`Failed to load "${s.id}": ${t}`})}E(!1)}catch(e){console.error(`Failed to load agents/workflows:`,e);let n=e instanceof Error?e.message:`Failed to load data`;n===`UNAUTHORIZED`&&t(!0),D(n),E(!1)}})()},[b,x,C,w,T,E,D,re,ae,S]);let se=(0,y.useCallback)(async()=>{if(n.trim()){a(!0),s(``);try{R_.setAuthToken(n.trim()),await R_.getEntities(),window.location.reload()}catch(e){R_.clearAuthToken(),a(!1);let t=e instanceof Error?e.message:`Unknown error`;s(t===`UNAUTHORIZED`?`Invalid token. Please check and try again.`:`Failed to connect: ${t}`)}}},[n]);(0,y.useEffect)(()=>{if(_.enabled&&p?.type===`workflow`){let e=u[0];e&&C(e)}},[_.enabled,p,u,C]);let U=(0,y.useCallback)(e=>{e.preventDefault(),R(!0);let t=e.clientX,n=A,r=e=>{let r=t-e.clientX,i=Math.max(200,Math.min(window.innerWidth*.5,n+r));F(i)},i=()=>{R(!1),document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[A]),ce=(0,y.useCallback)(async e=>{if(C(e),e.metadata?.lazy_loaded===!1)try{if(e.type===`agent`){let t=await R_.getAgentInfo(e.id);w(t)}else{let t=await R_.getWorkflowInfo(e.id);T(t)}}catch(t){console.error(`Failed to load full info for ${e.id}:`,t);let n=t instanceof Error?t.message:String(t);ae({type:`error`,message:`Failed to load "${e.id}": ${n}`})}},[C,w,T,ae]),le=(0,y.useCallback)(()=>{let e=c.current;e&&(c.current=null,l.current=performance.now(),I(e))},[I]),ue=(0,y.useCallback)(e=>{if(e===`clear`){c.current=null,L();return}if(e.type===`response.output_text.delta`&&`delta`in e&&typeof e.delta==`string`&&e.delta.length>0){let t=c.current;t!==null&&t.item_id===e.item_id&&t.output_index===e.output_index&&t.content_index===e.content_index&&t?c.current={...t,delta:t.delta+e.delta,sequence_number:e.sequence_number??t.sequence_number}:(le(),c.current={...e}),performance.now()-l.current>=bN&&le();return}le(),I(e)},[I,L,le]);if(h)return(0,K.jsxs)(`div`,{className:`h-screen flex flex-col bg-background`,children:[(0,K.jsxs)(`header`,{className:`flex h-14 items-center gap-4 border-b px-4`,children:[(0,K.jsx)(`div`,{className:`w-64 h-9 bg-muted animate-pulse rounded-md`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,K.jsx)(`div`,{className:`w-8 h-8 bg-muted animate-pulse rounded-md`}),(0,K.jsx)(`div`,{className:`w-8 h-8 bg-muted animate-pulse rounded-md`})]})]}),(0,K.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,K.jsxs)(`div`,{className:`text-center`,children:[(0,K.jsx)(`div`,{className:`text-lg font-medium`,children:`Initializing DevUI...`}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground mt-2`,children:`Loading agents and workflows from your configuration`})]})})]});if(g){let t=R_.getBaseUrl(),a=g===`UNAUTHORIZED`||e,s=`8080`;try{if(t){let e=new URL(t);s=e.port||(e.protocol===`https:`?`443`:`80`)}}catch{}return(0,K.jsxs)(`div`,{className:`h-screen flex flex-col bg-background`,children:[(0,K.jsx)(yp,{agents:[],workflows:[],entities:[],selectedItem:void 0,onSelect:()=>{},isLoading:!1,onSettingsClick:()=>H(!0)}),(0,K.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,K.jsxs)(`div`,{className:`text-center space-y-6 max-w-2xl`,children:[(0,K.jsx)(`div`,{className:`flex justify-center`,children:(0,K.jsx)(`div`,{className:`rounded-full bg-muted p-4 animate-pulse`,children:a?(0,K.jsx)(dd,{className:`h-12 w-12 text-muted-foreground`}):(0,K.jsx)(Gd,{className:`h-12 w-12 text-muted-foreground`})})}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(`h2`,{className:`text-2xl font-semibold text-foreground`,children:a?`Authentication Required`:`Can't Connect to Backend`}),(0,K.jsx)(`p`,{className:`text-muted-foreground text-base`,children:a?`This backend requires a bearer token to access.`:`No worries! Just start the DevUI backend server and you'll be good to go.`})]}),a?(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`text-left bg-muted/50 rounded-lg p-4 space-y-3`,children:[(0,K.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Enter Authentication Token`}),(0,K.jsx)(Fg,{type:`password`,placeholder:`Paste token from server logs`,value:n,onChange:e=>r(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!i&&se()},disabled:i,className:`font-mono text-sm`}),(0,K.jsx)(q,{onClick:se,disabled:!n.trim()||i,className:`w-full`,children:i?`Verifying...`:`Connect`}),o&&(0,K.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400 text-center`,children:o})]}),(0,K.jsxs)(`details`,{className:`text-left group`,children:[(0,K.jsxs)(`summary`,{className:`text-sm text-muted-foreground cursor-pointer hover:text-foreground flex items-center gap-2 justify-center`,children:[(0,K.jsx)(su,{className:`h-4 w-4 transition-transform group-open:rotate-180`}),`Where do I find the token?`]}),(0,K.jsxs)(`div`,{className:`mt-3 text-left bg-muted/30 rounded-lg p-3 space-y-2`,children:[(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Look for this in your DevUI server startup logs:`}),(0,K.jsxs)(`code`,{className:`block bg-background px-2 py-1 rounded text-xs font-mono text-foreground`,children:[`🔑 DEV TOKEN (localhost only, shown once):`,(0,K.jsx)(`br`,{}),`\xA0\xA0 abc123xyz...`]})]})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`text-left bg-muted/50 rounded-lg p-4 space-y-3`,children:[(0,K.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Start the backend:`}),(0,K.jsxs)(`code`,{className:`block bg-background px-3 py-2 rounded border text-sm font-mono text-foreground`,children:[`devui ./agents --port `,s]}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Or launch programmatically with`,` `,(0,K.jsx)(`code`,{className:`text-xs`,children:`serve(entities=[agent])`})]})]}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Default:`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:t})]})]}),g&&(0,K.jsxs)(`details`,{className:`text-left group`,children:[(0,K.jsxs)(`summary`,{className:`text-sm text-muted-foreground cursor-pointer hover:text-foreground flex items-center gap-2`,children:[(0,K.jsx)(su,{className:`h-4 w-4 transition-transform group-open:rotate-180`}),`Error details`]}),(0,K.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground font-mono bg-muted/30 p-3 rounded border`,children:g})]}),(0,K.jsx)(q,{onClick:()=>window.location.reload(),variant:`default`,className:`mt-2`,children:`Retry Connection`})]})]})}),(0,K.jsx)(i_,{open:z,onOpenChange:H})]})}return(0,K.jsxs)(`div`,{className:`h-screen flex flex-col bg-background max-h-screen`,children:[(0,K.jsx)(yp,{agents:u,workflows:d,entities:f,selectedItem:p,onSelect:ce,onBrowseGallery:()=>te(!0),isLoading:h,onSettingsClick:()=>H(!0)}),(0,K.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:B?(0,K.jsx)(`div`,{className:`flex-1 w-full`,children:(0,K.jsx)(nv,{variant:`route`,onClose:()=>te(!1),hasExistingEntities:u.length>0||d.length>0})}):u.length===0&&d.length===0?(0,K.jsx)(nv,{variant:`inline`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`flex-1 min-w-0`,children:p?p.type===`agent`?(0,K.jsx)(Jy,{selectedAgent:p,onDebugEvent:ue}):(0,K.jsx)(_N,{selectedWorkflow:p,onDebugEvent:ue}):(0,K.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground`,children:`Select an agent or workflow to get started.`})}),v===`developer`&&O?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`w-1 cursor-col-resize flex-shrink-0 relative group transition-colors duration-200 ease-in-out ${M?`bg-primary/40`:`bg-border hover:bg-primary/20`}`,onMouseDown:U,children:(0,K.jsx)(`div`,{className:`absolute inset-y-0 -left-2 -right-2 flex items-center justify-center`,children:(0,K.jsx)(`div`,{className:`h-12 w-1 rounded-full transition-all duration-200 ease-in-out ${M?`bg-primary shadow-lg shadow-primary/25`:`bg-primary/30 group-hover:bg-primary group-hover:shadow-md group-hover:shadow-primary/20`}`})})}),(0,K.jsx)(`div`,{className:`flex-shrink-0 flex flex-col h-[calc(100vh-3.7rem)]`,style:{width:k?`2.5rem`:`${A}px`},children:k?(0,K.jsxs)(`div`,{className:`h-full w-10 bg-background border-l flex flex-col items-center py-2 cursor-pointer hover:bg-accent/50 transition-colors`,onClick:()=>P(!1),title:`Expand debug panel`,children:[(0,K.jsx)(`div`,{className:`h-8 w-8 flex items-center justify-center`,children:(0,K.jsx)(lu,{className:`h-4 w-4 text-muted-foreground`})}),(0,K.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-2 pointer-events-none`,children:[(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground select-none`,style:{writingMode:`vertical-rl`,transform:`rotate(180deg)`},children:`Debug Panel`}),j.length>0&&(0,K.jsx)(`div`,{className:`bg-primary text-primary-foreground rounded-full w-5 h-5 flex items-center justify-center`,style:{fontSize:`10px`},children:j.length})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dg,{events:j,isStreaming:!1,onMinimize:()=>P(!0)}),(0,K.jsx)(`div`,{className:`border-t bg-muted/30 px-3 py-2.5 flex-shrink-0`,children:(0,K.jsxs)(q,{onClick:()=>ne(!0),className:`w-full`,variant:`outline`,size:`sm`,children:[(0,K.jsx)(Fd,{className:`h-3 w-3 mr-2 flex-shrink-0`}),(0,K.jsx)(`span`,{className:`truncate text-xs`,children:m&&p?.deployment_supported?`Deploy to Azure`:`Deployment Guide`})]})})]})})]}):v===`developer`?(0,K.jsx)(`div`,{className:`flex-shrink-0`,children:(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>N(!0),className:`h-full w-10 rounded-none border-l`,title:`Show debug panel`,children:(0,K.jsx)(Td,{className:`h-4 w-4`})})}):null]})}),(0,K.jsx)(i_,{open:z,onOpenChange:H}),(0,K.jsx)(z_,{open:ee,onClose:()=>ne(!1),agentName:p?.name,entity:p}),V&&(0,K.jsx)(vN,{message:`Entity not found. Showing first available entity instead.`,type:`info`,onClose:()=>re(!1)}),(0,K.jsx)(yN,{toasts:ie,onRemove:oe})]})}function SN({children:e,attribute:t=`class`,defaultTheme:n=`dark`,enableSystem:r=!0,disableTransitionOnChange:i=!0,...a}){return(0,K.jsx)(Nf,{attribute:t,defaultTheme:n,enableSystem:r,disableTransitionOnChange:i,...a,children:e})}v_(),(0,b.createRoot)(document.getElementById(`root`)).render((0,K.jsx)(y.StrictMode,{children:(0,K.jsx)(SN,{attribute:`class`,defaultTheme:`dark`,enableSystem:!0,disableTransitionOnChange:!0,children:(0,K.jsx)(xN,{})})})); \ No newline at end of file +`+t:t);try{let n=e.type===`output_text`?JSON.parse(t):void 0;typeof n==`object`&&n&&(z.current=n)}catch{}}}}if((e.type===`response.output_text.delta`||e.type===`response.refusal.delta`)&&`delta`in e&&e.delta){let t=R.current;t&&(L.current[t]||(L.current[t]=``),L.current[t]+=e.delta)}e.type===`response.completed`&&await me(),e.type===`response.failed`&&await me()}a&&P(o),d(!1),await me()}catch(e){b_(e)?(console.log(`HIL submission cancelled by user`),p(!0)):console.error(`HIL submission error:`,e),d(!1),M(),await me()}},[e,F,t,B,Ee,A,M,me]);return i?(0,K.jsx)(Yy,{message:`Loading workflow...`,description:`Fetching workflow structure and configuration`}):o?(0,K.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,K.jsxs)(`div`,{className:`text-center max-w-md p-6`,children:[(0,K.jsx)(`div`,{className:`text-red-500 mb-4`,children:(0,K.jsx)(`svg`,{className:`w-16 h-16 mx-auto`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,K.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z`})})}),(0,K.jsx)(`h3`,{className:`text-lg font-semibold mb-2`,children:`Failed to Load Workflow`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground mb-4`,children:o}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`This may not be a valid workflow entity. Check the file contains a workflow export.`})]})}):!n?.workflow_dump&&!xe.length?(0,K.jsx)(Yy,{message:`Initializing workflow...`,description:`Setting up workflow execution environment`}):(0,K.jsxs)(`div`,{className:`workflow-view flex flex-col h-full`,children:[(0,K.jsxs)(`div`,{className:`border-b pb-2 p-4 flex-shrink-0`,children:[(0,K.jsxs)(`div`,{className:`flex flex-col lg:flex-row lg:items-center lg:justify-between gap-3 mb-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,K.jsx)(`h2`,{className:`font-semibold text-sm truncate`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(uf,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsx)(`span`,{className:`truncate`,children:e.name||e.id})]})}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>_(!0),className:`h-6 w-6 p-0 flex-shrink-0`,title:`View workflow details`,children:(0,K.jsx)(td,{className:`h-4 w-4`})}),e.source!==`in_memory`&&(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:fe,disabled:x,className:`h-6 w-6 p-0 flex-shrink-0`,title:x?`Reloading...`:`Reload entity code (hot reload)`,children:(0,K.jsx)(Nd,{className:`h-4 w-4 ${x?`animate-spin`:``}`})})]}),n&&(0,K.jsxs)(`div`,{className:`flex flex-col sm:flex-row items-stretch sm:items-center gap-2 flex-shrink-0`,children:[(0,K.jsxs)(Ny,{value:B?.conversation_id||``,onValueChange:ge,disabled:V,children:[(0,K.jsx)(Fy,{className:`w-full sm:w-64`,children:(0,K.jsx)(Py,{placeholder:V?`Loading...`:ee.length===0?`No checkpoint storages`:`Select checkpoint storage`,children:B&&(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:B.metadata.name||`Checkpoint Storage ${B.conversation_id.slice(-8)}`}),B.metadata.checkpoint_summary&&B.metadata.checkpoint_summary.count>0&&(0,K.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:B.metadata.checkpoint_summary.count}),B.metadata.checkpoint_summary.has_pending_hil&&(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:`HIL`})]})]})})}),(0,K.jsx)(Iy,{children:ee.map(e=>(0,K.jsx)(Ly,{value:e.conversation_id,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between w-full gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:e.metadata.name||`Checkpoint Storage ${e.conversation_id.slice(-8)}`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[e.created_at&&(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:new Date(e.created_at*1e3).toLocaleTimeString()}),e.metadata.checkpoint_summary&&e.metadata.checkpoint_summary.count>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:e.metadata.checkpoint_summary.count}),e.metadata.checkpoint_summary.has_pending_hil&&(0,K.jsx)(Ft,{variant:`secondary`,className:`h-4 px-1.5 text-[10px]`,children:`HIL`})]})]})]})},e.conversation_id))})]}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>b(!0),disabled:!B,className:`h-9 w-9 p-0 flex-shrink-0`,title:`View checkpoint details`,children:(0,K.jsx)(td,{className:`h-4 w-4`})}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:ve,disabled:!B||V,className:`h-9 w-9 p-0`,title:`Delete current session`,children:(0,K.jsx)(tf,{className:`h-4 w-4 `})}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:_e,disabled:V,className:`h-9 px-3`,title:`New session`,children:(0,K.jsx)(jd,{className:`h-4 w-4`})}),C&&(0,K.jsx)(xb,{inputSchema:n.input_schema,onRun:Te,onCancel:j,isSubmitting:u,isCancelling:k,workflowState:u?`running`:xe.length>0?`completed`:`ready`,checkpoints:D,showCheckpoints:!1})]})]}),e.description&&(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.description})]}),N.length>0&&(0,K.jsx)(`div`,{className:`bg-orange-100 dark:bg-orange-950/30 border-b border-orange-300 dark:border-orange-800 px-4 py-2`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(hu,{className:`w-4 h-4 text-orange-600 dark:text-orange-400`}),(0,K.jsxs)(`span`,{className:`text-sm font-medium text-orange-900 dark:text-orange-100`,children:[`Workflow is waiting for your input (`,N.length,` `,`request`,N.length>1?`s`:``,`)`]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[N.length>1&&(0,K.jsxs)(q,{size:`sm`,onClick:De,disabled:!Ee()||u,className:`gap-1`,children:[(0,K.jsx)(Ud,{className:`w-3.5 h-3.5`}),`Submit All`]}),(0,K.jsx)(q,{size:`sm`,variant:`ghost`,onClick:()=>{document.querySelector(`[data-hil-form]`)?.scrollIntoView({behavior:`smooth`,block:`center`})},className:`text-orange-700 hover:text-orange-900 dark:text-orange-400 dark:hover:text-orange-200`,children:`Jump to input →`})]})]})}),(0,K.jsxs)(`div`,{className:`flex-1 min-h-0 flex gap-0`,children:[(0,K.jsx)(`div`,{className:`flex-1 min-w-0 transition-all duration-300`,children:n?.workflow_dump&&(0,K.jsx)(oN,{workflowDump:n.workflow_dump,events:be,isStreaming:u,onNodeSelect:ye,className:`h-full`,viewOptions:U,onToggleViewOption:de,layoutDirection:le,onLayoutDirectionChange:ue,timelineVisible:!0})}),(0,K.jsx)(`div`,{className:`flex-shrink-0 overflow-hidden transition-all duration-300 ease-out border-l`,style:{width:C?`2.5rem`:`28rem`},children:C?(0,K.jsxs)(`div`,{className:`h-full w-10 bg-background flex flex-col items-center py-2 cursor-pointer hover:bg-accent/50 transition-colors`,onClick:()=>w(!1),title:`Expand timeline`,children:[(0,K.jsx)(`div`,{className:`h-8 w-8 flex items-center justify-center`,children:(0,K.jsx)(lu,{className:`h-4 w-4 text-muted-foreground`})}),(0,K.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-2 pointer-events-none`,children:[(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground select-none`,style:{writingMode:`vertical-rl`,transform:`rotate(180deg)`},children:`Execution Timeline`}),be.length>0&&(0,K.jsx)(`div`,{className:`bg-primary text-primary-foreground rounded-full w-5 h-5 flex items-center justify-center ${u?`animate-pulse`:``}`,style:{fontSize:`10px`},children:be.length})]})]}):(0,K.jsxs)(`div`,{className:`w-[28rem] h-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between p-2 border-b`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`h3`,{className:`text-sm font-medium`,children:`Execution Timeline`}),be.length>0&&(0,K.jsx)(`div`,{className:`bg-primary text-primary-foreground rounded-full px-2 h-5 flex items-center justify-center ${u?`animate-pulse`:``}`,style:{fontSize:`11px`,minWidth:`20px`},children:be.length})]}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>w(!0),className:`h-8 w-8 p-0`,title:`Minimize timeline`,children:(0,K.jsx)(du,{className:`h-4 w-4`})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden`,children:(0,K.jsx)(hN,{events:be,itemOutputs:L.current,currentExecutorId:Se[Se.length-1]||null,isStreaming:u,onExecutorClick:ye,selectedExecutorId:m,workflowResult:T,pendingHilRequests:N,hilResponses:F,onHilResponseChange:(e,t)=>{I(n=>({...n,[e]:t}))},onHilSubmit:De,isSubmittingHil:u,inputSchema:n?.input_schema,onRun:(e,t)=>{Te(e,t)},onCancel:j,isCancelling:k,workflowState:u?`running`:f?`cancelled`:xe.length>0?`completed`:`ready`,wasCancelled:f,checkpoints:D})})]})})]}),(0,K.jsx)(cN,{workflow:e,open:g,onOpenChange:_}),(0,K.jsx)(lN,{session:B||null,checkpoints:D,open:v,onOpenChange:b})]})}function vN({message:e,type:t=`info`,duration:n=4e3,onClose:r}){let[i,a]=(0,y.useState)(!0);(0,y.useEffect)(()=>{let e=setTimeout(()=>{a(!1),setTimeout(r,300)},n);return()=>clearTimeout(e)},[n,r]);let o={info:`bg-primary/10 border-primary/20`,success:`bg-green-50 dark:bg-green-950 border-green-200 dark:border-green-800`,warning:`bg-orange-50 dark:bg-orange-950 border-orange-200 dark:border-orange-800`,error:`bg-red-50 dark:bg-red-950 border-red-200 dark:border-red-800`}[t],s={info:`text-primary`,success:`text-green-800 dark:text-green-200`,warning:`text-orange-800 dark:text-orange-200`,error:`text-red-800 dark:text-red-200`}[t];return(0,K.jsxs)(`div`,{className:`fixed top-4 right-4 z-50 flex items-start gap-3 p-4 rounded-lg border shadow-lg max-w-md transition-all duration-300 ${i?`opacity-100 translate-x-0`:`opacity-0 translate-x-4`} ${o}`,children:[(0,K.jsx)(`p`,{className:`text-sm flex-1 ${s}`,children:e}),(0,K.jsx)(`button`,{onClick:()=>{a(!1),setTimeout(r,300)},className:`flex-shrink-0 hover:opacity-70 transition-opacity ${s}`,children:(0,K.jsx)(mf,{className:`h-4 w-4`})})]})}function yN({toasts:e,onRemove:t}){return(0,K.jsx)(`div`,{className:`fixed top-4 right-4 z-50 flex flex-col gap-2`,children:e.map(e=>(0,K.jsx)(vN,{message:e.message,type:e.type,duration:e.duration,onClose:()=>t(e.id)},e.id))})}vp();var bN=50;function xN(){let[e,t]=(0,y.useState)(!1),[n,r]=(0,y.useState)(``),[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)(``),c=(0,y.useRef)(null),l=(0,y.useRef)(0),u=Q(e=>e.agents),d=Q(e=>e.workflows),f=Q(e=>e.entities),p=Q(e=>e.selectedAgent),m=Q(e=>e.azureDeploymentEnabled),h=Q(e=>e.isLoadingEntities),g=Q(e=>e.entityError),_=Q(e=>e.oaiMode),v=Q(e=>e.uiMode),b=Q(e=>e.setAgents),x=Q(e=>e.setWorkflows),S=Q(e=>e.setEntities),C=Q(e=>e.selectEntity),w=Q(e=>e.updateAgent),T=Q(e=>e.updateWorkflow),E=Q(e=>e.setIsLoadingEntities),D=Q(e=>e.setEntityError),O=Q(e=>e.showDebugPanel),k=Q(e=>e.debugPanelMinimized),A=Q(e=>e.debugPanelWidth),j=Q(e=>e.debugEvents),M=Q(e=>e.isResizing),N=Q(e=>e.setShowDebugPanel),P=Q(e=>e.setDebugPanelMinimized),F=Q(e=>e.setDebugPanelWidth),I=Q(e=>e.addDebugEvent),L=Q(e=>e.clearDebugEvents),R=Q(e=>e.setIsResizing),z=Q(e=>e.showAboutModal),B=Q(e=>e.showGallery),ee=Q(e=>e.showDeployModal),V=Q(e=>e.showEntityNotFoundToast),H=Q(e=>e.setShowAboutModal),te=Q(e=>e.setShowGallery),ne=Q(e=>e.setShowDeployModal),re=Q(e=>e.setShowEntityNotFoundToast),ie=Q(e=>e.toasts),ae=Q(e=>e.addToast),oe=Q(e=>e.removeToast);(0,y.useEffect)(()=>{(async()=>{try{let e=await R_.getMeta();if(e.auth_required&&(t(!0),!R_.getAuthToken())){D(`UNAUTHORIZED`),E(!1);return}let n={instrumentation:e.capabilities.instrumentation??e.capabilities.tracing??!1,trace_retrieval:e.capabilities.trace_retrieval??!1,openai_proxy:e.capabilities.openai_proxy,deployment:e.capabilities.deployment};Q.getState().setServerMeta({uiMode:e.ui_mode,runtime:e.runtime,capabilities:n,authRequired:e.auth_required,version:e.version});let{entities:r,agents:i,workflows:a}=await R_.getEntities();S(r),b(i),x(a);let o=new URLSearchParams(window.location.search).get(`entity_id`),s;if(o&&(s=r.find(e=>e.id===o),s||re(!0)),!s){if(s=r.length>0?r[0]:void 0,s){let e=new URL(window.location.href);e.searchParams.set(`entity_id`,s.id),window.history.replaceState({},``,e)}else{let e=new URL(window.location.href);e.searchParams.delete(`entity_id`),window.history.replaceState({},``,e)}}if(s&&(C(s),s.metadata?.lazy_loaded===!1))try{if(s.type===`agent`){let e=await R_.getAgentInfo(s.id);w(e)}else{let e=await R_.getWorkflowInfo(s.id);T(e)}}catch(e){console.error(`Failed to load full info for first entity ${s.id}:`,e);let t=e instanceof Error?e.message:String(e);ae({type:`error`,message:`Failed to load "${s.id}": ${t}`})}E(!1)}catch(e){console.error(`Failed to load agents/workflows:`,e);let n=e instanceof Error?e.message:`Failed to load data`;n===`UNAUTHORIZED`&&t(!0),D(n),E(!1)}})()},[b,x,C,w,T,E,D,re,ae,S]);let se=(0,y.useCallback)(async()=>{if(n.trim()){a(!0),s(``);try{R_.setAuthToken(n.trim()),await R_.getEntities(),window.location.reload()}catch(e){R_.clearAuthToken(),a(!1);let t=e instanceof Error?e.message:`Unknown error`;s(t===`UNAUTHORIZED`?`Invalid token. Please check and try again.`:`Failed to connect: ${t}`)}}},[n]);(0,y.useEffect)(()=>{if(_.enabled&&p?.type===`workflow`){let e=u[0];e&&C(e)}},[_.enabled,p,u,C]);let U=(0,y.useCallback)(e=>{e.preventDefault(),R(!0);let t=e.clientX,n=A,r=e=>{let r=t-e.clientX,i=Math.max(200,Math.min(window.innerWidth*.5,n+r));F(i)},i=()=>{R(!1),document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)},[A]),ce=(0,y.useCallback)(async e=>{if(C(e),e.metadata?.lazy_loaded===!1)try{if(e.type===`agent`){let t=await R_.getAgentInfo(e.id);w(t)}else{let t=await R_.getWorkflowInfo(e.id);T(t)}}catch(t){console.error(`Failed to load full info for ${e.id}:`,t);let n=t instanceof Error?t.message:String(t);ae({type:`error`,message:`Failed to load "${e.id}": ${n}`})}},[C,w,T,ae]),le=(0,y.useCallback)(()=>{let e=c.current;e&&(c.current=null,l.current=performance.now(),I(e))},[I]),ue=(0,y.useCallback)(e=>{if(e===`clear`){c.current=null,L();return}if(e.type===`response.output_text.delta`&&`delta`in e&&typeof e.delta==`string`&&e.delta.length>0){let t=c.current;t!==null&&t.item_id===e.item_id&&t.output_index===e.output_index&&t.content_index===e.content_index&&t?c.current={...t,delta:t.delta+e.delta,sequence_number:e.sequence_number??t.sequence_number}:(le(),c.current={...e}),performance.now()-l.current>=bN&&le();return}le(),I(e)},[I,L,le]);if(h)return(0,K.jsxs)(`div`,{className:`h-screen flex flex-col bg-background`,children:[(0,K.jsxs)(`header`,{className:`flex h-14 items-center gap-4 border-b px-4`,children:[(0,K.jsx)(`div`,{className:`w-64 h-9 bg-muted animate-pulse rounded-md`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,K.jsx)(`div`,{className:`w-8 h-8 bg-muted animate-pulse rounded-md`}),(0,K.jsx)(`div`,{className:`w-8 h-8 bg-muted animate-pulse rounded-md`})]})]}),(0,K.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,K.jsxs)(`div`,{className:`text-center`,children:[(0,K.jsx)(`div`,{className:`text-lg font-medium`,children:`Initializing DevUI...`}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground mt-2`,children:`Loading agents and workflows from your configuration`})]})})]});if(g){let t=R_.getBaseUrl(),a=g===`UNAUTHORIZED`||e,s=`8080`;try{if(t){let e=new URL(t);s=e.port||(e.protocol===`https:`?`443`:`80`)}}catch{}return(0,K.jsxs)(`div`,{className:`h-screen flex flex-col bg-background`,children:[(0,K.jsx)(yp,{agents:[],workflows:[],entities:[],selectedItem:void 0,onSelect:()=>{},isLoading:!1,onSettingsClick:()=>H(!0)}),(0,K.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,K.jsxs)(`div`,{className:`text-center space-y-6 max-w-2xl`,children:[(0,K.jsx)(`div`,{className:`flex justify-center`,children:(0,K.jsx)(`div`,{className:`rounded-full bg-muted p-4 animate-pulse`,children:a?(0,K.jsx)(dd,{className:`h-12 w-12 text-muted-foreground`}):(0,K.jsx)(Gd,{className:`h-12 w-12 text-muted-foreground`})})}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(`h2`,{className:`text-2xl font-semibold text-foreground`,children:a?`Authentication Required`:`Can't Connect to Backend`}),(0,K.jsx)(`p`,{className:`text-muted-foreground text-base`,children:a?`This backend requires a bearer token to access.`:`No worries! Just start the DevUI backend server and you'll be good to go.`})]}),a?(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`text-left bg-muted/50 rounded-lg p-4 space-y-3`,children:[(0,K.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Enter Authentication Token`}),(0,K.jsx)(Fg,{type:`password`,placeholder:`Paste token from server logs`,value:n,onChange:e=>r(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!i&&se()},disabled:i,className:`font-mono text-sm`}),(0,K.jsx)(q,{onClick:se,disabled:!n.trim()||i,className:`w-full`,children:i?`Verifying...`:`Connect`}),o&&(0,K.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400 text-center`,children:o})]}),(0,K.jsxs)(`details`,{className:`text-left group`,children:[(0,K.jsxs)(`summary`,{className:`text-sm text-muted-foreground cursor-pointer hover:text-foreground flex items-center gap-2 justify-center`,children:[(0,K.jsx)(su,{className:`h-4 w-4 transition-transform group-open:rotate-180`}),`Where do I find the token?`]}),(0,K.jsxs)(`div`,{className:`mt-3 text-left bg-muted/30 rounded-lg p-3 space-y-2`,children:[(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Look for this in your DevUI server startup logs:`}),(0,K.jsxs)(`code`,{className:`block bg-background px-2 py-1 rounded text-xs font-mono text-foreground`,children:[`🔑 DEV TOKEN (localhost only, shown once):`,(0,K.jsx)(`br`,{}),`\xA0\xA0 abc123xyz...`]})]})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`text-left bg-muted/50 rounded-lg p-4 space-y-3`,children:[(0,K.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Start the backend:`}),(0,K.jsxs)(`code`,{className:`block bg-background px-3 py-2 rounded border text-sm font-mono text-foreground`,children:[`devui ./agents --port `,s]}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Or launch programmatically with`,` `,(0,K.jsx)(`code`,{className:`text-xs`,children:`serve(entities=[agent])`})]})]}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Default:`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:t})]})]}),g&&(0,K.jsxs)(`details`,{className:`text-left group`,children:[(0,K.jsxs)(`summary`,{className:`text-sm text-muted-foreground cursor-pointer hover:text-foreground flex items-center gap-2`,children:[(0,K.jsx)(su,{className:`h-4 w-4 transition-transform group-open:rotate-180`}),`Error details`]}),(0,K.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground font-mono bg-muted/30 p-3 rounded border`,children:g})]}),(0,K.jsx)(q,{onClick:()=>window.location.reload(),variant:`default`,className:`mt-2`,children:`Retry Connection`})]})]})}),(0,K.jsx)(i_,{open:z,onOpenChange:H})]})}return(0,K.jsxs)(`div`,{className:`h-screen flex flex-col bg-background max-h-screen`,children:[(0,K.jsx)(yp,{agents:u,workflows:d,entities:f,selectedItem:p,onSelect:ce,onBrowseGallery:()=>te(!0),isLoading:h,onSettingsClick:()=>H(!0)}),(0,K.jsx)(`div`,{className:`flex flex-1 overflow-hidden`,children:B?(0,K.jsx)(`div`,{className:`flex-1 w-full`,children:(0,K.jsx)(nv,{variant:`route`,onClose:()=>te(!1),hasExistingEntities:u.length>0||d.length>0})}):u.length===0&&d.length===0?(0,K.jsx)(nv,{variant:`inline`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`flex-1 min-w-0`,children:p?p.type===`agent`?(0,K.jsx)(Jy,{selectedAgent:p,onDebugEvent:ue}):(0,K.jsx)(_N,{selectedWorkflow:p,onDebugEvent:ue}):(0,K.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground`,children:`Select an agent or workflow to get started.`})}),v===`developer`&&O?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`w-1 cursor-col-resize flex-shrink-0 relative group transition-colors duration-200 ease-in-out ${M?`bg-primary/40`:`bg-border hover:bg-primary/20`}`,onMouseDown:U,children:(0,K.jsx)(`div`,{className:`absolute inset-y-0 -left-2 -right-2 flex items-center justify-center`,children:(0,K.jsx)(`div`,{className:`h-12 w-1 rounded-full transition-all duration-200 ease-in-out ${M?`bg-primary shadow-lg shadow-primary/25`:`bg-primary/30 group-hover:bg-primary group-hover:shadow-md group-hover:shadow-primary/20`}`})})}),(0,K.jsx)(`div`,{className:`flex-shrink-0 flex flex-col h-[calc(100vh-3.7rem)]`,style:{width:k?`2.5rem`:`${A}px`},children:k?(0,K.jsxs)(`div`,{className:`h-full w-10 bg-background border-l flex flex-col items-center py-2 cursor-pointer hover:bg-accent/50 transition-colors`,onClick:()=>P(!1),title:`Expand debug panel`,children:[(0,K.jsx)(`div`,{className:`h-8 w-8 flex items-center justify-center`,children:(0,K.jsx)(lu,{className:`h-4 w-4 text-muted-foreground`})}),(0,K.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center gap-2 pointer-events-none`,children:[(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground select-none`,style:{writingMode:`vertical-rl`,transform:`rotate(180deg)`},children:`Debug Panel`}),j.length>0&&(0,K.jsx)(`div`,{className:`bg-primary text-primary-foreground rounded-full w-5 h-5 flex items-center justify-center`,style:{fontSize:`10px`},children:j.length})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dg,{events:j,isStreaming:!1,onMinimize:()=>P(!0)}),(0,K.jsx)(`div`,{className:`border-t bg-muted/30 px-3 py-2.5 flex-shrink-0`,children:(0,K.jsxs)(q,{onClick:()=>ne(!0),className:`w-full`,variant:`outline`,size:`sm`,children:[(0,K.jsx)(Fd,{className:`h-3 w-3 mr-2 flex-shrink-0`}),(0,K.jsx)(`span`,{className:`truncate text-xs`,children:m&&p?.deployment_supported?`Deploy to Azure`:`Deployment Guide`})]})})]})})]}):v===`developer`?(0,K.jsx)(`div`,{className:`flex-shrink-0`,children:(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>N(!0),className:`h-full w-10 rounded-none border-l`,title:`Show debug panel`,children:(0,K.jsx)(Td,{className:`h-4 w-4`})})}):null]})}),(0,K.jsx)(i_,{open:z,onOpenChange:H}),(0,K.jsx)(z_,{open:ee,onClose:()=>ne(!1),agentName:p?.name,entity:p}),V&&(0,K.jsx)(vN,{message:`Entity not found. Showing first available entity instead.`,type:`info`,onClose:()=>re(!1)}),(0,K.jsx)(yN,{toasts:ie,onRemove:oe})]})}function SN({children:e,attribute:t=`class`,defaultTheme:n=`dark`,enableSystem:r=!0,disableTransitionOnChange:i=!0,...a}){return(0,K.jsx)(Nf,{attribute:t,defaultTheme:n,enableSystem:r,disableTransitionOnChange:i,...a,children:e})}v_(),(0,b.createRoot)(document.getElementById(`root`)).render((0,K.jsx)(y.StrictMode,{children:(0,K.jsx)(SN,{attribute:`class`,defaultTheme:`dark`,enableSystem:!0,disableTransitionOnChange:!0,children:(0,K.jsx)(xN,{})})})); diff --git a/python/packages/devui/pyproject.toml b/python/packages/devui/pyproject.toml index fc4dfed084d..6746c00be0f 100644 --- a/python/packages/devui/pyproject.toml +++ b/python/packages/devui/pyproject.toml @@ -4,7 +4,7 @@ description = "Debug UI for Microsoft Agent Framework with OpenAI-compatible API authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://github.com/microsoft/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.23.0,<2", "openai>=2.45.0,<4", "opentelemetry-sdk>=1.39.0,<2", "fastapi>=0.115.0,<0.142.0", diff --git a/python/packages/duckdb/README.md b/python/packages/duckdb/README.md index 4c0cbcd4467..0b739a1075f 100644 --- a/python/packages/duckdb/README.md +++ b/python/packages/duckdb/README.md @@ -12,10 +12,9 @@ caller-provided `duckdb.DuckDBPyConnection` objects use the same implementation. pip install agent-framework-duckdb --pre ``` -Python 3.10–3.14 and DuckDB 1.4.1–1.5.x are officially supported. DuckDB does -not yet publish Python 3.15 wheels; installation may build it from source, but -this connector does not advertise Python 3.15 support until upstream wheels are -available. The package also installs `pytz`, which DuckDB uses when returning +Python 3.10–3.15 is officially supported. Python 3.10–3.14 uses DuckDB +1.4.1–1.5.x, while Python 3.15 uses DuckDB 2.x, whose stable-ABI wheels support +Python 3.15. The package also installs `pytz`, which DuckDB uses when returning timezone-aware timestamps. Import `DuckDBStore` and `DuckDBCollection` directly from `agent_framework_duckdb`; this alpha package is not part of `agent-framework-core[all]`. diff --git a/python/packages/duckdb/pyproject.toml b/python/packages/duckdb/pyproject.toml index e618d37bdc0..c44325573f4 100644 --- a/python/packages/duckdb/pyproject.toml +++ b/python/packages/duckdb/pyproject.toml @@ -4,7 +4,7 @@ description = "DuckDB vector stores for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -19,11 +19,13 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Typing :: Typed", ] dependencies = [ "agent-framework-core>=1.19.0,<2", - "duckdb>=1.4.1,<1.6", + "duckdb>=1.4.1,<1.6 ; python_version < '3.15'", + "duckdb>=2.0.0,<3 ; python_version >= '3.15'", "pytz>=2024.1,<2027", ] diff --git a/python/packages/foundry_hosting/pyproject.toml b/python/packages/foundry_hosting/pyproject.toml index c8a5098b55e..f4f41a0b262 100644 --- a/python/packages/foundry_hosting/pyproject.toml +++ b/python/packages/foundry_hosting/pyproject.toml @@ -4,7 +4,7 @@ description = "Foundry Hosting integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.23.0,<2", "azure-ai-agentserver-core>=2.1.0,<3", "azure-ai-agentserver-responses>=2.2.0b1,<3", "azure-ai-agentserver-invocations>=1.1.0,<2", diff --git a/python/packages/gemini/pyproject.toml b/python/packages/gemini/pyproject.toml index f1582f54229..509782d2766 100644 --- a/python/packages/gemini/pyproject.toml +++ b/python/packages/gemini/pyproject.toml @@ -4,7 +4,7 @@ description = "Google Gemini integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/hosting-mcp/pyproject.toml b/python/packages/hosting-mcp/pyproject.toml index 2c007ed45a3..f372af7b0a0 100644 --- a/python/packages/hosting-mcp/pyproject.toml +++ b/python/packages/hosting-mcp/pyproject.toml @@ -4,7 +4,7 @@ description = "Agent and workflow MCP tool adapters for app-owned hosting." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/hosting-responses/pyproject.toml b/python/packages/hosting-responses/pyproject.toml index 15bdcfc7381..52b72237da9 100644 --- a/python/packages/hosting-responses/pyproject.toml +++ b/python/packages/hosting-responses/pyproject.toml @@ -4,7 +4,7 @@ description = "OpenAI Responses-shaped helpers for agent-framework-hosting." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/hyperlight/README.md b/python/packages/hyperlight/README.md index 3c700c4b32e..76e52377936 100644 --- a/python/packages/hyperlight/README.md +++ b/python/packages/hyperlight/README.md @@ -27,9 +27,9 @@ pip install agent-framework-hyperlight --pre This package depends on `hyperlight-sandbox`, the packaged Python guest, and the Wasm backend package on supported platforms. The backend is currently installed -for Python 3.10 through 3.14. If a compatible backend is not published for your -current platform and Python version, `execute_code` will fail at runtime when it -tries to create the sandbox. +for Python 3.10 through 3.15 on Linux x86_64 and Windows AMD64. If a compatible +backend is not published for your current platform and Python version, +`execute_code` will fail at runtime when it tries to create the sandbox. ## Quick start diff --git a/python/packages/hyperlight/agent_framework_hyperlight/_execute_code_tool.py b/python/packages/hyperlight/agent_framework_hyperlight/_execute_code_tool.py index 45fe83f6b1c..c02ce4fdeb7 100644 --- a/python/packages/hyperlight/agent_framework_hyperlight/_execute_code_tool.py +++ b/python/packages/hyperlight/agent_framework_hyperlight/_execute_code_tool.py @@ -1475,8 +1475,8 @@ def _create_sandbox() -> Any: module_path=config.module_path, input_dir=input_dir_handle.name if input_dir_handle is not None else None, output_dir=output_dir_handle.name if output_dir_handle is not None else None, - max_file_size=f"{config.max_output_file_bytes}B", - max_total_size=f"{config.max_output_total_bytes}B", + max_file_size=str(config.max_output_file_bytes), + max_total_size=str(config.max_output_total_bytes), max_file_count=config.max_output_files, ) except ImportError as exc: diff --git a/python/packages/hyperlight/pyproject.toml b/python/packages/hyperlight/pyproject.toml index d8cc3d278cc..107fcd4b301 100644 --- a/python/packages/hyperlight/pyproject.toml +++ b/python/packages/hyperlight/pyproject.toml @@ -4,7 +4,7 @@ description = "Hyperlight CodeAct integrations for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -20,13 +20,14 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Typing :: Typed", ] dependencies = [ "agent-framework-core>=1.19.0,<2", - "hyperlight-sandbox>=0.7.0,<0.8", - "hyperlight-sandbox-backend-wasm>=0.7.0,<0.8 ; python_version < '3.15' and ((sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64'))", - "hyperlight-sandbox-python-guest>=0.7.0,<0.8", + "hyperlight-sandbox>=0.8.0,<0.9", + "hyperlight-sandbox-backend-wasm>=0.8.0,<0.9 ; (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')", + "hyperlight-sandbox-python-guest>=0.8.0,<0.9", ] [tool.uv] diff --git a/python/packages/hyperlight/tests/hyperlight/test_hyperlight_codeact.py b/python/packages/hyperlight/tests/hyperlight/test_hyperlight_codeact.py index fcec3c876e9..e15af170fba 100644 --- a/python/packages/hyperlight/tests/hyperlight/test_hyperlight_codeact.py +++ b/python/packages/hyperlight/tests/hyperlight/test_hyperlight_codeact.py @@ -2631,7 +2631,7 @@ async def test_output_limits_are_isolated_when_registry_is_shared( assert len(_FakeSandbox.instances) == 2 assert [ (sandbox.max_file_size, sandbox.max_total_size, sandbox.max_file_count) for sandbox in _FakeSandbox.instances - ] == [("4B", "10B", 20), ("3B", "10B", 20)] + ] == [("4", "10", 20), ("3", "10", 20)] async def test_default_output_limits_are_forwarded_to_hyperlight_sandbox( @@ -2648,8 +2648,8 @@ async def test_default_output_limits_are_forwarded_to_hyperlight_sandbox( sandbox = _FakeSandbox.instances[0] assert (sandbox.max_file_size, sandbox.max_total_size, sandbox.max_file_count) == ( - "5242880B", - "20971520B", + "5242880", + "20971520", 20, ) @@ -2671,7 +2671,7 @@ async def test_custom_output_limits_are_forwarded_to_hyperlight_sandbox( _close_execute_code_registry(execute_code) sandbox = _FakeSandbox.instances[0] - assert (sandbox.max_file_size, sandbox.max_total_size, sandbox.max_file_count) == ("7B", "11B", 3) + assert (sandbox.max_file_size, sandbox.max_total_size, sandbox.max_file_count) == ("7", "11", 3) def test_execute_code_tool_uses_finite_default_output_limits() -> None: @@ -2823,7 +2823,13 @@ async def test_execute_code_tool_rejects_sparse_file_with_real_sandbox(tmp_path: finally: _close_execute_code_registry(execute_code) - _assert_bounded_output_error(contents, "per-file output limit") + # Hyperlight 0.8 enforces the quota during the guest write, before the + # host-side materializer can report its more specific limit error. + assert not any(item.type == "data" and _decode_content_bytes(item) for item in contents) + errors = [item for item in contents if item.type == "error"] + assert len(errors) == 1 + assert errors[0].message == "Execution error" + assert errors[0].error_details @pytest.mark.flaky diff --git a/python/packages/lab/README.md b/python/packages/lab/README.md index 10a710228c3..fe76e9dbf22 100644 --- a/python/packages/lab/README.md +++ b/python/packages/lab/README.md @@ -53,9 +53,9 @@ pip install "agent-framework-lab[tau2]" pip install "agent-framework-lab[lightning]" ``` -Lab currently supports Python 3.10–3.14. The GAIA extra depends on a PyArrow -release without Python 3.15 wheels, while the Tau2 dependency chain includes -`cachebox` 5.x, whose PyO3 version rejects Python 3.15 builds. +Lab currently supports Python 3.10–3.14. PyArrow 26 now provides Python 3.15 +wheels for the GAIA extra, but the Tau2 dependency chain still includes +DeepDiff with `cachebox` 5.x, whose PyO3 version rejects Python 3.15 builds. ## Usage @@ -80,6 +80,14 @@ uv run poe test uv run poe pyright ``` +Lab release artifacts are built and published separately from the root +`python-release.yml` workflow. From this directory, maintainers can create the +standalone wheel and source distribution in the shared Python release directory: + +```bash +uv build --out-dir ../../dist +``` + Lightning observability tests intentionally exercise heavier tracing paths and are marked as `resource_intensive`: ```bash diff --git a/python/packages/lab/pyproject.toml b/python/packages/lab/pyproject.toml index 3afd713fb46..faeecb2b4b8 100644 --- a/python/packages/lab/pyproject.toml +++ b/python/packages/lab/pyproject.toml @@ -4,7 +4,7 @@ description = "Experimental modules for Microsoft Agent Framework" authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b260910" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/lab/uv.lock b/python/packages/lab/uv.lock index e4287507a2e..3e9d82d93dd 100644 --- a/python/packages/lab/uv.lock +++ b/python/packages/lab/uv.lock @@ -68,7 +68,7 @@ wheels = [ [[package]] name = "agent-framework-lab" -version = "1.0.0b260910" +version = "1.0.0b261022" source = { editable = "." } dependencies = [ { name = "agent-framework-core" }, @@ -2768,23 +2768,24 @@ wheels = [ [[package]] name = "huggingface-hub" -version = "1.33.0" +version = "2.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "filelock" }, { name = "fsspec" }, - { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, - { name = "httpx" }, + { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'ARM64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "httpx2", version = "2.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "httpx2", version = "2.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "packaging" }, { name = "pyyaml" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/2a/484d112c0d8fc5f665d7b65137ac9cdb2953c982391598c3597968a12ee7/huggingface_hub-1.33.0.tar.gz", hash = "sha256:367be21a201db9523eddf8aeac7048f2602c1b308691c97640d5e72ed188007e", size = 1043548, upload-time = "2026-09-24T09:49:29.971Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/47/6858d63643e66fb4f6585c3cfd4029c0b2bc1ae21688cee9b3335f20a10d/huggingface_hub-2.2.0.tar.gz", hash = "sha256:5d1b47537394e4215cb858aa12fd493d0f7ef7f58990f5dcd24bc173107b2871", size = 1041026, upload-time = "2026-10-08T15:30:59.971Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/16/963096d224b80909432dc16561a615fd33d2d13beef3ce4c63fa25e40867/huggingface_hub-1.33.0-py3-none-any.whl", hash = "sha256:04e434b06e100eddbce9a6e817d72693a7884b10a79bd67ab48080d5c07eb899", size = 846435, upload-time = "2026-09-24T09:49:28.059Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b0/0f7b430fd100b3a3b037fdbb314878200241082e607b3383c63d91a13a72/huggingface_hub-2.2.0-py3-none-any.whl", hash = "sha256:1667f145dc56dc210d60966069397df9ecfca9607a5d43db88b308c89dae56b3", size = 839884, upload-time = "2026-10-08T15:30:57.914Z" }, ] [[package]] @@ -3398,40 +3399,34 @@ wheels = [ [[package]] name = "litellm" -version = "1.106.2" +version = "1.103.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, - { name = "async-timeout", marker = "python_full_version < '3.11'" }, { name = "boto3" }, { name = "click" }, { name = "fastuuid" }, - { name = "filelock" }, { name = "httpx", extra = ["http2"] }, - { name = "huggingface-hub" }, { name = "importlib-metadata" }, { name = "jinja2" }, { name = "jsonschema" }, { name = "openai" }, - { name = "packaging" }, { name = "pydantic" }, { name = "pydantic-settings", version = "2.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "pydantic-settings", version = "2.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "python-dotenv" }, - { name = "pyyaml" }, { name = "tiktoken" }, { name = "tokenizers" }, - { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/4b/0f42182e4a3f957e8b5d8bdc2522779092da973bef7a3492c8e6a3409764/litellm-1.106.2.tar.gz", hash = "sha256:9f0e770cb007c8c6e78917ad7b5c4f059f7bdc4a3606f854831780ea53fd9e2d", size = 21431422, upload-time = "2026-10-21T10:44:51.337Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/d8/c41f2f98321a46222bf6230ff9427f75acea0f85f6255e87afa7d479de0c/litellm-1.103.7.tar.gz", hash = "sha256:42caa25a8e601e3fe327b4447966e5268d09274c19ac05ef24e86163d821e3f5", size = 18995147, upload-time = "2026-10-21T09:36:09.647Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/47/1038af80d9831972fae8712a890c30252f51c514c092d83e0f1330bb1fa1/litellm-1.106.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bf6f13445bb59d8d02131bbc1fb57161d1ae629bec65dc66f9add4c09fb6994a", size = 36283395, upload-time = "2026-10-21T10:44:22.902Z" }, - { url = "https://files.pythonhosted.org/packages/51/fc/15e44b2a222dfda71e0aff107fccfb49b06a4695fae0eb6867aff84f7e1d/litellm-1.106.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:cc778d01ed65a8dd57d5211d581ec237e06df239a09c3d573ace33e0feea76c9", size = 35263059, upload-time = "2026-10-21T10:44:32.664Z" }, - { url = "https://files.pythonhosted.org/packages/cf/a8/f21d7fd8f7ffa6ebacefbedfb6268430e2b55ce9b2f33a36ac0295ccd500/litellm-1.106.2-cp310-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:34bfdc26c2c075726eda59ec0675e2a8a67b6e59a03980def7ef7651b849141a", size = 35827639, upload-time = "2026-10-21T10:44:35.553Z" }, - { url = "https://files.pythonhosted.org/packages/6b/30/4a38c22181ef7169b6c044b8294f2e5b06236aeeccfbe57c2f0e85a51bfe/litellm-1.106.2-cp310-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb1a2a1e55a4a8350ae2167525dc0d06f59b078cd685fb3e0f5419f02da5420e", size = 36789555, upload-time = "2026-10-21T10:44:38.879Z" }, - { url = "https://files.pythonhosted.org/packages/a0/76/e7ca210ad574f5321c162f2b27f8674c260e0857323a9991c4d3765ce8f1/litellm-1.106.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ce18971e2bb2aa58ef8efae1cd12da1248e1c2e5ae3cf5903bfb9d563bb34d9d", size = 35914468, upload-time = "2026-10-21T10:44:42.268Z" }, - { url = "https://files.pythonhosted.org/packages/22/03/95518dfb58e29c45ab40a7bc3d1d76509d09011172c380145fc9e900a214/litellm-1.106.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:32e567ee53c812e36f79158ec280c8850973f84a9e5fdef50d31ca09306d148c", size = 36901860, upload-time = "2026-10-21T10:44:45.807Z" }, - { url = "https://files.pythonhosted.org/packages/48/7a/a17de89184b5365980c3eb7d58176ae5a7e34538e56b942c833ff7f523b9/litellm-1.106.2-cp310-abi3-win_amd64.whl", hash = "sha256:836ab19110504ad7ba71d8ce73af6b9d1cf1dc6ffda2b49ebc1a51e348f754bc", size = 37619702, upload-time = "2026-10-21T10:44:48.564Z" }, + { url = "https://files.pythonhosted.org/packages/e3/13/a90933c355c6ec0f677c5cc12d28d3e684e9547f9669874ee4f83139c47e/litellm-1.103.7-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:75cce8d8081f056f70e6df7233babd7691f7a892411fed2af057b2fc19002a2c", size = 27806450, upload-time = "2026-10-21T09:35:44.838Z" }, + { url = "https://files.pythonhosted.org/packages/68/8e/e1e408699d39ee9f39ffa054b48ada1140b5af180936a555afb0d4927a72/litellm-1.103.7-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:49ef58786989ae621e5d67fa54d0ab85de44f00f8c9b85fb548d3c3e6127b0b8", size = 27269162, upload-time = "2026-10-21T09:35:48.962Z" }, + { url = "https://files.pythonhosted.org/packages/bb/81/0954bf10131cdbd9cd89783c208f384582099de9ea5444316ba1e96281d0/litellm-1.103.7-cp310-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6d4bd664d45a8dd3acff46f5b8aba5fded1c31968b1047f76e30ce4c81d9274e", size = 27576672, upload-time = "2026-10-21T09:35:52.306Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ea/2c3a787d2d9a92aa1eda8447c6b7bd89633351f2018ca3afdc6630289ae9/litellm-1.103.7-cp310-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4a86631887d5a03a63f911066d4eb4cedbe37da3c746f65d9375b8ec505dcb54", size = 28121861, upload-time = "2026-10-21T09:35:55.425Z" }, + { url = "https://files.pythonhosted.org/packages/08/29/20140f59fb45844bcf32ed6a682a5a618327c58f51bb56903e8e742445bb/litellm-1.103.7-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:176244e87c85a19c4d02ae645fb4ee7f29b1e97e480a4e126dccdb295849f2a7", size = 27659297, upload-time = "2026-10-21T09:35:58.815Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/ef53749d8454b1dcb61742dfcb30636d26c8e6129fd45fc14f5b17986239/litellm-1.103.7-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:58146feccf874638f547f892daf64a2e17c42c704069e2c55f7baa6427876da6", size = 28238662, upload-time = "2026-10-21T09:36:02.58Z" }, + { url = "https://files.pythonhosted.org/packages/04/48/3a4a5b380018cd54276f6aef809d72d51ee47a96f3f961886a08b12f1494/litellm-1.103.7-cp310-abi3-win_amd64.whl", hash = "sha256:1ff7e90c72663f79981e79e02a069643ec3f195516d7eaa81f0339f807430cec", size = 28183383, upload-time = "2026-10-21T09:36:06.256Z" }, ] [package.optional-dependencies] @@ -3476,24 +3471,20 @@ proxy = [ [[package]] name = "litellm-enterprise" -version = "0.1.76.post1" +version = "0.1.69.post2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/46/41/2eca85291eea88f767d2acfcaba7620c59493a421c25ab43b73d4d57e526/litellm_enterprise-0.1.76.post1.tar.gz", hash = "sha256:f767a911b2f0de1fa8e5e6cee0f69a26261542faf2a8c2b5f5acd17431c7fd2a", size = 99789, upload-time = "2026-10-21T10:09:27.647Z" } +sdist = { url = "https://files.pythonhosted.org/packages/69/2b/f669115d877f9515f7ad45cda44749b894f6be1ba3c3873ba7c6fb31ca94/litellm_enterprise-0.1.69.post2.tar.gz", hash = "sha256:cf3193ac8938b93580f399969b88ac79193a7afc258a069116aa6d1777ab7466", size = 92095, upload-time = "2026-10-21T09:19:07.252Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/85/fc5c714eb6cfdaee7cfdc249cebe3bede7703818ce9cc72ae3d5e7d7bfcb/litellm_enterprise-0.1.76.post1-py3-none-any.whl", hash = "sha256:eee9bfe5c885dc533ac650fd08f915216e92697549475c321c37776985b4d791", size = 168907, upload-time = "2026-10-21T10:09:26.273Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8c/ab2fd1e2987bdc91bd5ab7c920926b1f11023e3216ed1470894226456e43/litellm_enterprise-0.1.69.post2-py3-none-any.whl", hash = "sha256:667cf700193078a7684541d3484df59a63f888e9d4c247eb542dd47441719e8d", size = 160505, upload-time = "2026-10-21T09:19:05.841Z" }, ] [[package]] name = "litellm-proxy-extras" -version = "0.4.108" +version = "0.4.100.post1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "psycopg" }, - { name = "psycopg-binary" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/84/34/a44d096d22ef957f51e9adcd0855783d29eb13e55b3ea7a7a4ad5e6a3330/litellm_proxy_extras-0.4.108.tar.gz", hash = "sha256:16d5d3758d714558e97d6c5520e9054a7a4f0fc94dc16f050c3c60423bb1106c", size = 87330, upload-time = "2026-10-09T19:02:22.416Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/bd/8b4a06490e729ebb21a1a73fc1aafe1967865e61820ded2bdc5aeb1f6902/litellm_proxy_extras-0.4.100.post1.tar.gz", hash = "sha256:2d0641b9805578610e2d5e62f9ba8852cb9bc46e780e2ca795aad62f982b1a51", size = 68240, upload-time = "2026-10-03T23:11:30.7Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/c1/b6186b328f5f3d301e3266dc9e8235cb3a2745ae6fd467a4f54eddf80c31/litellm_proxy_extras-0.4.108-py3-none-any.whl", hash = "sha256:e0e62cebf6ac3789236319f46a326e80904951baac28c8b58dadcf088643d3e7", size = 215906, upload-time = "2026-10-09T19:02:20.995Z" }, + { url = "https://files.pythonhosted.org/packages/6f/01/8b123fa6de3d0c856b4de3205d3fccc3afe01f5f32f0153d53f46be322a5/litellm_proxy_extras-0.4.100.post1-py3-none-any.whl", hash = "sha256:a0facbb596aff9a422fd65be77e14d07105361f9a51b187e8975c7013b254e5a", size = 178411, upload-time = "2026-10-03T23:11:29.366Z" }, ] [[package]] @@ -5455,92 +5446,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, ] -[[package]] -name = "psycopg" -version = "3.3.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, - { name = "tzdata", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/76/26/3ea4ca5eaea1c0debcdf7ee7c1613fbe721dc27a03c461c0817ffd8a0601/psycopg-3.3.6.tar.gz", hash = "sha256:c081f2250df751a943036e42db6df4571c66cd0aabe8291a7a506512b12007d2", size = 168171, upload-time = "2026-09-18T13:22:55.152Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/de/748bd7609c71cae5d737f0ba9192f19329f70180ecda8fff3cac02c5abe3/psycopg-3.3.6-py3-none-any.whl", hash = "sha256:a1db9f7148b06a28606767efaca51fa6f9398c5c0a3810519be69d7000bdb631", size = 215490, upload-time = "2026-09-18T13:15:29.374Z" }, -] - -[[package]] -name = "psycopg-binary" -version = "3.3.6" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/52/92/00350a66de0af05e41d01aa3134e3970045e816afed3f99d58ec1abe15b2/psycopg_binary-3.3.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7beb3e41c9a1e509f3ed85263386588cbe3e975aa67be21f79f44fd35ffaeefc", size = 4728682, upload-time = "2026-09-18T13:15:36.605Z" }, - { url = "https://files.pythonhosted.org/packages/91/fc/afa9c7fd316a469af7ede6ebb020eac482f5d827fae57d5310c9bc0c41ae/psycopg_binary-3.3.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa73160077345ec21b3f51e8e24b3de2e99586217e497629326eb9b2ea88c52e", size = 4777111, upload-time = "2026-09-18T13:15:46.566Z" }, - { url = "https://files.pythonhosted.org/packages/f2/44/7c1e015f1bc56b36ff1369f09e852b2d83ccefd5a669a42633a916cdedc4/psycopg_binary-3.3.6-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f87dbdc42e78ee0f7ea180c03f8c78e80a949e373066629bd90fefff10552dff", size = 5592755, upload-time = "2026-09-18T13:15:52.886Z" }, - { url = "https://files.pythonhosted.org/packages/3b/ae/314a251ca918cdac380bce1b87839ade9355382ea749e6ef3ba75ba0c09f/psycopg_binary-3.3.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a9348c5b43a3bb5ef8c2e89d5237c9c87eeafb01d338c84a7aebbc5cd0313299", size = 5267949, upload-time = "2026-09-18T13:16:00.53Z" }, - { url = "https://files.pythonhosted.org/packages/b6/9f/3bb0cfe9bb0f31ca57cf486ddc8c9ac51251aed8181bf88ff870b2623105/psycopg_binary-3.3.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a52991594ac4db888c7d39bccef331797e30cb31a95cae02cf2607f83a42dc2", size = 6862403, upload-time = "2026-09-18T13:16:10.385Z" }, - { url = "https://files.pythonhosted.org/packages/c4/d6/7032c10309c3155e9b24300fdcc9a1afa539cfd20ce52fdef74a46f10161/psycopg_binary-3.3.6-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5ea8beeb5541780b4b50b462eeacbc4f594ce3b911dc20c81c75f267876f71d2", size = 5107271, upload-time = "2026-09-18T13:16:16.843Z" }, - { url = "https://files.pythonhosted.org/packages/61/cc/79add2cf92684cf1a81da134b32caa662c25c72d0cc905d181ef4455f834/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:198a48e68cc99ccac03ba95ac857e73aa66f3bf6be77019fafb0832a05f7ad03", size = 4627984, upload-time = "2026-09-18T13:16:23.889Z" }, - { url = "https://files.pythonhosted.org/packages/c9/48/6dfb14f9350c14af6a2edb3c31262051b8cd94e2186e4b831e46dbbe8cd9/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fa34eb47969297471db7b7f193622c7e3ee839ec05abd05f1fe104d5b1b1dcf4", size = 4322054, upload-time = "2026-09-18T13:16:29.33Z" }, - { url = "https://files.pythonhosted.org/packages/29/35/2982338716a91cbb4dfc866be015be4457ee8106a445aabf3d1fb6a270e0/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:b979a42815410432420275412633960807178b1ce26591a16ce06e78a5bd4bb2", size = 4048471, upload-time = "2026-09-18T13:16:34.119Z" }, - { url = "https://files.pythonhosted.org/packages/24/e1/171b1db1542c5f76a678b7ee0a7800bebc9735a0a03417c76cf948bfd63c/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:889e42acec10450185e0cdfb396f375e2c1a8d7737c114830a7fde4654f59e30", size = 4353931, upload-time = "2026-09-18T13:16:38.692Z" }, - { url = "https://files.pythonhosted.org/packages/08/89/4424e62a944eef40bd9326ada4ae23802b28eab6502af91e84ef7bba74fb/psycopg_binary-3.3.6-cp310-cp310-win_amd64.whl", hash = "sha256:cbd5f73073ed19c378d4c35499db1e3e703a5b1a324e521204065967bfaa7a18", size = 3674362, upload-time = "2026-09-18T13:16:44.454Z" }, - { url = "https://files.pythonhosted.org/packages/70/86/b71166048974d49c6d136b2ed1c0e5bec0b974d8c4de5cbce7e86a9e412a/psycopg_binary-3.3.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:be4f9b3c9338ac5dd217c5847e21521b396c8117f78dc420d495a5c49bbef874", size = 4728002, upload-time = "2026-09-18T13:16:53.393Z" }, - { url = "https://files.pythonhosted.org/packages/12/1d/1e06c0de7ed5aed898acb87544eac6ef0bc7d752a67ec6e5d6b835e9b40c/psycopg_binary-3.3.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f0535693ce476a722b718b002d5d2c27d47e71ca945276ac194409c98e74c492", size = 4775403, upload-time = "2026-09-18T13:16:58.939Z" }, - { url = "https://files.pythonhosted.org/packages/84/02/2ffcbc43f8e4bbc38e5286a22013bcac01898d13cd38325f60dd5428a8af/psycopg_binary-3.3.6-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3c9e663b2e800e3218994cf948c11bcc2844e6491b34aa80d089baf6531827bf", size = 5594145, upload-time = "2026-09-18T13:17:08.515Z" }, - { url = "https://files.pythonhosted.org/packages/e1/25/031dae2c7d2e7e77dcf5b1962c1e0684fa548d7af0ff6707b6b5e6054ca7/psycopg_binary-3.3.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a2e44a342d2aee40508e28a563d8961c39d9bbd8cae36d8578f0a3c6658aab0f", size = 5267985, upload-time = "2026-09-18T13:17:16.24Z" }, - { url = "https://files.pythonhosted.org/packages/8c/e5/94c89ada3c003a4d858178f3bba49a35e0297ef2aad659b80eb5e380e690/psycopg_binary-3.3.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f598f19fa9a91540b5cee17932ffd227b7b53a481605bcc4573c0eafa647300", size = 6860986, upload-time = "2026-09-18T13:17:23.348Z" }, - { url = "https://files.pythonhosted.org/packages/9d/a0/81bf499d095adee8413bd19822a6872fbfa21663ec78014a68d83a8db83c/psycopg_binary-3.3.6-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6ff05561e4a067d35507dc5c90f1deb2ec1c9703ac5cccc1bc26e08a197f9c5a", size = 5106702, upload-time = "2026-09-18T13:17:28.847Z" }, - { url = "https://files.pythonhosted.org/packages/00/75/99d56da64c27bd985fd82c6ecbf7976b724ac638fdd1654ef995323a1a26/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:566dd827f17728efdf7d88a5b066f815170f6fdad13967ae952842d90e6aaa9f", size = 4627090, upload-time = "2026-09-18T13:17:36.668Z" }, - { url = "https://files.pythonhosted.org/packages/3e/0c/0222171d11233332c6a24b1cef1578215f0ffddf3642eb8dd8c4448ad69f/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9b2f11794e017ce340934e35de46181c46ef71ec75ea3d85dd75cd836761c01e", size = 4320353, upload-time = "2026-09-18T13:17:42.526Z" }, - { url = "https://files.pythonhosted.org/packages/62/6f/e1cc2a28dd1228c67c969ba6fd37cd8726b312e2ff51380f847ddb38ccde/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:910ace140e3e7b7596898d083f37a8fe90c5c40684252ad4e682364b2cd3deba", size = 4047253, upload-time = "2026-09-18T13:17:47.068Z" }, - { url = "https://files.pythonhosted.org/packages/d8/fd/38b64790ce7a515b1dbd2bab3d119637a858aeb22c380cf4859bc4ce0e42/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37e517c146b185f9c0c6e8d0a0ebbdeeeb67896af28466e032bc810d0c7dc7a7", size = 4353208, upload-time = "2026-09-18T13:17:52.41Z" }, - { url = "https://files.pythonhosted.org/packages/f7/dc/45386530ceb2a8c789a226de9b9b34eca8fccf1feba2e4ef68a6aca50c56/psycopg_binary-3.3.6-cp311-cp311-win_amd64.whl", hash = "sha256:c7f92daa0d2a1c76f07264abddf8cbabd30152a2f09c3270e50f0c7efdf5dcac", size = 3675638, upload-time = "2026-09-18T13:17:58.112Z" }, - { url = "https://files.pythonhosted.org/packages/e6/01/2cdd1824e58b4467ee0b9498664cd28c42d8794db6b1e35b6bcb834f0044/psycopg_binary-3.3.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3f84dab25e0385692ee13274c68678377e0b1a70ab9d14e56264cbf61f60c62d", size = 4707086, upload-time = "2026-09-18T13:18:05.138Z" }, - { url = "https://files.pythonhosted.org/packages/f6/76/de9948ac06895261c84d5b9fbe283d8f3c5bc9f070691b8d9eaa1b51e322/psycopg_binary-3.3.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:612382ac3ed13651c7fa44b5fee9fbf7baaa2ddbc6f500391672682c5f1df9e0", size = 4769607, upload-time = "2026-09-18T13:18:12.83Z" }, - { url = "https://files.pythonhosted.org/packages/76/a9/72436c9915ee4905964689e7f0e182ce7767cc0a0390b3ce703be8177625/psycopg_binary-3.3.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:366db6e97e66b37211475f20c4c1324a2dc0dd825e46d4e87f9d599304d276f9", size = 5554134, upload-time = "2026-09-18T13:18:21.175Z" }, - { url = "https://files.pythonhosted.org/packages/0a/42/948bb3d2617795093512613fd96ba380e922992c7908fbc073858147d196/psycopg_binary-3.3.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1679a1cb93fbe5a6d1fd58d82cbddcc6fcb8c61446ba7cae6eb2a7b19bc585de", size = 5235723, upload-time = "2026-09-18T13:18:27.071Z" }, - { url = "https://files.pythonhosted.org/packages/99/47/93e823ff1b0088400703410939c9bda3e63ed9c850b3ee088e8769f4c10b/psycopg_binary-3.3.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:37d40450659401600e6d043ff586c89a71a69f33cbb8bcdba6cdb2569beecdbe", size = 6833587, upload-time = "2026-09-18T13:18:33.794Z" }, - { url = "https://files.pythonhosted.org/packages/5e/2d/ecc69c847795aa704041a9f5667a6b0938a088cf1853636d762a6938e493/psycopg_binary-3.3.6-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a5165300324efd5a772c48a88ab3a928513ab3979fca76553e62ee815f7b2b9c", size = 5070013, upload-time = "2026-09-18T13:18:39.628Z" }, - { url = "https://files.pythonhosted.org/packages/92/36/6126f0dac21713dcae91404f2a76da18598a6252339a8c669c46370d43b2/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d636338c8f21b0df2f84657b00bc34f9313f826ef93f1155bc743607e4a0c5eb", size = 4597367, upload-time = "2026-09-18T13:18:45.023Z" }, - { url = "https://files.pythonhosted.org/packages/4d/29/7ecfc04243b46c89ffd49924e9c5634ea904ef96c7d0f37e4073623584c1/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a4ee3bdd5468a725f2a4d9aab8a74b6d0279f768c8b5d3aeb102c5307ff3d59c", size = 4275419, upload-time = "2026-09-18T13:18:49.299Z" }, - { url = "https://files.pythonhosted.org/packages/6e/90/2f46d2e0de79706ac170df0a3637fe63c4498fc04f131f6049520b78b806/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:289aadd6a00e151203c081f708348ec89f1e483c9b510ef4ac3981f847f01f79", size = 4007358, upload-time = "2026-09-18T13:18:53.944Z" }, - { url = "https://files.pythonhosted.org/packages/03/48/6744e91291b751a8cf12d63d719977974bb94c84ceba913e7ddb2e478e51/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f21d057f3e5f5491067e5b292498073b73847d48799b099803fef100775fcc52", size = 4320156, upload-time = "2026-09-18T13:18:59.258Z" }, - { url = "https://files.pythonhosted.org/packages/1a/9b/94ff7fce53a64d5b286e2ec454e0a025cf3d6e6b4a9189bef16aa5de98b2/psycopg_binary-3.3.6-cp312-cp312-win_amd64.whl", hash = "sha256:e23a66a763fbe83fcc210bc77c27e5a5ea380ebf091c06f34d8561b695e5a40f", size = 3658864, upload-time = "2026-09-18T13:19:06.503Z" }, - { url = "https://files.pythonhosted.org/packages/b4/c3/c072584b69ad44a747b448cfc9766fecb8aae56e372a017e2ef668790057/psycopg_binary-3.3.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ad8f35e67cc16d1fad1fa8c88972dc9b3a3141ea67897399904edab96a301b6", size = 4712284, upload-time = "2026-09-18T13:19:13.451Z" }, - { url = "https://files.pythonhosted.org/packages/0a/b9/4283b785339e8e2318d03048994b093d650ea6289fabaa806b765dc0d449/psycopg_binary-3.3.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:373704aea331d3f3e3402c125a1543f5875e2986ebb54f97d1647942161f803f", size = 4772031, upload-time = "2026-09-18T13:19:18.524Z" }, - { url = "https://files.pythonhosted.org/packages/6f/72/7a1321d359246769fff1affffbd0132785a28f7f63c18524c15a502398f4/psycopg_binary-3.3.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:b82491019b884d62318b5f30706c3d7e6d4e5a6cb7eabcb3edc0c1b0fdaceae9", size = 5556392, upload-time = "2026-09-18T13:19:24.418Z" }, - { url = "https://files.pythonhosted.org/packages/de/b0/c6f8a0585a5dacbea74e130bcfc66629390e8f5bbc79d2a8e806e8952150/psycopg_binary-3.3.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cec5ea900390897d0b46130f60bc2883bf19c314f9044235217c8be88b0ef269", size = 5237855, upload-time = "2026-09-18T13:19:31.257Z" }, - { url = "https://files.pythonhosted.org/packages/e2/fc/c3a7a8bbef7e945ec584ac61d460a612363ea398511cd0e220242b1d69f1/psycopg_binary-3.3.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98c02090d88f2ebc0ec1e8da538f77d225ce0fffecf372aa39262e62a1b054ef", size = 6833856, upload-time = "2026-09-18T13:19:43.622Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f2/8e80b921db728ebb68fc105bd7c4277f908210ad755bd6481d5ea7add740/psycopg_binary-3.3.6-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ee2c4728c691245e24501fcd7a97b5b381236b9985bc445bba88cdce7d1b5784", size = 5070730, upload-time = "2026-09-18T13:19:49.968Z" }, - { url = "https://files.pythonhosted.org/packages/54/6a/5b313e0c5348244f0e973aff3258bf86766656256d5ece8d541a53e35b4a/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f19cc87343eaa55255e76b31259a570072ac95d6ae82c92dd34b97691f5e49dc", size = 4598089, upload-time = "2026-09-18T13:19:56.426Z" }, - { url = "https://files.pythonhosted.org/packages/32/e9/db7f76ec24bf6699e92bf604e5c4bae10664a681a8999ef42aa0faf0f2c6/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdccb3a0e184b03e9baa673b15a809cf36c339c85dbda0ebc25a698846dfbee8", size = 4278481, upload-time = "2026-09-18T13:20:04.681Z" }, - { url = "https://files.pythonhosted.org/packages/61/83/72c67013656f4d6b547caabffb193e91d57e63f90eefdcc6d045c400e97d/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:9892188bb15e5803beb51afe8a25add6b56be391a53058e8bca03b74e1e6bf22", size = 4009229, upload-time = "2026-09-18T13:20:11.905Z" }, - { url = "https://files.pythonhosted.org/packages/82/35/5e4500df2c999eb0faed8b184e6958b834172128274f06167a5deef4c19c/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3af90f92769d8cc10f94515ee7a0aef36ea85ca733a0ce22858f6e0953f41138", size = 4321467, upload-time = "2026-09-18T13:20:17.949Z" }, - { url = "https://files.pythonhosted.org/packages/55/7f/e350e1cf498ba2565c3f87b12f429d2012eb86b76c2b3845a19ee5fbb4d6/psycopg_binary-3.3.6-cp313-cp313-win_amd64.whl", hash = "sha256:0ebfad5d131de9f892ae9e70cc7616207768b6714b66a52d4612b8ceaf78b372", size = 3658179, upload-time = "2026-09-18T13:20:22.691Z" }, - { url = "https://files.pythonhosted.org/packages/6d/b9/60711317c284a442511644ea7185b56ebe627606d6741e732cd16108c47b/psycopg_binary-3.3.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:b3f75dee0f9afafabe4edc52c4842f1e1878ed2069bd05b22d6fe961e97e4dba", size = 4720512, upload-time = "2026-09-18T13:20:29.278Z" }, - { url = "https://files.pythonhosted.org/packages/63/da/28befc84454cbc6374550de7746f591f8fe1b6165c1fce249652cc8291c4/psycopg_binary-3.3.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5927b7ba63153cd8e9862987290a2b783a5c590daf2a4ef981700cc3569166d4", size = 4782318, upload-time = "2026-09-18T13:20:35.401Z" }, - { url = "https://files.pythonhosted.org/packages/a4/8a/0d21c2c833cdc0d4244c77e858e0ed37fa2abec2623be4fd686f617109ce/psycopg_binary-3.3.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:0bf08b749cc144f33b44a91b78e3f71c60eb07963746a0df5a100b36ce3d7475", size = 5567460, upload-time = "2026-09-18T13:20:41.902Z" }, - { url = "https://files.pythonhosted.org/packages/49/6d/7692d0d4e656b6cc9868d8acc2e3b42f17a0db4a625400a6d093cb0533a1/psycopg_binary-3.3.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:31cd942c23f613276b81a6e6598cefa12960058b0f46e1e874b540c793f6aca5", size = 5246902, upload-time = "2026-09-18T13:20:47.661Z" }, - { url = "https://files.pythonhosted.org/packages/d4/c1/b8a1f18fb1b7558a17f57f7cb3fc8bc93189feea2958925950b3acb15743/psycopg_binary-3.3.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4690cf67738f0e0e49a32aeec99bf0e4595cc2b4f1af984a4345394b1dcff91a", size = 6847192, upload-time = "2026-09-18T13:20:56.874Z" }, - { url = "https://files.pythonhosted.org/packages/a5/76/404f33519167c65cca88ec4998776f1dbebccc301ee977f0e62c47fb0826/psycopg_binary-3.3.6-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ad1c785e784cfd87e8436c6b7702f2d321fc39601bbaf29bc63a41a867091638", size = 5079573, upload-time = "2026-09-18T13:21:04.155Z" }, - { url = "https://files.pythonhosted.org/packages/f0/d9/79e8fbc8f37262a415f3550f0bcc5f98037442bf3d12ef6cbae2056655ae/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:79a2a1c3449f6c3409427078ed1cec10de79f3023cb5f2504f0597d350ad46c7", size = 4613633, upload-time = "2026-09-18T13:21:10.664Z" }, - { url = "https://files.pythonhosted.org/packages/d4/47/96225db74be7d2ce04b3a58678b53cda610225055edf5faa775c9f501d8b/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:86147cb5d140341c3363fb5bacce31f8d5543902a46699d3c536b101bbceaf9e", size = 4293375, upload-time = "2026-09-18T13:21:16.027Z" }, - { url = "https://files.pythonhosted.org/packages/2a/d2/18e9c779a5efd565250329adaf529ecc2b8b2ed5be5cb0f6ccee208cbfd9/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:7308c93cf0b19bbaf8e6ff0a6ad50d3c442385739245fe15a8d593bf841734a6", size = 4019883, upload-time = "2026-09-18T13:21:21.587Z" }, - { url = "https://files.pythonhosted.org/packages/ef/28/0cc654afc6c2cda982767f5679d3646b30b1ec86545bdaa9402202d6776c/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:05a83ac9fd52b9bca7cb5ab04b3691163170bd16f53defa27216ea3aa07ee781", size = 4332607, upload-time = "2026-09-18T13:21:27.63Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3e/0a753a74fbd7aef120f286c016e09d3cc3f1daf7688f4a145d27281260b2/psycopg_binary-3.3.6-cp314-cp314-win_amd64.whl", hash = "sha256:1fbd30e537dab22cafdf080608f10148fe2a5f3a61294ddb5113caac8a623840", size = 3755671, upload-time = "2026-09-18T13:21:33.855Z" }, - { url = "https://files.pythonhosted.org/packages/0e/b1/a372b9c02aea50148e71c9853e19efca8fa5ae2010a8e27243b9b8f790c0/psycopg_binary-3.3.6-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:bf8c8481d026b85dd70c5fa7dde85b2333aed0b32a2602bcd38a900cbd78a49c", size = 4719571, upload-time = "2026-09-18T13:21:41.437Z" }, - { url = "https://files.pythonhosted.org/packages/65/7c/811e3828c6b82e2f10c6c9cdd963cfc66f3e024026e5a69ac18530bad984/psycopg_binary-3.3.6-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:b599defe9190b17e9907c8b4d114c181e702c87efcd1b8a0ad40971cdcc4634a", size = 4781230, upload-time = "2026-09-18T13:21:49.516Z" }, - { url = "https://files.pythonhosted.org/packages/3e/15/9a784eed813ea9e97c294af3ead63d02b7b203502c66380336c50065e441/psycopg_binary-3.3.6-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:b8ece331509f7a975b90501f41e83ad905e4141753fedf3f2711b2bc70a8efbc", size = 5566111, upload-time = "2026-09-18T13:21:58.089Z" }, - { url = "https://files.pythonhosted.org/packages/68/16/47194e002007c27337b11e49bf459c4b19727463f9aff2e1a90917bcc806/psycopg_binary-3.3.6-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c61617eaae0112ca154da87ffb99b73af2c74067acac28dfb9a4455b019dff2e", size = 5249963, upload-time = "2026-09-18T13:22:06.695Z" }, - { url = "https://files.pythonhosted.org/packages/53/84/5dcf9f310b11f0675cd860c6b2c70f58ce61798a3ee3f6f962b53fa358ca/psycopg_binary-3.3.6-cp315-cp315-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6d19cb4999d03231e8730a5f66c8f5068bc3b532677eb39dab0f600bff3e312", size = 6847925, upload-time = "2026-09-18T13:22:13.088Z" }, - { url = "https://files.pythonhosted.org/packages/f3/06/1957a06dc22963c418c27b284929579de84f29c37ad1abe6dc6ee9e8cf25/psycopg_binary-3.3.6-cp315-cp315-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8cbb54454dbf1bbf2ff08dd7693e8d94ac94b1a20f70f4b3b813d52ecb5cbc1", size = 5087720, upload-time = "2026-09-18T13:22:17.959Z" }, - { url = "https://files.pythonhosted.org/packages/21/43/ac07d042bae99b57bf123bb473632f29af544008094da0ffd285ab8011e2/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:dc75da5a20951049f7b773145f998f69d181adad9c58a0ff36e0cf1d73c10e10", size = 4613412, upload-time = "2026-09-18T13:22:26.719Z" }, - { url = "https://files.pythonhosted.org/packages/aa/b1/019156fbeafcefb4cccc9d109de4699493bceb8313c7545c8349e089dfbc/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_ppc64le.whl", hash = "sha256:955e3dd94da361e052d2e49acf591017158dc8f8ed2c8a42c2e3943403c39dc2", size = 4292618, upload-time = "2026-09-18T13:22:33.042Z" }, - { url = "https://files.pythonhosted.org/packages/5d/0f/62113dc6b1df65983a1f2fc816c04b1edfa22f2ae9d4abee74ed267f4a96/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:c7753871eb57e6a5f4646f6168590c6653073dea5e9e720b201c8875332df4c8", size = 4027121, upload-time = "2026-09-18T13:22:38.334Z" }, - { url = "https://files.pythonhosted.org/packages/5d/d5/cf0cbd1ea5a7d8167fe2c6953efde19101f7b193bd61a23e6d622ad6854c/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:303732e798fe6729f8e12021b9c96107df8e95ecec4dd487c67b98ec2a59435e", size = 4336388, upload-time = "2026-09-18T13:22:45.576Z" }, - { url = "https://files.pythonhosted.org/packages/98/33/e2a5b36edf8aa422f6fa4b894756eb33dc93b36df5f65121280bb8b929c4/psycopg_binary-3.3.6-cp315-cp315-win_amd64.whl", hash = "sha256:2f122603f36050937982abf9668d8bc4769a79f7c93a65013b1c49f1cab7b56b", size = 3756154, upload-time = "2026-09-18T13:22:51.283Z" }, -] - [[package]] name = "pyarrow" version = "25.0.1" diff --git a/python/packages/ollama/pyproject.toml b/python/packages/ollama/pyproject.toml index 38ff64a3732..c55542533e4 100644 --- a/python/packages/ollama/pyproject.toml +++ b/python/packages/ollama/pyproject.toml @@ -4,7 +4,7 @@ description = "Ollama integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://learn.microsoft.com/en-us/agent-framework/" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/orchestrations/pyproject.toml b/python/packages/orchestrations/pyproject.toml index 31a9cfa5dec..d8a3270d7e8 100644 --- a/python/packages/orchestrations/pyproject.toml +++ b/python/packages/orchestrations/pyproject.toml @@ -4,7 +4,7 @@ description = "Orchestration patterns for Microsoft Agent Framework. Includes Se authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.3.2" +version = "1.4.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.19.0,<2", + "agent-framework-core>=1.23.0,<2", ] [tool.uv] diff --git a/python/packages/redis/pyproject.toml b/python/packages/redis/pyproject.toml index 202cfbf9302..df6da793b97 100644 --- a/python/packages/redis/pyproject.toml +++ b/python/packages/redis/pyproject.toml @@ -4,7 +4,7 @@ description = "Redis integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10,<3.15" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/tools/pyproject.toml b/python/packages/tools/pyproject.toml index 7fb5992f13b..b4c307d8c77 100644 --- a/python/packages/tools/pyproject.toml +++ b/python/packages/tools/pyproject.toml @@ -4,7 +4,7 @@ description = "Built-in tools for the Microsoft Agent Framework (local shell, an authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261022" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -29,7 +29,7 @@ dependencies = [ # mandatory dep because it's the difference between "child processes # may survive timeout on Windows" and "they don't" — a security-relevant # property, not an optional one. - "psutil>=5.9", + "psutil>=5.9.6", ] [tool.uv] diff --git a/python/pyproject.toml b/python/pyproject.toml index 117fb7220e1..df7d14d338d 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Agent Framework for building AI Agents with Python. Thi authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.22.0" +version = "1.23.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core[all]==1.22.0", + "agent-framework-core[all]==1.23.0", ] [dependency-groups] diff --git a/python/uv.lock b/python/uv.lock index 3a8e912f0b6..84130377c9f 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -3,16 +3,16 @@ revision = 5 requires-python = ">=3.11, <3.15" resolution-markers = [ "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", - "python_full_version < '3.12' and sys_platform == 'darwin'", "python_full_version >= '3.14' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and sys_platform == 'linux'", - "python_full_version < '3.12' and sys_platform == 'linux'", "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", "python_full_version == '3.13.*' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'win32'", + "python_full_version < '3.12' and sys_platform == 'darwin'", + "python_full_version < '3.12' and sys_platform == 'linux'", "python_full_version < '3.12' and sys_platform == 'win32'", ] supported-markers = [ @@ -116,7 +116,7 @@ wheels = [ [[package]] name = "agent-framework" -version = "1.22.0" +version = "1.23.0" source = { virtual = "." } dependencies = [ { name = "agent-framework-core", extra = ["all"] }, @@ -176,7 +176,7 @@ tool-runtime = [ [[package]] name = "agent-framework-a2a" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/a2a" } dependencies = [ { name = "a2a-sdk" }, @@ -191,7 +191,7 @@ requires-dist = [ [[package]] name = "agent-framework-ag-ui" -version = "1.6.0" +version = "1.7.0" source = { editable = "packages/ag-ui" } dependencies = [ { name = "ag-ui-protocol" }, @@ -217,7 +217,7 @@ test = [ [package.metadata] requires-dist = [ - { name = "ag-ui-a2ui-toolkit", marker = "extra == 'a2ui'", specifier = ">=0.0.4" }, + { name = "ag-ui-a2ui-toolkit", marker = "extra == 'a2ui'", specifier = ">=0.0.5" }, { name = "ag-ui-protocol", specifier = ">=0.1.19,<0.2" }, { name = "agent-framework-core", editable = "packages/core" }, { name = "fastapi", specifier = ">=0.121.0,<0.142.0" }, @@ -233,7 +233,7 @@ test = [{ name = "agent-framework-orchestrations", editable = "packages/orchestr [[package]] name = "agent-framework-anthropic" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/anthropic" } dependencies = [ { name = "agent-framework-core" }, @@ -315,7 +315,7 @@ requires-dist = [ [[package]] name = "agent-framework-azure-cosmos-memory" -version = "1.0.0a261015" +version = "1.0.0a261022" source = { editable = "packages/azure-cosmos-memory" } dependencies = [ { name = "agent-framework-core" }, @@ -376,7 +376,7 @@ wheels = [ [[package]] name = "agent-framework-bedrock" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/bedrock" } dependencies = [ { name = "agent-framework-core" }, @@ -442,7 +442,7 @@ requires-dist = [ [[package]] name = "agent-framework-core" -version = "1.22.0" +version = "1.23.0" source = { editable = "packages/core" } dependencies = [ { name = "msgspec" }, @@ -518,7 +518,7 @@ requires-dist = [ { name = "agent-framework-foundry-local", marker = "extra == 'all'", editable = "packages/foundry_local" }, { name = "agent-framework-gemini", marker = "extra == 'all'", editable = "packages/gemini" }, { name = "agent-framework-github-copilot", marker = "python_full_version >= '3.11' and extra == 'all'", editable = "packages/github_copilot" }, - { name = "agent-framework-hyperlight", marker = "(python_full_version < '3.15' and platform_machine == 'x86_64' and sys_platform == 'linux' and extra == 'all') or (python_full_version < '3.15' and platform_machine == 'AMD64' and sys_platform == 'win32' and extra == 'all')", editable = "packages/hyperlight" }, + { name = "agent-framework-hyperlight", marker = "(platform_machine == 'x86_64' and sys_platform == 'linux' and extra == 'all') or (platform_machine == 'AMD64' and sys_platform == 'win32' and extra == 'all')", editable = "packages/hyperlight" }, { name = "agent-framework-mem0", marker = "extra == 'all'", editable = "packages/mem0" }, { name = "agent-framework-mistral", marker = "extra == 'all'", editable = "packages/mistral" }, { name = "agent-framework-monty", marker = "extra == 'all'", editable = "packages/monty" }, @@ -550,7 +550,7 @@ dev = [ [[package]] name = "agent-framework-declarative" -version = "1.3.0" +version = "1.4.0" source = { editable = "packages/declarative" } dependencies = [ { name = "agent-framework-core" }, @@ -579,7 +579,7 @@ dev = [{ name = "types-pyyaml", specifier = "==6.0.12.20260906" }] [[package]] name = "agent-framework-devui" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/devui" } dependencies = [ { name = "agent-framework-core" }, @@ -617,7 +617,7 @@ provides-extras = ["dev", "all"] [[package]] name = "agent-framework-duckdb" -version = "1.0.0a261015" +version = "1.0.0a261022" source = { editable = "packages/duckdb" } dependencies = [ { name = "agent-framework-core" }, @@ -628,7 +628,8 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "duckdb", specifier = ">=1.4.1,<1.6" }, + { name = "duckdb", marker = "python_full_version < '3.15'", specifier = ">=1.4.1,<1.6" }, + { name = "duckdb", marker = "python_full_version >= '3.15'", specifier = ">=2.0.0,<3" }, { name = "pytz", specifier = ">=2024.1,<2027" }, ] @@ -672,7 +673,7 @@ requires-dist = [ [[package]] name = "agent-framework-foundry-hosting" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/foundry_hosting" } dependencies = [ { name = "agent-framework-core" }, @@ -714,7 +715,7 @@ requires-dist = [ [[package]] name = "agent-framework-gemini" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/gemini" } dependencies = [ { name = "agent-framework-core" }, @@ -772,7 +773,7 @@ requires-dist = [ [[package]] name = "agent-framework-hosting-mcp" -version = "1.0.0a261015" +version = "1.0.0a261022" source = { editable = "packages/hosting-mcp" } dependencies = [ { name = "agent-framework-core" }, @@ -791,7 +792,7 @@ requires-dist = [ [[package]] name = "agent-framework-hosting-responses" -version = "1.0.0a261015" +version = "1.0.0a261022" source = { editable = "packages/hosting-responses" } dependencies = [ { name = "agent-framework-core" }, @@ -835,7 +836,7 @@ requires-dist = [ [[package]] name = "agent-framework-hyperlight" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/hyperlight" } dependencies = [ { name = "agent-framework-core" }, @@ -847,9 +848,9 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "hyperlight-sandbox", specifier = ">=0.7.0,<0.8" }, - { name = "hyperlight-sandbox-backend-wasm", marker = "(python_full_version < '3.15' and platform_machine == 'x86_64' and sys_platform == 'linux') or (python_full_version < '3.15' and platform_machine == 'AMD64' and sys_platform == 'win32')", specifier = ">=0.7.0,<0.8" }, - { name = "hyperlight-sandbox-python-guest", specifier = ">=0.7.0,<0.8" }, + { name = "hyperlight-sandbox", specifier = ">=0.8.0,<0.9" }, + { name = "hyperlight-sandbox-backend-wasm", marker = "(platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", specifier = ">=0.8.0,<0.9" }, + { name = "hyperlight-sandbox-python-guest", specifier = ">=0.8.0,<0.9" }, ] [[package]] @@ -914,7 +915,7 @@ requires-dist = [ [[package]] name = "agent-framework-ollama" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/ollama" } dependencies = [ { name = "agent-framework-core" }, @@ -959,7 +960,7 @@ requires-dist = [ [[package]] name = "agent-framework-orchestrations" -version = "1.3.2" +version = "1.4.0" source = { editable = "packages/orchestrations" } dependencies = [ { name = "agent-framework-core" }, @@ -1020,7 +1021,7 @@ requires-dist = [ [[package]] name = "agent-framework-redis" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/redis" } dependencies = [ { name = "agent-framework-core" }, @@ -1055,7 +1056,7 @@ requires-dist = [ [[package]] name = "agent-framework-tools" -version = "1.0.0b261015" +version = "1.0.0b261022" source = { editable = "packages/tools" } dependencies = [ { name = "agent-framework-core" }, @@ -1065,7 +1066,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "psutil", specifier = ">=5.9" }, + { name = "psutil", specifier = ">=5.9.6" }, ] [[package]] @@ -2669,35 +2670,35 @@ wheels = [ [[package]] name = "hyperlight-sandbox" -version = "0.7.0" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/80/50/31d35922c87c648fbce8c51fef2d2b0ef277fa09acd58eb74227c90c3343/hyperlight_sandbox-0.7.0.tar.gz", hash = "sha256:c272dc483c69cbd3f8e96b963af8a3038c8df8a20a0c8228bbd5d821a0037dfa", size = 10864, upload-time = "2026-09-12T00:16:41.182Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/ee/3d97cd3ca57addeae74eaf82a1d64475f151f884e4bb8dca874b01ba3788/hyperlight_sandbox-0.8.0.tar.gz", hash = "sha256:3a7c9f4a3e3c41ddd8bd2b9f48db6ece652b2c18be384f459d6b168d33c063ee", size = 11861, upload-time = "2026-10-17T17:19:57.639Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/80/0a62893dbec00955aad63739ced80167eac476fce73bb110e6cfeee655e2/hyperlight_sandbox-0.7.0-py3-none-any.whl", hash = "sha256:7f4e52c7ef6013f461d19db60ec537c18e9cf41045ac819d4af1bb9cb72bdca3", size = 6372, upload-time = "2026-09-12T00:16:40.115Z" }, + { url = "https://files.pythonhosted.org/packages/98/22/522d2c6b186b66a5335e0fff99fe3ffdd82ce32b4968f9c9e951dd0a398b/hyperlight_sandbox-0.8.0-py3-none-any.whl", hash = "sha256:7aac916fa4dc1f630a72787d22082a1c1eed058ff866cb1d5ed53d2e9801f312", size = 6374, upload-time = "2026-10-17T17:19:56.869Z" }, ] [[package]] name = "hyperlight-sandbox-backend-wasm" -version = "0.7.0" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/35/1ef748c7af301edcd83c83a0e65acb5816dea9dd02c0243ec80ed2007613/hyperlight_sandbox_backend_wasm-0.7.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:c8cab776e20fd57a394e9a6839debd04a69a455af31d785ea1f6f7483c33e23d", size = 3965726, upload-time = "2026-09-12T00:15:50.399Z" }, - { url = "https://files.pythonhosted.org/packages/e5/bc/4255f7d8c2718d53f4f62e377a5d065bcaf52469d94ad8cb53fc8a7689b5/hyperlight_sandbox_backend_wasm-0.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:52f8681915b41b0a00a6358b9aa4ac60b305a82564c9d254d8691f208178f7bb", size = 3368999, upload-time = "2026-09-12T00:15:52.005Z" }, - { url = "https://files.pythonhosted.org/packages/ee/72/a8136c87e00d9f59a9b7f8e483013e6b6f1ab48c9c79e380750b8c0b1d13/hyperlight_sandbox_backend_wasm-0.7.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:0f525aa236f2a846a44f9f303baece11d78c635ef82acd6422ae3f6a9d47cedd", size = 3959525, upload-time = "2026-09-12T00:15:53.508Z" }, - { url = "https://files.pythonhosted.org/packages/4e/6e/18bd4e207e57c1570da6d1d0a3d131177bed3b8e8fa1ff2a106bdce14a35/hyperlight_sandbox_backend_wasm-0.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:eb3316d4789adec2d872170f1f86f3b7c9cf10777ca050dd68a0806b193d62d2", size = 3366405, upload-time = "2026-09-12T00:15:55.068Z" }, - { url = "https://files.pythonhosted.org/packages/9f/73/1754d3fe6d5201547e83efa24876ca414ee5145beb3ece614635a4a5fb7f/hyperlight_sandbox_backend_wasm-0.7.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:9f432799c2275bf57c0da32db922ff52855d83e587fda2128b76b65419065f30", size = 3959746, upload-time = "2026-09-12T00:15:56.648Z" }, - { url = "https://files.pythonhosted.org/packages/a9/9e/86eaf3afa60b7fff0c7f016724e6c5bd3efe98a9893104c9f9b52cca4af4/hyperlight_sandbox_backend_wasm-0.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:aa5b71886e322b4796130214cfd0227590589e174345063837d12b81769d8881", size = 3366407, upload-time = "2026-09-12T00:15:58.267Z" }, - { url = "https://files.pythonhosted.org/packages/82/52/47012514f883d3ac4f5577cdf659e322764c8b7d54ba8cdf1c7bf529990d/hyperlight_sandbox_backend_wasm-0.7.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:9591101a79240713de52bd2f320f538dddfa1de1ff067a93318c9e22f4cd84c8", size = 3960909, upload-time = "2026-09-12T00:15:59.822Z" }, - { url = "https://files.pythonhosted.org/packages/83/92/2d4fc2a4434c3deb2da74776618fc598a84d0a840f4bfbb928df623a34ac/hyperlight_sandbox_backend_wasm-0.7.0-cp314-cp314-win_amd64.whl", hash = "sha256:fa2c15690592dd9c08433a680bf4eeb7bac415a50231c74e1a78c30d053e3e31", size = 3366641, upload-time = "2026-09-12T00:16:01.631Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8a/8f6f4dd003d0a84474844020c48ef7bc2996d77833d66b48b4959297bef6/hyperlight_sandbox_backend_wasm-0.8.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:412ebf5925e8caac3c367daa5bc5791c12a07260f1fb822d3d7e3806a74324ff", size = 3962518, upload-time = "2026-10-17T17:19:15.6Z" }, + { url = "https://files.pythonhosted.org/packages/91/80/640d247c206e38f24c5084e6d743ceb985d2e1a1e750f5806f29ba5bbe70/hyperlight_sandbox_backend_wasm-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:1c25db63ba5cdbcc8b68538f299c9634f59df4bfc5bedbdfcb321f0444a2c2dd", size = 3371142, upload-time = "2026-10-17T17:19:16.823Z" }, + { url = "https://files.pythonhosted.org/packages/7f/80/00af27dd716c60bfdbe999bf7ccf62e0b99fbcea0289350d98d0f1e747c5/hyperlight_sandbox_backend_wasm-0.8.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:5ef64125c744ee81efe33a19065b71ee5466dce001db4e7789cd7d570bfc3f93", size = 3955761, upload-time = "2026-10-17T17:19:18.343Z" }, + { url = "https://files.pythonhosted.org/packages/5d/4b/acd51ca60f3461ec592959579705df86577e2c208233f34fcb493a77c67d/hyperlight_sandbox_backend_wasm-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:57b7c08091facc5451abec629a24864ca47d9d3ebafc5982052a1e29beae898a", size = 3367625, upload-time = "2026-10-17T17:19:19.948Z" }, + { url = "https://files.pythonhosted.org/packages/fe/30/9c5d4cbdb166d4cdd15d08f0de5dc5ef230d8cb055122eee9c6b2624d651/hyperlight_sandbox_backend_wasm-0.8.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6428ba7aa50d2a667d8579e1642a99da345fd8c3d7ae86a3dfb5dabad910bcf0", size = 3955707, upload-time = "2026-10-17T17:19:21.416Z" }, + { url = "https://files.pythonhosted.org/packages/0e/db/23c3e469b6d0a76a49f85a522aff08368abbffa87e47a2b0d76a18deb618/hyperlight_sandbox_backend_wasm-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:971605186775ba6004e50d91122c1c390e54f0e09e840e9e32587a2dff1d72ba", size = 3367557, upload-time = "2026-10-17T17:19:22.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d9/176b9af30202bbf00bba12ca5df496dbee7ef402112c88b5c381359de5ef/hyperlight_sandbox_backend_wasm-0.8.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:bb71af32d64850f95a469f70922edcc151d524698d19e29e05af7a13075f711d", size = 3957485, upload-time = "2026-10-17T17:19:24.192Z" }, + { url = "https://files.pythonhosted.org/packages/90/77/92df8d875e4959092c6800027c1b058e73e515c76bbe1d1ab50bd09cc9e9/hyperlight_sandbox_backend_wasm-0.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:dfb927d2527057f6d21163c6e220a224e772a074cc5226a9bc6856dde5be462a", size = 3369173, upload-time = "2026-10-17T17:19:25.758Z" }, ] [[package]] name = "hyperlight-sandbox-python-guest" -version = "0.7.0" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/5a/c780fd545374371176cb1bc02a5e4ec2bafbf4bae14794e4b0a738be3ca8/hyperlight_sandbox_python_guest-0.7.0.tar.gz", hash = "sha256:c64df2516370ead8efc64a2e19c8520838c5200340a05076e10da7116c028a9f", size = 21628728, upload-time = "2026-09-12T00:16:28.081Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/4d/3ffdfbe8c504f1cb1efd074c115117f3949316022152f4ef47065530348b/hyperlight_sandbox_python_guest-0.8.0.tar.gz", hash = "sha256:a0df229d2178cba3c04f7470958191ba17e00d2e18ce14500580dd8d179f7925", size = 21774726, upload-time = "2026-10-17T17:19:48.604Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/81/fde74f43f899c7100246a973e2c87e258e9c170a969418142143ec175a8b/hyperlight_sandbox_python_guest-0.7.0-py3-none-any.whl", hash = "sha256:9eff31341b61830b9b699dbd4fba65f5d62e878050db5db331f688ee0e561367", size = 21789808, upload-time = "2026-09-12T00:16:23.975Z" }, + { url = "https://files.pythonhosted.org/packages/89/65/a4629fceaa4b2a0f721ba26d7cc5a92123c046715dca3452d479a62680bb/hyperlight_sandbox_python_guest-0.8.0-py3-none-any.whl", hash = "sha256:fb2f27a2123e6368659540c3d845baf4b44d5493cbdb30bafa88287dbda46bbc", size = 21774618, upload-time = "2026-10-17T17:19:46.039Z" }, ] [[package]] @@ -3564,13 +3565,13 @@ version = "2.5.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and sys_platform == 'darwin'", "python_full_version >= '3.14' and sys_platform == 'linux'", - "python_full_version == '3.13.*' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and sys_platform == 'linux'", "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'linux'", "python_full_version == '3.13.*' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'linux'", "python_full_version == '3.12.*' and sys_platform == 'win32'", ] sdist = { url = "https://files.pythonhosted.org/packages/95/b0/c7453d0b6e2073c3264468b106ee1563750cecc910965e67357e3698c83e/numpy-2.5.4.tar.gz", hash = "sha256:9a94cf751c9ad8ebaa835bcd3d40dacf8534ad086b88c38029b65123c7999d2a", size = 20866315, upload-time = "2026-10-10T20:05:31.422Z" }