From d85f0b5782fcc90c511ecab43ad70cf666aa0b58 Mon Sep 17 00:00:00 2001 From: Digvijay Chauhan Date: Thu, 23 Jul 2026 11:13:43 +0200 Subject: [PATCH 1/2] Add MicroHack: Inventory Planning with AI Agents, Cosmos DB & Hosted Agents (pro-code) Adds a pro-code agentic inventory-planning MicroHack under 03-Azure/01-04-AI as 03_Inventory_Planning_Agentic. Hosted Python agents on the Microsoft Foundry Agent Service reason over a governed per-attendee Azure Cosmos DB via typed function tools, chained into a sequential planning workflow with a human-in-the-loop approval gate and Foundry tracing. Ships only git-tracked files (no .venv/.env/caches) and a .gitignore that excludes secrets. Updates the Azure AI MicroHacks index. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../.devcontainer/devcontainer.json | 35 + .../.devcontainer/post-create.sh | 23 + .../.env.example | 20 + .../agents/hack-compliance-validator.agent.md | 62 + .../.github/copilot-instructions.md | 80 + .../labautomation.instructions.md | 101 ++ .../prompts/scaffold-lab-automation.prompt.md | 86 + .../03_Inventory_Planning_Agentic/.gitignore | 21 + .../03_Inventory_Planning_Agentic/README.md | 220 +++ .../challenges/challenge-00.md | 108 ++ .../challenges/challenge-01.md | 104 ++ .../challenges/challenge-02.md | 88 + .../challenges/challenge-03.md | 92 ++ .../challenges/challenge-04.md | 114 ++ .../challenges/challenge-05.md | 136 ++ .../docs/Invite.docx | Bin 0 -> 10977 bytes .../images/README.md | 27 + .../images/architecture.png | Bin 0 -> 163491 bytes .../images/challenge-01-console.png | Bin 0 -> 145789 bytes .../images/challenge-02-console.png | Bin 0 -> 167095 bytes .../images/challenge-02-trace.png | Bin 0 -> 91058 bytes .../images/challenge-03-approve.png | Bin 0 -> 207565 bytes .../images/challenge-05-reactive.png | Bin 0 -> 193287 bytes .../labautomation/README.md | 85 + .../labautomation/deploy-lab.ps1 | 493 ++++++ .../labautomation/lab-defaults.json | 8 + .../labautomation/run-local.ps1 | 58 + .../src/README.md | 69 + .../src/agent_runtime.py | 230 +++ .../src/agents/__init__.py | 79 + .../src/config.py | 81 + .../src/data/external_signals.json | 10 + .../src/data/inventory_overrides.json | 9 + .../src/data/products.json | 14 + .../src/data/replenishment_orders.json | 6 + .../src/data/stores.json | 8 + .../src/data/suppliers.json | 6 + .../src/inventory_store.py | 221 +++ .../03_Inventory_Planning_Agentic/src/live.py | 144 ++ .../src/mcp_server.py | 51 + .../src/orchestrator.py | 97 ++ .../src/pyproject.toml | 31 + .../src/tools.py | 181 ++ .../src/ui/app.py | 249 +++ .../src/ui/static/index.html | 354 ++++ .../03_Inventory_Planning_Agentic/src/uv.lock | 1467 +++++++++++++++++ .../src/workflow.py | 52 + .../walkthrough/challenge-00/solution-00.md | 43 + .../walkthrough/challenge-01/solution-01.md | 62 + .../walkthrough/challenge-02/solution-02.md | 53 + .../walkthrough/challenge-03/solution-03.md | 46 + .../walkthrough/challenge-04/solution-04.md | 49 + .../walkthrough/challenge-05/solution-05.md | 104 ++ 03-Azure/01-04-AI/Readme.md | 1 + 54 files changed, 5678 insertions(+) create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/devcontainer.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/post-create.sh create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.env.example create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/agents/hack-compliance-validator.agent.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/copilot-instructions.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/instructions/labautomation.instructions.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/prompts/scaffold-lab-automation.prompt.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.gitignore create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/docs/Invite.docx create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/README.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/architecture.png create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/challenge-01-console.png create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/challenge-02-console.png create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/challenge-02-trace.png create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/challenge-03-approve.png create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/challenge-05-reactive.png create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/README.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/lab-defaults.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/run-local.ps1 create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agent_runtime.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/external_signals.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/inventory_overrides.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/products.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/replenishment_orders.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/stores.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/suppliers.json create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/orchestrator.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/pyproject.toml create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/tools.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/static/index.html create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/uv.lock create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/devcontainer.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/devcontainer.json new file mode 100644 index 000000000..e9a3100b4 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/devcontainer.json @@ -0,0 +1,35 @@ +{ + "name": "Agentic Inventory hack", + "image": "mcr.microsoft.com/devcontainers/python:3.11-bookworm", + "features": { + "ghcr.io/devcontainers/features/azure-cli:1": {}, + "ghcr.io/azure/azure-dev/azd:latest": {}, + "ghcr.io/devcontainers/features/github-cli:1": {} + }, + "forwardPorts": [8000], + "portsAttributes": { + "8000": { + "label": "Planner Console", + "onAutoForward": "openPreview" + } + }, + "postCreateCommand": "bash .devcontainer/post-create.sh", + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "ms-python.vscode-pylance", + "ms-azuretools.azure-dev", + "ms-azuretools.vscode-azureresourcegroups", + "teamsdevapp.vscode-ai-foundry" + ], + "settings": { + "python.defaultInterpreterPath": "/usr/local/bin/python", + "python.terminal.activateEnvironment": true + } + } + }, + "remoteEnv": { + "PYTHONPATH": "${containerWorkspaceFolder}/src" + } +} diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/post-create.sh b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/post-create.sh new file mode 100644 index 000000000..9c288322d --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.devcontainer/post-create.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# Runs once when the Codespace / devcontainer is created. +set -euo pipefail + +echo "==> Installing uv (fast Python package manager)" +python -m pip install --upgrade pip uv + +echo "==> Installing dependencies from src/pyproject.toml (uv sync)" +( cd src && uv sync ) + +echo "==> Seeding src/.env (edit it with your lab dashboard values)" +if [ ! -f src/.env ]; then + cp .env.example src/.env +fi + +echo "" +echo "============================================================" +echo " Ready. Next steps:" +echo " 1. az login" +echo " 2. Edit src/.env with PROJECT_ENDPOINT + MODEL_DEPLOYMENT_NAME + COSMOS_ENDPOINT" +echo " 3. cd src && uv run uvicorn ui.app:app --reload --port 8000" +echo " 4. Open the forwarded port 8000 and follow the console." +echo "============================================================" diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.env.example b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.env.example new file mode 100644 index 000000000..cc7fb07c0 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.env.example @@ -0,0 +1,20 @@ +# Copy this file to `.env` and fill in the three values from your lab dashboard. +# The dashboard shows these after `labautomation/deploy-lab.ps1` provisions your lab. + +# Foundry project endpoint (dashboard: FoundryProjectEndpoint) +PROJECT_ENDPOINT=https://inv-xxxxxxxxxxxx.services.ai.azure.com/api/projects/inventory-hack + +# Model deployment name (dashboard: ModelDeploymentName) +MODEL_DEPLOYMENT_NAME=gpt-5.4-mini + +# Per-attendee Cosmos DB endpoint (dashboard: CosmosEndpoint) — the governed data store +COSMOS_ENDPOINT=https://inv-cos-xxxxxxxxxxxx.documents.azure.com:443/ +COSMOS_DATABASE=inventory + +# Optional: set to true to attach the Web Search grounding tool in Challenge 1. +ENABLE_WEB_SEARCH=false + +# Optional: reasoning budget for GPT-5 models. "minimal" keeps the planner console +# snappy (gpt-5.4-mini is a reasoning model). Options: minimal | low | medium | +# high | none | default. Use "default" to let the model decide. +REASONING_EFFORT=minimal diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/agents/hack-compliance-validator.agent.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/agents/hack-compliance-validator.agent.md new file mode 100644 index 000000000..a64b667f3 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/agents/hack-compliance-validator.agent.md @@ -0,0 +1,62 @@ +--- +description: "Use when you want to validate that this hack is fully compliant with the microsoft/MicroHack platform conventions. Checks directory naming, deploy-lab.ps1 parameter contract, lab-defaults.json schema validity, platform integration rules (no Connect-AzAccount, no premature RG creation), credential return pattern, and content structure. Run before committing or requesting platform access." +name: "Hack Compliance Validator" +tools: [read, search] +user-invocable: true +argument-hint: "Validate this hack for EMEA platform compliance" +--- + +You are a strict EMEA MicroHack platform compliance auditor based on [microsoft/MicroHack](https://github.com/microsoft/MicroHack). +Inspect this workspace and produce a pass/fail report against every mandatory convention. + +## Compliance Checklist + +Work through each item. Mark ✅ PASS or ❌ FAIL with a brief reason. + +### 1. Directory Structure +- [ ] `labautomation/` directory exists (no dashes — exactly `labautomation`). +- [ ] `labautomation/` contains **only** `deploy-lab.ps1`, `lab-defaults.json`, and `README.md` — no stray files (facilitator notes, runbooks, secrets, etc.). One-time setup / prerequisite docs belong in `walkthrough/` or a separate top-level folder, not here. +- [ ] `labautomation/lab-defaults.json` exists. +- [ ] `labautomation/README.md` exists. +- [ ] The root readme is **`README.md`** (all caps), and **every link that targets it uses that exact casing** — the `[Home]` links in `challenges/` (`../README.md`) and `walkthrough/` (`../../README.md`). GitHub is case-sensitive, so a `../Readme.md` link would 404. Flag any casing mismatch as **blocking** — even though it resolves on Windows. +- [ ] `challenges/` directory exists. +- [ ] `walkthrough/` directory exists. + +### 2. deploy-lab.ps1 — Parameter Contract +- [ ] `labautomation/deploy-lab.ps1` exists (optional but recommended). +- [ ] If it exists: parameter block declares exactly `$DeploymentType`, `$SubscriptionId`, `$ResourceGroupName`, `$PreferredLocation`, `$AllowedEntraUserIds`. +- [ ] `$DeploymentType` has `[ValidateSet('subscription','resourcegroup','resourcegroup-with-subscriptionowner')]`. + +### 3. deploy-lab.ps1 — Platform Integration Rules +- [ ] Script does **NOT** call `Connect-AzAccount` (platform pre-sets Az context). +- [ ] For `resourcegroup` deployment type: script does **NOT** call `New-AzResourceGroup` (platform pre-creates it). +- [ ] For `subscription` deployment type: script uses `Get-MhhStableHash` to generate a deterministic RG name. +- [ ] Any `Get-MhhStableHash` call passes `-Length` within the valid **12–64** range. Values below 12 throw at runtime and silently fail the whole deployment — flag as **blocking**. + +### 4. deploy-lab.ps1 — Credential Return +- [ ] Script emits at least one `@{ HackboxCredential = @{ name = ...; value = ...; note = ... } }` to the output stream. + +### 5. lab-defaults.json — Schema Validity +- [ ] File is valid JSON (no comments, no trailing commas). +- [ ] Contains `"$schema"` pointing to the MicroHack schema URL. +- [ ] `deploymentType` is one of: `"resourcegroup"`, `"resourcegroup-with-subscriptionowner"`, `"subscription"`. +- [ ] `preferredLocation` is a comma-separated string of Azure region names. +- [ ] `estimatedDailyCostsUsd` is a non-negative number. + +### 6. Platform Compatibility +- [ ] No hard-coded corporate network, specific DNS, or environment-specific blocks. +- [ ] Script works for on-site, online, and hybrid event formats. + +--- + +## How to Run + +1. Use `#tool:search` and `#tool:read` to locate and read each required file. +2. For each checklist item, read the relevant section and determine pass/fail. +3. Output the full checklist with ✅/❌ status. +4. Output a **Summary** section: + - Total: X/6 categories passing + - Blocking issues (❌ on categories 1–5 are blocking) + - Recommendations (non-blocking improvements) + +Be strict. A missing `$schema` in lab-defaults.json or a wrong parameter name in deploy-lab.ps1 causes the platform to skip the script silently — flag these as blocking. A root-readme casing mismatch and an out-of-range `Get-MhhStableHash -Length` are also blocking (broken GitHub links / runtime failure respectively). diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/copilot-instructions.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/copilot-instructions.md new file mode 100644 index 000000000..3f306934a --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/copilot-instructions.md @@ -0,0 +1,80 @@ +# MicroHack Lab — EMEA Platform Conventions + +This workspace is a microhack lab for the **EMEA MicroHack platform** ([microsoft/MicroHack](https://github.com/microsoft/MicroHack)). +The platform renders a front-end UI, but **all resource provisioning comes from `labautomation/deploy-lab.ps1`**. +Without a working deployment script, no resources appear in the Azure portal — the platform is just a shiny front end. + +## Mandatory Structure + +``` +labautomation/ ← exactly this name, no dashes + deploy-lab.ps1 ← platform entry point (optional but recommended) + lab-defaults.json ← platform configuration (required if folder exists) + README.md ← usage notes +challenges/ ← challenge instructions (Markdown) +walkthrough/ ← solutions +README.md ← hack intro, objectives, prerequisites +``` + +## deploy-lab.ps1 — Parameter Contract + +The platform **skips the script** if the parameter block does not exactly match: + +```powershell +param( + [Parameter(Mandatory=$true)] + [ValidateSet('subscription','resourcegroup','resourcegroup-with-subscriptionowner')] + [string]$DeploymentType, + + [Parameter(Mandatory=$true)] + [string]$SubscriptionId, + + [string]$ResourceGroupName = "", + + [string[]]$PreferredLocation = @(), + + [string[]]$AllowedEntraUserIds = @() +) +``` + +## Platform Guarantees (before your script runs) + +- Az context is already set to `$SubscriptionId` — **do NOT call `Connect-AzAccount`** +- For `resourcegroup`/`resourcegroup-with-subscriptionowner`: the RG exists and your script has `Owner` — **do NOT call `New-AzResourceGroup`** +- For `subscription`: your script has `Owner` on the subscription; **you must create the RG yourself** using `Get-MhhStableHash` for deterministic naming +- `Az.Accounts` and `Az.Resources` modules are already imported + +## lab-defaults.json — Required Shape + +```json +{ + "$schema": "https://raw.githubusercontent.com/microsoft/MicroHack/refs/heads/main/lab-defaults-schema.json", + "groups": [], + "deploymentType": "resourcegroup", + "labsPerSubscription": 4, + "preferredLocation": "westeurope, swedencentral, norwayeast", + "estimatedDailyCostsUsd": 5.0 +} +``` + +- `deploymentType`: `"resourcegroup"` | `"resourcegroup-with-subscriptionowner"` | `"subscription"` +- `groups`: `[]` (Azure only), `["GHCPUsers"]` (GitHub Copilot seat), `["M365-E5-Users"]` (M365 E5) +- `preferredLocation`: comma-separated regions, priority order +- `estimatedDailyCostsUsd`: per-user per-day cost for the lifecycle wizard + +## Returning Credentials to Users + +Write a hashtable to the output stream — the platform captures it and shows it on the user's dashboard: + +```powershell +@{ HackboxCredential = @{ name = "AdminPassword"; value = "TopSecret!"; note = "VM admin password" } } +``` + +## Delivery Deadline + +Labs must have at least a skeleton committed by **end of July** — September events are already scheduled. + +## Platform Compatibility + +The platform supports **on-site**, **online**, and **hybrid** delivery. +Do not hard-code corporate network or specific DNS assumptions. diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/instructions/labautomation.instructions.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/instructions/labautomation.instructions.md new file mode 100644 index 000000000..699ded2dd --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/instructions/labautomation.instructions.md @@ -0,0 +1,101 @@ +--- +description: "Use when creating, editing, or reviewing labautomation/deploy-lab.ps1, lab-defaults.json, or any PowerShell helper inside labautomation/. Enforces microsoft/MicroHack platform deployment conventions." +applyTo: "labautomation/**" +--- + +# Lab Automation Conventions (microsoft/MicroHack) + +## deploy-lab.ps1 — Required Parameter Contract + +The platform **silently skips** the script if the parameter block does not match exactly: + +```powershell +param( + [Parameter(Mandatory=$true)] + [ValidateSet('subscription','resourcegroup','resourcegroup-with-subscriptionowner')] + [string]$DeploymentType, + + [Parameter(Mandatory=$true)] + [string]$SubscriptionId, + + [string]$ResourceGroupName = "", + + [string[]]$PreferredLocation = @(), + + [string[]]$AllowedEntraUserIds = @() +) +``` + +## Critical Platform Rules + +**NEVER do these — they break platform integration:** + +```powershell +# WRONG — platform already sets Az context +Connect-AzAccount + +# WRONG — platform pre-creates the RG for resourcegroup deployments +New-AzResourceGroup -Name $ResourceGroupName ... +``` + +**For `subscription` deployments only** — you must create your own RG using a deterministic name: + +```powershell +$stableHash = Get-MhhStableHash $AllowedEntraUserIds -Length 24 +$effectiveResourceGroup = "lab-$stableHash" +New-AzResourceGroup -Name $effectiveResourceGroup -Location $effectiveLocation +``` + +## Resolving Effective Location + +```powershell +$effectiveLocation = if ($PreferredLocation.Count -gt 0) { $PreferredLocation[0] } else { "westeurope" } +``` + +## Deploying Resources + +Reference templates relative to `$scriptPath`: + +```powershell +$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$template = Join-Path $scriptPath "template.bicep" +New-AzResourceGroupDeployment -ResourceGroupName $effectiveResourceGroup -TemplateFile $template -Verbose +``` + +## Returning Credentials to the User Dashboard + +Write a hashtable to the output stream — the platform captures every one: + +```powershell +@{ HackboxCredential = @{ name = "AdminPassword"; value = "TopSecret!"; note = "VM admin password" } } +``` + +Always return at minimum the resource group name so users can find their resources. + +## lab-defaults.json — Required Shape + +```json +{ + "$schema": "https://raw.githubusercontent.com/microsoft/MicroHack/refs/heads/main/lab-defaults-schema.json", + "groups": [], + "deploymentType": "resourcegroup", + "labsPerSubscription": 4, + "preferredLocation": "westeurope, swedencentral, norwayeast", + "estimatedDailyCostsUsd": 5.0 +} +``` + +- `$schema` is **required** — the platform validates against it +- `deploymentType`: `"resourcegroup"` | `"resourcegroup-with-subscriptionowner"` | `"subscription"` +- `groups`: `[]` for Azure-only; add `"GHCPUsers"` or `"M365-E5-Users"` as needed +- `preferredLocation`: comma-separated regions in priority order — list multiple for regional fallback +- `estimatedDailyCostsUsd`: cost per user per day; used in the lifecycle cost wizard + +## Available Platform Helper Cmdlets + +| Cmdlet | Use | +|--------|-----| +| `Get-MhhStableHash` | Deterministic per-user hash for resource naming in `subscription` mode | +| `Get-MhhLabUser` | Get Entra user details for `$AllowedEntraUserIds` | +| `Invoke-MhhDeploymentWithRegionFallback` | Deploy with automatic region fallback | +| `Test-MhhDeploymentFailureRetryable` | Check if a deployment error is transient | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/prompts/scaffold-lab-automation.prompt.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/prompts/scaffold-lab-automation.prompt.md new file mode 100644 index 000000000..6582a2ef9 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.github/prompts/scaffold-lab-automation.prompt.md @@ -0,0 +1,86 @@ +--- +description: "Scaffold a complete labautomation/ directory for a new EMEA MicroHack. Generates deploy-lab.ps1, lab-defaults.json, and README.md that are 100% compliant with the microsoft/MicroHack platform contract." +name: "Scaffold Lab Automation" +agent: "agent" +argument-hint: "Describe the Azure resources this hack needs to deploy (e.g. 'a Storage Account and a Function App for an inventory management scenario')" +tools: [edit, read, search] +--- + +You are scaffolding the `labautomation/` directory for an EMEA MicroHack. +The user has described what Azure resources the hack needs. + +**Do not ask clarifying questions** — infer reasonable defaults and note assumptions in the README. + +## Step 1 — Read existing context + +Check whether `labautomation/` already exists. If it does, read existing files before overwriting. + +## Step 2 — Create lab-defaults.json + +Create `labautomation/lab-defaults.json`. Always include the `$schema` field: + +```json +{ + "$schema": "https://raw.githubusercontent.com/microsoft/MicroHack/refs/heads/main/lab-defaults-schema.json", + "groups": [], + "deploymentType": "resourcegroup", + "labsPerSubscription": 4, + "preferredLocation": "westeurope, swedencentral, norwayeast", + "estimatedDailyCostsUsd": 5.0 +} +``` + +Adjust `deploymentType`, `preferredLocation`, and `estimatedDailyCostsUsd` to match the hack's needs. +Add `"GHCPUsers"` or `"M365-E5-Users"` to `groups` only if the hack requires those licenses. + +## Step 3 — Create deploy-lab.ps1 + +Create `labautomation/deploy-lab.ps1` following the **exact** platform parameter contract: + +```powershell +param( + [Parameter(Mandatory=$true)] + [ValidateSet('subscription','resourcegroup','resourcegroup-with-subscriptionowner')] + [string]$DeploymentType, + + [Parameter(Mandatory=$true)] + [string]$SubscriptionId, + + [string]$ResourceGroupName = "", + + [string[]]$PreferredLocation = @(), + + [string[]]$AllowedEntraUserIds = @() +) +``` + +**Critical rules — the platform silently skips the script if these are violated:** +- Do NOT call `Connect-AzAccount` — Az context is pre-set by the platform +- Do NOT call `New-AzResourceGroup` for `resourcegroup` deployments — the RG is pre-created +- For `subscription` deployments: use `Get-MhhStableHash $AllowedEntraUserIds -Length 24` for deterministic RG naming, then call `New-AzResourceGroup` +- Always emit at least one `@{ HackboxCredential = @{ name = ...; value = ...; note = ... } }` to the output stream + +Add the actual resource deployments (Bicep, ARM, or Az cmdlets) in the body. +Reference the Bicep/ARM template file relative to `$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition`. + +## Step 4 — Create README.md + +Create `labautomation/README.md` covering: +- What the script deploys (bullet list of resources) +- `deploymentType` choice and reason +- `preferredLocation` choice and reason +- `estimatedDailyCostsUsd` basis +- Any assumptions made during scaffolding + +## Step 5 — Self-validate + +After creating all files, verify against the compliance checklist: +- Directory named exactly `labautomation` (no dashes) ✅ +- `lab-defaults.json` has `$schema` field ✅ +- `deploy-lab.ps1` parameter block matches contract exactly ✅ +- No `Connect-AzAccount` in the script ✅ +- No `New-AzResourceGroup` for resourcegroup deployment type ✅ +- At least one `HackboxCredential` returned ✅ +- No hard-coded environment assumptions ✅ + +Report any item you could not satisfy and why. diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.gitignore b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.gitignore new file mode 100644 index 000000000..041bf8ca5 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/.gitignore @@ -0,0 +1,21 @@ +# Python +__pycache__/ +*.py[cod] +.venv/ +venv/ +.pytest_cache/ + +# Environment / secrets +.env +*.local + +# Azure Developer CLI +.azure/ + +# Editor +.vscode/ +.idea/ +.DS_Store + +# Editable diagram source (kept local — architecture.png is what ships) +images/architecture.excalidraw diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md new file mode 100644 index 000000000..dac2d9764 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md @@ -0,0 +1,220 @@ +# Agentic Inventory Planning + +Welcome to the **Agentic Inventory Planning** MicroHack. In this hands-on, code-first +workshop you'll build **hosted AI agents in code** that reason over governed enterprise +data and take human-approved actions — a closed planning loop for retail inventory, from +sensing demand to submitting a purchase order behind a human gate. + +- [**Introduction**](#introduction) +- [**Learning objectives**](#learning-objectives) +- [**Scenario**](#scenario) +- [**Architecture**](#architecture) +- [**A note on the model**](#a-note-on-the-model) +- [**Requirements**](#requirements) +- [**Challenges**](#challenges) +- [**Repository layout**](#repository-layout) +- [**Contributors**](#contributors) + +## Introduction + +This MicroHack teaches you to build **hosted AI agents in code** that reason over +governed enterprise data and take human-approved actions. Using the **Microsoft +Foundry Agent Service** and Python, you build three agents that form a closed planning +loop for inventory management — sensing demand, optimising stock, and submitting +replenishment orders behind a human-in-the-loop gate — and wire them into a **minimal +planner-console UI** that tells one cohesive story. + +The governed data lives in a **per-attendee Azure Cosmos DB** that the lab provisions +for you (keyless, serverless), queried by typed **function tools**, and every agent is a +**hosted agent** you define in Python and deploy to your Foundry project. You can run the +whole thing from a **GitHub Codespace** with zero local setup. + +## Learning objectives + +By completing this MicroHack you will be able to: + +- Define and deploy **hosted agents** in the Foundry Agent Service from Python. +- Give agents **function tools** and understand how the model chooses to call them. +- Implement a **human-in-the-loop approval gate** in code before a side effect. +- Chain agents into a deterministic **sequential workflow**. +- Inspect agent behaviour with **tracing** in the Foundry portal. +- Work entirely from a **Codespace** and drive the loop through a minimal UI. + +## Scenario + +You are a developer at **Zava**, a retail company whose planning team always reacts to +last month's data. Your job is to close that gap — in code — with three hosted agents +that sense, decide, and act, surfaced through a small planner console. + +❶ **The business.** Zava sells across four categories — `garden_and_lawn`, +`outdoor_power_tools`, `paint_and_supplies`, and `smart_home` — stocked across four +stores (Boston, Brooklyn, Portland, Seattle) and two warehouses (Chicago, Dallas). Every +SKU-at-location carries an `onHand`, a `reorderPoint`, and a `safetyStock`. + +❷ **The signal.** Real-world events move demand — weather, search trends, competitor +stockouts, news. These live in the governed data alongside inventory, so an agent can +reconcile *what's happening in the world* against *what's on the shelf*. + +❸ **The decision.** When stock falls below threshold — **AT_RISK** at or below the +reorder point, **CRITICAL** below safety stock — someone must decide which SKUs to +reorder, how many units, and to which location, then place the order. Purchase orders +need a human sign-off. + +❹ **The agents.** Three hosted agents close the loop, each with typed function tools +over the governed data: + +| # | Agent (Python) | Tools it calls | What it produces | +|---|----------------|----------------|------------------| +| 1 | **Demand Sensing** | `get_external_signals`, `list_low_stock`, `query_inventory` | A demand-exposure assessment | +| 2 | **Inventory Optimisation** | `list_low_stock`, `calc_reorder`, `get_product`, `query_inventory` | A structured reorder recommendation | +| 3 | **Replenishment Action** | `get_product`, `submit_purchase_order` *(gated)* | A **human-approved** purchase order | +| ⭐ *(stretch)* | **Workflow** | The three agents chained in code | The full loop from one entry point | + +❺ **The console.** A minimal **Planner Console** (FastAPI + one static HTML page — no +build step) weaves the agents into one story a planner clicks through: +**Sense → Plan → Approve → Act**. + +## Architecture + +![Agentic Inventory Planning — the planner console drives three hosted agents (Demand Sensing → Inventory Optimisation → Replenishment) that call function tools over a governed Azure Cosmos DB, with a human-approval gate before the order is written](images/architecture.png) + +The pieces you'll work with: + +❶ **This repository** holds the docs, starter code, and Zava seed data. Open it in a +Codespace (or a local devcontainer) and work from there. + +❷ **GitHub Codespaces / devcontainer** gives everyone the same baseline — Python, `uv`, +and the Azure CLI pre-installed — so there's zero local setup. + +❸ **Hosted agents in Microsoft Foundry.** You define each agent in Python and create it +with the Foundry agents API; it appears **natively** in the portal, with a **Traces** +tab. + +❹ **Function tools over governed data.** Typed Python callables (`query_inventory`, +`calc_reorder`, `submit_purchase_order`, …) are exposed to the model as tools — this is +how agents read and write real data instead of answering from memory. + +❺ **Azure Cosmos DB** is the per-attendee governed store (serverless, keyless), seeded +from `src/data` on first run. The one side-effecting tool does a **real Cosmos write**. + +❻ **Application Insights** captures **server-side traces** of every model call and tool +invocation, so you can see exactly *what the agent did and why*. + +❼ **The Planner Console** drives the whole loop from the browser and enforces the +human-approval gate before anything is written. + +## A note on the model + +**This choice is deliberate.** This hack lives or dies on the agent **actually calling +its function tools** and returning **structured JSON**. The lab provisions +**`gpt-5.4-mini`** — a low-cost GPT-5 model whose **Foundry model card** confirms both +**Functions/Tools** and **Structured Outputs** support. Among the low-cost GPT-5 models +it has the longest support horizon (retires **2027-03-18**), and it runs on +**GlobalStandard in EU** regions — targeting availability through **end of 2027**. + +> [!IMPORTANT] +> If you change the model, only pick one whose **Foundry model card** lists +> **Functions/Tools** *and* **Structured Outputs** as supported. Avoid the older +> **o-series** reasoning models (o1 / o3 / o4) — in tool-driven agents they can +> refuse to call tools. Avoid already-**deprecated** models too: `gpt-4.1-mini` +> and `gpt-4o-mini` retire in October 2026. Swapping is one env var +> (`MODEL_DEPLOYMENT_NAME`; a good fallback is `gpt-5-mini`) — after changing it, +> re-run a step in the console to confirm the agent still calls its tools. + +> [!TIP] +> GPT-5 models are *reasoning* models, so they think before answering. The lab sets +> **`REASONING_EFFORT=minimal`** in `.env` to keep the planner console snappy — raise +> it (`low` / `medium` / `high`) for harder reasoning, or set `default` to let the +> model decide. The runtime passes this only when supported and falls back safely. + +## Requirements + +To complete this MicroHack you'll need: + +- A **GitHub account** (for Codespaces) **or** local **Python 3.11** + [uv](https://docs.astral.sh/uv/) + **Azure CLI**. +- Access to the **Foundry project** and **Cosmos DB** your lab automation provisioned — + you'll get a `FoundryProjectEndpoint`, `ModelDeploymentName`, and `CosmosEndpoint` on + your dashboard. +- Comfort **reading and editing Python** (the reference implementation is provided). +- That's it — no data setup (the app seeds Cosmos on first run), no other software. + +> [!TIP] +> **You're ready to start when** you can open the repo in a Codespace, run `az login`, +> and paste your three dashboard values into `src/.env`. + +## Challenges + +This MicroHack is divided into six challenges, each building on the last. You'll start +by getting grounded and setting up, then build one hosted agent at a time, orchestrate +them into a complete loop, and finally make the loop **react to live events**. + +### Challenge structure + +Each challenge follows the same anatomy, so you always know where to look: + +| Section | Description | +|---------|-------------| +| 🎯 **Objective** | What you'll achieve and why it matters | +| 🧭 **Context** | The scenario, concepts, and code to read first | +| ✅ **Tasks** | Step-by-step instructions to complete the challenge | +| 🏁 **Success criteria** | A checklist to confirm you're done | +| 🛠️ **Troubleshooting** | Common problems and their fixes | +| 🚀 **Go further** | Optional stretch goals if you finish early | +| 📚 **Learning resources** | Docs to go deeper | + +### Challenge list + +- **Challenge 0**: **[Get Grounded & Set Up](challenges/challenge-00.md)** *(45 min)* — the scenario, the data model, your Codespace, and the planner console. +- **Challenge 1**: **[Demand Sensing](challenges/challenge-01.md)** *(60 min)* — build and deploy your first hosted agent with function tools over the governed data. +- **Challenge 2**: **[Inventory Optimisation](challenges/challenge-02.md)** *(60 min)* — a reasoning agent that produces a reorder recommendation, then read its trace. +- **Challenge 3**: **[Replenishment + Human-in-the-Loop](challenges/challenge-03.md)** *(75 min)* — a real approval gate before the only side-effecting tool. +- **Challenge 4** *(stretch)*: **[Orchestrate the Loop](challenges/challenge-04.md)** *(45 min)* — chain all three agents into one sequential workflow with a one-click UI. +- **Challenge 5** *(stretch)*: **[The Loop Reacts](challenges/challenge-05.md)** *(60 min)* — event-driven: an independent Cosmos insert (from the console or an MCP client) auto-runs the loop live and stops at the human gate. + +> [!TIP] +> It's tempting to race through, but pause and reflect: which planning decisions in +> *your* environment could benefit from agents that sense, reason, and act behind a +> human gate? Thinking about real-world applicability is where the learning sticks. + +> Full reference solutions for every challenge are in [`walkthrough/`](walkthrough/). + +## Repository layout + +``` +.devcontainer/ Codespaces / devcontainer (uv, azd, Azure CLI) +labautomation/ Platform entry point — provisions Foundry + Cosmos DB + App Insights +src/ + pyproject.toml Dependencies (managed by uv — no requirements.txt) + data/ Zava seed data — loaded into Cosmos on first run + inventory_store.py Cosmos-backed store — seeds the containers, serves the tools + tools.py Function tools the agents call (read/write Cosmos) + agents/ The three hosted-agent definitions + agent_runtime.py Creates/runs hosted agents; enforces the approval gate + orchestrator.py Weaves the loop for the UI + workflow.py Stretch: the loop as one sequential workflow + live.py Stretch: change-feed watcher — the loop reacts to Cosmos inserts + mcp_server.py Stretch: MCP server exposing inject_signal (external trigger) + ui/ Minimal planner console (FastAPI + static HTML) — the only UI +challenges/ Challenge instructions +walkthrough/ Reference solutions (one per challenge) +images/ Screenshots referenced by the challenges +``` + +## Contributors + +| Name | Role | +|------|------| +| Digvijay Chauhan | Author & maintainer | + +## Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA). For details, visit [https://cla.opensource.microsoft.com](https://cla.opensource.microsoft.com). + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). + +## Trademarks + +This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft +trademarks or logos is subject to and must follow +[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md new file mode 100644 index 000000000..870fbb32f --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md @@ -0,0 +1,108 @@ +# Challenge 0 — Get Grounded & Set Up + +**[Home](../README.md)** - [Next Challenge →](challenge-01.md) + +## 🎯 Objective + +Understand the inventory scenario and the architecture, get your +**Codespace** running, connect to your **Foundry project**, and open the **planner +console** — the empty shell you'll light up one agent at a time. + +## 🧭 Context + +You are a developer at **Zava**, a retail company. The planning team always reacts +to last month's data. Your job is to build three **hosted agents** that close the +gap — in code — and surface them through a small planner console: + +1. **Demand Sensing** — react to real-world changes +2. **Inventory Optimisation** — decide the right stock level +3. **Replenishment Action** — submit the order behind a human approval gate + +The governed data lives **inside your code** as function tools over `src/data` — the +app seeds it into Cosmos on first run, with nothing extra to set up. + +## ✅ Tasks + +### Part A — Open the Codespace (10 min) + +1. On the GitHub repo, click **Code → Codespaces → Create codespace on main**. + (Prefer local? Open the folder in VS Code with the Dev Containers extension.) +2. Wait for the container to build — it installs dependencies with `uv` and seeds + `src/.env` automatically (see `.devcontainer/post-create.sh`). + +### Part B — Connect to your Foundry project (10 min) + +1. In the Codespace terminal, sign in: + ```bash + az login --use-device-code + ``` +2. Open `src/.env` and paste the three values from your **lab dashboard**: + ``` + PROJECT_ENDPOINT= + MODEL_DEPLOYMENT_NAME= # gpt-5.4-mini + COSMOS_ENDPOINT= # the governed data store + ``` +3. Confirm the model is deployed: open [ai.azure.com](https://ai.azure.com), select + your project, and check **Models + endpoints** shows `gpt-5.4-mini` = *Succeeded*. + +### Part C — Read the data model (15 min) + +The governed data lives in a **per-attendee Azure Cosmos DB** that the lab +provisioned (serverless, keyless). `src/inventory_store.py` seeds it from `src/data` +on first run and serves these containers to the tools: + +| Container | What it contains | Tool that exposes it | +|-----------|------------------|----------------------| +| `inventory` | `onHand`, `reorderPoint`, `safetyStock` per product per location | `query_inventory`, `list_low_stock` | +| `products` | `name`, `category`, `unitCost`, `leadTimeDays`, `supplierId` | `get_product` | +| `demand` | Weekly sales per product per retail store | `calc_reorder` (avg daily sales) | +| `signals` | Weather, search trends, competitor, news | `get_external_signals` | +| `orders` | Purchase orders / transfers | `submit_purchase_order` (**real write**) | + +**Categories:** `garden_and_lawn`, `outdoor_power_tools`, `paint_and_supplies`, `smart_home` +**Locations:** Boston, Brooklyn, Portland, Seattle stores + Chicago, Dallas warehouses + +A row is **CRITICAL** when `onHand < safetyStock`, **AT_RISK** at/below `reorderPoint`. + +### Part D — Open the planner console (10 min) + +1. From `src/`, launch the console: + ```bash + cd src && uv run uvicorn ui.app:app --reload --port 8000 + ``` +2. Open the forwarded **port 8000** (Codespaces pops it automatically). +3. The **first** load seeds Cosmos from `src/data` (a few seconds), then the + **current exposure** and **order book** panels populate from the store. The + **Sense demand** button is already wired to the agent you build next; Steps 2–4 + stay **locked** until the previous step succeeds. (Clicking **Sense demand** now + would create and run your first hosted agent — that *is* Challenge 1, so you can + stop here and pick it up in the next challenge.) + +## 🏁 Success criteria + +- [ ] Your Codespace (or local devcontainer) is running with dependencies installed. +- [ ] `az login` succeeded and `src/.env` has your endpoint, model name, and Cosmos endpoint. +- [ ] `gpt-5.4-mini` shows *Succeeded* in your Foundry project. +- [ ] The planner console loads and shows current exposure + the order book (Cosmos seeded). +- [ ] You can name the tools each of the three agents will use. + +## 🛠️ Troubleshooting + +| Symptom | Fix | +|---------|-----| +| `gpt-5.4-mini` missing | Flag your facilitator — it's part of the provisioned lab. | +| Port 8000 didn't open | Open the **Ports** tab and click the globe on 8000. | +| `az login` opens no browser | Use `az login --use-device-code` and follow the URL. | +| Panels show "not connected" | Set `COSMOS_ENDPOINT` in `src/.env` and `az login`. If just provisioned, the data-plane role can take a minute to propagate — wait and reload. | +| `Forbidden` / 403 from Cosmos | Your identity's **Cosmos DB Built-in Data Contributor** role is still propagating, or you're signed into the wrong tenant — re-check `az login`. | + +## 🚀 Go further + +- Open `src/tools.py` and read `list_low_stock` — the console's **current exposure** + panel is exactly what it returns. +- Predict which locations Challenge 2 will flag CRITICAL before you get there. + +## 📚 Learning resources + +- [What is Microsoft Foundry Agent Service?](https://learn.microsoft.com/azure/foundry/agents/overview) +- [Develop in a Codespace / devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md new file mode 100644 index 000000000..5e1f377f7 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md @@ -0,0 +1,104 @@ +# Challenge 1 — Demand Sensing (Hosted Agent) + +**[← Previous](challenge-00.md)** - [Home](../README.md) - [Next Challenge →](challenge-02.md) + +## 🎯 Objective + +Build and deploy your first **hosted agent** in code. Give it **function tools** +over the governed inventory data, run it against a real-world scenario, and light +up **Step 1** of the planner console. + +## 🧭 Context + +Your facilitator announces a scenario, for example: + +> *"A prolonged heatwave and early spring across the Pacific Northwest is driving a +> surge in demand for garden and outdoor power equipment."* + +Your agent must sense that signal, reconcile it against the governed inventory +position, and produce a demand assessment planners can act on. + +## ✅ Tasks + +### Part A — Read the agent definition (15 min) + +Open [`src/agents/__init__.py`](../src/agents/__init__.py) and study `DEMAND_SENSING`: + +- **`name`** — becomes the hosted agent's name in your Foundry project. +- **`instructions`** — the system prompt; note the strict *TOOL USE* rule. +- **`functions`** — `query_inventory`, `list_low_stock`, `get_external_signals` + from [`src/tools.py`](../src/tools.py). + +Open [`src/agent_runtime.py`](../src/agent_runtime.py) and follow `AgentRuntime.ensure`: +it **creates a versioned agent** with the new Foundry agents API and routes the +agent's endpoint to it — this is what makes it a *native hosted* agent (it appears in +the portal under **Agents**, with a **Traces** tab). + +### Part B — Run the agent from the console (20 min) + +You run the agent straight from the planner console — there are no scripts to run. + +1. Launch the console (if it isn't already running) and open the forwarded port 8000: + ```bash + cd src && uv run uvicorn ui.app:app --reload --port 8000 + ``` +2. Pick a scenario and click **Sense demand**. + +That first click does two things: `AgentRuntime.ensure()` **creates the +`demand-sensing-agent` hosted agent** in your Foundry project, then runs it. Step 1 +turns green and shows an assessment that: +- cites at least one **external signal** (from `get_external_signals`), +- references at least one **governed inventory** number (from `list_low_stock` / + `query_inventory`), and +- states whether stock is **adequate / at risk / critically exposed**. + +Step 2's button unlocks once Step 1 succeeds. + +![The planner console after Step 1: the demand assessment appears and Step 2 unlocks](../images/challenge-01-console.png) + +Now confirm it's really hosted: open [ai.azure.com](https://ai.azure.com) → your +project → **Agents**. You'll see **`demand-sensing-agent`** listed — the hosted agent +your click just created. Edit its instructions in `src/agents/__init__.py`, save (the +server auto-reloads), and click **Sense demand** again to update it in place. + +> [!NOTE] +> In the agent's **Playground** tab, its function tools may show *"Not supported by +> the selected model."* This is a **cosmetic** portal capability flag for +> `gpt-5.4-mini` — the tools **do** execute at runtime via the Responses API (the +> assessment's governed numbers come straight from those tool calls). + +### Part C — (Optional) add Web Search grounding (10 min) + +The `get_external_signals` tool already grounds the agent in pre-loaded market +signals, so the challenge completes without any live web tool. If your project has +the Web Search / Bing grounding tool enabled, set `ENABLE_WEB_SEARCH=true` in +`src/.env` and extend the agent to add it (see **Go further**). + +## 🏁 Success criteria + +- [ ] `demand-sensing-agent` appears under **Agents** in your Foundry project. +- [ ] Running the agent returns an assessment backed by a governed data point **and** + an external signal, with a clear adequate / at-risk / exposed verdict. +- [ ] The planner console's **Step 1** turns green and unlocks Step 2. +- [ ] You can explain what each function tool contributed. + +## 🛠️ Troubleshooting + +| Symptom | Fix | +|---------|-----| +| `PROJECT_ENDPOINT is not set` | Fill in `src/.env` from your dashboard (Challenge 0). | +| `DefaultAzureCredential` error | Run `az login` in the same terminal. | +| Agent answers from memory | Strengthen the *TOOL USE* rule in the instructions. | +| The agent never calls a tool | Confirm the deployed model's Foundry card lists **Functions/Tools** support (e.g. `gpt-5.4-mini`); avoid the older o-series. | + +## 🚀 Go further + +- Add the Bing grounding tool: create a `BingGroundingTool` in `agent_runtime.ensure` + when `config.ENABLE_WEB_SEARCH` is true, and pass a `BING_CONNECTION_ID`. +- Ask the agent to rank **all** locations by exposure, not just the worst. +- Add a second scenario (a supplier delay) and compare the assessment. + +## 📚 Learning resources + +- [Create and run agents with the Foundry Agents SDK](https://learn.microsoft.com/azure/ai-foundry/agents/quickstart) +- [Function tools for agents](https://learn.microsoft.com/azure/ai-foundry/agents/how-to/tools/function-calling) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md new file mode 100644 index 000000000..65db86d04 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md @@ -0,0 +1,88 @@ +# Challenge 2 — Inventory Optimisation (Hosted Agent) + Tracing + +**[← Previous](challenge-01.md)** - [Home](../README.md) - [Next Challenge →](challenge-03.md) + +## 🎯 Objective + +Build the second hosted agent: it takes the demand assessment and produces a +concrete **reorder recommendation** using a planning rule and the governed data. +Then use **tracing** in the Foundry portal to inspect every tool call it made. + +## 🧭 Context + +The demand signal shows exposure. The planning team now needs to know *which SKUs* +to reorder, *how many units*, *to which location*, and *why*. + +## ✅ Tasks + +### Part A — Read the agent & the reorder rule (15 min) + +Open [`src/agents/__init__.py`](../src/agents/__init__.py) → `INVENTORY_OPTIMISATION` +and [`src/tools.py`](../src/tools.py) → `calc_reorder`. The rule is: + +``` +reorder_qty = max(0, average_daily_sales * 30 - current_stock) +``` + +The agent is instructed to return a **structured JSON** recommendation (so the UI +can render a table), marking any SKU below safety stock as **CRITICAL**. + +### Part B — Run the optimisation step (15 min) + +In the console, after Step 1, click **Generate reorder plan**. That first click +**creates the `inventory-optimisation-agent` hosted agent**, then runs it: Step 2 +renders the recommendation table and unlocks Step 3. + +Confirm at least one item is flagged **CRITICAL** (leaf blowers / chainsaws at +Portland and Seattle are strong candidates). Behind the scenes the agent returns a +JSON `recommendations` array — the console renders it as a table. + +![Planner console Step 2: a reorder recommendation table with a CRITICAL row](../images/challenge-02-console.png) + +### Part C — Inspect the trace (25 min) + +> [!IMPORTANT] +> Understanding *what an agent did and why* is the core skill for trustworthy AI. + +1. In the Foundry portal, open your agent → the **Traces** tab (your lab already + connected Application Insights, so tracing is on — no setup needed). +2. Find the most recent `inventory-optimisation-agent` run. +3. Locate and read: + - the **model call** — the instructions + input the model received, + - each **tool call** — e.g. `calc_reorder` with its arguments, + - the **tool response** — the numbers your code returned, + - the **final generation** — how the model assembled the JSON. +4. Answer from the trace: + - Did the agent call `calc_reorder` once or per SKU? Why? + - Are the reorder quantities traceable to real `avgDailySales × 30 − stock` numbers? + - Did it correctly flag the CRITICAL items? + +![Trace view: the model call, the calc_reorder tool call, its response, and the final generation](../images/challenge-02-trace.png) + +## 🏁 Success criteria + +- [ ] `inventory-optimisation-agent` exists in your project with only the read tools. +- [ ] The plan step returns a recommendation with at least one **CRITICAL** item. +- [ ] The console's **Step 2** renders the table and unlocks Step 3. +- [ ] You can point to the trace and prove *why* a quantity was recommended. + +## 🛠️ Troubleshooting + +| Symptom | Fix | +|---------|-----| +| No run under **Traces** | Traces can take a minute or two to reach Application Insights — wait, then refresh; make sure the agent actually ran. | +| Tools show "Not supported by the selected model" | Cosmetic portal flag for `gpt-5.4-mini`; the tools run via the Responses API (the real reorder numbers prove it). | +| Output isn't valid JSON | The orchestrator tolerates code-fences, but reinforce *"Return ONLY the JSON"* in instructions. | +| No CRITICAL item | Use a scenario touching outdoor power tools (Portland/Seattle are below safety stock). | +| Quantities look wrong | Check the trace — confirm `calc_reorder` was called and returned real numbers. | + +## 🚀 Go further + +- Extend `calc_reorder` to respect `safetyStock` as well as `reorderPoint`. +- Have the agent rank recommendations by estimated spend using `unitCost`. +- Add a `transfer` suggestion when another location has surplus. + +## 📚 Learning resources + +- [Trace agents in Foundry](https://learn.microsoft.com/azure/ai-foundry/observability/concepts/trace-agent-concept) +- [Responsible AI for agents](https://learn.microsoft.com/azure/ai-foundry/responsible-use-of-ai-overview) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md new file mode 100644 index 000000000..f473d34cb --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md @@ -0,0 +1,92 @@ +# Challenge 3 — Replenishment Action + Human-in-the-Loop + +**[← Previous](challenge-02.md)** - [Home](../README.md) - [Next Challenge →](challenge-04.md) + +## 🎯 Objective + +Build the third hosted agent: it proposes a purchase order, then a **human approves +or rejects it in code** before the one side-effecting tool runs. This is the gate +that turns an AI assistant into an AI agent that genuinely acts. + +## 🧭 Context + +Someone has to actually place the order — but purchase orders need a human sign-off. +Your Replenishment Action Agent **proposes**; a person **decides**; the tool **acts**. + +## ✅ Tasks + +### Part A — Read the agent & the gate (20 min) + +Open [`src/agents/__init__.py`](../src/agents/__init__.py) → `REPLENISHMENT`. It has +two tools: `get_product` (to look up unit costs) and `submit_purchase_order` (the +only side effect). Its instructions tell it to **propose** a PO as JSON and to +**never** submit without approval. + +Now open [`src/agent_runtime.py`](../src/agent_runtime.py). The set +`APPROVAL_REQUIRED = {"submit_purchase_order"}` makes the runtime **refuse to +auto-execute** that tool: if the model asks for it, `run()` returns a +`ToolApprovalRequest` instead of acting. The human decision happens in +[`src/orchestrator.py`](../src/orchestrator.py) → `approve()`, which only runs the +tool after a person says yes. + +> [!NOTE] +> The approval here isn't *simulated in a prompt* — the acting tool is **structurally +> blocked** until a human approves. + +### Part B — Build the proposal (20 min) + +In the console, after Steps 1–2, click **Build PO proposal**. That first click +**creates the `replenishment-action-agent` hosted agent**, then runs it: **Step 3** +renders a per-line purchase-order proposal with a total, and **Step 4 (Approve & +act)** unlocks. Nothing is submitted yet — the agent only *proposes*. The **Approve** +/ **Reject** buttons appear for the human gate you test next, and **Step 4 shows a +summary of exactly what you're approving** — the per-line PO and total — so the +decision is fully informed. + +### Part C — Approve in the console (25 min) + +> [!IMPORTANT] +> This is the payoff: the whole loop, with the human gate, in the UI. + +1. With the proposal at **Step 3** and the **Approve** / **Reject** buttons at **Step 4** (from Part B): +2. Click **Reject** first — confirm *"Order cancelled. No action taken."* and that + the order book does **not** change. +3. Refresh the page, re-run Steps 1–3, then click **Approve & submit** — the + confirmation `✅ Purchase order PO-… submitted and recorded in the order book.` + appears and the new order shows up in the **order book** panel (a real Cosmos write). + +![Planner console at the approval gate — Step 4 shows the per-line PO summary with Approve / Reject before the write](../images/challenge-03-approve.png) + +### Part D — Trace the acting run (10 min) + +In the portal, open the `replenishment-action-agent` **Traces** tab and its latest +run. You'll see the `get_product` unit-cost lookups — but **no** `submit_purchase_order` +call, because the runtime blocks it and hands control to the human before it can run. + +## 🏁 Success criteria + +- [ ] `replenishment-action-agent` exists with `get_product` + `submit_purchase_order`. +- [ ] The proposal is a per-line cost table with a total. +- [ ] **Reject** writes nothing; **Approve** appends a `PO-…` to the order book. +- [ ] You can explain, pointing at the code, *why* the agent can't submit on its own. + +## 🛠️ Troubleshooting + +| Symptom | Fix | +|---------|-----| +| An order is written without approval | Confirm `submit_purchase_order` is in `APPROVAL_REQUIRED`. | +| Unit costs all show `$20` | The `get_product` lookup failed — check the trace; `$20` is the fallback only. | +| Proposal isn't valid JSON | Reinforce *"Return ONLY the JSON"* in the instructions. | +| Approve does nothing | Ensure `submitItems` is populated in the proposal (see the agent instructions). | + +## 🚀 Go further + +- Add a **spend cap**: reject any proposal above a threshold and escalate. +- Capture the approver's **name and reason** and echo them in the confirmation. +- Query the Cosmos `orders` container directly (portal Data Explorer) to see your + submitted PO persisted alongside the seed orders. + +## 📚 Learning resources + +- [Human-in-the-loop tool approvals for agents](https://learn.microsoft.com/agent-framework/agents/tools/tool-approval) +- [Agent development lifecycle](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/development-lifecycle) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md new file mode 100644 index 000000000..063e11331 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md @@ -0,0 +1,114 @@ +# Challenge 4 — Orchestrate the Loop (Stretch) + +**[← Previous](challenge-03.md)** - [Home](../README.md) - [Next Challenge →](challenge-05.md) + +> [!NOTE] +> Optional stretch for teams that finish early. It builds on the three agents from +> Challenges 1–3. Skip without penalty — Challenges 0–3 are the core. + +## 🎯 Objective + +Chain the three agents into one **sequential workflow** so the entire +sense → plan → approve → act loop runs from a single entry point, pausing only at +the human-approval gate. Then wire the console's one-click **"Run the whole loop"**. + +## 🧭 Context + +Planners don't want to click four buttons — they want to type one sentence and have +the system run the loop, stopping only for approval. + +## ✅ Tasks + +### Part A — Read the workflow (10 min) + +Open [`src/workflow.py`](../src/workflow.py) → `run_planning_workflow`. It takes a +scenario and an `approve` callback (the human gate) and runs +`sense → plan → propose → [human] → approve`. This mirrors the Microsoft Agent +Framework **sequential** pattern: deterministic hand-off with a gate before the +terminal action. + +### Part B — Read the workflow endpoint (10 min) + +The console already exposes the workflow through one endpoint. Open +[`src/ui/app.py`](../src/ui/app.py) → `/api/run-loop`: it calls +`run_planning_workflow(scenario, approve=lambda _p: False, ...)` — running +`sense → plan → propose` server-side in one shot and returning all three stages, +**without** submitting (the human still approves at Step 4). This is the sequential +workflow driving the whole loop from a single call. + +### Part C — Add the one-click UI button (25 min) + +Wire a **"Run the whole loop"** button in +[`src/ui/static/index.html`](../src/ui/static/index.html) that: + +1. `POST`s the chosen scenario to **`/api/run-loop`**, then +2. fills Steps 1–3 from the response (`assessment`, `recommendation`, `proposal`) and + **stops at Step 4** for the human's **Approve / Reject**. + +First add the button element (for example next to the Step 1 **Sense demand** +button): + +```html + +``` + +Then attach a handler to get you started: + +```javascript +document.getElementById("btnRunLoop").onclick = async () => { + const r = await api("/api/run-loop", { scenario: $("scenario").value }); + if (r.error) return showError("outSense", r.error); + $("outSense").hidden = false; $("outSense").textContent = r.assessment; + recommendation = r.recommendation; + submitItems = (r.proposal.submitItems) || []; + renderPlan(r.recommendation); // existing helper — fills the Step 2 table + renderProposal(r.proposal); // existing helper — fills Step 3 and the Step 4 summary + $("btnApprove").disabled = false; $("btnReject").disabled = false; // open the human gate +}; +``` + +> [!TIP] +> `renderPlan()` and `renderProposal()` already exist in `index.html` — they power the +> manual Step 2/3 buttons. Reuse them here instead of hand-rolling table markup. + +> Keep the human gate: the button must still stop at approval — the whole point is +> that automation runs everything *except* the human decision. Never auto-call +> `/api/approve`. + +### Part D — (Alternative) evaluation pass (optional) + +If you'd rather evaluate quality: in the portal **Evaluation**, build a small +dataset of 3–5 questions with expected answers (e.g. *"Which store has the lowest +leaf blower stock?"* → *"Portland"*), run it against `inventory-optimisation-agent`, +and review **groundedness** and **relevance**. + +## 🏁 Success criteria + +- [ ] You can explain how `/api/run-loop` + `run_planning_workflow` drive the full + loop from one call, pausing at approval. +- [ ] The console's **Run the whole loop** button fills Steps 1–3 and stops at Step 4. + *Quick test:* run it with *"A prolonged heatwave is forecast across the Southwest"* — + Step 1 shows an assessment within ~10 s and Steps 2–3 populate on their own, with + **Approve / Reject** live at Step 4. +- [ ] **Reject** submits nothing; **Approve** appends a `PO-…` to the order book. +- [ ] You can explain when a deterministic workflow beats manual step-by-step driving. + +## 🛠️ Troubleshooting + +| Symptom | Fix | +|---------|-----| +| `/api/run-loop` returns an error | Ensure all three agents work (Challenges 1–3) and `az login` is valid. | +| The button submits automatically | Don't call `/api/approve` from the button; only from the Approve button. | +| Nothing renders | Check the browser console — the response keys are `assessment`, `recommendation`, `proposal`. | + +## 🚀 Go further + +- Export the sequence as an **Agent Framework** YAML workflow and run it as a routine. +- Add a **group-chat** variant where agents hand off dynamically instead of in a fixed order. +- Publish the console behind auth and add an audit log of every approval. + +## 📚 Learning resources + +- [Agent Framework sequential workflows](https://learn.microsoft.com/agent-framework/workflows/orchestrations/sequential) +- [Build a workflow in Microsoft Foundry (Preview)](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/workflow) +- [Evaluate agents in Foundry](https://learn.microsoft.com/azure/ai-foundry/observability/how-to/evaluate-agent) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md new file mode 100644 index 000000000..7e8f7b6ef --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md @@ -0,0 +1,136 @@ +# Challenge 5 — The Loop Reacts (Event-Driven, Stretch) + +**[← Previous](challenge-04.md)** - [Home](../README.md) + +> [!NOTE] +> Optional capstone for teams that finish early. It builds on the three agents from +> Challenges 1–3. Skip without penalty — Challenges 0–3 are the core. + +## 🎯 Objective + +Turn the planner loop from *click-driven* into *event-driven*. A background watcher +tails the Cosmos **change feed**; any **independent insert** into the `signals` +container — from the console, an **MCP** client, or any other system — makes the loop +**run itself** (Sense → Plan → Propose) and stream progress live, then **stop at the +human-approval gate**. No new Azure infrastructure: the change feed is intrinsic to +Cosmos, and the watcher runs inside the console you already have. + +## 🧭 Context + +Planners don't watch a dashboard all day. In real operations a *signal* arrives — a +weather alert, a competitor stockout, a supplier delay lands in a system — and the +planning process should react on its own, surfacing a decision for a human to approve. + +That's the shift here: the **write is the trigger**. Whoever drops a signal into the +governed store kicks off the loop, and the agents you built react to it automatically — +while the human still owns the final **Approve**. + +## ✅ Tasks + +### Part A — Read the reactive layer (15 min) + +Open [`src/live.py`](../src/live.py) and follow three pieces: + +- **`start_watcher`** — tails the `signals` **change feed** (pull model: poll with a + continuation token, primed from *now* so the one-time seed never triggers a run). +- **`_auto_run`** — on each new signal, runs `sense → plan → propose` via the same + orchestrator the console uses, publishing an event at each step — then **stops** and + emits `awaiting_approval`. It never submits. +- **`EventBus`** — fans those events out to the browser over **SSE** (`/api/events`). + +Then skim [`src/ui/app.py`](../src/ui/app.py): the `startup` hook launches the watcher, +`POST /api/signal` only **writes** the signal (it never calls an agent — the change +feed does the triggering), and `GET /api/events` is the SSE stream the console watches. + +### Part B — Watch it react from the console (15 min) + +1. Launch the console and open port 8000. The **Event trigger** panel shows a green + dot once the watcher is **listening**. +2. Pick a signal and click **⚡ Inject signal**. Watch **Steps 1–3 run themselves** — + the activity log narrates each step — and the loop **stop at Step 4**. Notice that + **Sense demand disables** and shows an *"⚡ External signal received"* banner: the + run was driven by the signal, not a human click. If several signals arrive at once, + Step 1 shows a **queue** that drains one run at a time. +3. **Step 4 shows exactly what you're approving** — the per-line purchase order and the + total — so the human decision is fully informed. Click **Approve & submit** and a + real `PO-…` is written to Cosmos, exactly as in Challenge 3. The automation ran + everything *except* the human decision. + +![The planner console reacting to an injected signal: Sense demand disabled with an external-signal banner, the plan and PO built automatically with natural-language edit boxes, and Step 4 showing exactly what is being approved before the human gate](../images/challenge-05-reactive.png) + +### Part B2 — Steer the loop in natural language (10 min) + +The reactive loop produces a *draft* — the planner stays in control and can refine it +in plain English before approving, each edit re-running the relevant agent: + +- Under **Step 2**, type into *"Refine the plan…"* — e.g. *"only the CRITICAL SKUs"* or + *"halve the leaf blower quantities"* — and the **Inventory Optimisation agent** + regenerates the recommendation (`POST /api/plan/refine`). +- Under **Step 3**, type into *"Edit the PO…"* — e.g. *"drop the warehouse line"* or + *"cut chainsaws to 40"* — and the **Replenishment agent** rewrites the proposal + (`POST /api/propose/refine`). The approval summary at Step 4 updates to match. + +The gate is untouched: refining is still only *proposing* — nothing is written until a +human clicks **Approve**. + +### Part C — Trigger it from outside via MCP (20 min) + +The write can come from anywhere — including an **MCP** client (GitHub Copilot, Claude, +another agent). [`src/mcp_server.py`](../src/mcp_server.py) exposes one tool, +`inject_signal`, that writes to the same `signals` container. + +1. From `src/`, run the MCP server. It uses **stdio transport** — it talks over standard + input/output, **not a network port**, so there's nothing to `curl`; an MCP client + launches and speaks to the process directly. + ```bash + uv run python mcp_server.py + ``` +2. Point an MCP client at that command (or use an MCP client session to call the tool). + Invoke **`inject_signal`** with a headline, e.g. *"Competitor out of stock on + chainsaws in the West"*. +3. Switch to the console — it **reacts on its own** to the MCP-driven insert, runs the + loop, and waits at the gate. An external system just drove your inventory loop. + +### Part D — (Go further) any producer, same reaction + +The trigger is **decoupled** from the loop: the watcher reacts to the *data*, not to +who wrote it. Prove it by writing a signal from a third path — the Cosmos portal Data +Explorer, a `az cosmosdb`/SDK script, or a scheduled job — and watch the console react. + +## 🏁 Success criteria + +- [ ] The **Event trigger** panel shows the watcher **listening** (green dot). +- [ ] Injecting a signal (console **or** MCP) auto-runs Sense → Plan → Propose with + **no manual clicks**, streamed live, and **disables Sense** with an external-signal banner. +- [ ] You can **refine the plan and the PO in natural language**, and each edit re-runs the agent. +- [ ] **Step 4 shows exactly what's being approved** (per-line PO + total). +- [ ] The loop **stops at the gate** — nothing is submitted without a human. +- [ ] **Approve** writes a real `PO-…` to the order book. +- [ ] You can explain how the change feed **decouples** the trigger from the loop. + +## 🛠️ Troubleshooting + +| Symptom | Fix | +|---------|-----| +| Watcher dot never turns green | Check `COSMOS_ENDPOINT` in `.env` + `az login`; the watcher starts only when Cosmos is configured. | +| Nothing happens after injecting | The watcher primes from *now* — inject **after** the app has started. Check the server log for `watcher: …` errors. | +| Steps error out mid-run | The auto-run uses the same agents as Challenges 1–3 — make sure they work manually first, and that `az login` is valid. | +| SSE doesn't update the UI | Some corporate proxies buffer `text/event-stream`; open the forwarded port directly, or check the browser console for the `/api/events` connection. | +| Watcher dot goes gray mid-session | The SSE link dropped; it **reconnects automatically** and the dot re-greens on the next event. If it stays gray, reload the page. | +| MCP client can't call the tool | Run `uv run python mcp_server.py` from `src/`, and make sure `.env` + `az login` are in that shell (the tool writes to Cosmos). | + +## 🚀 Go further + +- Add a **debounce** so a burst of signals collapses into one run. +- Emit a **completion event** and have the UI toast when a proposal is ready. +- Swap the in-process watcher for a **Cosmos-trigger Azure Function** (fully serverless) + — same pattern, detached from the console. Note the added Function App infra. +- Give the MCP server a second tool, `list_exposure`, so an external agent can *ask* + before it *injects*. + +## 📚 Learning resources + +- [Change feed in Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db/change-feed) +- [Change feed pull model](https://learn.microsoft.com/azure/cosmos-db/nosql/change-feed-pull-model) +- [Model Context Protocol](https://modelcontextprotocol.io/) +- [Server-Sent Events (MDN)](https://developer.mozilla.org/docs/Web/API/Server-sent_events) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/docs/Invite.docx b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/docs/Invite.docx new file mode 100644 index 0000000000000000000000000000000000000000..fbfdb0603883c8212d7feea95e93f9da26c3e9d3 GIT binary patch literal 10977 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 The editable source (`architecture.excalidraw`) is kept **locally** and excluded from +> the repo via `.gitignore` — only the rendered `architecture.png` ships. To update the +> diagram, open `architecture.excalidraw` at [aka.ms/excalidraw](https://aka.ms/excalidraw), +> edit it, and **export it to PNG** over `images/architecture.png`. + +## Challenge screenshots + +These PNGs are embedded in the challenge instructions so you know what each step +should look like. Each one shows a real step of the planner console (or the Foundry +portal) from the sense → plan → approve → act loop: + +| File | Shows | +|------|-------| +| `challenge-01-console.png` | Planner console after **Step 1** — the demand assessment, with Step 2 unlocked. | +| `challenge-02-console.png` | Planner console **Step 2** — the reorder recommendation table with CRITICAL rows. | +| `challenge-02-trace.png` | Foundry **Traces** view of an `inventory-optimisation-agent` run: the `invoke_agent` span and the `execute_tool` call showing `calc_reorder` / `query_inventory` with their parameters. | +| `challenge-03-approve.png` | Planner console at the **approval gate** — the purchase-order proposal plus Step 4's summary of exactly what's being approved, with Approve / Reject. | +| `challenge-05-reactive.png` | The event-driven loop (Challenge 5): an injected signal auto-runs sense → plan → propose live, with the natural-language edit boxes and the informed approval gate. | + +To refresh one, run the matching step in the planner console (or open the agent's +**Traces** tab in the Foundry portal for the trace) and re-save it under the same file +name. Keep them legible in the rendered Markdown. diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/architecture.png b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed378ea613538f292dbd454dc0eaeee99f15a92 GIT binary patch literal 163491 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≫7QIGN6v}Lx2(}dXWkt9mq^ws`G%XEJ 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 z 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 z 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�(mRI> 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 I3G03NU**e*LI3~& literal 0 HcmV?d00001 diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/challenge-02-console.png b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/challenge-02-console.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef0f52fef06a4d30b9220e475ef180c4b36f4b9 GIT binary patch literal 167095 zcmd43WmuG7^froth=?dsf-nLCN_WF3h%`tyBOu+~j6nzpDBUB{IfQf!-QC^YFw`*h z4*uT%^`39%)49(3eA@HOdUiZ}?X}l^-+LzXgNiKi1L_BOczDF}a_`jf@b0eR;o-yX z-^SfBdHcH@5APO>wY2mH5FVaaYTQqtV%r<4PH_BJaNf7=?Vn}g>g08Kisa!c>TJ4c zqx{N2%)u|S?>hwC0tPPczml>fz<=vR2K*{q)5$^@%}MJQb$RGHBr(5$lrp&|Q+B(A z594XfVv_UZUxct^hjTFRfG*n43GAX)g#-F4zdf1PF*&54>P;#A@HIEV zu+MilPVZ4?EO6$Md2TJ)*>}D{)<>; zIuUNkQHv992Iq|KP9Gl@mp`CZz{RM3s z10IdB#tnNmz&?X#;~_&m>bhcKwmv`ZYbA%nYc;oG8AqQl#CnXScQx*Hq)OdF2z_S& z2SA1pe6ALW&+gq#Yng(tWDceRA#f4P!G~KCM?+h#hK*>c`?v|jUCkyxUi>TI;mLlL zBmb}XoQOf|zmgOCcgip^y&)banj+4cXU;i>}Op!N9n$l>9kSyvQ5!sqP!FGeFn z!~1VCa&vR*3-@*>3J>h?@+vDq1H>S(YkMqBdeVoyx$k`oC+uMF~M}_M9;NYNOqw&F3m&=I`)R6wh&PkIB zIrX&|fLZfG03}fzEqLe)36I-R;452d@yz#8>Dx!(x0n7~m9}@eKkQ$d=sc;9pC*_2 z*F;{h#k*_>%=oJHIZ0pNnJnn~WY%*#=lVQkL-7tdR7{`xuPiS_aUqw{k{{6m5^p?R zseLQSDzt*$uPFk8U&2>Fjk0auqxAjrOAdSEJZ{%W?z5Usk=FmQaUVp465txC!GEZn zH9IrngV?1S^LAJZeE5E>I!H)FNo%`icBE&p#Y%_-@-utr=p4{!I^e6~u_t|Y zArLb*n+;qI;oFjB!yN0m`x6i|;{2v~VBq4%nb^6d!6+C$t%)!n=i|zSy+rw1lx@Uy zWREh_lb|j7r1?66?DXetPGYzuo|@0g)vCZsUD|tJDaNoO))}Z@+Hu_}G=_PM)VHGC z?5~p;iC;EtKMQxP`);JTA7(m5j$1X&r9$vBcr%keyNpn zEP=>W1&DL++*ndl6QqiphmSE%cV4Jek-?Z2U4&ULG|r=~Pl>t;IDiq0AO~!*6I`VK z{^d%-BXR5n{oLLaS;Mgp&&=MvcLgyJ6$7!Tj{I{_L&M^*tIK=SS-3n8AHT6w%(6=3 zVPVwh6e|DoA@)exz;s*_{Amw6ca`+_kjvw_uT9n51{CXdq=6shAg?C^{Pbs>zG4H( z<%&7(?~}DE{ZTbuE7*RmQXOy=6}Y3BR=*1#-(lNQzHr(ICt6&*ax|TPbund+INdm_ zz+M;DJoYF}(=lioK%Sd%QFaH}YTJ2l^dRU1q~HsW{Ld}L0@CWB>a_Y|25W;PtMAdE#teu+)u(HAX)xou zVj^MUONMZBZ`0hyS3fQxox(`ACIxUQ2|GUeeDZVsm%IQC$Ko|F9QrMLu(Q)-6- zP|%eZc{I@*tyI3dSPaNvQQCUqf=&YHzlT34HEMV&{2EgRe0E0$f?PBdDp;$pn4pch zJ;6HgwG!IkW|#IGd{mfmOj=jNmRuhoj!H>;1(JORlDveM@}fc9$N z#Ub$d1OEX}6UY-rSr2!QQTIggmNoUDo_gQIzOla+12L720mvlAb$#&MW!De50$m>u`Jbh~PYSDzQAF~JQw`5M zgfdt_4@Bq#7-_&7vEUD6tyi}X4oFUHXadan$%LDiXmc_9xt>);cT#)zIE%a{GKC0Sq<7@I)&niqxs@7PRzthLp;VP7pasY5NveKdFQ-tWp zk;XGZ$M5wHbdJljAG|*kI8MkeBF~$E{tWlNXjDJHx(bN!>0Hf@g_j}HV=$-_INV=U z1&ne8BG76n?ho}!Z4QW>>Gze!!DwJS^}t1~M%0s~rUq0JdsXZB*5xKUiF3-6o>3pJ zp1CNE$^aB9S~Gx~5RCEK^8@V2$y<>vAkZvB==CX6ePPT77JbmT>${qs6NPer@ zd{Pt=5=Yr&bB+VQ_0AqT+L}=OI(@z`v*_s-ddk+rxa&Z2@MY@2Dy~fU;!qLLSUM4@ z>f8O!G3wRP*c|9%$LWXN9vK1-fr#bsb>^z2 zw(@fQ2zui|1cv5(Lu+((k zfa=19$hu;HHHEAIog5G9>x*{_z928mb9p26a1gM2Fs|VdFlk)aO3xXWUl?dRcg%#u z-v@`2pQMcA9pLXc9>(ATWt_yH%`p$mR8rTUR$>x^y1+-`5Yq;@TEE)jpR>8OwIiSE z1L1QGxvRVRaLTB^K}Z5gv5!6M+SyY>90yORO8x zf~h>lknPX^3!}~ zX^x*kheJ{TeERZ^SY16G0E}7?3=gLWx;vrSq)d=+A>ThF71mL&(9yU(4v`Q<4Ew&W z3#i7>j^c8T0E`Sp)rkiT>c~&TwA3g0~f+ap} zI=#yr;d&|HFzT+&P-G1CU>$d#iC zm2iR=Kln3kH`aKSjjjfLcT~HEUWlIeeBnZ>6}|HC_{~Q0Gaaidszi}Lq}~{)kPJL{I~+cO6e5(%v~G89X0DorjqtqN=-6 z&sSe)?X!pmuK9-I@>J@H#wssj1 zaf|-6RF%1!e-V}b(-yV+JC!R9@N!DeFr>OctBI2Ds7ZP{v()03n}K_tx~+#Bn#y)p z_7@cE-4KMJCmDb+TP)1H7SI%6bxU3`KAQ(E(&#dH-ghlXrW^&N&D1YIOXZYW%7nIB zXW&bi4C4)LX}yr4j0%u&rkNqU}^A?*`!9T zrub#T5XJNB$-g8UB<8_A@fA$9pE|0GeJE}fd}T;b-|ULlc_KC`=%15#j_x74Cde(A z??k+M^n2px+_*d2J>tc(^XxfeADA z#12CDQ0CbCb3v+LCPCBLrSMsSU6#enaw!B~Iupy%9CCspgDLn}{ciG70gg6%KJ?tw702a0!iT~`C+?`?#}P!A{oO)#+~03_U1?)z54S$!=L z_K-2^cY<+%Tyhz+|JRxP(&6sF%V%`W(y@U7-BPiKEe2TiBaiWLGl}g#3mY>Nh-Wy@ zlH;N7PELS`zsOacYOwp^WW#S^KoxxdbpX0J6s8x0iT)Esf-UxrG*K?5r3Im@Vo|TA zN53kEY-c_z)`O?nMO>e%H8}=;pHEfdB%i>MPuA+MNqZ%=1UxPW} zxB_M9(UJupAUxv^mp-8eE`3Wn<^oaPspxqsE;mznGQ2m3t}aT@mn{_@Tcgj&VDAAA z+6(zLWHYxjN1S$;gv5GPBq5@dCE69%U~dDE@g3Uvb)x#^tCpZp(5hOQs~mE&Hs*|@ zn5Untkky~(yu35{gOWy$L zwP*y%fOy{h;+di9;Dr;&rCl|~T!*Z_7!5yN#z$Nh6{>&6o;H^>U_sZxfxc4NR_x7?_r=nl62=U@=ah5S-nn>~%Ev9a0v% zfd4hyq^?rgw+0<*UeDx_cGbfdlRxHoSwjHKFFJF<>=v3>{3F&y_kdrW+bFn*NW0IY? zG?*?W?Qq}oda%0Aa?7h`@M>yFJihWho$Y0Q!c?R$rWQD>)jR?`0*YdHyy?bBjjx;0 zFfi6-GeL?zW~*2qxo3rLvo*#*VwPBxAVp0=)_Y%v)*ofVB3FRL{F;=0GnNRF5`7tL z3Zkc0Lj-C+Ao7l2u^zOx@>FgdW{O2f`=j_PMHzOgFE>%|?eHZKEwNjfL*iK5dO-Hr z?5xk+U+Z&9&S|)u7UM+*aiSTDxaZ8X(iNQl!+&SP?L;O*cobS@)Kv>Z6<-P2PGWan*Amp@TFIUmV-`_Lccqh~myuo&$x0Ps3xLKr9&kiND&H8jN}@Yn_> za9CE3M#aUM>+5qx<$bD>T`~B^qF6jJEL?&I1b&+<8$0{1ivVYmD>9S8+<*GplkJyIvq3^U^=-gFjC#INd3$dnEjn5Or1wC> zK6w}TrTzP$7yGwvm$>%$y58lasEC)9oAB?^qx3jdNV8jAu23lk><2=vlP>;c6q|+W;>gHV5z+BAp60f99`pgK*tz|=iiC^7}XIb=qkgGITZakQL z98hq_22cFuFPnZx2xU54KC9_63gqWdSGuxo3lu>t%z9V6w~hZqm#7Dx@Ewgc9txg8 zbmY5x4n0a0_$EX**h6M%k#>bi^0lZ@ZUi5F5!;2GXh1#fM z0awk|4%PYJKpn{_gbH<5f*0i&EN8Ba(*4YA2ne4Zv)s*o8#PmOG(@-WSO$Qll0y(E ziGt>OIbP%^Mfzy0+9IsxVE9+d&@1lji|vufmI}SaTrQ z?$*B%1NLe;fPq&5c@?@jGfEkVi1SurHiPNR({-wxVx4~Ka2R{}LZg+55uA}1<-kJO z3If*^hVlCtm@6dBtbH9|NtjL}H&WA%o)=x*KJJ$MUqqyEX4CZyEC5t!7as#q*ae zYb}Tx#GGc#GC~s+1eq0kd0BahVKk?0XrRdU`qlKzg1SjkV|6o#yon z*kureXBuNBQoe|3cPMFFJLpuVV)nDS4(0Sj2R;?kddq@E#oiD6foKpAw+sO^j3JoW zSwxHkvnt$56xpNLC8d5yl0`2VE5>m(KxCjFfObQrQA2ya7^CvD&RHH=9v#RM*4;4x zNa`e?I!0mkB*w(ssVd<%eL>05cS3?Tj?i;YiHESPuUFEocX!67clNDBeb3g4+>q(! zKBwzR*J2h{4vP;9e^`&Djdk{}Ue^TF5G zpPQTeuB+H|W(k)?e>~&!_zHDYb{D{rp>H7U*s~?1r(eucI5E(~;Hnmz6$Duzi0GK5 zo~zN910Dk|BcRs_VWr=)FZ$J)DB%R-U_@OgKPf=nQNf=V+>MKp5*+~ z0fg5zTY5_Sci(}ritg?a#KdTtkAw~;xInWgDf!gTpKEfGLFq;taq_#78h%hq%>L6F z%GRgN8!SWFuBwgxXiP&VzQnQn=}u%B^3l!fX`Ky88Mk zT3~t*1LOP1PbP%7UX=p4>gwyJNuK?uX?$0^5o1#C{~vjV@qcujU;kIgGygBjP|YG8 z^}hk*M)9bvV~#8EX7sr0`8|E?KOF_f_`l7%ksEPWB>pef|4PCX?+X4aE$cqc|G(8x zr;c7+yit?x(5y3(mS=RLBM5Jqd3Pt{uw;owI4h!w&PR__=<-Q6DJ38$+$IIL+M9$Z(2R|1EZYvDc1J0wcAlcV0I$QcTInj2Sp z11v-G$MvFJ<~G8CeyY{!zs$6n`1y4cMSb=YH*-1Hmf8DA z5Z~ibGJm?%pdG<|BPf3S*pB3f5@l-ccaEdHf#)+>!-MK+g5 zaTrz4QCx?c>?Was{5tgi)>929u{&i~1Ym1L;{K)epm`pH7Vec8a32yl8SmfeldN)E zIMn4yLsw_!uhkE6;)rfMJVPOgdQ~`WAd-KJ_vJ6vzJ5cqVIlHn?@|(W2u`-`3ENB+gRclC&G+k3Zdv_o(kh|K zBiV?*JYh6Cnb*Y2ZIi6pZ&REy`B6=SbW~Lxs+?50ap=!)aq}wB>Mmz06e93ac5hV* zZ}~?FylszHeYz>+zX}&jt97LXF1T(!;ryog|H~!6su0N}%42Tw8TAM8?&4ye)q4|x zI_pX!`GggPrH!&tpr$jWr# z#Y)wc9xs#ze*N8NXj9o}{kA#k)7YdzhI9_U^BDXZ=y~U>VTV zR23JswuY&snLhb%q(5DKh0T`djZ)?CrdN>0#Qe#oWRKSl%)eu~H-78k)1D*$ZRIb;}7XMmn}8eP)P5(fCjpmL>gajNFj^jq_i*zTZ|M+ zCl3>|36sfRzjRboVtb(_uM|>{6LRmDN?)Yn4>Ge=`v2hqRyJ;Tn2oS2rGmO2aWHs= zeGm~j5CLm3%nU_p5O6E8`<}0{Y~}rn`_EI`)-|_ei3r=^h)#>YK?rTrZb<>534Nm+ z$A&llg(GP!>N4+S$9}W1u3KwO>}QjxP?8n|WmD*k3GzP!y&HP0UML{DUQ_*w4R=24fLO96EyB^FXr z5PQ!;!A`-Zh~GXv`=Rd7DP|ZV&STZEINg}@X!sape!ch#0>4;^@3Dw zt$f|v2s7Ieub)u~h%dE;YILbt#qhqFI} zTolUR`})@z79o>ZFI>!pg^$L<9w@tloiDvG<-Y z()(&Ce0g-_$2pi)0g8Kiv(^R#_d78YV06iZurjEw8nB{my)rexu9;$H37fq2B$**) zrNvdDVEjnav)^LRl)^;lxY;13UP8iP`<9~AI>OHG@p($I27%MlALld@?mg}G>BM2z zSc{H^C!Lrw!i(sEPvKU0yejGB7~sJd)d!MbM!ni@_GXPBwA74qY$N|&NI@wCUQ(=0 zP0H4$$-LZ!pM-U2dNh~doR;s}{z1c3d;dxV_ThrkoGaTa+MenX!2;v9qd8vlY+oZh z^UyhDTkguCb&g~D0jW?Ie_y51rj+dAnJ7|?2N<_!7z9?>ajo_W= z6K=3EHgC7%Yv>wI7g6c=@Jhop@|lifpTQ%DI%0l*h{ICP{i1^E+g3l{XLQ4N$P<8O z6>G3OzfD@;#8~#mZF4vO66LY^H-yDIC~sce$msoJWEb?L!ELxTc$%XKon z@AsY-nvR(^K|d$;W2WfR6k1ShT}wNYGO zV=0O+duuc8xAYB+DTtW5xTx(dOKvA^m)Y+s&+kkN%kBxkd4UeBAwBsNT7=cc8m18~ z>TX439TS3ycil~Ml`EXW$2REJf{vN%8+)fV4O%-uYuRfTVeqbk1#e3d|e2umFPA@MPf10{gE-%@t7=L@C zZ840n^F;E?srGe2W<%UQCNnqa)nM0=+O^7+G3i)E@U6h?;|cU3i?@h+^rU5U&x^Xz zCVf@F)8xlT;Hu+PlbOr_Q;EP=*KpOWg2nfO^dV|REgp$^Npbd1LOdXop$%*2lH7LR=bo=9nutS;9 z?|Q7#5Oo!Bj+AZXnod07;yiD3w5W~miqS9DUm?!^TO)&Z7AxaoGHclzidD{s z!-;3(m7~w5PxJX4tX7iB@V+_jMu)PS+idl+_ld5Z%*|_-Y&|l}3NSg@MWUPq#L389 z(oF-c_ib5y&&X|M_Q4)I7}*VnKjQoY4IGZA(I_22P4gyrFEcy;4k$p~;+7p`+oGDiESG8UF8Feu zC-3ty-{xX;vDl_#vLP$Xs}yLY+L7TyAnUZ>8DuJ@^@F>kr1Zj^m#88_LQQ0mQzz0f zyJ{>A&P^709IEu66GA$fM#u@Bl zkYbI#stVQnB4|0A7uW8`CP}JZvazf8(LZ-`h(=GC!8Y!%`z~Ja ztS)S%8t6eoe1EPKp=p2&D)cXT{kP9wT}0L@s2&RqDr=RKYnZW5t@*uqB&f*yD4uOa zqzC&4x(VmcVcn;MfKQ3aP|(OEhZ^kmPP<6X9u?}m_79jmY$GBJ@OUe&FB3xz+@ge# zp;{L!vDY#aLx@)j=(!u{@llSrz6^Y;Sp;8vdy99N>tz-FT*J}%dKs8_FyQ+4_`HzW zw=y{E)Wrr1R^}oGaIdYR2$HVBF6`OljbGKCHKTHgfta z_PW;ONB~^zX_s}Wftm2yw+96jh?C$N#1je$uLj*Gu9}mU=96^6xNgPG5&O>eakEL#U(42%zCO@Y* z&ad-KQW}eTZtu2hnfO1Nv9EZ1^R*N6BSBo=IUoJLcJ7MvlnAK`{6hp9IVby9_uyTT z|L1wZ<<0uZS@|jZ4-al21fJ|?+_^%BroJUm#-8A-pqpEt8QuUiN=Y z+{GO=T;42Xv(NcIX3Zax@SNb4pc zu`Z=5MEr2>r@hLcIi_Ge%Zl1%B=mKDDEwxJYp#8f`vC9J7xQ`ttB;T@X22MT78=?m*^61&!{SaU&@qw`ssP1yYuUL2h9?{bh!dHIpb$oq* zxKcLi?5{e8L0E7R(yb;{^L=|pxek7-WkhqGJC_JoV=xyE<1W7$q^+6GIBGzb%^B`* zCl8MeROF)xH3mxk7@2bVBZyha%yiPHRu9><5mywrC4B9V~KW2_hCDebxt~I_?6N=eGCGY%-wS3+7OhVcfqv=DQeOLB_ zNxn%{oIT=MBGXIg2Cbebi%Xb6Orp4=Bqwe#c(<-`vtnlQYpV<^?tNmF`EOUM+`F$K z6O`*#@LTMg{QYdx9jEs``tNk-(XH&KOr}*9Jw@~2*E^Py#F7OzyKbqm z2vh6+*y&|fN!Oz(el||QZZ~D3FA!GKNB;ALm`-KMjBY*FzAftjCp?mjnVn=(>!S2H z`z@%C_;P=}pR6@Izmem4s^$hPJ|4Pe;&HE4^JdP2aE|<31s980JkyX{jw&}8O>c#~9Fle&s_t)oT7=ICu4bmeTy$_`KAtFsKX?lW$2XoX~Zd#9$RM%&y!#$^h3 z+`6)g*on+LMr+`R)sjk() z|2XZmOC0XlG2&UPYV8GuiIGlTo>u#)+{{tYn>`So(+Bp)5}wNpNLlHgA;k$zEt&Np zjYu|i#)m|17Z*haFssw!gL=DinF)oNx{ zy59f#!G6Q|RG0p~k{duov!8UlsZ$7B;Nlz2E=g3hhaT*-nF{jgPUJP(mGqja05UYT z@x#C25$Mf*c)l+r%Cj*utuKw$O^G|@?ObPf$Yq9;^LwgXzSO$GBqrK!ZcSCg*HyhG zwJ!8G&}Ep!3QdGp&AL;@mgMqn@pTy*-29qoXuZMI$?9|OWI@Bq;XYNZr`3;ax{Ty2 zt+L?9ZULp-7o?7CY@X7UkOPb6_YL$V7A2a(QFFdfhQHzQ*G)O03#KUo?15EP_P8W1 z!}ewcG~?0ZB2G0KjtGID!avrG7TG}}LR}aQi1gluD^xrhl9N|T?-0r#*|9G%NNk+4 zL_a9g+ee@nx9)r$m>S;D?#RkwrYU53H!?eaAgj$pQ&3!SqD$L0-6};rnN9#}ISN`#Xgma*>p_ub>0+lu1rC||XIOh;zsDI_Y{@@30+<17K z|JbF{1v+YKfF`l{lRMRW#h5^%~SrT z=P8<6BF9Mn+;5XGJiHf)Fjj3>%y_fZz}^f6&fquYUkpB8O%P$4yF@l+!+3Rag#3+WRa%4rAXu|30zddTNeIXJ2&QP{jtQ-;Kn%RaenJ# z=ZSV8`igxbt}X^Y`#f!3Qb3%Y*Wuex4bcBX5zCDk9^M|#aM&rT$uYh_!}IE(NQ#G> z10lN+4SKmqe*Wgo34wrA=38{A8JV~aUvkMfE%M`KZrwko1=sr@d3U8ZO020zbx@hZ ziNJ%RYgCF4wUGJy&-~JS6MKaui@lQCN4sJ|7a+}lco**lZo`t6%DiB(sdJkBv>8{Z zbA?@h*HnV~_Eex!0E~Sv%fGk)`LAoZjm$)Dn_7=|qVLEfCdur56#Z@;L$01!{f`5G zE#v=vqW%qzD-G_f-s1Yn%I{KA#`4$p*x$1tf5&c(c!TzTxPT7)e;X`b=`BXqmf;#F zZftvhm!-t<_|s(Q-+|R>*jrZr9V7wue=Kk_jwa=PC+c21$CpB9?Bgk?#9!Yp3gu5j zqo9D;)Rz0WnZsSf1T5b*wLCc@!qdr@nKUaiS&y>!pOQVV=i&K-aC)zuftnxW5s+Q% z=1fjYEFa$cNB>x_Aqt}@z2Xl21we{zG17qLI3n5dB~erBP(e>$pAys`Zn4In|Gj`u zj{x~LbaFq4;6*_1k029b<*z3RREbh|iZdEo@CqOiYY8pDXwxD

Mhg37`Jl2c7CSsU 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≠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

0L- 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≫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 yw3=A9` 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 literal 0 HcmV?d00001 diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/README.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/README.md new file mode 100644 index 000000000..36ac0ed36 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/README.md @@ -0,0 +1,85 @@ +# labautomation — Agentic Inventory hack + +This folder is the **EMEA MicroHack platform** entry point. The platform calls +[`deploy-lab.ps1`](deploy-lab.ps1) once per attendee (in parallel) to provision +their lab. Everything works out of the box — there is **no facilitator pre-setup**: +each attendee gets a per-user Foundry project and Cosmos DB, provisioned in parallel. + +## What gets provisioned per attendee + +| Resource | Purpose | +|----------|---------| +| Azure AI Services account (`AIServices` kind) | The Foundry account (custom subdomain `inv-`) | +| Azure AI Foundry project (`inventory-hack`) | Hosts the attendee's agents | +| `gpt-5.4-mini` deployment (GlobalStandard) | Low-cost GPT-5 model with Functions/Tools + Structured Outputs; longest support horizon among the low-cost GPT-5 tier (retires 2027-03-18) | +| Log Analytics workspace + Application Insights | Observability backend, connected to the Foundry account so the native agents' runs are **traced server-side** (Agents → Traces) | +| Azure Cosmos DB for NoSQL (serverless, keyless) | The governed data store (`inventory` DB + containers pre-created); local auth disabled | +| RBAC: **Azure AI User** + **Cognitive Services User** (Foundry) | Lets the attendee create/deploy hosted agents from their Codespace | +| RBAC: **Cosmos DB Built-in Data Contributor** (Cosmos) | Lets the attendee read/write the governed data keylessly (`DefaultAzureCredential`) | + +The Zava data is **seeded into Cosmos by the app on first run** (idempotent, +data-plane upserts using the attendee's identity) — no keys or connection strings. + +## Platform contract (why this "just works") + +- The parameter block matches the platform contract exactly, so the platform runs it. +- The platform pre-sets the Az context and pre-creates the resource group — the + script does **not** call `Connect-AzAccount` or `New-AzResourceGroup`. +- Foundry, Cosmos, the database and containers are created via ARM REST + (`Invoke-AzRestMethod`) so there is **no dependency on extra Az modules**; only + standard `Az.Accounts` / `Az.Resources` are required. RBAC is standard. +- Cosmos uses **local auth disabled** — no keys anywhere; access is purely Entra + data-plane RBAC. + +## What the attendee receives on their dashboard + +| Credential | Goes into | +|------------|-----------| +| `FoundryProjectEndpoint` | `src/.env` → `PROJECT_ENDPOINT` | +| `ModelDeploymentName` | `src/.env` → `MODEL_DEPLOYMENT_NAME` | +| `CosmosEndpoint` | `src/.env` → `COSMOS_ENDPOINT` | +| `ResourceGroupName` | Where to find their resources in the portal | + +## Configuration + +Edit [`lab-defaults.json`](lab-defaults.json) to tune region priority, labs per +subscription, and the per-user daily cost estimate. No IDs or secrets are stored +in this folder. + +## Deployment robustness + +`deploy-lab.ps1` is defensive about the failure modes that could otherwise produce a +silently-empty lab — a "successful" run with no project, database, or data-plane role: + +| Concern | How the script handles it | +|---------|---------------------------| +| A control-plane call fails but returns a non-2xx status | Every ARM call goes through the `Invoke-MhhArm` helper, which **throws on any non-2xx** (with `-AllowNotFound` for existence probes) instead of printing a false `[OK] … created`. | +| `Invoke-AzRestMethod -Path` can drop `?api-version` on some PUT/PATCH calls | The helper uses the full `-Uri https://management.azure.com…` form, which passes the api-version reliably. | +| PowerShell 7 parses `"$var?api-version=…"` as a null-conditional and eats the value | All such URLs brace the variable — `"${var}?api-version=…"` — so the project, Cosmos, container, and role-assignment URLs stay well-formed. | +| Foundry project creation requires a managed identity | The project body includes `identity = @{ type = "SystemAssigned" }`, and the script enables `allowProjectManagement` on the account and confirms it reads back before creating the project. | +| MCAPS subscriptions force Cosmos `publicNetworkAccess=Disabled` via a management-group `Modify` policy | Before creating Cosmos, the script merges the tag `SecurityControl = Ignore` onto the resource group (the standard MCAPS exemption) and sets `publicNetworkAccess = Enabled` in the account body, so the endpoint comes up reachable. It also reconciles an existing account back to `Enabled` best-effort. Security is unchanged — the account stays keyless (`disableLocalAuth = true`), so the reachable endpoint still requires an Entra token with the data role. On non-MCAPS subscriptions the tag is a harmless no-op. | + +**Environment note:** The demo/attendee subscriptions this hack runs on are +Microsoft-internal (MCAPS) subscriptions, which apply the Cosmos public-access policy +described in the last row above. **The script handles this automatically — no manual +tagging or portal step is required.** A normal (non-MCAPS) lab subscription simply +ignores the extra tag. + +## Local dry run + +The platform injects helpers such as `Get-MhhStableHash` and pre-creates the resource +group, so `deploy-lab.ps1` **cannot** be run directly outside the platform — it will +fail at the first `Get-MhhStableHash` call. Use the local wrapper instead, which +supplies a `Get-MhhStableHash` shim, pre-creates the RG, and passes your signed-in +user id: + +```powershell +# Requires: az login + Connect-AzAccount to the test subscription, +# and the Az.Accounts / Az.Resources modules installed. +./run-local.ps1 -SubscriptionId -ResourceGroupName ` + -Location swedencentral -AllowedEntraUserIds +``` + +> `run-local.ps1` is a **local-only helper** (not used by the platform). It mirrors +> the `resourcegroup` deployment path. + diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 new file mode 100644 index 000000000..481ccd8fe --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 @@ -0,0 +1,493 @@ +<# +.SYNOPSIS + Deploys the Azure AI Foundry project and model deployment for the + Agentic Inventory Planning (hosted agents) MicroHack. + +.DESCRIPTION + Called by the EMEA MicroHack platform once per attendee, in parallel. + Provisions standard Foundry resources plus a per-attendee governed data store, + so it works out of the box with no facilitator pre-setup: + + - Azure AI Services account (AIServices kind — the Foundry account) + - Azure AI Foundry project inside the account + - gpt-5.4-mini model deployment (GlobalStandard) + - Log Analytics workspace + Application Insights, connected to the Foundry + account so the native agents' runs are traced server-side (Agents → Traces) + - Azure Cosmos DB for NoSQL (serverless, keyless / local-auth disabled) with + the 'inventory' database and containers pre-created — the governed data store + - Data-plane RBAC for each attendee: on the Foundry account (Azure AI User + + Cognitive Services User) to deploy hosted agents, and on the Cosmos account + (Cosmos DB Built-in Data Contributor) to read/write the governed data + + The Zava data is seeded into Cosmos by the app on first run (idempotent, keyless + via the attendee's identity). No keys or connection strings are ever used. + + Returns to the attendee dashboard: + - Foundry project endpoint (PROJECT_ENDPOINT in .env) + - Model deployment name (MODEL_DEPLOYMENT_NAME in .env) + - Cosmos DB endpoint (COSMOS_ENDPOINT in .env) + - Resource group name + + The platform pre-sets the Az context to $SubscriptionId and pre-creates the + resource group. Do NOT call Connect-AzAccount or New-AzResourceGroup. + +.PARAMETER DeploymentType + Deployment scope — passed in by the platform. +.PARAMETER SubscriptionId + Azure subscription — passed in by the platform. +.PARAMETER ResourceGroupName + Pre-created resource group — passed in by the platform. +.PARAMETER PreferredLocation + Ordered list of preferred Azure regions — passed in by the platform. +.PARAMETER AllowedEntraUserIds + Entra user object IDs for this lab — passed in by the platform. +#> +param( + [Parameter(Mandatory=$true)] + [ValidateSet('subscription','resourcegroup','resourcegroup-with-subscriptionowner')] + [string]$DeploymentType, + + [Parameter(Mandatory=$true)] + [string]$SubscriptionId, + + [string]$ResourceGroupName = "", + + [string[]]$PreferredLocation = @(), + + [string[]]$AllowedEntraUserIds = @() +) + +$ErrorActionPreference = "Stop" + +# --------------------------------------------------------------------------- +# ARM REST helper. Uses the full management.azure.com -Uri form (the -Path form +# silently drops the api-version on some PUT/PATCH calls, yielding a misleading +# MissingApiVersionParameter error) and — crucially — CHECKS the HTTP status so a +# failed control-plane call throws instead of printing a false "[OK] ... created". +# Pass -AllowNotFound for existence probes that may legitimately return 404. +# --------------------------------------------------------------------------- +function Invoke-MhhArm { + param( + [Parameter(Mandatory=$true)][ValidateSet('GET','PUT','PATCH','POST','DELETE')][string]$Method, + [Parameter(Mandatory=$true)][string]$Path, # relative ARM path incl. ?api-version= + [string]$Payload, + [switch]$AllowNotFound + ) + $uri = if ($Path -like 'https://*') { $Path } else { "https://management.azure.com$Path" } + $params = @{ Method = $Method; Uri = $uri } + if ($Payload) { $params.Payload = $Payload } + $resp = Invoke-AzRestMethod @params + if (($resp.StatusCode -ge 200 -and $resp.StatusCode -lt 300) -or + ($AllowNotFound -and $resp.StatusCode -eq 404)) { + return $resp + } + throw "ARM $Method $uri failed with HTTP $($resp.StatusCode): $($resp.Content)" +} + +# Resolve effective values — honour $PreferredLocation, fall back across the list +$candidateRegions = if ($PreferredLocation.Count -gt 0) { $PreferredLocation } else { @("swedencentral", "westeurope", "norwayeast") } +$effectiveLocation = $candidateRegions[0] +$effectiveRG = $ResourceGroupName +$stableHash = (Get-MhhStableHash $AllowedEntraUserIds -Length 12).ToLower() + +# Foundry account name = custom subdomain (must be globally unique + DNS-safe) +$foundryAccountName = "inv-$stableHash" +$foundryProjectName = "inventory-hack" +$modelDeployment = "gpt-5.4-mini" + +Write-Host "[INFO] Deploying Foundry account '$foundryAccountName' in '$effectiveRG'..." + +# --------------------------------------------------------------------------- +# Azure AI Services account (the Foundry account). Kind must be 'AIServices'. +# A system-assigned identity is required before a project can be created. +# --------------------------------------------------------------------------- +$existingAccount = Get-AzResource ` + -ResourceGroupName $effectiveRG ` + -ResourceType "Microsoft.CognitiveServices/accounts" ` + -Name $foundryAccountName ` + -ErrorAction SilentlyContinue + +if ($existingAccount) { + $effectiveLocation = $existingAccount.Location + Write-Host "[OK] Foundry account already exists in '$effectiveLocation' — skipping." +} else { + $accountCreated = $false + foreach ($region in $candidateRegions) { + Write-Host "[INFO] Attempting Foundry account in '$region'..." + $accountBody = @{ + kind = "AIServices" + sku = @{ name = "S0" } + location = $region + identity = @{ type = "SystemAssigned" } + properties = @{ + customSubDomainName = $foundryAccountName + publicNetworkAccess = "Enabled" + allowProjectManagement = $true + } + } | ConvertTo-Json -Depth 5 + + $accountUri = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.CognitiveServices/accounts/$foundryAccountName" + + "?api-version=2025-04-01-preview" + + try { + Invoke-MhhArm -Method PUT -Path $accountUri -Payload $accountBody | Out-Null + } catch { + Write-Warning "Region '$region' rejected the account create: $_ — trying next region." + continue + } + + $timeout = 120; $elapsed = 0; $acct = $null + do { + Start-Sleep -Seconds 10; $elapsed += 10 + $acct = Get-AzResource -ResourceGroupName $effectiveRG -ResourceType "Microsoft.CognitiveServices/accounts" -Name $foundryAccountName -ErrorAction SilentlyContinue + } while (($acct.Properties.provisioningState -ne "Succeeded") -and ($elapsed -lt $timeout)) + + if ($acct.Properties.provisioningState -eq "Succeeded") { + $effectiveLocation = $region + $accountCreated = $true + Write-Host "[OK] Foundry account created in '$region'." + break + } + Write-Warning "Provisioning did not succeed in '$region' within ${timeout}s — trying next region." + } + if (-not $accountCreated) { + throw "Could not create the Foundry account in any preferred region: $($candidateRegions -join ', ')" + } +} + +# --------------------------------------------------------------------------- +# Ensure project management is enabled on the account. This is REQUIRED before a +# project can be created, and is not reliably honoured from the account-create +# body — so we set it explicitly and confirm it reads back before continuing. +# --------------------------------------------------------------------------- +$accountArm = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.CognitiveServices/accounts/$foundryAccountName" + + "?api-version=2025-04-01-preview" +$acctProps = (Invoke-MhhArm -Method GET -Path $accountArm).Content | ConvertFrom-Json +if (-not $acctProps.properties.allowProjectManagement) { + Invoke-MhhArm -Method PATCH -Path $accountArm ` + -Payload (@{ properties = @{ allowProjectManagement = $true } } | ConvertTo-Json) | Out-Null + $elapsed = 0 + do { + Start-Sleep -Seconds 8; $elapsed += 8 + $acctProps = (Invoke-MhhArm -Method GET -Path $accountArm).Content | ConvertFrom-Json + } while ((-not $acctProps.properties.allowProjectManagement) -and ($elapsed -lt 90)) + if (-not $acctProps.properties.allowProjectManagement) { + throw "Could not enable allowProjectManagement on '$foundryAccountName'." + } + Write-Host "[OK] Project management enabled on '$foundryAccountName'." +} + +# --------------------------------------------------------------------------- +# Foundry project +# --------------------------------------------------------------------------- +$projectUri = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.CognitiveServices/accounts/$foundryAccountName" + + "/projects/${foundryProjectName}?api-version=2025-04-01-preview" + +$existingProject = Invoke-MhhArm -Method GET -Path $projectUri -AllowNotFound +if ($existingProject.StatusCode -ne 200) { + # The project body MUST include an identity block, or the API rejects it with + # "you must enable a managed identity on your resource". + $projectBody = @{ + location = $effectiveLocation + identity = @{ type = "SystemAssigned" } + properties = @{ description = "Agentic Inventory Planning MicroHack" } + } | ConvertTo-Json -Depth 3 + + Invoke-MhhArm -Method PUT -Path $projectUri -Payload $projectBody | Out-Null + + $elapsed = 0 + do { Start-Sleep -Seconds 8; $elapsed += 8 + $r = Invoke-MhhArm -Method GET -Path $projectUri -AllowNotFound + } while (($r.StatusCode -ne 200) -and ($elapsed -lt 90)) + if ($r.StatusCode -ne 200) { throw "Foundry project '$foundryProjectName' did not become ready." } + + Write-Host "[OK] Foundry project '$foundryProjectName' created." +} else { + Write-Host "[OK] Foundry project already exists — skipping." +} + +# --------------------------------------------------------------------------- +# gpt-5.4-mini model deployment (ACCOUNT-scoped, GlobalStandard capacity 100). +# Chosen deliberately: a low-cost GPT-5 model whose Foundry model card confirms +# Functions/Tools + Structured Outputs (both required by these agents), available +# on GlobalStandard in EU regions, with the longest support horizon among the +# low-cost GPT-5 models (retires 2027-03-18). Do NOT fall back to gpt-4o-mini or +# gpt-4.1-mini here — both are already deprecated (retire Oct 2026). +# +# Capacity 100 = 100K TPM per attendee — ample for one person running the loop, +# and it lets ~8 labs share the default 1,000-unit regional GlobalStandard quota +# (8 x 100 = 800, leaving headroom). Keep this in sync with labsPerSubscription in +# lab-defaults.json: labsPerSubscription x capacity must stay <= the region quota. +# --------------------------------------------------------------------------- +$deploymentUri = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.CognitiveServices/accounts/$foundryAccountName" + + "/deployments/$modelDeployment" + + "?api-version=2025-04-01-preview" + +$existingDeploy = Invoke-MhhArm -Method GET -Path $deploymentUri -AllowNotFound +if ($existingDeploy.StatusCode -ne 200) { + $deploymentBody = @{ + sku = @{ name = "GlobalStandard"; capacity = 100 } + properties = @{ + model = @{ format = "OpenAI"; name = "gpt-5.4-mini"; version = "2026-03-17" } + } + } | ConvertTo-Json -Depth 10 + + try { + Invoke-MhhArm -Method PUT -Path $deploymentUri -Payload $deploymentBody | Out-Null + Write-Host "[OK] Model deployment '$modelDeployment' initiated." + } catch { + Write-Host "[WARN] Model deployment: $_ — may already exist, continuing." + } +} else { + Write-Host "[OK] Model deployment already exists — skipping." +} + +# --------------------------------------------------------------------------- +# Observability: Log Analytics workspace + Application Insights, connected to the +# Foundry account. This turns on **server-side agent tracing** — the native agents' +# runs appear in the portal's Agents -> Traces tab (model call, tool calls, tool +# responses, final generation). No app code changes are needed; Foundry auto-exports +# traces once the AppInsights connection exists. The app's agents are created with the +# new azure-ai-projects 2.x agents API, so they are traceable (classic assistants are +# not) and show natively in the portal. +# --------------------------------------------------------------------------- +$laName = "inv-log-$stableHash" +$aiName = "inv-appi-$stableHash" +$laId = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.OperationalInsights/workspaces/$laName" +$aiId = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.Insights/components/$aiName" + +if ((Invoke-MhhArm -Method GET -Path "${laId}?api-version=2022-10-01" -AllowNotFound).StatusCode -ne 200) { + $laBody = @{ location = $effectiveLocation; properties = @{ sku = @{ name = "PerGB2018" }; retentionInDays = 30 } } | ConvertTo-Json -Depth 5 + Invoke-MhhArm -Method PUT -Path "${laId}?api-version=2022-10-01" -Payload $laBody | Out-Null + $elapsed = 0 + do { Start-Sleep -Seconds 8; $elapsed += 8 + $la = ($laResp = Invoke-MhhArm -Method GET -Path "${laId}?api-version=2022-10-01" -AllowNotFound).Content | ConvertFrom-Json + } while ($la.properties.provisioningState -ne "Succeeded" -and $elapsed -lt 120) + Write-Host "[OK] Log Analytics workspace '$laName' created." +} else { + Write-Host "[OK] Log Analytics workspace already exists — skipping." +} + +if ((Invoke-MhhArm -Method GET -Path "${aiId}?api-version=2020-02-02" -AllowNotFound).StatusCode -ne 200) { + $aiBody = @{ location = $effectiveLocation; kind = "web"; properties = @{ Application_Type = "web"; WorkspaceResourceId = $laId } } | ConvertTo-Json -Depth 5 + Invoke-MhhArm -Method PUT -Path "${aiId}?api-version=2020-02-02" -Payload $aiBody | Out-Null + Write-Host "[OK] Application Insights '$aiName' created." +} else { + Write-Host "[OK] Application Insights already exists — skipping." +} + +# Connect App Insights to the Foundry account (this is what enables the Traces tab). +$aiConnString = ((Invoke-MhhArm -Method GET -Path "${aiId}?api-version=2020-02-02").Content | ConvertFrom-Json).properties.ConnectionString +$connUri = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.CognitiveServices/accounts/$foundryAccountName" + + "/connections/$foundryAccountName-appinsights?api-version=2025-04-01-preview" +$connBody = @{ properties = @{ + category = "AppInsights" + target = $aiId + authType = "ApiKey" + isSharedToAll = $true + credentials = @{ key = $aiConnString } + metadata = @{ ApiType = "Azure"; ResourceId = $aiId } +} } | ConvertTo-Json -Depth 6 +Invoke-MhhArm -Method PUT -Path $connUri -Payload $connBody | Out-Null +Write-Host "[OK] Application Insights connected to '$foundryAccountName' — server-side tracing enabled." + +# --------------------------------------------------------------------------- +# Governed data store: per-attendee Azure Cosmos DB for NoSQL (serverless). +# Keyless — local auth is disabled; the agents connect with the attendee's identity +# via data-plane RBAC. The database and containers are created here (control-plane); +# the app seeds the documents on first run (data-plane). Uses ARM REST so there is +# no dependency on the Az.CosmosDB module. +# --------------------------------------------------------------------------- +$cosmosName = "inv-cos-$stableHash" # 3-44 chars, lowercase alphanumeric + hyphens +$cosmosDb = "inventory" +$cosmosApi = "2024-11-15" +$cosmosBase = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.DocumentDB/databaseAccounts/$cosmosName" + +# --------------------------------------------------------------------------- +# MCAPS policy accommodation. The demo/attendee subscriptions this hack runs on +# are Microsoft-internal (MCAPS) subscriptions, which inherit a management-group +# 'Modify' policy that forces every new Cosmos DB account to +# publicNetworkAccess = Disabled. The app runs on the attendee's own machine and +# reaches Cosmos over its public endpoint, so a disabled endpoint breaks the lab. +# The standard MCAPS exemption is the resource-group tag SecurityControl=Ignore, +# so we merge it onto the RG (preserving any existing tags) before creating the +# account. Security is unchanged: the account is keyless (disableLocalAuth=true), +# so the reachable endpoint still requires an Entra token carrying the data role. +# On non-MCAPS subscriptions this tag is simply a harmless no-op. +# --------------------------------------------------------------------------- +$rgTagUri = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.Resources/tags/default?api-version=2021-04-01" +$rgTagBody = @{ operation = "Merge"; properties = @{ tags = @{ SecurityControl = "Ignore" } } } | ConvertTo-Json -Depth 4 +Invoke-MhhArm -Method PATCH -Path $rgTagUri -Payload $rgTagBody | Out-Null +Write-Host "[OK] Resource group tagged 'SecurityControl=Ignore' (MCAPS Cosmos public-access exemption)." + +$cosmosBody = @{ + kind = "GlobalDocumentDB" + location = $effectiveLocation + tags = @{ SecurityControl = "Ignore" } + properties = @{ + databaseAccountOfferType = "Standard" + disableLocalAuth = $true + publicNetworkAccess = "Enabled" + capabilities = @(@{ name = "EnableServerless" }) + locations = @(@{ locationName = $effectiveLocation; failoverPriority = 0 }) + } +} | ConvertTo-Json -Depth 6 + +$existingCosmos = Invoke-MhhArm -Method GET -Path "${cosmosBase}?api-version=$cosmosApi" -AllowNotFound +if ($existingCosmos.StatusCode -ne 200) { + Invoke-MhhArm -Method PUT -Path "${cosmosBase}?api-version=$cosmosApi" -Payload $cosmosBody | Out-Null + Write-Host "[INFO] Cosmos account '$cosmosName' creating (serverless, keyless)..." + + $timeout = 600; $elapsed = 0; $state = "Creating" + do { + Start-Sleep -Seconds 15; $elapsed += 15 + $c = Invoke-MhhArm -Method GET -Path "${cosmosBase}?api-version=$cosmosApi" -AllowNotFound + if ($c.StatusCode -eq 200) { $state = ($c.Content | ConvertFrom-Json).properties.provisioningState } + } while (($state -ne "Succeeded") -and ($elapsed -lt $timeout)) + if ($state -ne "Succeeded") { throw "Cosmos account '$cosmosName' did not provision within ${timeout}s." } + Write-Host "[OK] Cosmos account '$cosmosName' ready." +} else { + Write-Host "[OK] Cosmos account already exists — skipping." + # Reconcile (best-effort): if a prior run (or the MCAPS policy) left the + # endpoint disabled, re-enable it now that the exemption tag is in place. + # Wait for any in-flight operation to settle, then PUT (a bare PATCH can hit + # an ETag 412); retry transient "operation in progress" 412s. Never abort the + # run on this — a fresh account is already created reachable above. + $curProps = ($existingCosmos.Content | ConvertFrom-Json).properties + if ($curProps.publicNetworkAccess -ne "Enabled") { + $waited = 0 + while ($curProps.provisioningState -ne "Succeeded" -and $waited -lt 180) { + Start-Sleep -Seconds 10; $waited += 10 + $curProps = (Invoke-MhhArm -Method GET -Path "${cosmosBase}?api-version=$cosmosApi").Content | + ConvertFrom-Json | Select-Object -ExpandProperty properties + } + $reconciled = $false + for ($try = 1; $try -le 6 -and -not $reconciled; $try++) { + $rec = Invoke-AzRestMethod -Method PUT ` + -Uri "https://management.azure.com${cosmosBase}?api-version=$cosmosApi" -Payload $cosmosBody + if ($rec.StatusCode -ge 200 -and $rec.StatusCode -lt 300) { + $reconciled = $true + Write-Host "[OK] Re-enabled public network access on existing Cosmos account." + } elseif ($rec.StatusCode -eq 412) { + Start-Sleep -Seconds 15 # exclusive lock held by another operation — retry + } else { + Write-Host "[WARN] Could not re-enable Cosmos public access (HTTP $($rec.StatusCode)); continuing." + break + } + } + if (-not $reconciled) { Write-Host "[WARN] Cosmos public access still not reconciled after retries; continuing." } + } +} + +# Database +$dbUri = "$cosmosBase/sqlDatabases/${cosmosDb}?api-version=$cosmosApi" +if ((Invoke-MhhArm -Method GET -Path $dbUri -AllowNotFound).StatusCode -ne 200) { + $dbBody = @{ properties = @{ resource = @{ id = $cosmosDb } } } | ConvertTo-Json -Depth 5 + Invoke-MhhArm -Method PUT -Path $dbUri -Payload $dbBody | Out-Null + Write-Host "[OK] Cosmos database '$cosmosDb' created." +} + +# Containers (name -> partition key path) +$containers = [ordered]@{ + products = "/productId"; stores = "/storeId"; suppliers = "/supplierId"; + signals = "/signalId"; inventory = "/productId"; demand = "/productId"; orders = "/orderId" +} +foreach ($cName in $containers.Keys) { + $cUri = "$cosmosBase/sqlDatabases/$cosmosDb/containers/${cName}?api-version=$cosmosApi" + if ((Invoke-MhhArm -Method GET -Path $cUri -AllowNotFound).StatusCode -ne 200) { + $cBody = @{ properties = @{ resource = @{ + id = $cName + partitionKey = @{ paths = @($containers[$cName]); kind = "Hash" } + } } } | ConvertTo-Json -Depth 6 + Invoke-MhhArm -Method PUT -Path $cUri -Payload $cBody | Out-Null + Write-Host "[OK] Cosmos container '$cName' created." + } +} + +# Data-plane RBAC: Cosmos DB Built-in Data Contributor (…0002) per attendee. +$cosmosDataRole = "$cosmosBase/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002" +$existingRAs = Invoke-MhhArm -Method GET -Path "$cosmosBase/sqlRoleAssignments?api-version=$cosmosApi" -AllowNotFound +$raList = if ($existingRAs.StatusCode -eq 200) { ($existingRAs.Content | ConvertFrom-Json).value } else { @() } +foreach ($userId in $AllowedEntraUserIds) { + $already = $raList | Where-Object { $_.properties.principalId -eq $userId -and $_.properties.roleDefinitionId -like "*000000000002" } + if ($already) { Write-Host "[OK] Cosmos data role already granted to $userId."; continue } + $assignId = [guid]::NewGuid().ToString() + $raBody = @{ properties = @{ + roleDefinitionId = $cosmosDataRole + principalId = $userId + scope = $cosmosBase + } } | ConvertTo-Json -Depth 5 + Invoke-MhhArm -Method PUT -Path "$cosmosBase/sqlRoleAssignments/${assignId}?api-version=$cosmosApi" -Payload $raBody | Out-Null + Write-Host "[OK] Cosmos data-plane role granted to $userId." +} + +# --------------------------------------------------------------------------- +# Grant attendees data-plane access so they can create + deploy hosted agents +# from their Codespace. Standard RBAC on the Foundry account — no deviation. +# Azure AI User (53ca6127-db72-4b80-b1b0-d745d6d5456d) — agent CRUD / project data plane +# Cognitive Services User (a97b65f3-24c7-4388-baec-2e87135dc908) — inference calls +# --------------------------------------------------------------------------- +$accountScope = "/subscriptions/$SubscriptionId/resourceGroups/$effectiveRG" + + "/providers/Microsoft.CognitiveServices/accounts/$foundryAccountName" + +$roleIds = @{ + "Azure AI User" = "53ca6127-db72-4b80-b1b0-d745d6d5456d" + "Cognitive Services User" = "a97b65f3-24c7-4388-baec-2e87135dc908" +} + +foreach ($userId in $AllowedEntraUserIds) { + foreach ($roleName in $roleIds.Keys) { + $roleId = $roleIds[$roleName] + $existing = Get-AzRoleAssignment -ObjectId $userId -Scope $accountScope -RoleDefinitionId $roleId -ErrorAction SilentlyContinue + if ($existing) { + Write-Host "[OK] '$roleName' already assigned to $userId." + continue + } + try { + New-AzRoleAssignment -ObjectId $userId -RoleDefinitionId $roleId -Scope $accountScope -ErrorAction Stop | Out-Null + Write-Host "[OK] Granted '$roleName' to $userId." + } catch { + Write-Host "[WARN] Could not grant '$roleName' to ${userId}: $_" + } + } +} + +# --------------------------------------------------------------------------- +# Return credentials to the attendee dashboard +# --------------------------------------------------------------------------- +$projectEndpoint = "https://$foundryAccountName.services.ai.azure.com/api/projects/$foundryProjectName" + +Write-Host "[OK] Lab provisioning complete." + +@{ HackboxCredential = @{ + name = "FoundryProjectEndpoint" + value = $projectEndpoint + note = "Paste into src/.env as PROJECT_ENDPOINT (Challenge 0)" +} } + +@{ HackboxCredential = @{ + name = "ModelDeploymentName" + value = $modelDeployment + note = "Paste into src/.env as MODEL_DEPLOYMENT_NAME" +} } + +@{ HackboxCredential = @{ + name = "CosmosEndpoint" + value = "https://$cosmosName.documents.azure.com:443/" + note = "Paste into src/.env as COSMOS_ENDPOINT (the governed data store)" +} } + +@{ HackboxCredential = @{ + name = "ResourceGroupName" + value = $effectiveRG + note = "The resource group containing your Foundry account" +} } diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/lab-defaults.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/lab-defaults.json new file mode 100644 index 000000000..54ba5e75d --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/lab-defaults.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://raw.githubusercontent.com/microsoft/MicroHack/refs/heads/main/lab-defaults-schema.json", + "groups": [], + "deploymentType": "resourcegroup", + "labsPerSubscription": 8, + "preferredLocation": "swedencentral, westeurope, norwayeast", + "estimatedDailyCostsUsd": 5.0 +} diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/run-local.ps1 b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/run-local.ps1 new file mode 100644 index 000000000..d83a0a2c6 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/run-local.ps1 @@ -0,0 +1,58 @@ +# Local-only wrapper to run deploy-lab.ps1 outside the MicroHack platform. +# Supplies the platform-provided helper (Get-MhhStableHash), pre-creates the +# resource group, and passes the current signed-in user's Entra object ID. +# NOT part of the hack deliverable — for local end-to-end verification only. + +param( + # Defaults to the current Az context subscription; pass to override. + [string]$SubscriptionId = ((Get-AzContext -ErrorAction SilentlyContinue).Subscription.Id), + [string]$ResourceGroupName = "rg-inventory-hack-local", + [string]$Location = "swedencentral", + # Defaults to the current signed-in user's Entra object ID (resolved below). + [string[]]$AllowedEntraUserIds = @() +) + +$ErrorActionPreference = "Stop" + +if (-not $SubscriptionId) { + throw "No subscription in context. Run Connect-AzAccount first, or pass -SubscriptionId." +} + +# The platform passes the lab's attendee object IDs here. Run locally, this defaults +# to the signed-in user so the RBAC grants target you. +if ($AllowedEntraUserIds.Count -eq 0) { + $signedInId = (Get-AzADUser -SignedIn -ErrorAction SilentlyContinue).Id + if (-not $signedInId) { + throw "Could not resolve your Entra object ID. Pass -AllowedEntraUserIds explicitly." + } + $AllowedEntraUserIds = @($signedInId) +} + +# Platform-provided helper shim: deterministic, DNS-safe, lowercase hash. +function Get-MhhStableHash { + param([Parameter(ValueFromRemainingArguments = $true)][object[]]$InputValues, [int]$Length = 12) + $strings = @() + foreach ($v in $InputValues) { if ($v -is [array]) { $strings += $v } else { $strings += $v } } + $joined = ($strings -join '|') + if ([string]::IsNullOrEmpty($joined)) { $joined = "default" } + $sha = [System.Security.Cryptography.SHA256]::Create() + $bytes = $sha.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($joined)) + $hex = -join ($bytes | ForEach-Object { $_.ToString('x2') }) + return $hex.Substring(0, $Length) +} + +# Pre-create the resource group (the platform does this for 'resourcegroup' type). +if (-not (Get-AzResourceGroup -Name $ResourceGroupName -ErrorAction SilentlyContinue)) { + Write-Host "[INFO] Creating resource group '$ResourceGroupName' in '$Location'..." + New-AzResourceGroup -Name $ResourceGroupName -Location $Location | Out-Null + Write-Host "[OK] Resource group created." +} else { + Write-Host "[OK] Resource group already exists." +} + +& "$PSScriptRoot\deploy-lab.ps1" ` + -DeploymentType 'resourcegroup' ` + -SubscriptionId $SubscriptionId ` + -ResourceGroupName $ResourceGroupName ` + -PreferredLocation @($Location, "westeurope", "norwayeast") ` + -AllowedEntraUserIds $AllowedEntraUserIds diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md new file mode 100644 index 000000000..5e65db37e --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md @@ -0,0 +1,69 @@ +# src — developer guide + +Everything the participant builds lives here. It runs unchanged in a Codespace or +locally. + +## Run it + +Everything runs through one surface: the **planner console**. There is no CLI. + +```bash +# 0. Install dependencies (the devcontainer / Codespace does this for you) +uv sync + +# 1. Authenticate (the agents use DefaultAzureCredential) +az login + +# 2. Configure — copy the three values from your lab dashboard +cp ../.env.example .env # then edit PROJECT_ENDPOINT + MODEL_DEPLOYMENT_NAME + COSMOS_ENDPOINT + +# 3. Launch the planner console, then open the forwarded port 8000 +uv run uvicorn ui.app:app --reload --port 8000 +``` + +Click through **Sense → Plan → Approve → Act** in the browser. The first time you +click a step, its hosted agent is created in your Foundry project and run. Editing +agent code and saving auto-reloads the server (`--reload`), so just refresh and click +again. + +> [!TIP] +> The default model `gpt-5.4-mini` is a GPT-5 *reasoning* model. `.env` sets +> `REASONING_EFFORT=minimal` so runs stay fast for the interactive console. The +> runtime (`agent_runtime._respond`) applies it when the SDK/model supports it +> and silently falls back otherwise, so any model still works. + +> [!NOTE] +> The runtime uses the **new Microsoft Foundry agents API** (`azure-ai-projects` 2.x): +> each agent is a versioned `PromptAgentDefinition` served over the **Responses** +> protocol (`client.agents.create_version` + `get_openai_client().responses`). That +> makes the agents **native** in the Foundry portal — they appear under **Agents** +> with a **Traces** tab and no "update your agents" migration prompt — and their runs +> are **traced server-side** (labautomation connects Application Insights for you). +> `uv sync` installs the right versions. + +## How the pieces fit + +| File | Role | +|------|------| +| `data/*.json` | Zava **seed** data — loaded into Cosmos on first run | +| `inventory_store.py` | Cosmos-backed store: connects keyless (`DefaultAzureCredential`), seeds containers once, derives `Inventory` + `DemandHistory`, serves the tools | +| `tools.py` | The function tools agents call; `submit_purchase_order` is the only side effect (a real Cosmos write) | +| `agents/__init__.py` | The three `AgentSpec`s (name, instructions, tools) | +| `agent_runtime.py` | Creates the **native** (versioned) Foundry agents and runs them over the Responses API; pauses on approval-gated tools | +| `orchestrator.py` | `sense → plan → propose → approve` for the UI (plus `refine_plan` / `refine_proposal` for natural-language edits) | +| `workflow.py` | Stretch: the whole loop as one callable (used by `/api/run-loop`) | +| `live.py` | Stretch (Challenge 5): Cosmos change-feed watcher — auto-runs the loop when a signal is written, streamed to the UI over SSE, stopping at the human gate | +| `mcp_server.py` | Stretch (Challenge 5): MCP server exposing `inject_signal` so an external client can trigger the loop | +| `ui/` | Minimal FastAPI + static-HTML planner console — the only way in | + +> The store is provisioned by `labautomation` (per-attendee Cosmos DB, keyless). The +> app **seeds** it from `data/` on the first console action, so `src/.env` needs +> `COSMOS_ENDPOINT` and you must `az login` first. + +## The human-in-the-loop gate + +`submit_purchase_order` is listed in `agent_runtime.APPROVAL_REQUIRED`. When an +agent asks to call it, the runtime **does not execute it** — it returns a +`ToolApprovalRequest`. Only a human (via the console's *Approve* button) triggers +the actual submission through `orchestrator.approve(...)` — which performs a **real, +durable write** to the Cosmos `orders` container (it survives restarts). diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agent_runtime.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agent_runtime.py new file mode 100644 index 000000000..713a544fb --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agent_runtime.py @@ -0,0 +1,230 @@ +"""Runtime that creates and drives native Foundry agents (azure-ai-projects 2.x). + +Each agent is created as a versioned :class:`PromptAgentDefinition` exposed over the +Responses protocol, so it shows up **natively** in the Microsoft Foundry portal (no +"update your agents" migration prompt) and its runs are **traced server-side** once an +Application Insights resource is connected to the project. The agents' function tools +are declared as JSON schemas (derived from the Python callables) and executed here in +your process during development. + +This module keeps things deliberately small: + +* ``AgentSpec`` - a declarative description of one agent (name, instructions, tools). +* ``AgentRuntime`` - creates the agent versions and runs a single-turn request via the + Responses API, resolving any function-tool calls the model makes. + +Human-in-the-loop: the runtime NEVER auto-executes ``submit_purchase_order``. If an +agent asks for it, the runtime pauses and returns a ``ToolApprovalRequest`` so the UI +(or CLI) can ask a human. On approval the caller runs the tool and continues. +""" + +from __future__ import annotations + +import inspect +import json +import re +from dataclasses import dataclass, field +from typing import Any, Callable + +from azure.ai.projects import AIProjectClient +from azure.ai.projects.models import ( + AgentEndpointConfig, + FixedRatioVersionSelectionRule, + FunctionTool, + PromptAgentDefinition, + ProtocolConfiguration, + ResponsesProtocolConfiguration, + VersionSelector, +) +from azure.identity import DefaultAzureCredential +from openai.types.responses.response_input_param import FunctionCallOutput + +import config + +# Tools that must never be executed without an explicit human approval. +APPROVAL_REQUIRED = {"submit_purchase_order"} + + +@dataclass +class AgentSpec: + """Declarative definition of one hosted agent.""" + + name: str + instructions: str + functions: set[Callable[..., str]] = field(default_factory=set) + + +@dataclass +class ToolApprovalRequest: + """Returned when an agent wants to run an approval-gated tool.""" + + tool_name: str + arguments: dict[str, Any] + + +def _function_tool(fn: Callable[..., str]) -> FunctionTool: + """Build a Foundry ``FunctionTool`` schema from a typed, documented Python callable. + + The tool name is the function name, the description is the docstring's first line, + and every parameter becomes a string property (required unless it has a default). + Parameter descriptions are lifted from the ``:param name:`` docstring lines. The + function itself is executed in-process by the runtime when the model calls it. + """ + doc = inspect.getdoc(fn) or "" + param_docs = { + m.group(1): m.group(2).strip() + for m in re.finditer(r":param (\w+):\s*(.+)", doc) + } + properties: dict[str, Any] = {} + required: list[str] = [] + for name, param in inspect.signature(fn).parameters.items(): + properties[name] = {"type": "string"} + if name in param_docs: + properties[name]["description"] = param_docs[name] + if param.default is inspect.Parameter.empty: + required.append(name) + return FunctionTool( + name=fn.__name__, + description=doc.split("\n", 1)[0] if doc else fn.__name__, + parameters={ + "type": "object", + "properties": properties, + "required": required, + "additionalProperties": False, + }, + strict=False, + ) + + +class AgentRuntime: + """Creates the new-format Foundry agents once and runs single-turn requests. + + Uses the Microsoft Foundry agents API (``azure-ai-projects`` 2.x): each agent is a + versioned :class:`PromptAgentDefinition` exposed over the Responses protocol. That + makes them **native** Foundry agents — they appear in the portal without any + "update your agents" migration prompt, and their runs are **traced server-side** + once Application Insights is connected. Function tools are declared as schemas and + executed here in your process during development. + """ + + def __init__(self) -> None: + self._client = AIProjectClient( + endpoint=config.require_endpoint(), + credential=DefaultAzureCredential(), + ) + self._ready: set[str] = set() + self._functions: dict[str, dict[str, Callable[..., str]]] = {} + + # ---- Agent lifecycle ------------------------------------------------- + + def ensure(self, spec: AgentSpec) -> str: + """Create a new agent version and route the endpoint to it (idempotent). + + Returns the agent name, which is how the Responses client addresses it. + """ + if spec.name in self._ready: + return spec.name + + self._functions[spec.name] = {fn.__name__: fn for fn in spec.functions} + tools = [_function_tool(fn) for fn in spec.functions] + + version = self._client.agents.create_version( + agent_name=spec.name, + definition=PromptAgentDefinition( + model=config.MODEL_DEPLOYMENT_NAME, + instructions=spec.instructions, + tools=tools, + ), + ) + self._client.agents.update_details( + agent_name=spec.name, + agent_endpoint=AgentEndpointConfig( + version_selector=VersionSelector( + version_selection_rules=[ + FixedRatioVersionSelectionRule( + agent_version=version.version, traffic_percentage=100 + ) + ] + ), + protocol_configuration=ProtocolConfiguration( + responses=ResponsesProtocolConfiguration() + ), + ), + ) + self._ready.add(spec.name) + return spec.name + + # ---- Running a request ---------------------------------------------- + + def run(self, spec: AgentSpec, prompt: str) -> str | ToolApprovalRequest: + """Run a single-turn request. Returns the agent's text, or an approval request. + + Resolves function-tool calls in a loop: each read-only tool is executed and its + result fed back to the model. If the model asks for an approval-gated tool + (``submit_purchase_order``), the runtime does **not** execute it — it returns a + :class:`ToolApprovalRequest` so a human makes the call. + """ + self.ensure(spec) + functions = self._functions[spec.name] + + with self._client.get_openai_client(agent_name=spec.name) as openai_client: + response = self._respond(openai_client, input=prompt) + + while True: + calls = [ + item + for item in response.output + if getattr(item, "type", None) == "function_call" + ] + if not calls: + break + + outputs: list[FunctionCallOutput] = [] + for call in calls: + try: + args = json.loads(call.arguments or "{}") + except json.JSONDecodeError: + args = {} + + if call.name in APPROVAL_REQUIRED: + # Pause: a human must approve this action before we act. + return ToolApprovalRequest(tool_name=call.name, arguments=args) + + fn = functions.get(call.name) + result = ( + fn(**args) + if fn + else json.dumps({"error": f"unknown tool '{call.name}'"}) + ) + outputs.append( + FunctionCallOutput( + type="function_call_output", + call_id=call.call_id, + output=result if isinstance(result, str) else json.dumps(result), + ) + ) + + response = self._respond( + openai_client, input=outputs, previous_response_id=response.id + ) + + return response.output_text + + # ---- Helpers --------------------------------------------------------- + + def _respond(self, openai_client: Any, **kwargs: Any) -> Any: + """Call the Responses API, applying reasoning effort when configured. + + gpt-5 reasoning models (the default gpt-5.4-mini included) run faster with a + low reasoning budget. We pass ``reasoning`` when set, but fall back to a plain + call if the model/SDK rejects it — so the hack works on any model. + """ + effort = config.effective_reasoning_effort() + if effort: + try: + return openai_client.responses.create( + reasoning={"effort": effort}, **kwargs + ) + except Exception: # noqa: BLE001 - model/SDK rejected the reasoning param + pass + return openai_client.responses.create(**kwargs) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py new file mode 100644 index 000000000..35343943b --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py @@ -0,0 +1,79 @@ +"""The three hosted agents that form the sense -> plan -> approve -> act loop. + +Each agent is declared as an :class:`AgentSpec`: a name, system instructions, and +the set of function tools it may call. The runtime turns these into real hosted +agents in your Foundry project. Participants build these up across Challenges 1-3. +""" + +from __future__ import annotations + +from agent_runtime import AgentSpec +from tools import ( + calc_reorder, + get_external_signals, + get_product, + list_low_stock, + query_inventory, + submit_purchase_order, +) + +DEMAND_SENSING = AgentSpec( + name="demand-sensing-agent", + instructions=( + "You are a Demand Sensing Agent for a retail inventory planning team.\n\n" + "Your role is to detect real-world signals that could affect product demand and " + "reconcile them against the company's current inventory position.\n\n" + "TOOL USE: For ANY question about stock, on-hand units, reorder points, safety stock " + "or sales velocity you MUST call query_inventory or list_low_stock and answer from the " + "result. Never answer inventory questions from memory. Use get_external_signals for " + "market signals (weather, search trends, competitor, news).\n\n" + "When given a scenario or event:\n" + "1. Call get_external_signals for the affected categories/region to find market signals.\n" + "2. Call list_low_stock (and query_inventory for specifics) to see the governed position.\n" + "3. Synthesise both into a demand assessment: state whether current stock is adequate, " + "at risk, or critically exposed - with a clear reason for each conclusion.\n" + "4. Always distinguish external signals from governed data. Be concise - planners need a " + "signal they can act on, not an essay." + ), + functions={query_inventory, list_low_stock, get_external_signals}, +) + +INVENTORY_OPTIMISATION = AgentSpec( + name="inventory-optimisation-agent", + instructions=( + "You are an Inventory Optimisation Agent for a retail planning team.\n\n" + "You receive a demand assessment and produce a concrete reorder recommendation.\n\n" + "TOOL USE: For ANY inventory number you MUST call the tools - never invent numbers. " + "Use list_low_stock to find candidates, calc_reorder to compute quantities, and " + "get_product for catalogue details.\n\n" + "For each at-risk or critically exposed SKU:\n" + "1. Call calc_reorder to get the suggested quantity " + "(reorder_qty = max(0, average_daily_sales * 30 - current_stock)).\n" + "2. Identify the location with the lowest stock relative to demand as the priority.\n" + "3. Return a structured recommendation. Respond with a JSON object shaped exactly as:\n" + ' {"recommendations": [{"sku","productName","location","currentStock",' + '"suggestedReorderQty","priority"}]}\n' + " Mark priority CRITICAL when current stock is below safety stock. Return ONLY the JSON." + ), + functions={list_low_stock, calc_reorder, get_product, query_inventory}, +) + +REPLENISHMENT = AgentSpec( + name="replenishment-action-agent", + instructions=( + "You are a Replenishment Action Agent for a retail planning team.\n\n" + "You receive a reorder recommendation and must present a formal purchase order " + "proposal for human approval. You NEVER submit an order yourself without approval.\n\n" + "TOOL USE: Call get_product to look up each item's unitCost. Use $20 as a fallback only " + "if a cost is unavailable.\n\n" + "Produce a purchase order proposal. Respond with a JSON object shaped exactly as:\n" + ' {"proposal": {"date","lines": [{"line","sku","productName","location","quantity",' + '"unitCost","lineTotal"}], "totalEstimatedValue"}, ' + '"submitItems": [{"sku","location","quantity"}]}\n' + "The submitItems array is what will be sent to submit_purchase_order ONLY after a human " + "approves. Do NOT call submit_purchase_order yourself. Return ONLY the JSON." + ), + functions={get_product, submit_purchase_order}, +) + +ALL_AGENTS = [DEMAND_SENSING, INVENTORY_OPTIMISATION, REPLENISHMENT] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py new file mode 100644 index 000000000..023050257 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py @@ -0,0 +1,81 @@ +"""Central configuration for the hosted agents and the planner-console UI. + +All values come from environment variables so the same code runs unchanged in a +Codespace, locally, or in the Foundry-hosted runtime. Copy ``.env.example`` to +``.env`` and fill in the three values your lab dashboard gives you. +""" + +from __future__ import annotations + +import os +from pathlib import Path + +try: + # Optional convenience: load src/.env (next to this file) if python-dotenv is + # installed, so values load no matter which directory you launch from. + from dotenv import load_dotenv + + load_dotenv(Path(__file__).with_name(".env")) +except ImportError: # pragma: no cover - dotenv is optional + pass + +# The Foundry project endpoint from your lab dashboard, e.g. +# https://inv-xxxxxxxx.services.ai.azure.com/api/projects/inventory-hack +PROJECT_ENDPOINT = os.getenv("PROJECT_ENDPOINT", "").strip() + +# The model deployment name from your lab dashboard (default: gpt-5.4-mini). +# +# Model choice matters: this hack depends on the agent (1) reliably CALLING its +# function tools and (2) returning STRUCTURED JSON. gpt-5.4-mini is a low-cost +# GPT-5 model whose Foundry model card confirms BOTH Functions/Tools and +# Structured Outputs, it runs on GlobalStandard in EU regions, and it has the +# longest support horizon among the low-cost GPT-5 models (retires 2027-03-18). +# +# If you change this, pick a model whose Foundry model card shows Functions/Tools +# + Structured Outputs. Avoid already-DEPRECATED models (gpt-4.1-mini and +# gpt-4o-mini retire in Oct 2026) and the older o-series reasoning models +# (o1/o3/o4), which can refuse tool calls. A solid fallback is gpt-5-mini. +# Re-run `python cli.py` after any change to confirm every step still calls tools. +MODEL_DEPLOYMENT_NAME = os.getenv("MODEL_DEPLOYMENT_NAME", "gpt-5.4-mini").strip() + +# Optional: enable the Web Search grounding tool on the demand-sensing agent. +ENABLE_WEB_SEARCH = os.getenv("ENABLE_WEB_SEARCH", "false").strip().lower() == "true" + +# The per-attendee Cosmos DB for NoSQL account endpoint from your lab dashboard, e.g. +# https://inv-cos-xxxxxxxx.documents.azure.com:443/ (provisioned by labautomation). +COSMOS_ENDPOINT = os.getenv("COSMOS_ENDPOINT", "").strip() +COSMOS_DATABASE = os.getenv("COSMOS_DATABASE", "inventory").strip() + +# Reasoning effort for GPT-5 reasoning models (gpt-5.4-mini is one). Lower effort = +# faster, snappier responses with fewer hidden reasoning tokens — ideal for the +# interactive planner console. Valid: minimal | low | medium | high | none | default. +# "minimal" is the sweet spot for this tool-driven hack. Set to "default" (or empty) +# to let the model decide, or if you switch to a non-reasoning model. +REASONING_EFFORT = os.getenv("REASONING_EFFORT", "minimal").strip().lower() + + +def effective_reasoning_effort() -> str | None: + """Return the reasoning-effort value to send, or None to omit the parameter.""" + if REASONING_EFFORT in ("", "default", "auto", "off"): + return None + return REASONING_EFFORT + + +def require_endpoint() -> str: + """Return the project endpoint or raise a clear, actionable error.""" + if not PROJECT_ENDPOINT: + raise RuntimeError( + "PROJECT_ENDPOINT is not set. Copy .env.example to .env and paste the " + "FoundryProjectEndpoint value from your lab dashboard (Challenge 0)." + ) + return PROJECT_ENDPOINT + + +def require_cosmos_endpoint() -> str: + """Return the Cosmos DB endpoint or raise a clear, actionable error.""" + if not COSMOS_ENDPOINT: + raise RuntimeError( + "COSMOS_ENDPOINT is not set. Copy .env.example to .env and paste the " + "CosmosEndpoint value from your lab dashboard (Challenge 0)." + ) + return COSMOS_ENDPOINT diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/external_signals.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/external_signals.json new file mode 100644 index 000000000..ad07b4bbc --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/external_signals.json @@ -0,0 +1,10 @@ +[ + { "signalId": "SIG01", "signalType": "weather", "region": "Pacific Northwest", "headline": "Prolonged heatwave and early spring across the Pacific Northwest", "score": 0.80, "source": "WeatherIQ", "affectedCategories": "outdoor_power_tools,garden_and_lawn" }, + { "signalId": "SIG02", "signalType": "search_trend", "region": "National", "headline": "Sharp spike in online searches for leaf blowers and lawn tools", "score": 0.75, "source": "SearchIQ", "affectedCategories": "outdoor_power_tools" }, + { "signalId": "SIG03", "signalType": "competitor", "region": "West", "headline": "Major competitor reported out of stock on chainsaws", "score": 0.60, "source": "MarketIQ", "affectedCategories": "outdoor_power_tools" }, + { "signalId": "SIG04", "signalType": "news", "region": "National", "headline": "Home improvement season demand surge expected", "score": 0.50, "source": "NewsIQ", "affectedCategories": "paint_and_supplies,garden_and_lawn" }, + { "signalId": "SIG05", "signalType": "promo", "region": "National", "headline": "Competitor launches smart-home bundle promotion", "score": 0.40, "source": "MarketIQ", "affectedCategories": "smart_home" }, + { "signalId": "SIG06", "signalType": "weather", "region": "Northeast", "headline": "Active storm season forecast for the Northeast", "score": 0.55, "source": "WeatherIQ", "affectedCategories": "outdoor_power_tools" }, + { "signalId": "SIG07", "signalType": "supply", "region": "West", "headline": "Supplier delay reported at PowerTool Depot", "score": 0.65, "source": "SupplyIQ", "affectedCategories": "outdoor_power_tools" }, + { "signalId": "SIG08", "signalType": "search_trend", "region": "National", "headline": "Interior painting projects trending on social media", "score": 0.45, "source": "SearchIQ", "affectedCategories": "paint_and_supplies" } +] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/inventory_overrides.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/inventory_overrides.json new file mode 100644 index 000000000..647983641 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/inventory_overrides.json @@ -0,0 +1,9 @@ +[ + { "productId": "P004", "storeId": "ST03", "onHand": 8, "note": "Leaf Blower critically low at Portland" }, + { "productId": "P004", "storeId": "ST04", "onHand": 6, "note": "Leaf Blower critically low at Seattle" }, + { "productId": "P004", "storeId": "WH01", "onHand": 45, "note": "Leaf Blower near reorder at Chicago" }, + { "productId": "P004", "storeId": "WH02", "onHand": 40, "note": "Leaf Blower near reorder at Dallas" }, + { "productId": "P005", "storeId": "ST03", "onHand": 5, "note": "Chainsaw critically low at Portland" }, + { "productId": "P005", "storeId": "ST04", "onHand": 7, "note": "Chainsaw critically low at Seattle" }, + { "productId": "P006", "storeId": "ST03", "onHand": 12, "note": "Hedge Trimmer below safety stock at Portland" } +] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/products.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/products.json new file mode 100644 index 000000000..125da294b --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/products.json @@ -0,0 +1,14 @@ +[ + { "productId": "P001", "name": "Lawn Mower Pro", "category": "garden_and_lawn", "unitCost": 180, "leadTimeDays": 14, "supplierId": "S01", "baseWeeklyUnits": 8, "baseOnHand": 40 }, + { "productId": "P002", "name": "Garden Hose 50ft", "category": "garden_and_lawn", "unitCost": 25, "leadTimeDays": 7, "supplierId": "S01", "baseWeeklyUnits": 30, "baseOnHand": 150 }, + { "productId": "P003", "name": "Fertilizer 20lb", "category": "garden_and_lawn", "unitCost": 18, "leadTimeDays": 10, "supplierId": "S01", "baseWeeklyUnits": 45, "baseOnHand": 200 }, + { "productId": "P004", "name": "Leaf Blower X2", "category": "outdoor_power_tools", "unitCost": 95, "leadTimeDays": 21, "supplierId": "S02", "baseWeeklyUnits": 20, "baseOnHand": 30 }, + { "productId": "P005", "name": "Chainsaw 16in", "category": "outdoor_power_tools", "unitCost": 140, "leadTimeDays": 21, "supplierId": "S02", "baseWeeklyUnits": 12, "baseOnHand": 25 }, + { "productId": "P006", "name": "Hedge Trimmer", "category": "outdoor_power_tools", "unitCost": 85, "leadTimeDays": 18, "supplierId": "S02", "baseWeeklyUnits": 15, "baseOnHand": 28 }, + { "productId": "P007", "name": "Interior Paint 1gal", "category": "paint_and_supplies", "unitCost": 22, "leadTimeDays": 7, "supplierId": "S03", "baseWeeklyUnits": 50, "baseOnHand": 300 }, + { "productId": "P008", "name": "Paint Roller Set", "category": "paint_and_supplies", "unitCost": 12, "leadTimeDays": 5, "supplierId": "S03", "baseWeeklyUnits": 40, "baseOnHand": 250 }, + { "productId": "P009", "name": "Painters Tape", "category": "paint_and_supplies", "unitCost": 6, "leadTimeDays": 5, "supplierId": "S03", "baseWeeklyUnits": 60, "baseOnHand": 400 }, + { "productId": "P010", "name": "Smart Thermostat", "category": "smart_home", "unitCost": 110, "leadTimeDays": 12, "supplierId": "S04", "baseWeeklyUnits": 18, "baseOnHand": 90 }, + { "productId": "P011", "name": "Video Doorbell", "category": "smart_home", "unitCost": 130, "leadTimeDays": 12, "supplierId": "S04", "baseWeeklyUnits": 16, "baseOnHand": 80 }, + { "productId": "P012", "name": "Smart Plug 4-pack", "category": "smart_home", "unitCost": 28, "leadTimeDays": 9, "supplierId": "S04", "baseWeeklyUnits": 35, "baseOnHand": 180 } +] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/replenishment_orders.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/replenishment_orders.json new file mode 100644 index 000000000..94e26e42f --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/replenishment_orders.json @@ -0,0 +1,6 @@ +[ + { "orderId": "ORD-1001", "type": "purchase", "status": "submitted", "requestedBy": "Inventory Optimisation Agent", "approvedBy": "Sam Rivera", "createdDate": "2026-06-15", "items": [ { "sku": "P007", "location": "WH01", "quantity": 200 } ] }, + { "orderId": "ORD-1002", "type": "transfer", "status": "completed", "requestedBy": "Planning Team", "approvedBy": "Sam Rivera", "createdDate": "2026-06-22", "items": [ { "sku": "P002", "location": "ST01", "quantity": 60 } ] }, + { "orderId": "ORD-1003", "type": "purchase", "status": "rejected", "requestedBy": "Inventory Optimisation Agent", "approvedBy": "Sam Rivera", "createdDate": "2026-06-28", "items": [ { "sku": "P010", "location": "WH02", "quantity": 120 } ] }, + { "orderId": "ORD-1004", "type": "purchase", "status": "submitted", "requestedBy": "Inventory Optimisation Agent", "approvedBy": "Jordan Lee", "createdDate": "2026-07-02", "items": [ { "sku": "P004", "location": "WH01", "quantity": 150 } ] } +] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/stores.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/stores.json new file mode 100644 index 000000000..7d0ced63e --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/stores.json @@ -0,0 +1,8 @@ +[ + { "storeId": "ST01", "name": "Boston Store", "type": "retail", "region": "Northeast", "city": "Boston", "state": "MA" }, + { "storeId": "ST02", "name": "Brooklyn Store", "type": "retail", "region": "Northeast", "city": "Brooklyn", "state": "NY" }, + { "storeId": "ST03", "name": "Portland Store", "type": "retail", "region": "Pacific Northwest", "city": "Portland", "state": "OR" }, + { "storeId": "ST04", "name": "Seattle Store", "type": "retail", "region": "Pacific Northwest", "city": "Seattle", "state": "WA" }, + { "storeId": "WH01", "name": "Chicago Warehouse","type": "warehouse", "region": "Midwest", "city": "Chicago", "state": "IL" }, + { "storeId": "WH02", "name": "Dallas Warehouse", "type": "warehouse", "region": "South", "city": "Dallas", "state": "TX" } +] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/suppliers.json b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/suppliers.json new file mode 100644 index 000000000..34e0a4892 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/data/suppliers.json @@ -0,0 +1,6 @@ +[ + { "supplierId": "S01", "name": "GreenField Supply", "region": "Midwest", "reliabilityScore": 0.92 }, + { "supplierId": "S02", "name": "PowerTool Depot", "region": "West", "reliabilityScore": 0.85 }, + { "supplierId": "S03", "name": "ColorCraft Paints", "region": "Northeast", "reliabilityScore": 0.95 }, + { "supplierId": "S04", "name": "ConnectHome", "region": "West", "reliabilityScore": 0.88 } +] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py new file mode 100644 index 000000000..1cf8e2b2b --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py @@ -0,0 +1,221 @@ +"""Cosmos DB-backed governed inventory store. + +``labautomation`` provisions a per-attendee **Azure Cosmos DB for NoSQL** account +(serverless) with the database and containers already created, and grants the +attendee **data-plane RBAC** (Cosmos DB Built-in Data Contributor). This module: + +* connects **keyless** with ``DefaultAzureCredential`` (the same identity the agents + use for Foundry — no keys, no connection strings), +* **seeds** the containers from the bundled Zava seed data on first run (idempotent, + data-plane upserts only — the containers themselves are created by labautomation), +* caches the mostly-static reference data in memory for fast tool calls, and +* persists **orders** as real writes — so the replenishment agent's approved action + is a genuine, durable side effect, not a simulation. + +The store is created lazily via :func:`get_store` so the planner console still loads +before you have configured ``COSMOS_ENDPOINT`` / run ``az login``. +""" + +from __future__ import annotations + +import json +import math +import uuid +from datetime import date, timedelta +from pathlib import Path +from typing import Any + +from azure.cosmos import CosmosClient +from azure.identity import DefaultAzureCredential + +import config + +DATA_DIR = Path(__file__).parent / "data" + +# Anchor date for the derived 6-week demand history — matches the seed logic. +_ANCHOR_MONDAY = date(2026, 7, 6) +_DEMAND_WEEKS = 6 + +# Containers created by labautomation (name -> partition key path). The app never +# creates these (that is a control-plane op); it only reads/writes items. +CONTAINERS = ("products", "stores", "suppliers", "signals", "inventory", "demand", "orders") + + +def _load(name: str) -> list[dict[str, Any]]: + with open(DATA_DIR / f"{name}.json", "r", encoding="utf-8") as handle: + return json.load(handle) + + +def _derive_inventory( + products: list[dict[str, Any]], + stores: list[dict[str, Any]], + overrides: dict[tuple[str, str], int], +) -> list[dict[str, Any]]: + rows: list[dict[str, Any]] = [] + for p in products: + reorder_point = math.ceil(p["baseWeeklyUnits"] * p["leadTimeDays"] / 7) + safety_stock = math.ceil(reorder_point * 0.5) + for s in stores: + on_hand = p["baseOnHand"] * 4 if s["type"] == "warehouse" else p["baseOnHand"] + on_hand = overrides.get((p["productId"], s["storeId"]), on_hand) + rows.append( + { + "productId": p["productId"], + "storeId": s["storeId"], + "onHand": int(on_hand), + "reorderPoint": int(reorder_point), + "safetyStock": int(safety_stock), + } + ) + return rows + + +def _derive_demand( + products: list[dict[str, Any]], stores: list[dict[str, Any]] +) -> list[dict[str, Any]]: + retail = [s for s in stores if s["type"] == "retail"] + rows: list[dict[str, Any]] = [] + for p in products: + per_store = max(1, round(p["baseWeeklyUnits"] / len(retail))) + for week in range(_DEMAND_WEEKS): + week_start = _ANCHOR_MONDAY - timedelta(weeks=(_DEMAND_WEEKS - 1 - week)) + for s in retail: + units = per_store + if p["category"] == "outdoor_power_tools" and week >= _DEMAND_WEEKS - 2: + units = round(units * 1.4) + rows.append( + { + "productId": p["productId"], + "storeId": s["storeId"], + "weekStart": week_start.isoformat(), + "units": int(units), + } + ) + return rows + + +class InventoryStore: + """Connects to the provisioned Cosmos DB, seeds it once, and serves the tools.""" + + def __init__(self) -> None: + client = CosmosClient( + config.require_cosmos_endpoint(), credential=DefaultAzureCredential() + ) + db = client.get_database_client(config.COSMOS_DATABASE) + self._c = {name: db.get_container_client(name) for name in CONTAINERS} + + self._seed_if_empty() + + # Cache the mostly-static reference data for fast tool calls. + self.products = self._all("products") + self.stores = self._all("stores") + self.suppliers = self._all("suppliers") + self.signals = self._all("signals") + self.inventory = self._all("inventory") + self.demand = self._all("demand") + + # ---- Cosmos helpers -------------------------------------------------- + + def _all(self, name: str) -> list[dict[str, Any]]: + return list(self._c[name].read_all_items()) + + def _seed_if_empty(self) -> None: + """One-time, idempotent seed. Data-plane upserts only (containers exist).""" + if any(True for _ in self._c["products"].read_all_items()): + return + + products = _load("products") + stores = _load("stores") + suppliers = _load("suppliers") + signals = _load("external_signals") + overrides = {(o["productId"], o["storeId"]): o["onHand"] for o in _load("inventory_overrides")} + orders_seed = _load("replenishment_orders") + + inventory = _derive_inventory(products, stores, overrides) + demand = _derive_demand(products, stores) + + for p in products: + self._c["products"].upsert_item({**p, "id": p["productId"]}) + for s in stores: + self._c["stores"].upsert_item({**s, "id": s["storeId"]}) + for s in suppliers: + self._c["suppliers"].upsert_item({**s, "id": s["supplierId"]}) + for s in signals: + self._c["signals"].upsert_item({**s, "id": s["signalId"]}) + for r in inventory: + self._c["inventory"].upsert_item({**r, "id": f'{r["productId"]}_{r["storeId"]}'}) + for d in demand: + self._c["demand"].upsert_item({**d, "id": f'{d["productId"]}_{d["storeId"]}_{d["weekStart"]}'}) + for o in orders_seed: + self._c["orders"].upsert_item({**o, "id": o["orderId"]}) + + # ---- Lookups used by the function tools ------------------------------ + + def product(self, sku: str) -> dict[str, Any] | None: + return next((p for p in self.products if p["productId"] == sku), None) + + def product_by_name(self, name: str) -> dict[str, Any] | None: + needle = name.strip().lower() + return next((p for p in self.products if p["name"].lower() == needle), None) + + def store(self, store_id: str) -> dict[str, Any] | None: + return next((s for s in self.stores if s["storeId"] == store_id), None) + + def supplier(self, supplier_id: str) -> dict[str, Any] | None: + return next((s for s in self.suppliers if s["supplierId"] == supplier_id), None) + + def average_daily_sales(self, sku: str) -> float: + latest = max((d["weekStart"] for d in self.demand if d["productId"] == sku), default=None) + if latest is None: + return 0.0 + weekly = sum(d["units"] for d in self.demand if d["productId"] == sku and d["weekStart"] == latest) + return round(weekly / 7, 2) + + def inventory_rows( + self, sku: str | None = None, location: str | None = None + ) -> list[dict[str, Any]]: + rows = self.inventory + if sku: + rows = [r for r in rows if r["productId"] == sku] + if location: + rows = [r for r in rows if r["storeId"] == location] + return rows + + def append_order(self, order: dict[str, Any]) -> None: + """Persist an approved purchase order to Cosmos (a real, durable write).""" + self._c["orders"].upsert_item({**order, "id": order["orderId"]}) + + def append_signal(self, signal: dict[str, Any]) -> dict[str, Any]: + """Persist a new external market signal to Cosmos (a real, durable write). + + This is the *independent insert* that the change-feed watcher reacts to — the + console's Inject control, an MCP client, or any other system can call it, and + the event-driven loop (Challenge 5) kicks off automatically. Returns the stored + document (with the ``id``/``signalId`` it was given). + """ + signal_id = signal.get("signalId") or signal.get("id") or f"SIG-{uuid.uuid4().hex[:8].upper()}" + doc = {**signal, "id": signal_id, "signalId": signal_id} + self._c["signals"].upsert_item(doc) + self.signals.append(doc) # keep the in-memory cache the tools read consistent + return doc + + def signals_container(self) -> Any: + """Return the raw ``signals`` container client (used by the change-feed watcher).""" + return self._c["signals"] + + @property + def orders(self) -> list[dict[str, Any]]: + """Read the live order book from Cosmos (survives restarts).""" + return list(self._c["orders"].read_all_items()) + + +# Lazy singleton so importing this module never forces a Cosmos connection — +# the planner console loads before COSMOS_ENDPOINT / az login are configured. +_STORE: InventoryStore | None = None + + +def get_store() -> InventoryStore: + global _STORE + if _STORE is None: + _STORE = InventoryStore() + return _STORE diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py new file mode 100644 index 000000000..8885a15be --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py @@ -0,0 +1,144 @@ +"""Event-driven "living demo" layer — Challenge 5 (stretch). + +The manual console (Challenges 0–4) has a human click **Sense → Plan → Approve → Act**. +This module makes the loop **reactive**: a background watcher tails the Cosmos ``signals`` +**change feed**, and whenever an *independent write* lands — from the console's Inject +control, an MCP client (see ``mcp_server.py``), or any other system — it **auto-runs** +``sense → plan → propose`` and streams the progress to the console over **SSE**. + +Crucially, the automation stops at the **human-approval gate**: it produces the purchase +order proposal but never submits. A person still approves at Step 4. The reactivity is +new; the human-in-the-loop lesson is untouched. + +No new Azure infrastructure: the change feed is intrinsic to Cosmos, and everything here +runs inside the existing FastAPI process. +""" + +from __future__ import annotations + +import asyncio +import threading +import time +from collections import deque +from typing import Any, Callable + + +class EventBus: + """Fan-out of JSON events to every connected SSE client. + + ``publish`` is called from worker threads (the watcher / auto-runner), so it hops + back onto the asyncio loop with ``call_soon_threadsafe`` before touching the + per-subscriber queues. + """ + + def __init__(self) -> None: + self._subscribers: set[asyncio.Queue] = set() + self._loop: asyncio.AbstractEventLoop | None = None + + def bind_loop(self, loop: asyncio.AbstractEventLoop) -> None: + self._loop = loop + + def subscribe(self) -> asyncio.Queue: + q: asyncio.Queue = asyncio.Queue() + self._subscribers.add(q) + return q + + def unsubscribe(self, q: asyncio.Queue) -> None: + self._subscribers.discard(q) + + def publish(self, event: dict[str, Any]) -> None: + loop = self._loop + if loop is None: + return + for q in list(self._subscribers): + loop.call_soon_threadsafe(q.put_nowait, event) + + +# One process-wide bus, plus the latest auto-generated proposal so the UI (or a retry) +# can approve exactly what the reactive loop proposed. +bus = EventBus() +latest_proposal: dict[str, Any] = {"submitItems": None} + + +def _auto_run(signal: dict[str, Any], orchestrator_factory: Callable[[], Any]) -> None: + """Run sense → plan → propose for one signal, publishing progress. Stops at the gate.""" + headline = signal.get("headline") or signal.get("type") or "New market signal" + bus.publish({"type": "signal", "signal": signal}) + try: + orch = orchestrator_factory() + + bus.publish({"type": "step", "step": 1, "state": "running"}) + assessment = orch.sense(headline) + bus.publish({"type": "step", "step": 1, "state": "done", "assessment": assessment}) + + bus.publish({"type": "step", "step": 2, "state": "running"}) + recommendation = orch.plan(assessment) + bus.publish({"type": "step", "step": 2, "state": "done", "recommendation": recommendation}) + + bus.publish({"type": "step", "step": 3, "state": "running"}) + proposal = orch.propose(recommendation) + latest_proposal["submitItems"] = proposal.get("submitItems", []) + bus.publish({"type": "step", "step": 3, "state": "done", "proposal": proposal}) + + # The human gate: automation goes no further. + bus.publish({"type": "awaiting_approval", "submitItems": latest_proposal["submitItems"]}) + except Exception as exc: # noqa: BLE001 - surface any setup/agent error to the UI + bus.publish({"type": "error", "message": str(exc)}) + + +def start_watcher(store: Any, orchestrator_factory: Callable[[], Any]) -> None: + """Tail the ``signals`` change feed and auto-run each new write — with a queue. + + A **producer** thread tails the change feed (pull model, primed from *now* so the + seed never triggers) and enqueues each new signal. A single **consumer** thread + drains the queue one signal at a time, so a burst of signals shows up as a visible + backlog (``queue`` events) that drains as each run completes. Cosmos' change feed + is a pull model: poll with the continuation token from the ``etag`` header. + """ + pending: deque = deque() + lock = threading.Lock() + has_work = threading.Event() + + def _publish_queue() -> None: + with lock: + headlines = [d.get("headline") or d.get("type") or "signal" for d in pending] + bus.publish({"type": "queue", "depth": len(headlines), "pending": headlines}) + + def produce() -> None: + try: + container = store.signals_container() + list(container.query_items_change_feed(start_time="Now")) + continuation = container.client_connection.last_response_headers.get("etag") + bus.publish({"type": "watcher", "state": "listening"}) + except Exception as exc: # noqa: BLE001 + bus.publish({"type": "error", "message": f"watcher failed to start: {exc}"}) + return + + while True: + try: + changes = list(container.query_items_change_feed(continuation=continuation)) + continuation = container.client_connection.last_response_headers.get("etag") + if changes: + with lock: + pending.extend(changes) + _publish_queue() + has_work.set() + time.sleep(3) + except Exception as exc: # noqa: BLE001 + bus.publish({"type": "error", "message": f"watcher: {exc}"}) + time.sleep(5) + + def consume() -> None: + while True: + with lock: + doc = pending.popleft() if pending else None + if doc is None: + has_work.wait(timeout=1) + has_work.clear() + continue + _publish_queue() # depth after dequeue (this one is now running) + _auto_run(doc, orchestrator_factory) + + threading.Thread(target=produce, name="signals-producer", daemon=True).start() + threading.Thread(target=consume, name="signals-consumer", daemon=True).start() + diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py new file mode 100644 index 000000000..e7969a0c3 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py @@ -0,0 +1,51 @@ +"""MCP server that lets an *external* system drop a market signal into the governed +store — Challenge 5 (stretch). + +This is the "real-life" edge of the event-driven story: an MCP client (GitHub Copilot, +Claude, another agent, a WebIQ-style watcher, …) calls the ``inject_signal`` tool, which +writes to the same Cosmos ``signals`` container the console writes to. That independent +insert is picked up by the change-feed watcher in the planner console, which auto-runs +sense → plan → propose and stops at the human-approval gate. No agent is called here — +the tool only writes the signal; the reactive loop does the rest. + +Run it (stdio transport, from the ``src/`` folder): + + uv run python mcp_server.py + +Then point an MCP client at that command. The app must be running and Cosmos configured +(``COSMOS_ENDPOINT`` in ``.env`` + ``az login``) for the write — and the reaction — to work. +""" + +from __future__ import annotations + +from mcp.server.fastmcp import FastMCP + +mcp = FastMCP("zava-signals") + + +@mcp.tool() +def inject_signal( + headline: str, + category: str = "outdoor_power_tools", + region: str = "Pacific Northwest", +) -> str: + """Inject a market signal into Zava's governed Cosmos store. + + Writing the signal is the trigger: the planner console's change-feed watcher + notices the new document and automatically runs the inventory-planning loop + (sense → plan → propose), pausing at the human-approval gate. + + :param headline: The market signal, e.g. "Heatwave intensifies in the Pacific Northwest". + :param category: Affected product category (e.g. ``outdoor_power_tools``, ``paint_and_supplies``). + :param region: Affected region (e.g. ``Pacific Northwest``, ``West``, ``National``). + """ + from inventory_store import get_store + + doc = get_store().append_signal( + {"headline": headline, "category": category, "region": region, "type": "market"} + ) + return f"Injected signal {doc['signalId']} — the planner loop will react automatically." + + +if __name__ == "__main__": + mcp.run() diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/orchestrator.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/orchestrator.py new file mode 100644 index 000000000..af46d286c --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/orchestrator.py @@ -0,0 +1,97 @@ +"""Orchestrator that weaves the three agents into one cohesive planner story. + +This is the glue the planner-console UI (and the CLI) call. It keeps the sense -> +plan -> approve -> act loop in one place so the UI stays dumb: + + sense(scenario) -> demand assessment (text) + plan(assessment) -> reorder recommendation (structured) + propose(reorder) -> purchase order proposal + the items to submit + approve(items, who) -> ACT: submit the order, return confirmation + +``approve`` is the human-in-the-loop gate: nothing is written until a person calls +it. It executes the ``submit_purchase_order`` tool directly, so the human decision - +not the model - triggers the only side effect in the system. +""" + +from __future__ import annotations + +import json +from typing import Any + +import agents +from agent_runtime import AgentRuntime +from tools import submit_purchase_order + + +def _extract_json(text: str) -> dict[str, Any]: + """Best-effort parse of a JSON object from an agent's text response.""" + text = text.strip() + if text.startswith("```"): + text = text.strip("`") + text = text[text.find("{") :] if "{" in text else text + start, end = text.find("{"), text.rfind("}") + if start != -1 and end != -1: + return json.loads(text[start : end + 1]) + raise ValueError(f"No JSON object found in agent response: {text[:200]}") + + +class HackOrchestrator: + """Runs the closed planning loop across the three hosted agents.""" + + def __init__(self, runtime: AgentRuntime | None = None) -> None: + self._runtime = runtime or AgentRuntime() + + def sense(self, scenario: str) -> str: + """SENSE: run the demand-sensing agent over a scenario. Returns its assessment.""" + result = self._runtime.run(agents.DEMAND_SENSING, scenario) + return result if isinstance(result, str) else str(result) + + def plan(self, assessment: str) -> dict[str, Any]: + """PLAN: run the optimisation agent. Returns a structured recommendation.""" + prompt = ( + "Here is the demand assessment. Produce the reorder recommendation JSON.\n\n" + f"{assessment}" + ) + result = self._runtime.run(agents.INVENTORY_OPTIMISATION, prompt) + return _extract_json(result if isinstance(result, str) else str(result)) + + def propose(self, recommendation: dict[str, Any]) -> dict[str, Any]: + """PROPOSE: run the replenishment agent. Returns a PO proposal + submit items.""" + prompt = ( + "Here is the reorder recommendation. Produce the purchase order proposal JSON.\n\n" + f"{json.dumps(recommendation)}" + ) + result = self._runtime.run(agents.REPLENISHMENT, prompt) + return _extract_json(result if isinstance(result, str) else str(result)) + + def refine_plan(self, recommendation: dict[str, Any], instruction: str) -> dict[str, Any]: + """Re-run the optimisation agent to adjust an existing recommendation per a + natural-language instruction (interactive planning). Returns updated JSON.""" + prompt = ( + "Here is the CURRENT reorder recommendation JSON:\n" + f"{json.dumps(recommendation)}\n\n" + f'The planner asks you to adjust it: "{instruction}"\n' + "Apply that change and return the FULL updated recommendation JSON in the " + "same schema. Keep every line the planner did not ask you to change." + ) + result = self._runtime.run(agents.INVENTORY_OPTIMISATION, prompt) + return _extract_json(result if isinstance(result, str) else str(result)) + + def refine_proposal(self, proposal: dict[str, Any], instruction: str) -> dict[str, Any]: + """Re-run the replenishment agent to adjust an existing PO proposal per a + natural-language instruction. Still only PROPOSES — never submits. Returns the + updated proposal JSON (including the ``submitItems`` array).""" + prompt = ( + "Here is the CURRENT purchase order proposal JSON:\n" + f"{json.dumps(proposal)}\n\n" + f'The planner asks you to change it: "{instruction}"\n' + "Apply that change and return the FULL updated proposal JSON in the same " + "schema (including the submitItems array). Do not submit anything." + ) + result = self._runtime.run(agents.REPLENISHMENT, prompt) + return _extract_json(result if isinstance(result, str) else str(result)) + + + def approve(self, items: list[dict[str, Any]], approved_by: str = "Planner") -> dict[str, Any]: + """ACT (human-approved): submit the purchase order and return confirmation.""" + return json.loads(submit_purchase_order(json.dumps(items), approved_by=approved_by)) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/pyproject.toml b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/pyproject.toml new file mode 100644 index 000000000..577bdfbf2 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/pyproject.toml @@ -0,0 +1,31 @@ +[project] +name = "agentic-inventory-hack" +version = "0.1.0" +description = "Agentic Inventory Planning — hosted-agents MicroHack" +requires-python = ">=3.11" +dependencies = [ + # Foundry Agent Service SDK — new-format agents (create_version + Responses). + # 2.x exposes agents natively in the Foundry portal (no "update your agents" + # migration prompt) and enables server-side tracing once App Insights is linked. + "azure-ai-projects>=2.0.0,<3.0.0", + # The runtime drives agents via the OpenAI-compatible Responses client returned + # by AIProjectClient.get_openai_client(); we import its function-call output type. + "openai>=1.100.0", + "azure-identity>=1.19.0", + # Governed data store (per-attendee Cosmos DB provisioned by labautomation) + "azure-cosmos>=4.9.0", + # Minimal planner-console UI + "fastapi>=0.115.0", + "uvicorn[standard]>=0.30.0", + "pydantic>=2.7.0", + # Load src/.env during development + "python-dotenv>=1.0.1", + # Model Context Protocol server — exposes `inject_signal` so an external MCP + # client can drop a market signal into Cosmos and trigger the loop (Challenge 5). + "mcp>=1.2.0", +] + +# This is an application, not an installable library — uv manages the environment +# and dependencies without building/installing the project itself. +[tool.uv] +package = false diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/tools.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/tools.py new file mode 100644 index 000000000..0b9787363 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/tools.py @@ -0,0 +1,181 @@ +"""Function tools the hosted agents call to reason over the governed inventory data. + +Each function is a plain, typed, documented Python callable. When registered with +the Foundry Agent Service ``FunctionTool``, the SDK introspects the type hints and +docstrings to build the tool schema the model sees — so keep the signatures and +docstrings meaningful. + +The data lives in a per-attendee **Cosmos DB** (provisioned by labautomation, read +via ``inventory_store.get_store``). Every tool is read-only *except* +``submit_purchase_order``, which performs a real, durable write to the ``orders`` +container — gated behind human approval by the orchestrator. +""" + +from __future__ import annotations + +import json +from datetime import date + +from inventory_store import get_store + +# Flag a product/location as CRITICAL when on-hand is below safety stock. +CRITICAL = "CRITICAL" +AT_RISK = "AT_RISK" +OK = "OK" + + +def _status(on_hand: int, reorder_point: int, safety_stock: int) -> str: + if on_hand < safety_stock: + return CRITICAL + if on_hand <= reorder_point: + return AT_RISK + return OK + + +def query_inventory(sku: str = "", location: str = "") -> str: + """Return current stock rows (onHand, reorderPoint, safetyStock, status). + + :param sku: Optional product id such as ``P004`` to filter by a single SKU. + :param location: Optional store/warehouse id such as ``ST03`` or ``WH01``. + :return: JSON array of inventory rows, each enriched with a stock ``status``. + """ + store = get_store() + rows = [] + for r in store.inventory_rows(sku=sku or None, location=location or None): + product = store.product(r["productId"]) + location_doc = store.store(r["storeId"]) + rows.append( + { + "sku": r["productId"], + "productName": product["name"] if product else r["productId"], + "location": r["storeId"], + "locationName": location_doc["name"] if location_doc else r["storeId"], + "onHand": r["onHand"], + "reorderPoint": r["reorderPoint"], + "safetyStock": r["safetyStock"], + "status": _status(r["onHand"], r["reorderPoint"], r["safetyStock"]), + } + ) + return json.dumps(rows) + + +def list_low_stock() -> str: + """Return every product/location that is AT_RISK or CRITICAL on stock. + + A row is CRITICAL when onHand < safetyStock and AT_RISK when onHand is at or + below the reorderPoint. Use this to find replenishment candidates. + + :return: JSON array of at-risk / critical inventory rows. + """ + rows = json.loads(query_inventory()) + flagged = [r for r in rows if r["status"] in (CRITICAL, AT_RISK)] + flagged.sort(key=lambda r: (r["status"] != CRITICAL, r["onHand"])) + return json.dumps(flagged) + + +def get_product(sku: str = "", name: str = "") -> str: + """Look up a product's catalogue details, including unit cost and lead time. + + :param sku: Product id such as ``P005``. + :param name: Product name such as ``Chainsaw 16in`` (used if sku is empty). + :return: JSON object with the product and its supplier, or an ``error`` field. + """ + store = get_store() + product = store.product(sku) if sku else None + if product is None and name: + product = store.product_by_name(name) + if product is None: + return json.dumps({"error": f"No product found for sku='{sku}' name='{name}'"}) + supplier = store.supplier(product.get("supplierId", "")) + return json.dumps({**product, "supplier": supplier}) + + +def get_external_signals(category: str = "", region: str = "") -> str: + """Return pre-loaded market signals (weather, search trends, competitor, news). + + These stand in for a live web-signal feed so the demand-sensing agent works + even without the optional Web Search tool. + + :param category: Optional product category to filter by, e.g. ``outdoor_power_tools``. + :param region: Optional region filter, e.g. ``Pacific Northwest``. + :return: JSON array of matching external signals. + """ + signals = get_store().signals + if category: + signals = [s for s in signals if category in s.get("affectedCategories", "")] + if region: + signals = [s for s in signals if region.lower() in s.get("region", "").lower()] + return json.dumps(signals) + + +def calc_reorder(sku: str, location: str = "") -> str: + """Compute the suggested reorder quantity for a SKU using the planning rule. + + reorder_qty = max(0, average_daily_sales * 30 - current_stock) + + :param sku: Product id such as ``P004``. + :param location: Optional location id; if omitted, computed per location. + :return: JSON array of reorder suggestions with the numbers used. + """ + store = get_store() + avg_daily = store.average_daily_sales(sku) + thirty_day_demand = round(avg_daily * 30) + suggestions = [] + for r in store.inventory_rows(sku=sku, location=location or None): + reorder_qty = max(0, thirty_day_demand - r["onHand"]) + suggestions.append( + { + "sku": sku, + "location": r["storeId"], + "currentStock": r["onHand"], + "avgDailySales": avg_daily, + "thirtyDayDemand": thirty_day_demand, + "suggestedReorderQty": reorder_qty, + "priority": _status(r["onHand"], r["reorderPoint"], r["safetyStock"]), + } + ) + return json.dumps(suggestions) + + +def submit_purchase_order(items_json: str, approved_by: str = "Planner") -> str: + """ACT: persist an approved purchase order to Cosmos and return a confirmation. + + This is the only side-effecting tool and it performs a REAL, durable write to the + ``orders`` container. The orchestrator only calls it AFTER a human approves the + proposal, so it is the human-in-the-loop gate's payload. + + :param items_json: JSON array of line items, each ``{"sku","location","quantity"}``. + :param approved_by: Name of the human approver, recorded on the order. + :return: JSON confirmation with the generated PO number and stored order. + """ + try: + items = json.loads(items_json) if isinstance(items_json, str) else items_json + except json.JSONDecodeError as exc: + return json.dumps({"error": f"items_json was not valid JSON: {exc}"}) + + store = get_store() + today = date.today() + seq = sum(1 for o in store.orders if o["orderId"].startswith(f"PO-{today:%Y%m%d}")) + 1 + order = { + "orderId": f"PO-{today:%Y%m%d}-{seq:03d}", + "type": "purchase", + "status": "submitted", + "requestedBy": "Replenishment Action Agent", + "approvedBy": approved_by, + "createdDate": today.isoformat(), + "items": items, + } + store.append_order(order) + return json.dumps( + { + "confirmation": f"Purchase order {order['orderId']} submitted and recorded in the order book.", + "order": order, + } + ) + + +# Read-only tools every agent may safely use. +READ_TOOLS = [query_inventory, list_low_stock, get_product, get_external_signals, calc_reorder] + +# The single side-effecting tool, kept separate so the runtime can gate it. +ACT_TOOLS = [submit_purchase_order] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py new file mode 100644 index 000000000..877e9734b --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py @@ -0,0 +1,249 @@ +"""Planner Console - a minimal FastAPI + static-HTML UI for the planning loop. + +Deliberately tiny: one file, a handful of JSON endpoints, and one static page. No +build step, no framework bloat. It weaves the three hosted agents into one story a +planner can click through: sense -> plan -> approve -> act. + +Run it: uvicorn ui.app:app --reload --port 8000 (from the src/ folder) +In a Codespace the port is forwarded automatically. + +The page always loads. Endpoints that need the agents create the orchestrator +lazily and return a friendly error until your Foundry project + agents are ready - +so Challenge 0 can open an empty console before any agent exists. +""" + +from __future__ import annotations + +import asyncio +import json +import sys +from pathlib import Path +from typing import Any + +from fastapi import FastAPI +from fastapi.responses import FileResponse, JSONResponse, StreamingResponse +from fastapi.staticfiles import StaticFiles +from pydantic import BaseModel + +# Allow "import orchestrator" etc. when launched as ui.app from the src/ folder. +sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) + +from inventory_store import get_store # noqa: E402 +from tools import list_low_stock # noqa: E402 + +app = FastAPI(title="Agentic Inventory - Planner Console") +_STATIC = Path(__file__).parent / "static" + +# The orchestrator is created on first use so the page loads without Azure config. +_orchestrator: Any = None +_orchestrator_error: str | None = None + + +def get_orchestrator() -> Any: + global _orchestrator, _orchestrator_error + if _orchestrator is None: + from orchestrator import HackOrchestrator + + _orchestrator = HackOrchestrator() + _orchestrator_error = None + return _orchestrator + + +def _guarded(fn) -> Any: + """Run an orchestrator call, converting setup problems into friendly JSON.""" + try: + return fn() + except Exception as exc: # noqa: BLE001 - surface any setup error to the UI + return JSONResponse(status_code=503, content={"error": str(exc)}) + + +class SenseRequest(BaseModel): + scenario: str + + +class PlanRequest(BaseModel): + assessment: str + + +class ProposeRequest(BaseModel): + recommendation: dict[str, Any] + + +class ApproveRequest(BaseModel): + items: list[dict[str, Any]] + approvedBy: str = "Planner" + + +class RunLoopRequest(BaseModel): + scenario: str + + +class SignalRequest(BaseModel): + """An external market signal injected into the governed store (Challenge 5).""" + + headline: str + type: str = "weather" + category: str | None = None + region: str | None = None + + +class RefinePlanRequest(BaseModel): + recommendation: dict[str, Any] + instruction: str + + +class RefineProposeRequest(BaseModel): + proposal: dict[str, Any] + instruction: str + + +@app.get("/") +def index() -> FileResponse: + return FileResponse(_STATIC / "index.html") + + +@app.get("/api/state") +def state() -> Any: + """Snapshot for the console panels, read from the governed Cosmos store. + + Guarded like the agent endpoints: returns a friendly 503 until COSMOS_ENDPOINT + is set and you have run az login (the store seeds itself on first read). + """ + import json + + def _snapshot() -> dict[str, Any]: + store = get_store() + return { + "lowStock": json.loads(list_low_stock()), + "orders": store.orders, + "products": len(store.products), + "locations": len(store.stores), + } + + return _guarded(_snapshot) + + +@app.post("/api/sense") +def sense(req: SenseRequest) -> Any: + return _guarded(lambda: {"assessment": get_orchestrator().sense(req.scenario)}) + + +@app.post("/api/plan") +def plan(req: PlanRequest) -> Any: + return _guarded(lambda: {"recommendation": get_orchestrator().plan(req.assessment)}) + + +@app.post("/api/plan/refine") +def plan_refine(req: RefinePlanRequest) -> Any: + """Interactive planning: re-run the optimisation agent to adjust the recommendation.""" + return _guarded( + lambda: {"recommendation": get_orchestrator().refine_plan(req.recommendation, req.instruction)} + ) + + +@app.post("/api/propose") +def propose(req: ProposeRequest) -> Any: + return _guarded(lambda: {"proposal": get_orchestrator().propose(req.recommendation)}) + + +@app.post("/api/propose/refine") +def propose_refine(req: RefineProposeRequest) -> Any: + """Natural-language PO edit before approval: re-run the replenishment agent. Still + only proposes — the human gate is unchanged.""" + return _guarded( + lambda: {"proposal": get_orchestrator().refine_proposal(req.proposal, req.instruction)} + ) + + +@app.post("/api/approve") +def approve(req: ApproveRequest) -> Any: + return _guarded( + lambda: {"result": get_orchestrator().approve(req.items, approved_by=req.approvedBy)} + ) + + +@app.post("/api/run-loop") +def run_loop(req: RunLoopRequest) -> Any: + """Challenge 4: run sense -> plan -> propose in one call (stops before acting). + + Uses the sequential workflow with a False approval gate, so it produces the PO + proposal but never submits — the human still approves at Step 4 via /api/approve. + """ + + def _run() -> dict[str, Any]: + from workflow import run_planning_workflow + + result = run_planning_workflow( + req.scenario, approve=lambda _proposal: False, orchestrator=get_orchestrator() + ) + return { + "assessment": result.assessment, + "recommendation": result.recommendation, + "proposal": result.proposal, + } + + return _guarded(_run) + + +# --------------------------------------------------------------------------- +# Event-driven "living demo" (Challenge 5, stretch). A background watcher tails the +# Cosmos `signals` change feed; any independent insert (from the Inject control below, +# an MCP client, or any other system) auto-runs sense -> plan -> propose and streams +# progress to the console over SSE — stopping at the human-approval gate. +# --------------------------------------------------------------------------- + + +@app.on_event("startup") +async def _start_live_layer() -> None: + from live import bus + + bus.bind_loop(asyncio.get_running_loop()) + + import config + + if not config.COSMOS_ENDPOINT: + return # no governed store configured yet — manual console still works + try: + from inventory_store import get_store + from live import start_watcher + + start_watcher(get_store(), get_orchestrator) + except Exception as exc: # noqa: BLE001 - watcher is optional; never block startup + print(f"[live] change-feed watcher not started: {exc}") + + +@app.post("/api/signal") +def inject_signal(req: SignalRequest) -> Any: + """Write a new market signal to Cosmos. The write itself is the trigger: the + change-feed watcher notices it and runs the loop — this endpoint never calls an + agent, so the reactive path is identical no matter who does the insert.""" + + def _inject() -> dict[str, Any]: + from inventory_store import get_store + + return {"signal": get_store().append_signal(req.model_dump(exclude_none=True))} + + return _guarded(_inject) + + +@app.get("/api/events") +async def events() -> StreamingResponse: + """Server-Sent Events stream: the console subscribes here to watch the reactive + loop run live (signal received, each step, and the awaiting-approval gate).""" + from live import bus + + queue = bus.subscribe() + + async def stream() -> Any: + try: + yield 'data: {"type":"connected"}\n\n' + while True: + event = await queue.get() + yield f"data: {json.dumps(event)}\n\n" + finally: + bus.unsubscribe(queue) + + return StreamingResponse(stream(), media_type="text/event-stream") + + +app.mount("/static", StaticFiles(directory=_STATIC), name="static") diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/static/index.html b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/static/index.html new file mode 100644 index 000000000..1c4ed6cd1 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/static/index.html @@ -0,0 +1,354 @@ + + + + + + Zava · Planner Console + + + +

+

Zava · Planner Console

+ loading… + Sense · → Plan · → Approve · → Act +
+ +
+ +
+
+

Current exposure

+
loading…
+
+
+

Event trigger

+

Drop a market signal into Cosmos. An independent insert — from here or an MCP client — triggers the loop automatically.

+ +
+
watcher: connecting…
+
+
+

Order book

+
loading…
+
+
+ + +
+
+
1

Sense demand

Demand Sensing Agent
+ +
+ + + +
+ +
+
2

Plan replenishment

Inventory Optimisation Agent
+
+
+ +
+ +
+
3

Review purchase order

Replenishment Action Agent
+
+
+ +
+ +
+
4

Approve & act

Human-in-the-loop gate
+

Nothing is submitted until you approve. This is the human decision point.

+
+
+ + +
+ +
+
+
+ + + + diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/uv.lock b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/uv.lock new file mode 100644 index 000000000..0296f7556 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/uv.lock @@ -0,0 +1,1467 @@ +version = 1 +revision = 3 +requires-python = ">=3.11" +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform != 'win32'", + "python_full_version < '3.14' and sys_platform == 'win32'", + "python_full_version < '3.14' and sys_platform != 'win32'", +] + +[[package]] +name = "agentic-inventory-hack" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "azure-ai-projects" }, + { name = "azure-cosmos" }, + { name = "azure-identity" }, + { name = "fastapi" }, + { name = "mcp" }, + { name = "openai" }, + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "uvicorn", extra = ["standard"] }, +] + +[package.metadata] +requires-dist = [ + { name = "azure-ai-projects", specifier = ">=2.0.0,<3.0.0" }, + { name = "azure-cosmos", specifier = ">=4.9.0" }, + { name = "azure-identity", specifier = ">=1.19.0" }, + { name = "fastapi", specifier = ">=0.115.0" }, + { name = "mcp", specifier = ">=1.2.0" }, + { name = "openai", specifier = ">=1.100.0" }, + { name = "pydantic", specifier = ">=2.7.0" }, + { name = "python-dotenv", specifier = ">=1.0.1" }, + { name = "uvicorn", extras = ["standard"], specifier = ">=0.30.0" }, +] + +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/cc/a381afa6efea9f496eff839d4a6a1aed3bfafc7b3ab4b0d1b243a12573dd/anyio-4.14.2.tar.gz", hash = "sha256:cfa139f3ed1a23ee8f88a145ddb5ac7605b8bbfd8592baacd7ce3d8bb4313c7f", size = 260176, upload-time = "2026-07-12T20:29:07.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl", hash = "sha256:9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494", size = 125813, upload-time = "2026-07-12T20:29:05.763Z" }, +] + +[[package]] +name = "attrs" +version = "26.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32", size = 952055, upload-time = "2026-03-19T14:22:25.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" }, +] + +[[package]] +name = "azure-ai-projects" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "azure-identity" }, + { name = "azure-storage-blob" }, + { name = "isodate" }, + { name = "openai" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/29/ab1a80ce483fcc36ec2ac0a3db8e043aa954700b34b77db43ed5f4f9c488/azure_ai_projects-2.3.0.tar.gz", hash = "sha256:6e3006b7b8aa51c6ff9db61ef4aac3717f8a712cd1a183d5a1d34e2eb33450bd", size = 27563233, upload-time = "2026-07-01T21:09:00.018Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/bd/7e64f2d6e43d19fc8cf464769804f947d997833eb4dce1c86c2ce76146d2/azure_ai_projects-2.3.0-py3-none-any.whl", hash = "sha256:1da20aeac9663740a97644efedbb9f59eb2a332d3e01bfde7aa03027936edf44", size = 349581, upload-time = "2026-07-01T21:09:04.32Z" }, +] + +[[package]] +name = "azure-core" +version = "1.41.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/f3/b416179e408990df5db0d516283022dde0f5d0111d98c1a848e41853e81c/azure_core-1.41.0.tar.gz", hash = "sha256:f46ff5dfcd230f25cf1c19e8a34b8dc08a337b2503e268bb600a16c00db8ad5a", size = 381042, upload-time = "2026-05-07T23:30:54.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/db/325c6d7312d2200251c52323878281045aaffcb5586612296484e4280eaa/azure_core-1.41.0-py3-none-any.whl", hash = "sha256:522b4011e8180b1a3dcd2024396a4e7fe9ac37fb8597db47163d230b5efe892d", size = 220920, upload-time = "2026-05-07T23:30:56.357Z" }, +] + +[[package]] +name = "azure-cosmos" +version = "4.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/2a/0f2bba256e56626ba2cec97ab81dd002ff47ead1329767760b619afd927a/azure_cosmos-4.16.1.tar.gz", hash = "sha256:fa15d13702b470265a67e2dd9c0794021e6b776856dac6c223dcacc4d8e1d8d1", size = 2377651, upload-time = "2026-06-02T01:08:07.656Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/b4/9c984ad33ca9e5c378ea472fc9aa38e719c245a4fa58a99d6dabbe0f9a17/azure_cosmos-4.16.1-py3-none-any.whl", hash = "sha256:43717215ec1433c1ea0f0e3d465f9182fb5afff3ae2331e595367122297872f1", size = 499044, upload-time = "2026-06-02T01:08:10.111Z" }, +] + +[[package]] +name = "azure-identity" +version = "1.25.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "cryptography" }, + { name = "msal" }, + { name = "msal-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/0e/3a63efb48aa4a5ae2cfca61ee152fbcb668092134d3eb8bfda472dd5c617/azure_identity-1.25.3.tar.gz", hash = "sha256:ab23c0d63015f50b630ef6c6cf395e7262f439ce06e5d07a64e874c724f8d9e6", size = 286304, upload-time = "2026-03-13T01:12:20.892Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/9a/417b3a533e01953a7c618884df2cb05a71e7b68bdbce4fbdb62349d2a2e8/azure_identity-1.25.3-py3-none-any.whl", hash = "sha256:f4d0b956a8146f30333e071374171f3cfa7bdb8073adb8c3814b65567aa7447c", size = 192138, upload-time = "2026-03-13T01:12:22.951Z" }, +] + +[[package]] +name = "azure-storage-blob" +version = "12.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "cryptography" }, + { name = "isodate" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3b/48/84a820d898267f662b5c06f7cd76fdb8a9e272b44aa9376cef3ec0f6a294/azure_storage_blob-12.30.0.tar.gz", hash = "sha256:2cd74d4d5731e5eb6b8d5c5056ee115a5e88f8fdf22517b739836fda685018be", size = 618229, upload-time = "2026-06-08T11:45:35.575Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/0b/e106f0fd7fa785867d9ffcc47dc9e6237c0e58f51058473b777487a98edc/azure_storage_blob-12.30.0-py3-none-any.whl", hash = "sha256:d415ac50b67a8da6b3ae7e9f1014b1b55cd7aafa0b8d4ca9b380568dc7360423", size = 435610, upload-time = "2026-06-08T11:45:37.213Z" }, +] + +[[package]] +name = "certifi" +version = "2026.6.17" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432", size = 134594, upload-time = "2026-06-17T10:31:07.894Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size = 133289, upload-time = "2026-06-17T10:31:06.348Z" }, +] + +[[package]] +name = "cffi" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/5f/ff100cae70ebe9d8df1c01a00e510e45d9adb5c1fdda84791b199141de97/cffi-2.1.0.tar.gz", hash = "sha256:efc1cdd798b1aaf39b4610bba7aad28c9bea9b910f25c784ccf9ec1fa719d1f9", size = 531036, upload-time = "2026-07-06T21:34:30.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/67/85c89a59ba36a671e79638f44d466749f08179266a57e4f2ffdf92174072/cffi-2.1.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:02cb7ff33ded4f1532476731f89ede53e2e488a8e6205515a82144246ffa7dcc", size = 183845, upload-time = "2026-07-06T21:32:26.32Z" }, + { url = "https://files.pythonhosted.org/packages/ea/dd/e3b0baa2d3d6a857ac72b7efbf18e32e487c9cdafcc13049ad765495b15e/cffi-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f5bce581e6b8c235e566a14768a943b172ada3ed73537bb0c0be1edee312d4e7", size = 184186, upload-time = "2026-07-06T21:32:28.025Z" }, + { url = "https://files.pythonhosted.org/packages/65/68/9f3ef890cf3c6ab97bd531c5677f67613d302165d16f8142b2811782a614/cffi-2.1.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:30b65779d598c370374fefabf138d456fd6f3216bfa7bedfab1ba82025b0cd93", size = 211892, upload-time = "2026-07-06T21:32:29.565Z" }, + { url = "https://files.pythonhosted.org/packages/22/d7/1a74539db16d8bfd839ff1515948948efbb162e574650fd3d846896eea95/cffi-2.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88023dfe18799507b73f1dbb0d14326a17465de1bc9c9c7655c22845e9ddc3a2", size = 218793, upload-time = "2026-07-06T21:32:30.951Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d1/9a5b7169499e8e8d8e636de70b97ac7c9447104d2ff1a2cd94790cea5162/cffi-2.1.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:0a96b74cda968eebbad56d973efe5098974f0a9fb323865bf99ea1fd24e3e64c", size = 205737, upload-time = "2026-07-06T21:32:32.216Z" }, + { url = "https://files.pythonhosted.org/packages/ba/b0/e131a9c41f10607926278453d9596163594fe1c4ebc46efe3b5e5b34eb84/cffi-2.1.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:a5781494d4d400a3f47f8f1da94b324f6e6b440a53387774002890a2a2f4b50f", size = 204909, upload-time = "2026-07-06T21:32:33.655Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d2/4398416cd699b35167947c6e22aca52c47e69ad5695073c9f1f2c52e04aa/cffi-2.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aa7a1b53a2a4452ada2d1b5dade9960b2522f1e61293a811a077439e39029565", size = 217883, upload-time = "2026-07-06T21:32:35.173Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a5/d4fe77b589e5e82d43ebc809bf2e6474afe8e48e32ea050b9357645b6471/cffi-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d8272c0e483b024e1b9ad029821470ed8ec65631dbd90217469da0e7cd89f1c", size = 221251, upload-time = "2026-07-06T21:32:36.527Z" }, + { url = "https://files.pythonhosted.org/packages/22/f0/a2fc43084c0433caf7f461bccc013e28f848d04ee1c5ed7fce71423cf4d9/cffi-2.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7762faa47e8ff7eb80bd261d9a7d8eea2d8baa69de5e95b70c1f338bbe712f02", size = 214250, upload-time = "2026-07-06T21:32:37.852Z" }, + { url = "https://files.pythonhosted.org/packages/04/8c/b925975448cf20634a9fbd5efceb807219db452653648d2897c0989cab2d/cffi-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89095c1968b4ba8285840e131bf2891b09ae137fe2146905acae0354fbce1b5e", size = 219441, upload-time = "2026-07-06T21:32:39.146Z" }, + { url = "https://files.pythonhosted.org/packages/eb/da/5c4918a2d61d86fa927d716cb3d8e4626ef8dc8f605a599d32f33897f59a/cffi-2.1.0-cp311-cp311-win32.whl", hash = "sha256:64c753a0f87a256020004f37a1c8c02c480e725f910f0b2a0f3f07debd1b2479", size = 174496, upload-time = "2026-07-06T21:32:40.467Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c8/6c2de1d55cf35ef8b92885d5ef280790f0fb9634d87ea1cc315176aecd61/cffi-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:4f26194e3d95e06501b942642855aed4f953d55e95d7d01b7c4483db3ecff458", size = 185113, upload-time = "2026-07-06T21:32:41.761Z" }, + { url = "https://files.pythonhosted.org/packages/9e/4e/e8d7cb5783f1841a3c8fb3a7735838d7484d08ec08c9f984b14cac1ac0e9/cffi-2.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:35aaea0c7ee0e58a5cd8c2fd1a48fdf7ece0d2699b7ecdda08194e9ce5dd9b3d", size = 179927, upload-time = "2026-07-06T21:32:42.961Z" }, + { url = "https://files.pythonhosted.org/packages/1e/85/990925db5df586ec90beb97529c853497e7f85ba0234830447faf41c3057/cffi-2.1.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:df2b82571a1b30f58a87bf4e5a9e78d2b1eff6c6ce8fd3aa3757221f93f0863f", size = 184829, upload-time = "2026-07-06T21:32:44.324Z" }, + { url = "https://files.pythonhosted.org/packages/4b/92/e7bb136ad6b5352603732cf907ef862ca103f20f2031c1735a46300c20c9/cffi-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78474632761faa0fb96f30b1c928c84ebcf68713cbb80d15bab09dfe61640fde", size = 184728, upload-time = "2026-07-06T21:32:45.683Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c0/d1ec30ffb370f748f2fb54425972bfef9871e0132e82fb589c46b6676049/cffi-2.1.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5972433ad71a9e46516584ef60a0fda12d9dc459938d1539c3ddecf9bdc1368d", size = 214815, upload-time = "2026-07-06T21:32:48.557Z" }, + { url = "https://files.pythonhosted.org/packages/1b/dc/5620cf930688be01f2d673804291de757a934c90b946dbdc3d84130c2ea4/cffi-2.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b6422532152adf4e59b110cb2808cee7a033800952f5c036b4af047ee43199e7", size = 222429, upload-time = "2026-07-06T21:32:49.848Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a4/77b53abbf7a1e0beb9637edbef2a94d15f9c822f591e85d439ffd91519a6/cffi-2.1.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:46b1c8db8f6122420f32d02fffb924c2fe9bc772d228c7c711748fff56aabb2b", size = 210315, upload-time = "2026-07-06T21:32:51.221Z" }, + { url = "https://files.pythonhosted.org/packages/58/0c/f528df19cc94b675087324d4760d9e6d5bfae97d6217aa4fac43de4f5fcc/cffi-2.1.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9fafc5aa2e2a39aaf7f8cc0c1f044a9b07fca12e558dca53a3cc5c654ad67a7", size = 208859, upload-time = "2026-07-06T21:32:52.512Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/c9522a81c32132799a1972c39f5c5f8b4c8b9f00488a23feaa6c06f07741/cffi-2.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1e9f50d192a3e525b15a75ab5114e442d83d657b7ec29182a991bc9a88fd3a66", size = 221844, upload-time = "2026-07-06T21:32:53.704Z" }, + { url = "https://files.pythonhosted.org/packages/6e/28/bd53988b9833e8f8ad539d26f4c07a6b3f6bcb1e9e02e7ca038250b3428d/cffi-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98fff996e983a36d3aa2eca83af40c5821202e7e6f32d13ae94e3d2286f10cfe", size = 225287, upload-time = "2026-07-06T21:32:54.907Z" }, + { url = "https://files.pythonhosted.org/packages/79/99/0d0fd37f055224085f42bbb2c022d002e17dde4a97972822327b07d84101/cffi-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:379de10ce1ba048b1448599d1b37b24caee16309d1ac98d3982fc997f768700b", size = 223681, upload-time = "2026-07-06T21:32:56.329Z" }, + { url = "https://files.pythonhosted.org/packages/b0/80/c138990aa2a70b1a269f6e06348729836d733d6f970867943f61d367f8cc/cffi-2.1.0-cp312-cp312-win32.whl", hash = "sha256:9b8f0f26ca4e7513c534d351eca551947d053fac438f2a04ac96d882909b0d3a", size = 175269, upload-time = "2026-07-06T21:32:57.777Z" }, + { url = "https://files.pythonhosted.org/packages/a8/eb/f636456ff21a83fc13c032b58cc5dde061691546ac79efa284b2989b7982/cffi-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:c97f080ea627e2863524c5af3836e2270b5f5dfff1f104392b959f8df0c5d384", size = 185881, upload-time = "2026-07-06T21:32:59.253Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/400ea43e721727dca8a65c4521390e9196757caba4a45643acb2b63271b8/cffi-2.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:6d194185eabd279f1c05ebe3504265ddfc5ad2b58d0714f7db9f01da592e9eb6", size = 180088, upload-time = "2026-07-06T21:33:02.278Z" }, + { url = "https://files.pythonhosted.org/packages/96/88/a996879e2eeccb815f6e3a5967b12a308257412acec882039d386bd2aa7b/cffi-2.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:10537b1df4967ca26d21e5072d7d54188354483b91dc75058968d3f0cf13fbda", size = 194331, upload-time = "2026-07-06T21:33:03.697Z" }, + { url = "https://files.pythonhosted.org/packages/58/85/7ae00d5c8dd6266f4e944c3db630f3c5c9a98b61d469c714d848b1d8138a/cffi-2.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a95b05f9baf29b91171b3a8bd2020b028835243e7b0ff6bb23e2a3c228518b1b", size = 196966, upload-time = "2026-07-06T21:33:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e9/45c3a76ad8d43ad9261f4c95436da61128d3ca545d72b9612c0ab5be0b1c/cffi-2.1.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:15faec4adfff450819f3aee0e2e02c812de6edb88203aa58807955db2003472a", size = 184795, upload-time = "2026-07-06T21:33:06.699Z" }, + { url = "https://files.pythonhosted.org/packages/84/4c/82f132cb4418ee6d953d982b19191e87e2a6372c8a4ce36e50b69d6ade4a/cffi-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:716ff8ec22f20b4d988b12884086bcef0fc99737043e503f7a3935a6be99b1ea", size = 184746, upload-time = "2026-07-06T21:33:08.071Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1c/4ed5a0e5bdca6cbc275556de3328dd1b76fd0c11cc13c88fe66d1d8715f2/cffi-2.1.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:63960549e4f8dc41e31accb97b975abaecfc44c03e396c093a6436763c2ea7db", size = 214747, upload-time = "2026-07-06T21:33:09.671Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a6/e879bb68cc23a2bc9ba8f4b7d8019f0c2694bad2ab6c4a3701d429439f58/cffi-2.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff067a8d8d880e7809e4ac88eb009bb848870115317b306666502ccad30b147f", size = 222392, upload-time = "2026-07-06T21:33:10.896Z" }, + { url = "https://files.pythonhosted.org/packages/88/f6/01890cfd63c08f8eb96a8319b0443690197d240a8bd6346048cf7bde9190/cffi-2.1.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3b926723c13eba9f81d2ef3820d63aeceec3b2d4639906047bf675cb8a7a500d", size = 210285, upload-time = "2026-07-06T21:33:12.251Z" }, + { url = "https://files.pythonhosted.org/packages/a6/cf/2b684132056f438567b61e19d690dd31cd0921ace051e0a458be6074369e/cffi-2.1.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:47ff3a8bfd8cb9da1af7524b965127095055654c177fcfc7578debcb015eecd0", size = 208801, upload-time = "2026-07-06T21:33:13.617Z" }, + { url = "https://files.pythonhosted.org/packages/6f/08/f2e7d62c460faae0926f2d6e423694aa409ced3bc1fe2927a0a6e5f05416/cffi-2.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:799416bae98336e400981ff6e532d67d5c709cfb30afb79865a1315f94b0e224", size = 221808, upload-time = "2026-07-06T21:33:15.466Z" }, + { url = "https://files.pythonhosted.org/packages/38/37/04f54b8e63a02f3d908332c9effbf8c366167c6f733ed8a3d4f79b7e2a1e/cffi-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:961be50688f7fba2fa65f63712d3b9b341a22311f5253460ce933f52f0de1c8c", size = 225241, upload-time = "2026-07-06T21:33:16.869Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d6/c72eecca433cd3e681c65ed313ab4835d9d4a379704d0f628a6a05f51c2e/cffi-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf5c6cf48238b0eb4c086978c492ad1cbc22373fc5b2d7353b3a598ce6db887a", size = 223588, upload-time = "2026-07-06T21:33:18.239Z" }, + { url = "https://files.pythonhosted.org/packages/c6/4b/e706f67279140f92939da3475ad610df18bfd52d50f14953a8e5fede71d5/cffi-2.1.0-cp313-cp313-win32.whl", hash = "sha256:db3eb7d46527159a878ec3460e9d40615bc25ba337d477db681aea6e4f05c5d2", size = 175248, upload-time = "2026-07-06T21:33:19.799Z" }, + { url = "https://files.pythonhosted.org/packages/5a/47/59eb7975cb0e4ef0afa764ea945b29a5bb4537a9f771cb7d6c8a5dd74c95/cffi-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:8e74a6135550c4748af665b1b1118b6aab33b1fc6a16f9aff630af107c3b4512", size = 185717, upload-time = "2026-07-06T21:33:21.47Z" }, + { url = "https://files.pythonhosted.org/packages/5a/af/34fee85c48f8d94efc8597bc09470c9dd274c145f1c12e0fbc6ab6d38d74/cffi-2.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:2282cd5e38aa8accd03e99d1256af8411c84cdbee6a89d841b563fdbd1f3e50f", size = 180114, upload-time = "2026-07-06T21:33:22.515Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f0/81478e482afa03f6d18dc8f2afb5edc45b3080853b634b5ed91961be0998/cffi-2.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d2117334c3af3bdcb9a88522b844a2bdb5efdc4f71c6c822df55486ae1c3347a", size = 194142, upload-time = "2026-07-06T21:33:23.657Z" }, + { url = "https://files.pythonhosted.org/packages/7d/95/8de304305cd9204974b0ca051b86d307cafca13aa575a0ef1b44d92c0d8c/cffi-2.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:702c436735fbe99d59ada02a1f65cfc0d31c0ee8b7290912f8fbc5cd1e4b16c3", size = 196819, upload-time = "2026-07-06T21:33:25.007Z" }, + { url = "https://files.pythonhosted.org/packages/20/71/7c8372d30e42415602ed9f268f7cfd66f1b855fed881ecd168bcb45dbc0b/cffi-2.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:1ff3456eab0d889592d1936d6125bbfbc7ae4d3354a700f8bd80450a66445d4d", size = 184965, upload-time = "2026-07-06T21:33:26.605Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5c/584e626835f0375c928176c04137c96927165cb8733cdb3150ec04e5ee5e/cffi-2.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c4165821e131d6d4ca444347c2b694e2311bcfa3fe5a861cc72968f28867beac", size = 184952, upload-time = "2026-07-06T21:33:27.823Z" }, + { url = "https://files.pythonhosted.org/packages/2e/d2/065fcae1c73979fac8e054462478d0ff8a29c40cdc2ed7ea5676a061df53/cffi-2.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:276f20fffd7b396e12516ba8edf9509210ac248cbbc5acbc39cd512f9f59ebe6", size = 222353, upload-time = "2026-07-06T21:33:29.178Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a5/e8bbb1ce5b3ac2f53ad6a10bde44318a5a8d99d4f4a000d44a6e39aeb3e4/cffi-2.1.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7d5980a3433d4b71a5e120f9dd551403d7824e31e2e67124fe2769c404c06913", size = 210051, upload-time = "2026-07-06T21:33:30.534Z" }, + { url = "https://files.pythonhosted.org/packages/28/ed/c127d3ac36e899c965e3361357c3befacd6578c03f40125183e41c3b219e/cffi-2.1.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6ca4919c6e4f89aa99c42510b42cf54596892c00b3f9077f6bdd1505e24b9c8d", size = 208630, upload-time = "2026-07-06T21:33:31.753Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d7/97d3136f81db489ec8d1d67748c110d6c994268fd7528014aa9f2b085e4e/cffi-2.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d53d10f7da99ae46f7373b9150393e9c5eab9b224909982b43832668de4779f5", size = 221593, upload-time = "2026-07-06T21:33:33.044Z" }, + { url = "https://files.pythonhosted.org/packages/d3/27/93195977168ee63aed233a1a0993a2178798654d1f4bddcdd321d6fd3b21/cffi-2.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c351efb95e832a853a29361675f33a7ce53de1a109cd73fd47af0712213aa4ce", size = 225146, upload-time = "2026-07-06T21:33:34.224Z" }, + { url = "https://files.pythonhosted.org/packages/b3/c1/6dbd291ee2ae5a50a034aa057207081f545923bbf15dad4511e985aafff5/cffi-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf7c7a88e2bac086f06d14577332760bdeecc42bdec8ac4077f6260557d9326", size = 223240, upload-time = "2026-07-06T21:33:35.57Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6f/ade5ce9863a57992a6ea3d0d10d7e29b8749fc127204b3d493d667b2815f/cffi-2.1.0-cp314-cp314-win32.whl", hash = "sha256:1854b724d00f6654c742097d5387569021be12d3a0f770eae1df8f8acfcc6acd", size = 177723, upload-time = "2026-07-06T21:33:51.626Z" }, + { url = "https://files.pythonhosted.org/packages/41/de/92b9eeed4ae4a21d6fd9b2a2c8505cbed573299902ea73981cc13f7ff62c/cffi-2.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:1b96bfe2c4bd825681b7d311ad6d9b7280a091f43e8f63da5729638083cd3bfb", size = 187937, upload-time = "2026-07-06T21:33:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1a/cc6ae6c2913a03aab8898eee57963cf1035b8df5872ed8b9115fcc7e2be8/cffi-2.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:7d28dff1db6764108bc30788d85d61c876beff416d9a49cb9dd7c5a9f34f5804", size = 183001, upload-time = "2026-07-06T21:33:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/14/f0/134c00ce0779ec86dea2aa1aac69339c2741a8045072676763512363a2ea/cffi-2.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7ea6b3e2c4250ff1de21c630fe72d0f63eb95c2c32ffbf64a358cf4a8836d714", size = 188538, upload-time = "2026-07-06T21:33:36.792Z" }, + { url = "https://files.pythonhosted.org/packages/50/d8/3b86aba791cb610d24e8a3e1b2cd529e71fa15096b04e4d4e360049d4a4c/cffi-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6af371f3767faeffc6ac1ef57cdfd25844403e9d3f476c5537caee499de96376", size = 188230, upload-time = "2026-07-06T21:33:38.011Z" }, + { url = "https://files.pythonhosted.org/packages/14/d0/117dcd9209255ad8571fbc8c92ef32593a1d294dcec91ddc4e4db50606f2/cffi-2.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb4e8997a49aa2c08a3e43c9045d224448b8941d88e7ac163c7d383e560cbf98", size = 223899, upload-time = "2026-07-06T21:33:39.514Z" }, + { url = "https://files.pythonhosted.org/packages/b6/3d/f20f8b886b254e3ad10e15cd4186d3aed49f3e6a35ab37aab9f8f25f7c03/cffi-2.1.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:bf01d8c84cbea96b944c73b22182e6c7c432b3475632b8111dbfdc95ddad6e13", size = 211652, upload-time = "2026-07-06T21:33:40.851Z" }, + { url = "https://files.pythonhosted.org/packages/28/3b/fad54de07260b93ddeef4b96d0131d57ea900675df1d410ae1deee52d7a6/cffi-2.1.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:33eb1ad83ebe8f313e0df035c406227d55a79456704a863fad9842136af5ad7d", size = 210755, upload-time = "2026-07-06T21:33:42.183Z" }, + { url = "https://files.pythonhosted.org/packages/cc/82/3d5c705acb7abbba9bbd7d79b8e62e0f25b6120eb7ae6ac49f1b721722fe/cffi-2.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ac0f1a2d0cfa7eea3f2aaf006ab6e70e8feeb16b75d65b7e5939982ca2f11056", size = 223933, upload-time = "2026-07-06T21:33:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d0/47e338384ab6b1004241002fa616301020cea4fc95f283506565d252f276/cffi-2.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c16914df9fb7f500e440e6875fa23ff5e0b31db01fa9c06af98d59a91f0dc2e4", size = 226749, upload-time = "2026-07-06T21:33:45.046Z" }, + { url = "https://files.pythonhosted.org/packages/70/25/65bd5b58ea4bfdfc15cde02cb5365f89ef8ab8b2adfb8fe5c4bd4233382f/cffi-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5ecbd0499275d57506d397eebe1981cee87b47fcd9ef5c22cab7ed7644a39a94", size = 225703, upload-time = "2026-07-06T21:33:46.374Z" }, + { url = "https://files.pythonhosted.org/packages/dc/78/aa01ac599a8a4322533d45a1f9bc93b338276d2d59dabbe7c6d92a775c81/cffi-2.1.0-cp314-cp314t-win32.whl", hash = "sha256:7d034dcffa09e9a46c93fa3a3be402096cb5354ac6e41ab8e5cc9cd8b642ad76", size = 182857, upload-time = "2026-07-06T21:33:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/b9/26/d00496b22de4d4228f32dde94ad996f350c8aad676d63bcca0743c8dea4d/cffi-2.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0582a58f3051372229ca8e7f5f589f9e5632678208d8636fea3676711fdf7fe5", size = 194065, upload-time = "2026-07-06T21:33:48.953Z" }, + { url = "https://files.pythonhosted.org/packages/d5/dd/0c7dbf815a579ff005008a2d815a55d6bb047c349eef536d9dc53d3f0a8d/cffi-2.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:510aeeeac94811b138077451da1fb18b308a5feab47dd2b603af55804155e1c8", size = 186404, upload-time = "2026-07-06T21:33:50.309Z" }, + { url = "https://files.pythonhosted.org/packages/55/c7/8c8c50cb11c6750051daf12164098a9a6f027ac4356967fd4d800a07f242/cffi-2.1.0-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:2e9dabb9abcb7ad15938c7196ad5c1718a4e6d33cc79b4c0209bdb64c4a54a5c", size = 194121, upload-time = "2026-07-06T21:33:56.109Z" }, + { url = "https://files.pythonhosted.org/packages/99/e2/67680bf19a6b60d2bb7ff83baefa2a4c3d2d7dc0f3277034b802e1fc504c/cffi-2.1.0-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:37f525a7e7e50c017fdebe58b787be310ad59357ae43a053943a6e1a6c526001", size = 196820, upload-time = "2026-07-06T21:33:57.288Z" }, + { url = "https://files.pythonhosted.org/packages/ed/da/4bbe583a3b3a5c8c60892124fe17f3fa3656523faf0d3484eae90f091853/cffi-2.1.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:95f2954c2c9473d892eca6e0409f3568b37ab62a8eedb122461f73cc273476e3", size = 184936, upload-time = "2026-07-06T21:33:58.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4b/1f4c36ab273980d7aa75bb126ea4f8971f24a96108acad3a0a084028c57b/cffi-2.1.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:cdf2448aab5f661c9315308ec8b93f4e8a1a67a3c733f8631067a2b67d5913dc", size = 185045, upload-time = "2026-07-06T21:34:00.085Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c3/ad299dc38f3583f8d916b299f028af418a9ec98bc695fcbebeae7420691c/cffi-2.1.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:90bec57cf82089383bd06a605b3eb8daebf7e5a668520beaf6e327a83a947699", size = 222342, upload-time = "2026-07-06T21:34:01.814Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d8/df4543cc087245044ed02ef3ad8e0a26619d0075ac7a77a12dc81177851b/cffi-2.1.0-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6274dcb2d15cef48daa73ed1be5a40d501d74dccd0cd6db364776d12cb6ba022", size = 210073, upload-time = "2026-07-06T21:34:03.255Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/fac738d73728c6cea2a88a2883dca54892496cbba88a1dc1f2909cb8a6f5/cffi-2.1.0-cp315-cp315-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:2b71d409cccee78310ab5dec549aed052aaea483346e282c7b02362596e01bb0", size = 208551, upload-time = "2026-07-06T21:34:04.433Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3f/0b04a700dd64f465c93020253a793a82c9b4dff9961f48facd0df945d9b8/cffi-2.1.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7d3538f9c0e50670f4deb93dbb696576e60590369cae2faf7de681e597a8a1f1", size = 221649, upload-time = "2026-07-06T21:34:06.157Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/b7379a5704c79eda57ce075869ba70a0368d1c850f803b3c0d078d39dcaf/cffi-2.1.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:8f9ec95b8a043d3dfbc74d9abc6f7baf524dd27a8dc160b0a32ff9cdab650c28", size = 225203, upload-time = "2026-07-06T21:34:07.489Z" }, + { url = "https://files.pythonhosted.org/packages/5a/02/d5e6c43ea85c41bda2a184a3418f195fe7cf602967a8d2b94e085b83deef/cffi-2.1.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:af5e2915d41fe6c961694d7bfdc8562942638200f3ce2765dfb8b745cf997629", size = 223263, upload-time = "2026-07-06T21:34:08.712Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d8/772b8259bf75749adffb1c546828978381fb516f60cf701f6c83daf60c85/cffi-2.1.0-cp315-cp315-win32.whl", hash = "sha256:0a42c688d19fca6e095a53c6a6e2295a5b050a8b289f109adab02a9e61a25de6", size = 177696, upload-time = "2026-07-06T21:34:26.355Z" }, + { url = "https://files.pythonhosted.org/packages/2f/dd/afa2191fc6d57fedd26e5844a2fe2fcc0bbfa00961bbaa5a41e4921e7cca/cffi-2.1.0-cp315-cp315-win_amd64.whl", hash = "sha256:bccbbb5ee76a61f9d99b5bf3846a51d7fca4b6a732fe46f89295610edaf41853", size = 187914, upload-time = "2026-07-06T21:34:27.58Z" }, + { url = "https://files.pythonhosted.org/packages/05/ef/6cd4f8c671517162379dc79cfae5aea9106bc38abb89628d5c16adf6a838/cffi-2.1.0-cp315-cp315-win_arm64.whl", hash = "sha256:8d35c139744adb3e727cd51b1a18324bbe44b8bd41bf8322bca4d41289f48eda", size = 183004, upload-time = "2026-07-06T21:34:28.905Z" }, + { url = "https://files.pythonhosted.org/packages/11/b6/12fc55092817a5faa26fb8c40c7f9d662e11a46ee248c137aafc42517d92/cffi-2.1.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:f9912624a0c0b834b7520d7769b3644453aabc0a7e1c839da7359f050750e9bc", size = 188378, upload-time = "2026-07-06T21:34:09.926Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2e/cdac88979f295fde5daa69622c7d2111e56e7ceb94f211357fbe452339e4/cffi-2.1.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:df92f2aba50eb4d96718b68ef76f2e57a57b54f2fa62333496d16c6d585a85ca", size = 188319, upload-time = "2026-07-06T21:34:11.101Z" }, + { url = "https://files.pythonhosted.org/packages/e0/27/1d0b408497e41a74795af122d7b603c418c5fed0171450f899afd04e594f/cffi-2.1.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0520e1f4c35f44e209cbbb421b67eec42e6a157f59444dfb6058874ff3610e5d", size = 223904, upload-time = "2026-07-06T21:34:12.606Z" }, + { url = "https://files.pythonhosted.org/packages/8b/31/e115c985105dd7ffb32444505f18ceb874bb42d992af05d5dced7ecf1980/cffi-2.1.0-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3681e031db29958a7502f5c0c9d6bbc4c36cb20f7b104086fa642d1799631ff8", size = 211554, upload-time = "2026-07-06T21:34:13.987Z" }, + { url = "https://files.pythonhosted.org/packages/5a/67/9e6e09409336d9e515c58367e7cfcf4f89df06ad25252675595a58eb59d5/cffi-2.1.0-cp315-cp315t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:762f99479dcb369f60ab9017ad4ab97a36a1dd7c1ee5a3b15db0f4b8659120cd", size = 210795, upload-time = "2026-07-06T21:34:15.972Z" }, + { url = "https://files.pythonhosted.org/packages/19/e5/d3cc82a4a0be7902af279c04181ad038449c096734464a5ae1de3e1401bd/cffi-2.1.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0611e7ebf90573a535ebdc33ae9da222d037853983e13359f580fab781ca017f", size = 223843, upload-time = "2026-07-06T21:34:17.509Z" }, + { url = "https://files.pythonhosted.org/packages/b9/65/b434abc97ce7cecc2c640fde160507c0ecc7e21544b483ba3325d2e2ea17/cffi-2.1.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:86cf8755a791f72c85dc287128cc62d4f24d392e3f1e15837245623f4a33cccc", size = 226773, upload-time = "2026-07-06T21:34:19.05Z" }, + { url = "https://files.pythonhosted.org/packages/b5/9f/d4dc66ca651eb1145a133314cda721abf13cfac3d28c4a0402263ae6ad75/cffi-2.1.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:ba00f661f8ba35d075c937174e27c2c421cec3942fd2e0ea3e66996757c0fdd9", size = 225719, upload-time = "2026-07-06T21:34:20.576Z" }, + { url = "https://files.pythonhosted.org/packages/68/5a/e536c528bc8057496c360c0978559a2dc45653f89dd6151078aa7d8fca1a/cffi-2.1.0-cp315-cp315t-win32.whl", hash = "sha256:cb96698e3c7413d906ce83f8ffd245ec1bd94707541f299d0ce4d6b0193e982b", size = 182760, upload-time = "2026-07-06T21:34:22.059Z" }, + { url = "https://files.pythonhosted.org/packages/d3/0b/0ffe8b82d3875bced5fa1e7986a7a46b748262a40ab7f60b475eb9fb1bb3/cffi-2.1.0-cp315-cp315t-win_amd64.whl", hash = "sha256:f146d154428a2523f9cc7936c02353c2459b8f6cf07d3cd1ee1c0a611109c5d5", size = 193769, upload-time = "2026-07-06T21:34:23.589Z" }, + { url = "https://files.pythonhosted.org/packages/a0/17/1073b53b68c9b5ca6914adf5f8bf55aacc2d3be102418c90700160ea8605/cffi-2.1.0-cp315-cp315t-win_arm64.whl", hash = "sha256:cbb7640ce37159548d2147b5b8c241f962143d4c71231431820783f4dc78f210", size = 186405, upload-time = "2026-07-06T21:34:24.857Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/2a/23f34ec9d04624958e137efdc394888716353190e75f25dd22c7a2c7a8aa/charset_normalizer-3.4.9.tar.gz", hash = "sha256:673611bbd43f0810bec0b0f028ddeaaa501190339cac411f347ac76917c3ae7b", size = 152439, upload-time = "2026-07-07T14:34:58.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/e3/85ec501f206fb049259288c1f3506e53876937fb00edb47009348e66756b/charset_normalizer-3.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0e94703ec9684807f20cfb5eed95c70f67f2a8f21ad620146d7b5a13677b93e5", size = 317075, upload-time = "2026-07-07T14:32:56.021Z" }, + { url = "https://files.pythonhosted.org/packages/c3/69/2a5385192e67175f7d8bd5ce4f57c24bc956439adeae5c13a99aa28a53d1/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a441ea71902098ffe78c5abe6c494f44160b4af614ed16c3d9a3b1d17fd8ee2", size = 213837, upload-time = "2026-07-07T14:32:57.78Z" }, + { url = "https://files.pythonhosted.org/packages/b3/46/03ddc7da576d814fe0a36dd1f0fd3258e95404b4b2e3c026b7923d7e133f/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:304b13570067b2547562e308af560b3963857b1fa90bd6afd978130130fe2d6a", size = 235503, upload-time = "2026-07-07T14:32:59.205Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/de0229a7ef40f6f9d28a837eebf4ec47bdca5dab4e900c84f22919af636a/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4773092f8019072343a7447203308b176e10199920eb02d6195e81bbb3274c29", size = 229944, upload-time = "2026-07-07T14:33:00.803Z" }, + { url = "https://files.pythonhosted.org/packages/a5/34/49b9060e8418b14fb5cba9cf6bfb383111e2538a03a1fb18e66a95aeb3d5/charset_normalizer-3.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04ce310cb89c15df659582aee80a0603788732a5e017d5bd5c81158106ce249c", size = 221276, upload-time = "2026-07-07T14:33:02.199Z" }, + { url = "https://files.pythonhosted.org/packages/44/95/80282cce0fae9c3061203d723ee87da996aed79679e65d8935050ee7ca1f/charset_normalizer-3.4.9-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:c0323c9daef75ef2e5083624b4585018a0c9d5e3b40f607eed81a311270b934b", size = 205260, upload-time = "2026-07-07T14:33:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/0c/74/2f62c8821b969ea3bd67cc2e6976834f48ca5d12664d2559ebcd9bcfbed7/charset_normalizer-3.4.9-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:871ff67ea1aad4dfd91736464934d56b32dac49f9fbe16cddba36198a7b3a0db", size = 217786, upload-time = "2026-07-07T14:33:05.12Z" }, + { url = "https://files.pythonhosted.org/packages/d9/8d/feabb82cb49fcad14515b1d7d1ca4787b0da7fc723a212bf89bc9e0fac52/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:67830fc78e67501f47bb950471b2dcb9b35b140084429318e862895a8e89c993", size = 216798, upload-time = "2026-07-07T14:33:06.629Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ff/c946d63bc3786d5b84d960b0f7ab7e25b828486a946b5aa997625bcaf6a6/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:3d92613ec25e43b05f042302531ec0f00b8445190e43325880cbd6ab7c2581da", size = 206429, upload-time = "2026-07-07T14:33:08.006Z" }, + { url = "https://files.pythonhosted.org/packages/af/ba/5e5007c370702f85d2ef75791fac7943ed41e080364a673b20142e430e3e/charset_normalizer-3.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:280081916dc341820640489a66e4696049401ef1cf6dd672f672e70ad915aca3", size = 223066, upload-time = "2026-07-07T14:33:09.783Z" }, + { url = "https://files.pythonhosted.org/packages/83/d5/9096aa3cf532dfad237861544eb47a0f20d5adbf1039760fed8eaae935d9/charset_normalizer-3.4.9-cp311-cp311-win32.whl", hash = "sha256:ac351b3b8014eead140e77e9717e2992c6bbe30b63bc3422422eb84865412e3d", size = 150456, upload-time = "2026-07-07T14:33:11.217Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a1/e29995109e455dc8eff8d0fac6ae509be39561318a7cfeac5d33ad029213/charset_normalizer-3.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:6366a16e1a25018694d6a5d784d09b046edc9eac40ea2b54065c3052672516a1", size = 161410, upload-time = "2026-07-07T14:33:12.743Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8d/1569f4d0032d6ba2a4fe4591c35bf87868c600c41a71eb5c2e1ffa8464c2/charset_normalizer-3.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:1d22856ffbe153a602df38e4a5464f0b748a54002e0d69ac6d2ad0a197cc99ec", size = 152649, upload-time = "2026-07-07T14:33:14.173Z" }, + { url = "https://files.pythonhosted.org/packages/70/4a/ecbd131485c07fcdfad54e28946d513e3da22ef3b4bd854dcafae54ec739/charset_normalizer-3.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45b0cc4e3556cd875e09102988d1ab8356c998b596c9fced84547c8138b487a0", size = 319300, upload-time = "2026-07-07T14:33:15.666Z" }, + { url = "https://files.pythonhosted.org/packages/ec/96/5d9364e3342d69f3a045e1777bc47c85c383e6e9466d561b33fdb419d1f9/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b2aff1c7b3884512b9512c3eaadd9bab39fb45042ffaaa1dd08ff2b9f8109d9", size = 215802, upload-time = "2026-07-07T14:33:17.031Z" }, + { url = "https://files.pythonhosted.org/packages/4b/4c/5361f9aa7f2cb58d94f2ab831b3d493f69efb1d239654b4744e3c09527cb/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9104ed0bd76a429d46f9ec0dbc9b08ad1d2dcdf2b00a5a0daa1c145329b35b44", size = 237171, upload-time = "2026-07-07T14:33:18.576Z" }, + { url = "https://files.pythonhosted.org/packages/50/78/ce342ca4ff30b2eb49fe6d9578df85974f90c67d294113e94efdd9664cbd/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7b86a2b16095d250c6f58b3d9b2eee6f4147754344f3dab0922f7c9bf7d226c9", size = 233075, upload-time = "2026-07-07T14:33:20.084Z" }, + { url = "https://files.pythonhosted.org/packages/01/c4/4fa4c8b3097a11f3c5f09a35b72ed6855fb1d332469504962ab7bafcc702/charset_normalizer-3.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e226f6218febc71f6c1fc2fafb91c226f75bdc1d8fb12d66823716e891608fd", size = 224256, upload-time = "2026-07-07T14:33:21.747Z" }, + { url = "https://files.pythonhosted.org/packages/87/3a/ad914516df7e358a81aae018caa5e0470ba827fa6d763b1d2e87d920a5f6/charset_normalizer-3.4.9-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:90c44bc373b7687f6948b693cceaea1348ae0975d7474746559494468e3c1d84", size = 208784, upload-time = "2026-07-07T14:33:23.313Z" }, + { url = "https://files.pythonhosted.org/packages/d7/74/3c12f9755717dfe5c5c87da63f35d765fa0c00382ec26bf23f7fae34f2ba/charset_normalizer-3.4.9-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cdef90ae47919cae358d8ab15797a800ed41da7aba5d72419fb510729e2ed4b", size = 219928, upload-time = "2026-07-07T14:33:24.814Z" }, + { url = "https://files.pythonhosted.org/packages/33/9a/895095b83e7907abd6d3d99aad3a38ad0d9686cc186cb0c94c24320fe63e/charset_normalizer-3.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:60f44ade2cf573dad7a277e6f8ca9a51a21dda572b13bd7d8539bb3cd5dbedde", size = 218489, upload-time = "2026-07-07T14:33:26.42Z" }, + { url = "https://files.pythonhosted.org/packages/a1/34/ef5c05f412f42520d7709b7d3784d19640839eb7366ded1755511585429f/charset_normalizer-3.4.9-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a1786910334ed46ab1dd73222f2cd1e05c2c3bb39f6dddb4f8b36fc382058a39", size = 210267, upload-time = "2026-07-07T14:33:27.952Z" }, + { url = "https://files.pythonhosted.org/packages/83/dc/9b29fa4412b318bf3bfea985c35d67eb55e04b59a7c3f2237168b0e0be6f/charset_normalizer-3.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03d07803992c6c7bbc976327f34b18b6160327fc81cb82c9d504720ac0be3b62", size = 226030, upload-time = "2026-07-07T14:33:29.397Z" }, + { url = "https://files.pythonhosted.org/packages/0e/42/6dbc00b8cd16011691203e33570fa42ed5746599a2e878112d16eab403a3/charset_normalizer-3.4.9-cp312-cp312-win32.whl", hash = "sha256:78841cccf1af7b40f6f716338d50c0902dbe88d9f800b3c973b7a9a0a693a642", size = 151185, upload-time = "2026-07-07T14:33:30.781Z" }, + { url = "https://files.pythonhosted.org/packages/80/cc/f920afd1a23c58ccd53c1d36085a71893a4737ff5e66e0371efab6809850/charset_normalizer-3.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:4b3dac63058cc36820b0dd072f89898604e2d39686fe05321729d00d8ac185a0", size = 162557, upload-time = "2026-07-07T14:33:32.176Z" }, + { url = "https://files.pythonhosted.org/packages/f0/e6/0386d43a261ff4e4b30c5857af7df877254b46bec7b9d1b74b6bf969a90b/charset_normalizer-3.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:78fa18e436a1a0e58dbd7e02fc4473f3f32cceb12df9dfca542d075961c307d2", size = 152665, upload-time = "2026-07-07T14:33:33.711Z" }, + { url = "https://files.pythonhosted.org/packages/b2/06/97ec2aeae780b31d742b6352218b43841a6871e2564578ca522dce4a45c3/charset_normalizer-3.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:440eede837960000d74978f0eba527be106b5b9aee0daf779d395276ed0b0614", size = 317688, upload-time = "2026-07-07T14:33:35.408Z" }, + { url = "https://files.pythonhosted.org/packages/d0/39/8ff066c672434225f8d25f8b739f992af250944392173dcc88362681c9bf/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21e764fd1e70b6a3e205a0e46f3051701f98a8cb3fad66eeb80e48bb502f8698", size = 214982, upload-time = "2026-07-07T14:33:36.996Z" }, + { url = "https://files.pythonhosted.org/packages/92/8f/3a47a3667c83c2df9483d91644c6c107de3bf8874aa1793da9d3012eb986/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e4fd89cc178bced6ad29cb3e6dd4aa63fa5017c3524dbd0b25998fb64a87cc8b", size = 236460, upload-time = "2026-07-07T14:33:38.536Z" }, + { url = "https://files.pythonhosted.org/packages/f1/60/b22cdbee7e4013dab8b0d7647fc6181120fbbbc8f7025c226d15bd5a47fc/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bd47ba7fc3ca94896759ea0109775132d3e7ab921fbf54038e1bab2e46c313c9", size = 232003, upload-time = "2026-07-07T14:33:40.059Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f8/72eb13dcabe7257035cea8aefd922caad2f110d252bf9f67c4c2ca763aee/charset_normalizer-3.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:84fd18bcc17526fc2b3c1af7d2b9217d32c9c04448c16ec693b9b4f1985c3d33", size = 223149, upload-time = "2026-07-07T14:33:41.631Z" }, + { url = "https://files.pythonhosted.org/packages/b0/3e/faee8f9de92b14ee1198e9163252bb15efee7301b31256a3b6d9ebfdd0dd/charset_normalizer-3.4.9-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:5b10cd92fc5c498b35a8635df6d5a100207f88b63a4dc1de7ef9a548e1e2cd63", size = 207901, upload-time = "2026-07-07T14:33:43.209Z" }, + { url = "https://files.pythonhosted.org/packages/3a/25/45f30093ae27dd7b92a793b61882a38685f993700113ca36e0c9c14965e1/charset_normalizer-3.4.9-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a4fbdde9dd4a9ce5fd52c2b3a347bb50cc89483ef783f1cb00d408c13f7a96c0", size = 219176, upload-time = "2026-07-07T14:33:44.725Z" }, + { url = "https://files.pythonhosted.org/packages/48/18/c8f397329c35e32f6a837e488986f4ae03bd2abebc453b48714991630c2f/charset_normalizer-3.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:416c229f77e5ea25b3dfd4b582f8d73d7e43c22320302b9ab128a2d3a0b38efe", size = 217356, upload-time = "2026-07-07T14:33:46.192Z" }, + { url = "https://files.pythonhosted.org/packages/86/7e/5ce0bba863470fd1902d5e5843968951bddf38abe4742fc97116ef4598b3/charset_normalizer-3.4.9-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:75286256590a6320cf106a0d28970d3560aad9ee09aa7b34fb40524792436d35", size = 209614, upload-time = "2026-07-07T14:33:47.705Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ef/2473d3c4d869155be4af1191111d59c4d5c4e0173026f7e85b176e23bf65/charset_normalizer-3.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:69b157c5d3292bcd443faca052f3096f637f1e074b98212a933c074ae23dc3b8", size = 224991, upload-time = "2026-07-07T14:33:49.238Z" }, + { url = "https://files.pythonhosted.org/packages/d0/a3/53ddae3db108a088156aa8ddfafd411ebbc1340f48c5573f697b27f69a39/charset_normalizer-3.4.9-cp313-cp313-win32.whl", hash = "sha256:51307f5c71007673a2bf8232ad973483d281e74cb99c8c5a990af1eefa6277d9", size = 150622, upload-time = "2026-07-07T14:33:50.711Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ef/6953a77c7cf2c2ff9998e6f575ab3e380119f100223381565a4f94c1f836/charset_normalizer-3.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:fe2c7201c642b7c308f1675355ad7ff7b66acfe3541625efe5a3ad38f29d6115", size = 161947, upload-time = "2026-07-07T14:33:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/6e/fb/d560d1d1555debbfe7849d9cac6145c1b537709d79576bf22557ed803b82/charset_normalizer-3.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:611057cc5d5c0afc743ba8be6bd828c17e0aaa8643f9d0a9b9bb7dea80eb8012", size = 152594, upload-time = "2026-07-07T14:33:53.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8d/496817fa0944239ecae662dd57ea765cfeaec6a735f9f025d4b7b72e7143/charset_normalizer-3.4.9-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:0327fcd59a935777d83410750c50600ee9571af2846f71ce40f25b13da1ef380", size = 317253, upload-time = "2026-07-07T14:33:54.994Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f9/ef4a69ea338ad3c0deceea0f5f7d2380ae8b52132b06d652cb0d2cd86706/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a79d9f4d8001473a30c163556b3c3bfebec837495a412dde78b51672f6134f9", size = 215898, upload-time = "2026-07-07T14:33:56.334Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e7/5ddfd76fc061eb52de219658a4aa431cbacadf0a0219c8854f00da50d289/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:33bdcc2a32c0a0e861f60841a512c8acc658c87c2ac59d89e3a46dacf7d866e4", size = 236718, upload-time = "2026-07-07T14:33:57.9Z" }, + { url = "https://files.pythonhosted.org/packages/49/ba/768fa3f36048d81c477a0ce61f813bc1454d80917ccfe550abd9f44f5e24/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f840ed6d8ecba8255df8c42b87fadeda98ddfc6eeec05e2dc66e26d46dd6f58a", size = 232519, upload-time = "2026-07-07T14:33:59.811Z" }, + { url = "https://files.pythonhosted.org/packages/f4/c4/b3e049d2aa3766180c78507110543d9d50894cc97f57de543f1be521dcdc/charset_normalizer-3.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c25fe15c70c59eb7c5ce8c06a1f3fa1da0ecc5ea1e7a5922c40fd2fa9b0d5046", size = 223143, upload-time = "2026-07-07T14:34:01.517Z" }, + { url = "https://files.pythonhosted.org/packages/19/79/55c32d06d76ae4feafe053f061f3e3ab70bcf19f4007797ce8c3efda7830/charset_normalizer-3.4.9-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:f7fb7d750cfa0a070d2c24e831fd3481019a60dd317ea2b39acbcebc08b6ed81", size = 206742, upload-time = "2026-07-07T14:34:03.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/e0/47c079dd82d217c807479cd59ffd30af56307ea31c108b75758970459ad3/charset_normalizer-3.4.9-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d1c96a7a18b9690a4d46df09e3e3382406ae3213727cd1019ebade1c4a81917", size = 219191, upload-time = "2026-07-07T14:34:04.657Z" }, + { url = "https://files.pythonhosted.org/packages/42/ab/b9bc2e77d6b44a7e46ef62ec5cac1c9a6ba7b9135a5d560f002696ec9995/charset_normalizer-3.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a4cfde78a9f2880208d16a93b795726a3017d5977e08d1e162a7a31322479c41", size = 218328, upload-time = "2026-07-07T14:34:06.115Z" }, + { url = "https://files.pythonhosted.org/packages/f1/78/c9c71d599f5aa2d42bcdd35cbbd46d7f535351a57e40ff7d8e5a7e219401/charset_normalizer-3.4.9-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d4d6fcde76f94f5cb9e43e9e9a61f16dacefd228cbbf6f1a09bd9b219a92f1a1", size = 207406, upload-time = "2026-07-07T14:34:07.554Z" }, + { url = "https://files.pythonhosted.org/packages/f6/39/c914445c321a845097ce4f6ac7de9a18228a77b766272125a1ce00d851eb/charset_normalizer-3.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:898f0e9068ca27d37f8e83a5b962821df851532e6c4a7d615c1c033f9da6eedf", size = 225157, upload-time = "2026-07-07T14:34:09.061Z" }, + { url = "https://files.pythonhosted.org/packages/9b/f2/c0d4b8508565a36bc5c624e88ed297f5b0b1095011034d7f5b83a69908b5/charset_normalizer-3.4.9-cp314-cp314-win32.whl", hash = "sha256:c1c948747b03be832dceed96ca815cef7360de9aa19d37c730f8e3f6101aca48", size = 151095, upload-time = "2026-07-07T14:34:10.901Z" }, + { url = "https://files.pythonhosted.org/packages/49/fd/a1d26144398c67486422a72bf5812cda22cb4ccfcd95a290fb41ceb4b8e2/charset_normalizer-3.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:16b65ea0f2465b6fb52aa22de5eca612aa964ddfec00a912e26f4656cbef890b", size = 162796, upload-time = "2026-07-07T14:34:12.47Z" }, + { url = "https://files.pythonhosted.org/packages/20/95/d75e82f8ce9fd323ebf059c16c9aadefb22a1ecde13b7840b35835e4886c/charset_normalizer-3.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:40a126142a56b2dfc0aacbad1de8310cbf60da7656db0e6b16eebd48e3e93519", size = 153334, upload-time = "2026-07-07T14:34:14.044Z" }, + { url = "https://files.pythonhosted.org/packages/00/5e/17398df3a139985ba9d11ed072531986f408c8fca952835ef1ab1820c02b/charset_normalizer-3.4.9-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:609b3ba8fcc0fb5ab7af00719d0fb6ad0cb518e48e7712d12fd68f1327951198", size = 338848, upload-time = "2026-07-07T14:34:15.688Z" }, + { url = "https://files.pythonhosted.org/packages/cd/91/7253a32e86b7e1d1239b1b36ba6dd0f021a21107ab33054b53119cc083b9/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:51447e9aa2684679af07ca5021c3db526e0284347ebf4ffcec1154c3350cfe32", size = 223022, upload-time = "2026-07-07T14:34:17.248Z" }, + { url = "https://files.pythonhosted.org/packages/cb/32/2e64bd2be10e89c61e57ebe6a93fd98ae88eb7ebe414b5121f22c96c69eb/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cc1b0fff8ead343dae06305f954eb8468ba0ec1a97881f42489d198e4ce3c632", size = 241590, upload-time = "2026-07-07T14:34:18.813Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ef/d96ec496cfea0c21db43b0ad03891308b02388d054cc902cf0e5a1ad6a88/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fa36ec09ef71d158186bc79e359ff5fdd6e7996fe8ab638f00d6b93139ba4fcf", size = 239584, upload-time = "2026-07-07T14:34:20.52Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ce/9af95f7876194bd7a14e3dfe4a4de2e0bff02666a3910d72beafd06cc297/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df115d4d83168fdf2cae48ef1ff6d1cb4c466364e30861b37121de0f3bf1b990", size = 230224, upload-time = "2026-07-07T14:34:22.189Z" }, + { url = "https://files.pythonhosted.org/packages/52/94/af74dde74a3996bd959c350709bfe50e297823d70a8c1cbd54b838880863/charset_normalizer-3.4.9-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:f86c6358749bd4fda175388691e3ba8c46e24c5347d0afd20f9b7edfc9faf07d", size = 212667, upload-time = "2026-07-07T14:34:23.857Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f0/f1c4fe746c395922961b5916ed1d7d6e7d4c84851d19ed43cc89980ec953/charset_normalizer-3.4.9-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:32286a2c8d167e897177b673176c1e3e00d4057caf5d2b64eef9a3666b03018e", size = 227179, upload-time = "2026-07-07T14:34:25.586Z" }, + { url = "https://files.pythonhosted.org/packages/e4/56/6c745619ac397e8871e2bcd3cea1eec86b877488f33888b3aef5c3ed506e/charset_normalizer-3.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:83aed2c10721ddd90f68140685391b50811a880af20654c59af6b6c66c40513c", size = 225372, upload-time = "2026-07-07T14:34:27.212Z" }, + { url = "https://files.pythonhosted.org/packages/78/ad/98aae8630ac71f16711968e38a5acfecce41b778bf2f0312851020f565a8/charset_normalizer-3.4.9-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cd6c3d4b783c556fa00bf540854e42f135e2f256abd29669fcd0da0f2dec79c2", size = 215222, upload-time = "2026-07-07T14:34:28.774Z" }, + { url = "https://files.pythonhosted.org/packages/f7/40/9593d54209765207a7f11073c06494c1721e4ca4a0a426c597679bf7f91e/charset_normalizer-3.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ee2f2a527e3c1a6e6411eb4209642e138b544a2d72fe5d0d76daf77b24063534", size = 231958, upload-time = "2026-07-07T14:34:30.345Z" }, + { url = "https://files.pythonhosted.org/packages/b1/27/693ee5e8a18191eb38647360c51cd505013e2bd3b366aa43fd5344c21e3c/charset_normalizer-3.4.9-cp314-cp314t-win32.whl", hash = "sha256:0d861473f743244d349b50f850d10eb87aeb22bbdcc8e64f79273c94af5a8226", size = 155580, upload-time = "2026-07-07T14:34:31.884Z" }, + { url = "https://files.pythonhosted.org/packages/80/3f/bd97d3d9c613013d07cb7733d299385b41df37f0471310f5a73dc359f0b8/charset_normalizer-3.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:9b8e0f3107e2200b76f6054de99016eac3ee6762713587b36baaa7e4bd2ae177", size = 167620, upload-time = "2026-07-07T14:34:33.438Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c6/eee9dca4439b1061f76373f06ea855678cc4a64c1c3c90b50e479edbb8eb/charset_normalizer-3.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:19ac87f93086ce37b86e098888555c4b4bc48102279bae3350098c0ed664b501", size = 158037, upload-time = "2026-07-07T14:34:35.018Z" }, + { url = "https://files.pythonhosted.org/packages/98/2b/f97f1c193fb855c345d678f5077d6926034db0722df74c8f057020e05a25/charset_normalizer-3.4.9-py3-none-any.whl", hash = "sha256:68e5f26a1ad57ded6d1cfb85331d1c1a195314756471d97758c48498bb4dcdf5", size = 64538, upload-time = "2026-07-07T14:34:56.993Z" }, +] + +[[package]] +name = "click" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 338000, upload-time = "2026-06-24T17:45:15.148Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76", size = 119243, upload-time = "2026-06-24T17:45:13.73Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "cryptography" +version = "49.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, + { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" }, + { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" }, + { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" }, + { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" }, + { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" }, + { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" }, + { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" }, + { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892, upload-time = "2026-06-12T20:02:10.735Z" }, + { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835, upload-time = "2026-06-12T20:02:48.743Z" }, + { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239, upload-time = "2026-06-12T20:02:56.03Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593, upload-time = "2026-06-12T20:02:50.666Z" }, + { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961, upload-time = "2026-06-12T20:01:46.468Z" }, + { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145, upload-time = "2026-06-12T20:02:16.832Z" }, + { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719, upload-time = "2026-06-12T20:02:52.611Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209, upload-time = "2026-06-12T20:02:07.282Z" }, + { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285, upload-time = "2026-06-12T20:01:32.439Z" }, + { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441, upload-time = "2026-06-12T20:02:01.469Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869, upload-time = "2026-06-12T20:01:36.574Z" }, + { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948, upload-time = "2026-06-12T20:02:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153, upload-time = "2026-06-12T20:01:39.059Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, + { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" }, + { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" }, + { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" }, + { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" }, + { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" }, + { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" }, + { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" }, +] + +[[package]] +name = "distro" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, +] + +[[package]] +name = "fastapi" +version = "0.139.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-doc" }, + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d3/af/a5f50ccfa659ec1802cb4ca842c23f06d906a8cc9aef6016a2caeea3d4ed/fastapi-0.139.0.tar.gz", hash = "sha256:99ab7b2d92223c76d6cf10757ab3f89d45b38267fc20b2a136cf02f6beac3145", size = 423016, upload-time = "2026-07-01T16:35:33.436Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/7c/8e3c6ad324ea5cb36604fc3f968554887891c316d9dfde57761611d907ad/fastapi-0.139.0-py3-none-any.whl", hash = "sha256:cf15e1e9e667ddb0ad63811e60bd11390d1aac838ca4a7a23f421807b2308189", size = 130339, upload-time = "2026-07-01T16:35:32.19Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/e5/d471fcb0e14523fe1c3f4ba58ca52480e7bd70ad7109a3846bc75892f7fb/httptools-0.8.0.tar.gz", hash = "sha256:6b2a32f18d97e16e90827d7a819ffa8dbd8cc245fc4e1fa9d1095b54ef4bd999", size = 271342, upload-time = "2026-05-25T22:17:48.841Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/d2/c3eedaef57de65c3cc5f8dc244cf12d09c84ad258a479055aad6db23206c/httptools-0.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed377e64805bdba4943c82717333f8f8603a13b09aff9cead2717c6c817fb168", size = 208428, upload-time = "2026-05-25T22:16:59.717Z" }, + { url = "https://files.pythonhosted.org/packages/f1/94/dfe435d90d0ef61ec0f2cc3d480eef78c59727c6c2ce039f433882f6131a/httptools-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9518c406d7b310f05adb1a37f80acabac40504a575d7c0da6d3e365c695ac20d", size = 113366, upload-time = "2026-05-25T22:17:00.795Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d4/13025f1a56e615dcb331e0bbe2d9a1143212b58c263385fc5d2e558f5bac/httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:57278e6fa0424c42a8a3e454828ab4f0aff27b40cddf9679579b98c6dce6a376", size = 464676, upload-time = "2026-05-25T22:17:02.014Z" }, + { url = "https://files.pythonhosted.org/packages/bf/95/4c1c26c0b985f8a3331682d802598f14e32dc41bf7509266eb2c04ad4801/httptools-0.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbb8caadb2b742d293169d2b458b5c001ef70e3158704aa3d3ef9597624c5d1d", size = 464235, upload-time = "2026-05-25T22:17:03.109Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/6735be2b0ca527718c431cdb8e5f70c3862c0844a687df0f572c51e11497/httptools-0.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:52dd695b865fe96d9d2b16b64a895f3f57bf3cb064e8383cd3b5713a069e8085", size = 449809, upload-time = "2026-05-25T22:17:04.443Z" }, + { url = "https://files.pythonhosted.org/packages/b5/f9/5811c74f37a758c8a4aa3dc430375119d335947e883efc4664d8f3559a41/httptools-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:20b4aac66ff65f7db06a375808b78f42a94970aa22e826b3cb2b43eb09174124", size = 452174, upload-time = "2026-05-25T22:17:05.476Z" }, + { url = "https://files.pythonhosted.org/packages/cc/94/97b75870dea07b71e3ec535cebe525b08d723152e4c7d13fa887e51f4de2/httptools-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1b4c8e7a489a0d750d91894e9a8cdc295838f1924c0ca903ae993456fddec07", size = 90991, upload-time = "2026-05-25T22:17:06.75Z" }, + { url = "https://files.pythonhosted.org/packages/14/88/1d21a36da8f5cb0fa49eafd4b169eba5608d57e75bbcf61845cbc6243216/httptools-0.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:880490234c10f70a9830743097e8958d6e4b9f5a0ffc24515023afeef984054d", size = 208247, upload-time = "2026-05-25T22:17:07.843Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/cc4feea2945cb3051038f090c9b36bd5b8a9d7f5a894a506a8983e33fd1c/httptools-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5931891fb7b441b8a3853cf1b85c82c903defce084dd5f6771ca46e31bf862c5", size = 113064, upload-time = "2026-05-25T22:17:09.136Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a6/febbb8b8db0f58b38e44ad6cb946e6a255ae49b55f2e8543408fb7501ccd/httptools-0.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b15fc622b0f869d19207c4089a501d9bcc63ca5e071ffdd2f03f922df882dcb2", size = 523851, upload-time = "2026-05-25T22:17:10.106Z" }, + { url = "https://files.pythonhosted.org/packages/b7/e4/f90a0df0b83beff265b7e3b65f2a4cefd95792d4be0ac3e16049f2acd3c2/httptools-0.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:425f83884fd6343828d8c565f046cb72b6d19063f6924093e11bcd8e1548cd09", size = 518842, upload-time = "2026-05-25T22:17:11.218Z" }, + { url = "https://files.pythonhosted.org/packages/9e/2d/0c9ac76dd2c893841fbf6498d6acec4f2442e1b7067f6e3e316a80e494e8/httptools-0.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ef7c3c97f4311c7be57e2986629df89d49cb434dbff78eafcd48c2bff986b15a", size = 501238, upload-time = "2026-05-25T22:17:12.728Z" }, + { url = "https://files.pythonhosted.org/packages/ca/42/906adc91ae3a5fa9c59c0a2f21c139725bd7e5b41ae6acd485cd14123ebf/httptools-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a1afd7c9fbff0d9f5d489c4ce2768bd09c84a46ddefc7161e6aa82ae35c85745", size = 509567, upload-time = "2026-05-25T22:17:13.842Z" }, + { url = "https://files.pythonhosted.org/packages/05/0b/4240efeb672751ee5b9b380cb0e3fdc050bc05f68adc7a8aefc4fcd9a69a/httptools-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd96f29b4bab1d42fa6e3d008711c75e0f79e94e06827330160e3a304227f150", size = 90918, upload-time = "2026-05-25T22:17:15.155Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e5/8cfcabc5546e8022f168be28bcdaa128a240a0befdd03b59d558b4f18bd6/httptools-0.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:614ceea8ea606848bece2338ac03b3ce5324bcb4be8dc7d377ed708012fa4db8", size = 205148, upload-time = "2026-05-25T22:17:16.333Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0e/0fb14848c19a686c8062ff9067c1a48793e3224b47bc5b201535b6036fce/httptools-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2d689918c15a013c65ef52d9fd495d766893ab831a2c8d89f2ac5940a5df847c", size = 111368, upload-time = "2026-05-25T22:17:17.586Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1b/46f1cecf06b9bbde8e4b8c88034ac7908989e5ff7a3a388ef38392949c1f/httptools-0.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:eb3028cca2fc0a6d720e52ef61d8ebb62fcbfeb1de56874546d858d3f25a26b7", size = 486447, upload-time = "2026-05-25T22:17:18.564Z" }, + { url = "https://files.pythonhosted.org/packages/77/00/258bfc0837221f81d9725c45f9b948a6a6b2994a147a4fb66e85100c668f/httptools-0.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:88bdd940f2b5d487b4d032c6afa5489a7dc4694410d43de3c38c4fb3af0dc45d", size = 482448, upload-time = "2026-05-25T22:17:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/04/ab/d1cef3b5523f4d272a70f42a776c3169a2dddfe3a54de4b2ce4a36341528/httptools-0.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a43c9dd399758ccc0531acb0a3c4a6c299ee893ee9400e9c893b7bdcfae0681", size = 464460, upload-time = "2026-05-25T22:17:20.882Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/5d1d072442277bb2b3434e0e60690b8e8c23840ef7de8b6ea54040a536d3/httptools-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0770728beb05094c809b98e814edff5fef69d26ad7d21185f2f6d5884a0ba683", size = 471312, upload-time = "2026-05-25T22:17:22.085Z" }, + { url = "https://files.pythonhosted.org/packages/0d/66/b96623b27e51a68199ef4efdda0613cced9233fe3062ac74e50749c5ad37/httptools-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:7685df791fad561384bfb139e77fde27a1ffd93134e016f95a0db424ffbf77b1", size = 90117, upload-time = "2026-05-25T22:17:23.074Z" }, + { url = "https://files.pythonhosted.org/packages/1a/12/fa3fbf5f9517b273edea2dc982aa82a8c634091e67c590792b729017bc6f/httptools-0.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:de242a49b5d18e0a8776e654e9f6bf6d89f3875a5c35b425a0e7ce940feb3fd6", size = 206183, upload-time = "2026-05-25T22:17:24.004Z" }, + { url = "https://files.pythonhosted.org/packages/30/fc/5e7c4cb443370f2090a3aba0453a07384d29ff66b7435bb90e77e1037599/httptools-0.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:159e9ab5f701ccd42e555a12f1ad8ff69702910fc1c996cf2bb66e5fcb7a231b", size = 112079, upload-time = "2026-05-25T22:17:25.216Z" }, + { url = "https://files.pythonhosted.org/packages/ba/53/771bd891eb0f236f32145d6a1775777ec85745f3cc983a1f23d1a3b8ddfe/httptools-0.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c4a9f1707e4823d54dfec6c33fa3697d302aed536ed352a7ebb5a061ddb869d0", size = 481596, upload-time = "2026-05-25T22:17:26.186Z" }, + { url = "https://files.pythonhosted.org/packages/62/42/94e15bc68ce3d423243c45d7f1b0c7561f13844f97dc52ae23182fb65628/httptools-0.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d76ad7b951387e3632c8716a9bb03ac5b45c5f16119aa409db0459520887944e", size = 480865, upload-time = "2026-05-25T22:17:27.542Z" }, + { url = "https://files.pythonhosted.org/packages/1c/7c/fe2980fc03723272e30f135b62360b075f513dfe7cc73aef36c7f04012bd/httptools-0.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a3b7387147361c3fd47a0bde763c5c91b5b4cd4dc9989b8ece84ff436c99843b", size = 463189, upload-time = "2026-05-25T22:17:28.546Z" }, + { url = "https://files.pythonhosted.org/packages/15/1b/47fc5fff68acd1bfa20b4734059c9a06cadb88119dcd5258b5b0d21d91c8/httptools-0.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f256d6ce930c52ca1cb2a960b7da03548c454e7d28b06059ad41bfe789036ce0", size = 466610, upload-time = "2026-05-25T22:17:29.816Z" }, + { url = "https://files.pythonhosted.org/packages/60/bd/07b13c93ffd9bec9546e0d43f8e19378dd696dbd278511406bc07371ef1f/httptools-0.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:19d1ee275bb59ba2643ba9a3a1e51cc0c788caf2b8df506368e03f56fdd08527", size = 92705, upload-time = "2026-05-25T22:17:31.133Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c4/121648f68ce066d7bd762d6b6d97e620847642d38d54f3d90ff11d947629/httptools-0.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:de1ed58a974e75d56560acc7e7fed01a454994429456f65209789992e41f2568", size = 215023, upload-time = "2026-05-25T22:17:32.401Z" }, + { url = "https://files.pythonhosted.org/packages/b9/b0/312a062ae741ae3e8baa8c8bf20be81b2e67337b259ab4349bebc7b6142e/httptools-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e93c227b595c6926c1acee96891dd9da4be338cfbe82e5cd3bb9d8dd7dc4ac0b", size = 117405, upload-time = "2026-05-25T22:17:33.742Z" }, + { url = "https://files.pythonhosted.org/packages/fc/37/fccd705f795386bb05bf413012fecff2a33e5aa8c2f069096de3e9fd8702/httptools-0.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2a021c3a8e65cc125390d72f59b968afca3bdcaff25bd67965e0a055a14946ca", size = 558497, upload-time = "2026-05-25T22:17:34.732Z" }, + { url = "https://files.pythonhosted.org/packages/bd/39/f172e8003576de35f5ba77ff417cf0e34429d35dc014deef15afa337a72c/httptools-0.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48774d39cbb70e2b1f71f88852a3087ae1d3a1eb80482bb48c13067ab080c14f", size = 571585, upload-time = "2026-05-25T22:17:35.813Z" }, + { url = "https://files.pythonhosted.org/packages/3e/b9/f5564760af99f3dbbf3f9104dc00e5da27e96cf433c6bdcf77617f70bf3f/httptools-0.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:88eead8ec8680a9f146c655bc88445a325bd7921cfd8194c7337e9467282427d", size = 543297, upload-time = "2026-05-25T22:17:37.08Z" }, + { url = "https://files.pythonhosted.org/packages/99/67/8d9f2c313618e161b82f3873188e7196126da1d6e29688df40eb3997c77a/httptools-0.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2c032fa028f46871ec7e1fc59fc15e8023eab3e6bbe6ece786a1611719a5d081", size = 539535, upload-time = "2026-05-25T22:17:38.032Z" }, + { url = "https://files.pythonhosted.org/packages/48/63/b906c01e53f50d432c0defe43ce52764a111dc1bdd028bafbeb54dcfd008/httptools-0.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:384c17174464c8e873398b7af24f0b1f44d992c820328413951a625323155d77", size = 108209, upload-time = "2026-05-25T22:17:39.473Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "httpx-sse" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d", size = 15943, upload-time = "2025-10-10T21:48:22.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" }, +] + +[[package]] +name = "idna" +version = "3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, +] + +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, +] + +[[package]] +name = "jiter" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/1f/10936e16d8860c70698a1aa939a46aa0224813b782bce4e000e637da0b2d/jiter-0.16.0.tar.gz", hash = "sha256:7b24c3492c5f4f84a37946ad9cf504910cf6a782d6a4e0689b6673c5894b4a1c", size = 176431, upload-time = "2026-06-29T13:05:13.657Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/3f/fae6cc967d120ec89e31c5418a51176d8278b3087fbb384a9176754f353c/jiter-0.16.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:67fddeda1688f0cce2d2ae83ccf8a80f79936f2d2997d6cc2261f82fdb54a4d3", size = 309289, upload-time = "2026-06-29T13:02:52.301Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e3/97c6c3562c077f6247d6e6ce5c82562500b6316c0d928e97e106b7a1321a/jiter-0.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c90c0f63df322be920eda6ce622e3083d8906ba267f8220fe7873213b8b4430e", size = 315181, upload-time = "2026-06-29T13:02:53.964Z" }, + { url = "https://files.pythonhosted.org/packages/7b/89/d8d073f8aa2667e46c6c0873f86fe4a512bba4293cc730f626a076211a62/jiter-0.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64c0203212098470032aabcde9356fc168f377aade3e43def61dfe17e92f2037", size = 340939, upload-time = "2026-06-29T13:02:55.412Z" }, + { url = "https://files.pythonhosted.org/packages/87/c9/db4fda3ed73fb864139305e935e5b8b38a5a24692a5a9dd356c22f1b9c8d/jiter-0.16.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12288303c9844e61e1651d02a9a6f6633e47d39f897d6991d1427161ce6b746e", size = 364932, upload-time = "2026-06-29T13:02:57.28Z" }, + { url = "https://files.pythonhosted.org/packages/a2/74/52b5e86241057f52ddd7c9a580f90effb51f9d06239f6fc612279b91a838/jiter-0.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cf109d010b4b05a105afb3d43be36a21322d345ad3111e13d15f680afef0e5b", size = 461132, upload-time = "2026-06-29T13:02:58.994Z" }, + { url = "https://files.pythonhosted.org/packages/a9/87/544a700f7447c1f31c5d7833821a4daa5683165c2d5a094fbf5b5800c3dc/jiter-0.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62c1b7fe1f77925acf5af68b6140b8810fa87dfd4dc0a9c8568ec2fa2a10429c", size = 374857, upload-time = "2026-06-29T13:03:00.455Z" }, + { url = "https://files.pythonhosted.org/packages/40/cd/0fcc3f7d39183674d5bfa9ec640faaeb506c60be7c8f94625dfba366e37c/jiter-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8597d23c87f59294f83bcb6229b9ed1fccee13dbba967b46930d2f1759466fee", size = 347053, upload-time = "2026-06-29T13:03:02.045Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ae/c7e64e7932ad597fa395b61440b249ada6366716e25c6e08dd2afbd021e6/jiter-0.16.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:3126a5dbad56401989ac769aca0cb56005bfb3e2366eea0ca99d1a91c3c1ee03", size = 356153, upload-time = "2026-06-29T13:03:03.706Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/1c719044f14da814e1a060191ab19b96f3e99207bc5b4bfc6d6be34b3f80/jiter-0.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c4b4717bdb35ae456f831a6b08d01880fff399887a6bbc526a583a406e484eea", size = 393956, upload-time = "2026-06-29T13:03:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/3b/dc/7b2f303a2847207e265503853a2d964a55354cffd62a5f2936c155486798/jiter-0.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:adff21bc78edfe086c15eb495b900306076de378dc2337c132401fc39bd79c91", size = 521081, upload-time = "2026-06-29T13:03:06.886Z" }, + { url = "https://files.pythonhosted.org/packages/c2/5f/501cf6e1e09caeb420195179ffc6f62aca603f1220ec53fd80d0d70b3e56/jiter-0.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dab907db06fc593645e73109acf4581ba5b548897d28b9348dc41ddc8343b2d3", size = 552085, upload-time = "2026-06-29T13:03:08.339Z" }, + { url = "https://files.pythonhosted.org/packages/79/54/aa5be86520113b79455c3877f3d1f07a348098df4083ba3688e9537e52dd/jiter-0.16.0-cp311-cp311-win32.whl", hash = "sha256:560b2cf3fb03240cd34f27409a238547488708f05b7c3924f571a60422251ec7", size = 206755, upload-time = "2026-06-29T13:03:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/64/ec/2feb893eb330bd69b413866f4d5daada33c3962f1c6f270c91ca2d87fdf9/jiter-0.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:e431cfc9caf44c1d5459ff77d4e64cbf85fddb6a35dad836a15c6a9ec23087c1", size = 199155, upload-time = "2026-06-29T13:03:10.979Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9c/ca040d94415048a3666fc237774df8151c96f8d2b661cbe3b184acc95876/jiter-0.16.0-cp311-cp311-win_arm64.whl", hash = "sha256:2a8e9e39cf083016137aa5cadafe3188adc2ba6ba1fbf1e5d18889ad3e9ad056", size = 194403, upload-time = "2026-06-29T13:03:12.341Z" }, + { url = "https://files.pythonhosted.org/packages/83/2b/52ace16ed031354f0539749a49e4bf33797d82bea5137910835fa4b09793/jiter-0.16.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:67c3bc1760f8c99d805dcab4e644027142a53b1d5d861f18780ebdbd5d40b72a", size = 306943, upload-time = "2026-06-29T13:03:14.035Z" }, + { url = "https://files.pythonhosted.org/packages/94/2e/34957c2c1b661c252ba9bcc60ae0bddc27e0f7202c6073326a13c5390eec/jiter-0.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5af7780e4a26bd7d0d989592bf9ef12ebf806b74ab709223ecca37c749872ea9", size = 307779, upload-time = "2026-06-29T13:03:15.418Z" }, + { url = "https://files.pythonhosted.org/packages/88/6c/59bd309cab4460c54cf1079f3eb7fe7af6a4c895c5c957a53378693bad2b/jiter-0.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5bf78d0e05e45cfdd66558893938d59afe3d1b1a824a202039b20e607d25a72", size = 335826, upload-time = "2026-06-29T13:03:17.11Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8c/f5ef7b65f0df47afa16596969defb281ebb86e96df346d62be6fd853d620/jiter-0.16.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4444a83f946605990c98f625cdd3d2725bfb818158760c5748c653170a20e0e", size = 362573, upload-time = "2026-06-29T13:03:18.781Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0b/ace4354da061ee38844a0c27dc2c21eecd27aea119e8da324bea987522d0/jiter-0.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a23f0e4f957e1be65752d2dfac9a5a06b1917af8dc85deb639c3b9d02e31290", size = 457979, upload-time = "2026-06-29T13:03:20.293Z" }, + { url = "https://files.pythonhosted.org/packages/55/40/c0253d3772eb9dcd8e6606ee9b2d53ec8e5b814589c47f140aa585f21eaa/jiter-0.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c22a488f7b9218e245a0025a9ba6b100e2e54700831cf4cf16833a27fba3ad01", size = 372302, upload-time = "2026-06-29T13:03:21.739Z" }, + { url = "https://files.pythonhosted.org/packages/a8/d2/4839422241aa12860ce597b20068727094ba0bc480723c74924ca5bad483/jiter-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46add52f4ad47a08bfb1219f3e673da972191489a33016edefdb5ea55bfa8c48", size = 343805, upload-time = "2026-06-29T13:03:23.384Z" }, + { url = "https://files.pythonhosted.org/packages/e2/59/e196888a05befdda7dbe299b722d56f2f6eec65402bc34c0a3306d595feb/jiter-0.16.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:9c8a956fd72c2cf1e730d01ea080341f13aa0a97a4a33b51abebe725b7ae9ca9", size = 351107, upload-time = "2026-06-29T13:03:24.815Z" }, + { url = "https://files.pythonhosted.org/packages/ec/74/4cd9e0fca65232136400354b630fbfcd2de634e22ccbb96567725981b548/jiter-0.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:561926e0573ffe4a32498420a76d64b16c513e1ab413b9d28158a8764ac701e5", size = 388441, upload-time = "2026-06-29T13:03:26.266Z" }, + { url = "https://files.pythonhosted.org/packages/d9/8c/554691e48bc711299c0a293dd8a6179e24b2d66a54dc295421fcf64569c0/jiter-0.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:44d019fa8cdaf89bf29c71b39e3712143fdd0ac76725c6ef954f9957a5ea8730", size = 516354, upload-time = "2026-06-29T13:03:28.02Z" }, + { url = "https://files.pythonhosted.org/packages/a4/cb/01e9d69dc2cc6759d4f91e230b34489c4fdb2518992650633f9e20bece89/jiter-0.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0df91907609837f33341b8e6fe73b95991fdaa57caf1a0fbd343dffe826f386f", size = 547880, upload-time = "2026-06-29T13:03:29.534Z" }, + { url = "https://files.pythonhosted.org/packages/79/70/2953195f1c6ad00f49fa67e13df7e60acb3dd4f387101bc15abccddd905e/jiter-0.16.0-cp312-cp312-win32.whl", hash = "sha256:51d7b836acb0108d7c77df1742332cac2a1fa04a74d6dacec46e7091f0e91274", size = 203473, upload-time = "2026-06-29T13:03:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/05/2909a8b10699a4d560f8c502b6b2c5f3991b682b1922c1eedda242b225bd/jiter-0.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:1878349266f8ee36ecb1375cc5ba2f115f35fd9f0a1a4119e725e379126647f7", size = 196905, upload-time = "2026-06-29T13:03:32.472Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a9/6b82bb1c8d7790d602489b967b982a909e5d092875a6c2ade96444c8dfc5/jiter-0.16.0-cp312-cp312-win_arm64.whl", hash = "sha256:2ed5738ae4af18271a51a528b8811b0cbfa4a1858de9d83359e4169855d6a331", size = 190618, upload-time = "2026-06-29T13:03:34.672Z" }, + { url = "https://files.pythonhosted.org/packages/91/c0/555fc60473d30d66894ba825e63615e3be7524fac23858356afa7a38906c/jiter-0.16.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:41977aa5654023948c2dae2a81cbf9c43343954bef1cd59a154dd15a4d84c195", size = 306203, upload-time = "2026-06-29T13:03:36.243Z" }, + { url = "https://files.pythonhosted.org/packages/d0/2b/c3eaf16f5d7c9bad66ea32f40a95bd169b29a91217fcc7f081375157e99c/jiter-0.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d28bb3c26762358dadf3e5bf0bccd29ae987d65e6988d2e6f49829c76b003c09", size = 306489, upload-time = "2026-06-29T13:03:37.846Z" }, + { url = "https://files.pythonhosted.org/packages/96/3f/02fdfc6705cad96127d883af5c34e4867f554f29ec7705ec1a46156400a9/jiter-0.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0542a7189c26920778658fc8fcf2af8bae05bae9924577f71804acef37996536", size = 335453, upload-time = "2026-06-29T13:03:39.221Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a6/e4bda5920d4b0d7c5dfb7174ce4a6b2e4d3e11c9162c452ef0eab4cdbdbd/jiter-0.16.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8fb8de1e23a0cb2a7f53c335049c7b72b6db41aa6227cdcc0972a1de5cb39450", size = 361625, upload-time = "2026-06-29T13:03:40.597Z" }, + { url = "https://files.pythonhosted.org/packages/b7/97/4e6b59b2c6e55cbb3e183595f81ad65dcfb21c915fee5e19e335df21bc55/jiter-0.16.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b72d0b2990ca754a9102779ac98d8597b7cb31678958562214a007f909eab78e", size = 456958, upload-time = "2026-06-29T13:03:42.074Z" }, + { url = "https://files.pythonhosted.org/packages/15/e0/97e9557686d2f94f4b93786eccb7eed28e9228ad132ea8237f44727314a7/jiter-0.16.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5f91b1c27fc22a57993d5a5cb8a627cb8ed4b10502716fac1ffbfe1d19d84e8", size = 372017, upload-time = "2026-06-29T13:03:43.658Z" }, + { url = "https://files.pythonhosted.org/packages/0f/94/db768b6938e0df35c86beeba3dfbbb025c9ee5c19e1aa271f2396e50864d/jiter-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c682bea068a90b764577bdb78a60a4c1d1606daf9cd4c893832a37c7cc9d9026", size = 343320, upload-time = "2026-06-29T13:03:45.226Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d6/5a59d938244a30735fe62d9433fd325f9021ea29d89780ea4596ea93bc89/jiter-0.16.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:8d031aabecc4f1b6276adfb42e3aabb77c89d468bf616600e8d3a11328929053", size = 350520, upload-time = "2026-06-29T13:03:46.671Z" }, + { url = "https://files.pythonhosted.org/packages/67/f8/c4a857f49c9af125f6bbcac7e3eee7f7978ed89682833062e2dbf62576b1/jiter-0.16.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eab2cd170150e70153de16896a1774e3a1dca80154c56b54d7a812c479a7165e", size = 387550, upload-time = "2026-06-29T13:03:48.361Z" }, + { url = "https://files.pythonhosted.org/packages/8b/d6/5fbc2f7d6b67b754caa61a993a2e626e815dec47ffc2f9e35f01adfebec7/jiter-0.16.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:6edb63a46e65a82c26800a868e49b2cac30dd5a4218b88d74bc2c848c8ad60bb", size = 515424, upload-time = "2026-06-29T13:03:49.881Z" }, + { url = "https://files.pythonhosted.org/packages/ed/54/284f0164b64a5fed915fea6ba7e9ba9b3d8d37c67d59cf2e3bb99d45cdfe/jiter-0.16.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:659039cc50b5addcc35fcc87ae2c1833b7c0a8e5326ef631a75e4478447bcf84", size = 546981, upload-time = "2026-06-29T13:03:51.363Z" }, + { url = "https://files.pythonhosted.org/packages/13/c5/2a467585a576594384e1d2c43e1224deaafc085f24e243529cf98beef8e1/jiter-0.16.0-cp313-cp313-win32.whl", hash = "sha256:c9c53be232c2e206ef9cdbad81a48bfa74c3d3f08bcf8124630a8a748aad993e", size = 202853, upload-time = "2026-06-29T13:03:53.015Z" }, + { url = "https://files.pythonhosted.org/packages/88/6a/de61d04b9eec69c71719968d2f716532a3bc121170c44a39e14979c6be81/jiter-0.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:baad945ed47f163ad833314f8e3288c396118934f94e7bbb9e243ce4b341a4fd", size = 196160, upload-time = "2026-06-29T13:03:54.447Z" }, + { url = "https://files.pythonhosted.org/packages/19/4b/b390ed59bafb3f31d008d1218578f10327714484b334439947f7e5b11e7f/jiter-0.16.0-cp313-cp313-win_arm64.whl", hash = "sha256:3c1fd2dbe1b0af19e987f03fe66c5f5bd105a2229c1aff4ab14890b24f41d21a", size = 189862, upload-time = "2026-06-29T13:03:55.754Z" }, + { url = "https://files.pythonhosted.org/packages/a7/89/bc4f1b57d5da938fd344a466396541e586d161320d70bffd929aaafcd8f4/jiter-0.16.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b2c61484666ad42726029af0c00ef4541f0f3b5cdc550221f56c2343208018ee", size = 308239, upload-time = "2026-06-29T13:03:57.205Z" }, + { url = "https://files.pythonhosted.org/packages/65/7a/c415453e5213001bf3b411ff65dec3d303b0e76a4a2cfea9768cd4960994/jiter-0.16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:63efadc657488f45db1c676d81e704cac2abf3fdb892def1faea61db053127e2", size = 308928, upload-time = "2026-06-29T13:03:58.643Z" }, + { url = "https://files.pythonhosted.org/packages/11/fc/1f4fb7ebf9a724c7741994f4aae18fba1e2f3133df14521a79194952c34a/jiter-0.16.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf0d73f50e7b6935677854f6e8e31d499ca7064dd24734f703e060f5b237d883", size = 336998, upload-time = "2026-06-29T13:04:00.071Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8d/72cadaac05ccfa7cc3a0a2232862e6c72443ca40cf300ba8b57f9f18b69b/jiter-0.16.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf3ea07d9bc8e7d03a9fbc051295462e6dbc295b894fd72457c3136e3e43d898", size = 362112, upload-time = "2026-06-29T13:04:01.52Z" }, + { url = "https://files.pythonhosted.org/packages/58/4a/c4b0d5f651fda90a24ffce9f8d56cde462a2e09d31ae3de3c68cef34c04e/jiter-0.16.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26798522707abb47d767db536e4148ceac1b14446bf028ee85e579a2e043cfe5", size = 459807, upload-time = "2026-06-29T13:04:03.214Z" }, + { url = "https://files.pythonhosted.org/packages/80/58/ef77879ea9aa56b50824edc5a445e226422c7a8d211f3fd2a56bcb9493cf/jiter-0.16.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc837c1b9631be10abfe0191537fe8009838204cec7e44827401ace390ddb567", size = 373181, upload-time = "2026-06-29T13:04:04.629Z" }, + { url = "https://files.pythonhosted.org/packages/49/2e/ffbc3f254e4d8a66da3062c624a7df4b7c2b2cf9e1fe43cf394b3e104041/jiter-0.16.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49060fd70737fad59d33ba9dcc0d83247dc9e77187de26053a19c16c9f32bd69", size = 344927, upload-time = "2026-06-29T13:04:06.067Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f6/0be5dc6d64a89f80aa8fec984f94dedb2973e251edcae55841d60786d578/jiter-0.16.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:adbb8edeadd431bc4477879d5d371ece7cb1334486584e0f252656dd7ffada29", size = 352754, upload-time = "2026-06-29T13:04:07.477Z" }, + { url = "https://files.pythonhosted.org/packages/da/6e/7d31243b3b91cd261dd19e9d3557fc3251a80883d3d8049c86174e7ab7af/jiter-0.16.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:31aaee5b80f672c1dc21272bcfb9cbdcfc1ea04ff50f00ed5af500b80c44fa93", size = 390553, upload-time = "2026-06-29T13:04:08.92Z" }, + { url = "https://files.pythonhosted.org/packages/25/33/51ae371fde3c88897520f62b4d5f8b27ad7103e2bb10812ff52195609853/jiter-0.16.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:6722bcef4ffc86c835574b1b2fac6b33b9fb4a889c781e67950e891591f3c55a", size = 516900, upload-time = "2026-06-29T13:04:10.407Z" }, + { url = "https://files.pythonhosted.org/packages/a0/45/6449b3d123ea439ba79507c657288f461d55049e7bcbdc2cf8eb8210f491/jiter-0.16.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:5ab4f50ff971b611d656554ea10b75f80097392c827bc32923c6eeb6386c8b00", size = 548754, upload-time = "2026-06-29T13:04:12.046Z" }, + { url = "https://files.pythonhosted.org/packages/9b/e7/fd2fb11ae3e2649333da3aa170d04d7b3000bbdc3b270f6513382fdf4e04/jiter-0.16.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl", hash = "sha256:710cc51d4ebdcd3c1f70b232c1db1ea1344a075770422bbd4bede5708335acbe", size = 122381, upload-time = "2026-06-29T13:04:13.413Z" }, + { url = "https://files.pythonhosted.org/packages/26/80/f0b147a62c315a164ed2168908286ca302310824c218d3aae52b06c0c9a9/jiter-0.16.0-cp314-cp314-win32.whl", hash = "sha256:57b37fc887a32d44798e4d8ebfa7c9683ff3da1d5bf38f08d1bb3573ccb39106", size = 204578, upload-time = "2026-06-29T13:04:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/5e/e6/4758a14304b4523a6f5adb2419340086aa3593bd4327c2b25b5948a90548/jiter-0.16.0-cp314-cp314-win_amd64.whl", hash = "sha256:cbd18dd5e2df96b580487b5745adf57ef64ad89ba2d9662fc3c19386acce7db8", size = 198154, upload-time = "2026-06-29T13:04:16.272Z" }, + { url = "https://files.pythonhosted.org/packages/26/be/41fa54a2e7ea41d6c99f1dc5b1f0fd4cb474680304b5d268dd518e81da3a/jiter-0.16.0-cp314-cp314-win_arm64.whl", hash = "sha256:a32d2027a9fa67f109ff245a3252ece3ccc32cc56703e1deab6cc846a59e0585", size = 191458, upload-time = "2026-06-29T13:04:17.707Z" }, + { url = "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2577196f4474ef3fc4779a088a23b0897bbf86f9ea3679c372d45b8383b43207", size = 316739, upload-time = "2026-06-29T13:04:19.663Z" }, + { url = "https://files.pythonhosted.org/packages/2d/95/49461034d5388196d3dabf98748935f017b7785d8f3f5349f834bcc4ed0d/jiter-0.16.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e89e008a93c01104161c75b4988e58716b01d62307ebfe161e52a56d2a818", size = 340911, upload-time = "2026-06-29T13:04:21.257Z" }, + { url = "https://files.pythonhosted.org/packages/cd/97/a4369f2fb82cb3dda13b98622f31249b2e014b223fe64ee534413ad72294/jiter-0.16.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e2e9efbe042210df657bade597f66d6d75723e3d8f45a12ea6d8167ff8bbce3", size = 361747, upload-time = "2026-06-29T13:04:22.677Z" }, + { url = "https://files.pythonhosted.org/packages/28/51/49b6ed456261646e1906016a6760367a28aacd3c24805e4e5fe64116c1db/jiter-0.16.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f4d9e473a5ce7d27fef8b848df4dc16e283893d3f53b4a585e72c9595f3c284", size = 460225, upload-time = "2026-06-29T13:04:24.441Z" }, + { url = "https://files.pythonhosted.org/packages/33/b5/5689aff4f66c5b60be63106e591dbfcba2190df97d2c9c7cf052361ddb98/jiter-0.16.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d30a4a1c87713060c8d1cc59a7b6c8fb6b8ef0a6900368014c76c87922a2929", size = 373169, upload-time = "2026-06-29T13:04:25.884Z" }, + { url = "https://files.pythonhosted.org/packages/a2/96/3ae1b85ee0d6d6cab254fb7f8da018272b932bbf2d69b07e98aa2a96c746/jiter-0.16.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae96332410f866e5900d809298b1ed82735932986c672495f9701daacd80620", size = 350332, upload-time = "2026-06-29T13:04:27.302Z" }, + { url = "https://files.pythonhosted.org/packages/15/32/c99d7bafd78986556c95bf60ce84c6cc98786eac56066c12d7f828bb6747/jiter-0.16.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:da3d7ec75dc83bb18bca888b5edfae0656a26849056c59e05a7728badd17e7af", size = 353377, upload-time = "2026-06-29T13:04:28.731Z" }, + { url = "https://files.pythonhosted.org/packages/0e/4b/f99a8e571287c3dec766bcc18528bbe8e8fb5365522ab5e6d64c93e87066/jiter-0.16.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ee6162b77d49a9939229df666dfa8af3e656b6701b54c4c84966d740e189264e", size = 387746, upload-time = "2026-06-29T13:04:30.319Z" }, + { url = "https://files.pythonhosted.org/packages/75/69/c78a5b3f71040e34eb5917df26fb7ae9a2174cad1ccbf277512507c53a6e/jiter-0.16.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:63ffdbdae7d4499f4cda14eadc12ddcabef0fc0c081191bdc2247489cb698077", size = 517292, upload-time = "2026-06-29T13:04:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f7/095b38eda4c70d03651c403f29a5590f16d12ddc5d544aac9f9cddf72277/jiter-0.16.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:a111256a7193bea0759267b10385e5870949c239ed7b6ddbaaf57573edb38734", size = 549259, upload-time = "2026-06-29T13:04:33.721Z" }, + { url = "https://files.pythonhosted.org/packages/2e/c5/6a0207d90e5f656d95af98ebd0934f382d37674416f215aeda2ff8063e51/jiter-0.16.0-cp314-cp314t-win32.whl", hash = "sha256:de5ba8763e56b793561f43bed197c9ea55776daa5e9a6b91eed68a909bc9cdbf", size = 206523, upload-time = "2026-06-29T13:04:35.068Z" }, + { url = "https://files.pythonhosted.org/packages/a5/31/c757d5f30a8980fd945ce7b98be10be9e4ff59c7c42f5fd86804c2e87db8/jiter-0.16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b8a3f9a6008048fe9def7bf465180564a6e458047d2ce499149cfbe73c3ae9db", size = 200366, upload-time = "2026-06-29T13:04:36.61Z" }, + { url = "https://files.pythonhosted.org/packages/7c/a2/d88de6d313d734a544a7901353ad5db67cb38dcfcd91713b7979dafc345d/jiter-0.16.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0fa25b09b13075c46f5bc174f2690525a925a4fc2f7c82969a2bbabff22386ce", size = 190516, upload-time = "2026-06-29T13:04:38.004Z" }, + { url = "https://files.pythonhosted.org/packages/06/d3/8e278946d43eeca2585b4dd0834a887cd71136329b837f3a16ed86a8b4b0/jiter-0.16.0-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:850ccb1d7eedb4200f4014b1c0e8a577de114fc3cd88faad646dcc9bc4bb12ad", size = 304518, upload-time = "2026-06-29T13:05:00.172Z" }, + { url = "https://files.pythonhosted.org/packages/72/43/28d4ef495028bf0506a413d4db3f4eb3e7288a382e0f065f306a17bbeb5e/jiter-0.16.0-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:e34e97bda77eb63242a410243c071e28ac7e0d8c0948c5ee658498690a4b2f2f", size = 310207, upload-time = "2026-06-29T13:05:02.123Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ca/c366b1012da1d640de975d9683acd44e4d150d9068845d0ca2610435253f/jiter-0.16.0-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7dc85ea77d4abbae8bad0d3538678aedee75bceec4e2f6c8dfb1c74772e5aa5", size = 342771, upload-time = "2026-06-29T13:05:03.55Z" }, + { url = "https://files.pythonhosted.org/packages/16/52/50cc4056fc1ae02e7154704e7ecc89df0afb8300222cfe8a52d3f67e4730/jiter-0.16.0-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17ca7fae79f6d99cd9a042b75f917eaada7b895cfc7dd2ee3a16089dcaec7a85", size = 346468, upload-time = "2026-06-29T13:05:05.452Z" }, + { url = "https://files.pythonhosted.org/packages/98/ab/664fd8c4be028b2bedd3d2ff08769c4ede23d0dbc87a77c62384a0515b5d/jiter-0.16.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:f17d61a28b4b3e0e3e2ba98490c70501403b4d196f78732439160e7fd3678127", size = 303106, upload-time = "2026-06-29T13:05:07.118Z" }, + { url = "https://files.pythonhosted.org/packages/1a/07/421f1d5b65493a76e16027b848aba6a7d28073ae75944fa4289cc914d39f/jiter-0.16.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:96e38eea538c8ddf853a35727c7be0741c76c13f04148ac5c116222f50ece3b3", size = 304658, upload-time = "2026-06-29T13:05:08.708Z" }, + { url = "https://files.pythonhosted.org/packages/0a/db/bba1155f01a01c3c37a89425d571da751bbedf5c54247b831a04cb971798/jiter-0.16.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d284fb8d94d5855d60c44fefcab4bf966f1da6fada73992b01f6f0c9bc0c6702", size = 339719, upload-time = "2026-06-29T13:05:10.41Z" }, + { url = "https://files.pythonhosted.org/packages/78/f7/18a1afcd64f35314b68c1f23afcd9994d0bc13e65cc77517afff4e83986d/jiter-0.16.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64d613743df53199b1aa256a7d328340da6d7078aac7705a7db9d7a791e9cfd2", size = 343885, upload-time = "2026-06-29T13:05:12.087Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce", size = 90630, upload-time = "2026-01-07T13:41:05.306Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, +] + +[[package]] +name = "mcp" +version = "1.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "httpx" }, + { name = "httpx-sse" }, + { name = "jsonschema" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "python-multipart" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "sse-starlette" }, + { name = "starlette" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, + { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6e/77/9450b8f251a13affb6281997d0523c4615f8a8b35d0b21ff30db3a5aac9d/mcp-1.28.1.tar.gz", hash = "sha256:d51e36a5f5644faea4f85ea649bfffa6bc6c26770d42798ad6a3de3d2ba69683", size = 638501, upload-time = "2026-06-26T12:57:29.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/5e/d118fce19f87a2e7d8101c35c8ae0ec289098a4df0ff244cec23e415aca0/mcp-1.28.1-py3-none-any.whl", hash = "sha256:2726bca5e7193f61c5dde8b12500a6de2d9acf6d1a1c0be9e8c2e706437991df", size = 222620, upload-time = "2026-06-26T12:57:27.218Z" }, +] + +[[package]] +name = "msal" +version = "1.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/99/d840198ecf6e8057bbc937f129ae940404485d736cda73253bbff9537f01/msal-1.37.0.tar.gz", hash = "sha256:1b1672a33ee467c1d70b341bb16cafd51bb3c817147a95b93263794b03971bec", size = 182444, upload-time = "2026-05-29T19:49:05.561Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/b0/d807279f4b55d16d1f120d5ac4344c6e39b56732e2a224d40bded7fd67ad/msal-1.37.0-py3-none-any.whl", hash = "sha256:dd17e95a7c71bce75e8108113438ba7c4a086b3bcad4f57a8c09b7af3d753c2d", size = 123725, upload-time = "2026-05-29T19:49:04.335Z" }, +] + +[[package]] +name = "msal-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "msal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/99/5d239b6156eddf761a636bded1118414d161bd6b7b37a9335549ed159396/msal_extensions-1.3.1.tar.gz", hash = "sha256:c5b0fd10f65ef62b5f1d62f4251d51cbcaf003fcedae8c91b040a488614be1a4", size = 23315, upload-time = "2025-03-14T23:51:03.902Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/75/bd9b7bb966668920f06b200e84454c8f3566b102183bc55c5473d96cb2b9/msal_extensions-1.3.1-py3-none-any.whl", hash = "sha256:96d3de4d034504e969ac5e85bae8106c8373b5c6568e4c8fa7af2eca9dbe6bca", size = 20583, upload-time = "2025-03-14T23:51:03.016Z" }, +] + +[[package]] +name = "openai" +version = "2.45.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/60/d4219875289b11d2c2f7da93c36283da224a2e55865ed865ab64e0ce9217/openai-2.45.0.tar.gz", hash = "sha256:10d34ca9c5643bce775852fddbfc172505cb1d4de1ccd101696c3ecff358765d", size = 1109653, upload-time = "2026-07-09T18:02:44.091Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/b0/2291689e3ec4723fbf5bbf3b54afcd7b160f9ddc98ca7aedfd0132af5677/openai-2.45.0-py3-none-any.whl", hash = "sha256:5df105f5f8c9b711fcb9d06d2d3888cebc82506db216484c14a4e53cdf651777", size = 1629470, upload-time = "2026-07-09T18:02:42.21Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pydantic" +version = "2.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.46.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/fa/6d7708d2cfc1a832acb6aeb0cd16e801902df8a0f583bb3b4b527fde022e/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594", size = 2111872, upload-time = "2026-05-06T13:40:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c", size = 1948255, upload-time = "2026-05-06T13:39:12.574Z" }, + { url = "https://files.pythonhosted.org/packages/43/3a/41114a9f7569b84b4d84e7a018c57c56347dac30c0d4a872946ec4e36c46/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826", size = 1972827, upload-time = "2026-05-06T13:38:19.841Z" }, + { url = "https://files.pythonhosted.org/packages/ef/25/1ab42e8048fe551934d9884e8d64daa7e990ad386f310a15981aeb6a5b08/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04", size = 2041051, upload-time = "2026-05-06T13:38:10.447Z" }, + { url = "https://files.pythonhosted.org/packages/94/c2/1a934597ddf08da410385b3b7aae91956a5a76c635effef456074fad7e88/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e", size = 2221314, upload-time = "2026-05-06T13:40:13.089Z" }, + { url = "https://files.pythonhosted.org/packages/02/6d/9e8ad178c9c4df27ad3c8f25d1fe2a7ab0d2ba0559fad4aee5d3d1f16771/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3", size = 2285146, upload-time = "2026-05-06T13:38:59.224Z" }, + { url = "https://files.pythonhosted.org/packages/80/50/540cd3aeefc041beb111125c4bff779831a2111fc6b15a9138cda277d32c/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4", size = 2089685, upload-time = "2026-05-06T13:38:17.762Z" }, + { url = "https://files.pythonhosted.org/packages/6b/a4/b440ad35f05f6a38f89fa0f149accb3f0e02be94ca5e15f3c449a61b4bc9/pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398", size = 2115420, upload-time = "2026-05-06T13:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/99/61/de4f55db8dfd57bfdfa9a12ec90fe1b57c4f41062f7ca86f08586b3e0ac0/pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3", size = 2165122, upload-time = "2026-05-06T13:37:01.167Z" }, + { url = "https://files.pythonhosted.org/packages/f7/52/7c529d7bdb2d1068bd52f51fe32572c8301f9a4febf1948f10639f1436f5/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848", size = 2182573, upload-time = "2026-05-06T13:38:45.04Z" }, + { url = "https://files.pythonhosted.org/packages/37/b3/7c40325848ba78247f2812dcf9c7274e38cd801820ca6dd9fe63bcfb0eb4/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3", size = 2317139, upload-time = "2026-05-06T13:37:15.539Z" }, + { url = "https://files.pythonhosted.org/packages/d9/37/f913f81a657c865b75da6c0dbed79876073c2a43b5bd9edbe8da785e4d49/pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109", size = 2360433, upload-time = "2026-05-06T13:37:30.099Z" }, + { url = "https://files.pythonhosted.org/packages/c4/67/6acaa1be2567f9256b056d8477158cac7240813956ce86e49deae8e173b4/pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda", size = 1985513, upload-time = "2026-05-06T13:38:15.669Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e6/c505f83dfeda9a2e5c995cfd872949e4d05e12f7feb3dca72f633daefa94/pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33", size = 2071114, upload-time = "2026-05-06T13:40:35.416Z" }, + { url = "https://files.pythonhosted.org/packages/0f/da/7a263a96d965d9d0df5e8de8a475f33495451117035b09acb110288c381f/pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d", size = 2044298, upload-time = "2026-05-06T13:38:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2", size = 2106158, upload-time = "2026-05-06T13:38:57.215Z" }, + { url = "https://files.pythonhosted.org/packages/19/95/6195171e385007300f0f5574592e467c568becce2d937a0b6804f218bc49/pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f", size = 1951724, upload-time = "2026-05-06T13:37:02.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/bc/f47d1ff9cbb1620e1b5b697eef06010035735f07820180e74178226b27b3/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7", size = 1975742, upload-time = "2026-05-06T13:37:09.448Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/9b9a5b0306345664a2da6410877af6e8082481b5884b3ddd78d47c6013ce/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7", size = 2052418, upload-time = "2026-05-06T13:37:38.234Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b7/a65fec226f5d78fc39f4a13c4cc0c768c22b113438f60c14adc9d2865038/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712", size = 2232274, upload-time = "2026-05-06T13:38:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/68/f0/92039db98b907ef49269a8271f67db9cb78ae2fc68062ef7e4e77adb5f61/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4", size = 2309940, upload-time = "2026-05-06T13:38:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce", size = 2094516, upload-time = "2026-05-06T13:39:10.577Z" }, + { url = "https://files.pythonhosted.org/packages/22/37/a8aca44d40d737dde2bc05b3c6c07dff0de07ce6f82e9f3167aeaf4d5dea/pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987", size = 2136854, upload-time = "2026-05-06T13:40:22.59Z" }, + { url = "https://files.pythonhosted.org/packages/24/99/fcef1b79238c06a8cbec70819ac722ba76e02bc8ada9b0fd66eba40da01b/pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b", size = 2180306, upload-time = "2026-05-06T13:40:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/ae/6c/fc44000918855b42779d007ae63b0532794739027b2f417321cddbc44f6a/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458", size = 2190044, upload-time = "2026-05-06T13:40:43.231Z" }, + { url = "https://files.pythonhosted.org/packages/6b/65/d9cadc9f1920d7a127ad2edba16c1db7916e59719285cd6c94600b0080ba/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b", size = 2329133, upload-time = "2026-05-06T13:39:57.365Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cf/c873d91679f3a30bcf5e7ac280ce5573483e72295307685120d0d5ad3416/pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c", size = 2374464, upload-time = "2026-05-06T13:38:06.976Z" }, + { url = "https://files.pythonhosted.org/packages/47/bd/6f2fc8188f31bf10590f1e98e7b306336161fac930a8c514cd7bd828c7dc/pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894", size = 1974823, upload-time = "2026-05-06T13:40:47.985Z" }, + { url = "https://files.pythonhosted.org/packages/40/8c/985c1d41ea1107c2534abd9870e4ed5c8e7669b5c308297835c001e7a1c4/pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89", size = 2072919, upload-time = "2026-05-06T13:39:21.153Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ba/f463d006e0c47373ca7ec5e1a261c59dc01ef4d62b2657af925fb0deee3a/pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a", size = 2027604, upload-time = "2026-05-06T13:39:03.753Z" }, + { url = "https://files.pythonhosted.org/packages/51/a2/5d30b469c5267a17b39dec53208222f76a8d351dfac4af661888c5aee77d/pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008", size = 2106306, upload-time = "2026-05-06T13:37:48.029Z" }, + { url = "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4", size = 1951906, upload-time = "2026-05-06T13:37:17.012Z" }, + { url = "https://files.pythonhosted.org/packages/03/d5/fd02da45b659668b05923b17ba3a0100a0a3d5541e3bd8fcc4ecb711309e/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76", size = 1976802, upload-time = "2026-05-06T13:37:35.113Z" }, + { url = "https://files.pythonhosted.org/packages/21/f2/95727e1368be3d3ed485eaab7adbd7dda408f33f7a36e8b48e0144002b91/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3", size = 2052446, upload-time = "2026-05-06T13:37:12.313Z" }, + { url = "https://files.pythonhosted.org/packages/9c/86/5d99feea3f77c7234b8718075b23db11532773c1a0dbd9b9490215dc2eeb/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76", size = 2232757, upload-time = "2026-05-06T13:39:01.149Z" }, + { url = "https://files.pythonhosted.org/packages/d2/3a/508ac615935ef7588cf6d9e9b91309fdc2da751af865e02a9098de88258c/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4", size = 2309275, upload-time = "2026-05-06T13:37:41.406Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/41db9de19d7987d6b04715a02b3b40aea467000275d9d758ffaa31af7d50/pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a", size = 2094467, upload-time = "2026-05-06T13:39:18.847Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e2/f35033184cb11d0052daf4416e8e10a502ea2ac006fc4f459aee872727d1/pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262", size = 2134417, upload-time = "2026-05-06T13:40:17.944Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7b/6ceeb1cc90e193862f444ebe373d8fdf613f0a82572dde03fb10734c6c71/pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e", size = 2179782, upload-time = "2026-05-06T13:40:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/c8d7773ede6af08036423a00ae0ceffce266c3c52a096c435d68c896083f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd", size = 2188782, upload-time = "2026-05-06T13:36:51.018Z" }, + { url = "https://files.pythonhosted.org/packages/59/31/0c864784e31f09f05cdd87606f08923b9c9e7f6e51dd27f20f62f975ce9f/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be", size = 2328334, upload-time = "2026-05-06T13:40:37.764Z" }, + { url = "https://files.pythonhosted.org/packages/c2/eb/4f6c8a41efa30baa755590f4141abf3a8c370fab610915733e74134a7270/pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d", size = 2372986, upload-time = "2026-05-06T13:39:34.152Z" }, + { url = "https://files.pythonhosted.org/packages/5b/24/b375a480d53113860c299764bfe9f349a3dc9108b3adc0d7f0d786492ebf/pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb", size = 1973693, upload-time = "2026-05-06T13:37:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/cff247591966f2d22ec8c003cd7587e27b7ba7b81ab2fb888e3ab75dc285/pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292", size = 2071819, upload-time = "2026-05-06T13:38:49.139Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1a/f4aee670d5670e9e148e0c82c7db98d780be566c6e6a97ee8035528ca0b3/pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d", size = 2027411, upload-time = "2026-05-06T13:40:45.796Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, + { url = "https://files.pythonhosted.org/packages/ee/a4/73995fd4ebbb46ba0ee51e6fa049b8f02c40daebb762208feda8a6b7894d/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c", size = 2111589, upload-time = "2026-05-06T13:37:10.817Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7f/f37d3a5e8bfcc2e403f5c57a730f2d815693fb42119e8ea48b3789335af1/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b", size = 1944552, upload-time = "2026-05-06T13:36:56.717Z" }, + { url = "https://files.pythonhosted.org/packages/15/3c/d7eb777b3ff43e8433a4efb39a17aa8fd98a4ee8561a24a67ef5db07b2d6/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b", size = 1982984, upload-time = "2026-05-06T13:39:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/70b9f40170a81afd55ca26c9b2acb25c20d64bcfbf888fafecb3ba077d4c/pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea", size = 2138417, upload-time = "2026-05-06T13:39:45.476Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1d/8987ad40f65ae1432753072f214fb5c74fe47ffbd0698bb9cbbb585664f8/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7", size = 2095527, upload-time = "2026-05-06T13:39:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/64/d3/84c282a7eee1d3ac4c0377546ef5a1ea436ce26840d9ac3b7ed54a377507/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df", size = 1936024, upload-time = "2026-05-06T13:40:15.671Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ca/eac61596cdeb4d7e174d3dc0bd8a6238f14f75f97a24e7b7db4c7e7340a0/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526", size = 1990696, upload-time = "2026-05-06T13:38:34.717Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c3/7c8b240552251faf6b3a957db200fcfbbcec36763c050428b601e0c9b83b/pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0", size = 2147590, upload-time = "2026-05-06T13:39:29.883Z" }, + { url = "https://files.pythonhosted.org/packages/11/cb/428de0385b6c8d44b716feba566abfacfbd23ee3c4439faa789a1456242f/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0", size = 2112782, upload-time = "2026-05-06T13:37:04.016Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b5/6a17bdadd0fc1f170adfd05a20d37c832f52b117b4d9131da1f41bb097ce/pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7", size = 1952146, upload-time = "2026-05-06T13:39:43.092Z" }, + { url = "https://files.pythonhosted.org/packages/2a/dc/03734d80e362cd43ef65428e9de77c730ce7f2f11c60d2b1e1b39f0fbf99/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2", size = 2134492, upload-time = "2026-05-06T13:36:58.124Z" }, + { url = "https://files.pythonhosted.org/packages/de/df/5e5ffc085ed07cc22d298134d3d911c63e91f6a0eb91fe646750a3209910/pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9", size = 2156604, upload-time = "2026-05-06T13:37:49.88Z" }, + { url = "https://files.pythonhosted.org/packages/81/44/6e112a4253e56f5705467cbab7ab5e91ee7398ba3d56d358635958893d3e/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf", size = 2183828, upload-time = "2026-05-06T13:37:43.053Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ad/5565071e937d8e752842ac241463944c9eb14c87e2d269f2658a5bd05e98/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30", size = 2310000, upload-time = "2026-05-06T13:37:56.694Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c3/66883a5cec183e7fba4d024b4cbbe61851a63750ef606b0afecc46d1f2bf/pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc", size = 2361286, upload-time = "2026-05-06T13:40:05.667Z" }, + { url = "https://files.pythonhosted.org/packages/4b/2d/69abac8f838090bbecd5df894befb2c2619e7996a98ddb949db9f3b93225/pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983", size = 2193071, upload-time = "2026-05-06T13:38:08.682Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/b5/8f48e906c3e0205276e8bd8cb7512217a87b2685304d64be27cad5b3019f/pydantic_settings-2.14.2.tar.gz", hash = "sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f", size = 237700, upload-time = "2026-06-19T13:44:56.324Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/c1/6e422f34e569cf8e18df68d1939c81c099d2b61e4f7d9621c8a77560799c/pydantic_settings-2.14.2-py3-none-any.whl", hash = "sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440", size = 61715, upload-time = "2026-06-19T13:44:55.02Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728", size = 31274, upload-time = "2026-05-21T19:54:35.362Z" }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.32" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/42/55c32bb9b12693c092ad250a0e82edb5b31ddeda6eb772de5f308b3804ad/python_multipart-0.0.32.tar.gz", hash = "sha256:be54b7f3fa167bb83e4fcd936b887b708f4e57fe75911c02aebf53efaf8d938e", size = 46881, upload-time = "2026-06-04T16:18:58.647Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl", hash = "sha256:ff6d3f776f16878c894e52e107296ffc890e913c611b1a4ec6c44e2821fe2e23", size = 30042, upload-time = "2026-06-04T16:18:57.319Z" }, +] + +[[package]] +name = "pywin32" +version = "312" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/f5/10a6e845a00fc5e7afd0a988b744f403d4d57162a28d160a093c4d9322f0/pywin32-312-cp311-cp311-win32.whl", hash = "sha256:17948aeadbdb091f0ced6ef0841620794e68327b94ee415571c1203594b7215c", size = 6362659, upload-time = "2026-06-04T07:49:21.349Z" }, + { url = "https://files.pythonhosted.org/packages/35/c4/dcd2d62b5944b6d5db53413a5899016ccd57ffcb7278f3f81655d25d2027/pywin32-312-cp311-cp311-win_amd64.whl", hash = "sha256:d11417d84412f859b722fad0841b3614459ed0047f7542d8362e77884f6b6e8a", size = 6928825, upload-time = "2026-06-04T07:49:23.934Z" }, + { url = "https://files.pythonhosted.org/packages/b7/56/3cbb433fe4501cdba2eb9040f56a4e1a8243faa4186b25295564d1a7a79d/pywin32-312-cp311-cp311-win_arm64.whl", hash = "sha256:b2200a054ca6d6625c4842fc56a4976a4b47f96b73dbe5538c3f813a80359f47", size = 6721875, upload-time = "2026-06-04T07:49:26.416Z" }, + { url = "https://files.pythonhosted.org/packages/83/ff/32aa7d2ed0ab12b323aaa64f9b75e6ad4f8fd09f9ccfc28c79414d46838d/pywin32-312-cp312-cp312-win32.whl", hash = "sha256:dab4f65ac9c4e48400a2a0530c46c3c579cd5905ecd11b80692373915269208b", size = 6371877, upload-time = "2026-06-04T07:49:28.836Z" }, + { url = "https://files.pythonhosted.org/packages/03/d9/77040d3b43df3f3be32ea289433d660d2727f5ba327bc73be835127d9d60/pywin32-312-cp312-cp312-win_amd64.whl", hash = "sha256:b457f6d628a47e8a7346ce22acb7e1a46a4a78b52e1d17e1af56871bd19a93bc", size = 6914841, upload-time = "2026-06-04T07:49:31.85Z" }, + { url = "https://files.pythonhosted.org/packages/e3/cc/7b1ec671775756020a0ee7f4feeaf3c568f0ab86bd3900088cf986937a92/pywin32-312-cp312-cp312-win_arm64.whl", hash = "sha256:6017c58e12f6809fbb0555b75df144c2922a9ffd18e4b9b5afa863b6c1a9d950", size = 6727901, upload-time = "2026-06-04T07:49:34.244Z" }, + { url = "https://files.pythonhosted.org/packages/2d/41/12fbfd7f36ed2146d8bc9de96c2741296bf0d490b98508496cff322e274c/pywin32-312-cp313-cp313-win32.whl", hash = "sha256:7a27df850933d16a8eabfbaeb73d52b273e2da667f80d70b01a89d1f6828d02c", size = 6370184, upload-time = "2026-06-04T07:49:36.253Z" }, + { url = "https://files.pythonhosted.org/packages/ba/db/36a78e3403099d31d9746d13fdcde5accc43c1155f375a34d15983a479a7/pywin32-312-cp313-cp313-win_amd64.whl", hash = "sha256:c53e878d15a1c44788082bfe712a905433473aa38f86375b7cf8b45e3acbaaf9", size = 6914298, upload-time = "2026-06-04T07:49:38.876Z" }, + { url = "https://files.pythonhosted.org/packages/84/37/c1697194092b76de9ed47ca124323f02c57ffc8a45c06f88a3d5acaf01eb/pywin32-312-cp313-cp313-win_arm64.whl", hash = "sha256:59aba5d5940842075343a5ddc6b11f1cdf0d1567fe745290359dfbcc7c2eb831", size = 6727640, upload-time = "2026-06-04T07:49:41.083Z" }, + { url = "https://files.pythonhosted.org/packages/fc/2b/1f3cded5822fd49c02f40544cbb5f58c7cfd6b1694869fd476cb6170ee97/pywin32-312-cp314-cp314-win32.whl", hash = "sha256:a77a90fbb6881238d2ca9c6fd797b25817f3768fe78d214a90137ff055a75f5b", size = 6468928, upload-time = "2026-06-04T07:49:43.188Z" }, + { url = "https://files.pythonhosted.org/packages/21/82/3bf86d2e2808902013132e1ce905a7da0da53790f3836c64bf44d55e24f3/pywin32-312-cp314-cp314-win_amd64.whl", hash = "sha256:a4dd3a848290ef724347b19f301045831d8e802fa4464f491b98b1e0a081432e", size = 7024157, upload-time = "2026-06-04T07:49:45.34Z" }, + { url = "https://files.pythonhosted.org/packages/a4/0e/73f6d6800b4f27655abd9e9f6aaeaefcddb2b946e4674efa2bab184a7f7b/pywin32-312-cp314-cp314-win_arm64.whl", hash = "sha256:9fce94568364e0155e6dfb781ac5d95903be8baf28670632beab1b523f300daa", size = 6839598, upload-time = "2026-06-04T07:49:47.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/61/caa39686032d2ebdd04ff0ab5cbe163126c0066d98e00c9018646e42393b/pywin32-312-cp315-cp315-win32.whl", hash = "sha256:5c1fbe4a937a73ae9297384a3da38518cbc694c68ad8a809b2e19acd350f03ed", size = 6471159, upload-time = "2026-06-04T07:49:50.035Z" }, + { url = "https://files.pythonhosted.org/packages/0f/cd/7e1de64a4a6f69c04214169657ccab0d93a670ea50e35eb8f489d7378249/pywin32-312-cp315-cp315-win_amd64.whl", hash = "sha256:c2f03a0f73f804a13c2735b99392b0cd426bb4f2c4d0178e5ac966a0f21618d5", size = 7025293, upload-time = "2026-06-04T07:49:54.857Z" }, + { url = "https://files.pythonhosted.org/packages/23/ed/4532e9388e65fa16b46776ef47ad631a64eda1631884488af707666350ed/pywin32-312-cp315-cp315-win_arm64.whl", hash = "sha256:a8597d28f267b39074aef51fa593530082b39cbe5a074226096857b1fed2dfb9", size = 6840337, upload-time = "2026-06-04T07:49:57.531Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766, upload-time = "2025-10-13T15:30:47.625Z" }, +] + +[[package]] +name = "requests" +version = "2.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, +] + +[[package]] +name = "rpds-py" +version = "2026.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/2a/9618a122aeb2a169a28b03889a2995fe297588964333d4a7d67bdf46e147/rpds_py-2026.6.3.tar.gz", hash = "sha256:1cebd1337c242e4ec2293e541f712b2da849b29f48f0c293684b71c0632625d4", size = 64051, upload-time = "2026-06-30T07:17:53.009Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/1f/a2dca5ffdbf1d475ffc4e80e4d5d720ff3a00f691795910116960ee12511/rpds_py-2026.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7b689145a1485c335569bd056464f3243a29af7ed3871c7be31ad624ba239bc7", size = 342174, upload-time = "2026-06-30T07:14:54.821Z" }, + { url = "https://files.pythonhosted.org/packages/4d/dc/323d08583c0832911768663d1944f0107fcd4088704858d84b5e06d105a0/rpds_py-2026.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:db08f45aecde626498fb3df07bcf6d2ec040af42e859a4f5040d79c200342911", size = 345513, upload-time = "2026-06-30T07:14:56.515Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2a/e31989834d18d2f26ec1d2774c5b1eb3331df4ea8ada525175294c94b48a/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acc992ab27b15f852c76755eb2ab7dce86585ddadba6fa5946e58556088845b4", size = 373783, upload-time = "2026-06-30T07:14:57.736Z" }, + { url = "https://files.pythonhosted.org/packages/87/fe/e80107ee3639585c9941c17d6a42cd65325022f656c023191fce78c324c8/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f88d653e7b3b779d71ae7454e20dcc9b6bae903f33c269db9f2be41bda3f261", size = 378316, upload-time = "2026-06-30T07:14:59.077Z" }, + { url = "https://files.pythonhosted.org/packages/22/6f/81e3adf81acfb6fa694de2a6e4e7d8863121e3e0799e0a7725e6cf5679c4/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e52655eaf81e32593abedaa4bfe33170c8cfedf3365ed9be6e11e07f148f0278", size = 499423, upload-time = "2026-06-30T07:15:00.488Z" }, + { url = "https://files.pythonhosted.org/packages/2d/9a/41263969df0ce3d9af2a96d5005a288200af1989aed3354bfceb5fc0b21f/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dfcc8b909769d19db55c7cc9541eb64b9b774b1057ffffb4f1048070475bb9f9", size = 386077, upload-time = "2026-06-30T07:15:01.911Z" }, + { url = "https://files.pythonhosted.org/packages/5e/19/7e98f468bd50346faff5b10e5297374b443bfdddacc8e9fbc65984539597/rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c1255b302953c86a486b81d330d5ee1d5bd937691ce271b6be0ef0e299eaab7", size = 371315, upload-time = "2026-06-30T07:15:03.317Z" }, + { url = "https://files.pythonhosted.org/packages/99/3c/2b973b4d371906a134b03decfea7f5d9835a2c6d263454392e15b64b5b18/rpds_py-2026.6.3-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:8d2294a31386bfa251d8c8a39472beee17db67d4f1a6eabea665d35c9a4461c3", size = 383502, upload-time = "2026-06-30T07:15:04.627Z" }, + { url = "https://files.pythonhosted.org/packages/98/2a/12e2799500af0a307bca76b63361c51f9fe479223561489c29eea1f2ee41/rpds_py-2026.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8f23ead891a3b762f35ab3b04623da7056545b48aa60d59957e6789914545da", size = 402673, upload-time = "2026-06-30T07:15:05.856Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e3/21e5872d165fe08be4f229e3d5ee9d90019c0bf0e5538de60dbd54009450/rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:421aba32367055614287a4292b6a17f1939c9452299f7a0209c117e990b646d4", size = 549964, upload-time = "2026-06-30T07:15:07.159Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d0/5ee0fe36844297de8123bee27bc12078c1a7416ad9f1b8a8ca18d6b0c0ac/rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1e5822dfc2f0d4ab7e745eaa6d85945069329beeccef965af3f3bb26058fcab6", size = 615446, upload-time = "2026-06-30T07:15:08.531Z" }, + { url = "https://files.pythonhosted.org/packages/b1/80/1ea5873cb683f2fbe5f21b23ea1f6d179ead19f3c5b249b7eb5dca568ef2/rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:83e35b57523816c8613fd0776b40cd8bb9f596b37ddd2692eb4a6bb5ab2f8c93", size = 576975, upload-time = "2026-06-30T07:15:09.97Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e1/90ef639217a5ddb15b7f4f61b1c33911fd044ad03c311bafdd2bcab85582/rpds_py-2026.6.3-cp311-cp311-win32.whl", hash = "sha256:de3eceba0b683bcbb1ab93da016d0270df1f9ae7be716b40214c5dafac6ea45a", size = 204453, upload-time = "2026-06-30T07:15:11.324Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b7/b7a1695d7af36f521fb11e80d6d3adbd744f73b921859bd3c2a2c0dc706f/rpds_py-2026.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:2c54a076ca4d370980ab57bc0e31df57bbe8d41340436a90ef8b1219a3cbb127", size = 223219, upload-time = "2026-06-30T07:15:12.476Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a2/145afacf796e4506062825941176ad9445c2dcf2b3b6a1f13d3030a15e19/rpds_py-2026.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:168c733a7112e071bb7a66460e667edfcff06c017a3c523f7a8a8e08d0140804", size = 219137, upload-time = "2026-06-30T07:15:13.631Z" }, + { url = "https://files.pythonhosted.org/packages/5c/be/2e8974163072e7bab7df1a5acd54c4498e75e35d6d18b864d3a9d5dadc92/rpds_py-2026.6.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a0811d33247c3d6128a3001d763f2aa056bb3425204335400ac54f89eec3a0d0", size = 343691, upload-time = "2026-06-30T07:15:14.96Z" }, + { url = "https://files.pythonhosted.org/packages/a4/73/319dfa745dd668efe89309141ded489126461fcecd2b8f3a3cda185129b6/rpds_py-2026.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:538949e262e46caa31ac01bdb3c1e8f642622922cacbabbae6a8445d9dc33eaf", size = 338542, upload-time = "2026-06-30T07:15:16.267Z" }, + { url = "https://files.pythonhosted.org/packages/21/63/4239893be1c4d09b709b1a8f6be4188f0870084ff547f46606b8a75f1b03/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55927d532399c2c646100ff7feb48eaa940ad70f42cd68e1328f3ded9f81ca24", size = 368180, upload-time = "2026-06-30T07:15:17.62Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ca/9c5de382225234ceb37b1844ebdb140db12b2a278bb9efe2fcd19f6c82ce/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f56f1695bc5c0871cbc33dc0130fcf503aab0c57dcc5a6700a4f49eba4f2652e", size = 375067, upload-time = "2026-06-30T07:15:18.952Z" }, + { url = "https://files.pythonhosted.org/packages/87/dc/863f69d1bf04ade34b7fe0d59b9fdf6f0135fe2d7cbca74f1d665589559d/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:270b293dae9058fc9fcedab50f13cebf46fb8ed1d1d54e0521a9da5d6b211975", size = 490509, upload-time = "2026-06-30T07:15:20.434Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ef/eac16a12048b45ec7c7fa94f2be3438a5f26bf9cc8580b18a1cfd609b7f6/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:127565fead0a10943b282957bd5447804ff3160ad79f2ad2635e6d249e380680", size = 382754, upload-time = "2026-06-30T07:15:21.831Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/d2f3f532616be4d06c316ef119683e832bd3d41e112bf3a88f4151c95b17/rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecabd69db66de867690f9797f2f8fa27ba501bbc24540cbdbdc649cd15888ba6", size = 366189, upload-time = "2026-06-30T07:15:23.371Z" }, + { url = "https://files.pythonhosted.org/packages/e3/29/41a7b0e98a4b44cd676ab7598419623373eb43b20be68c084935c1a8cf88/rpds_py-2026.6.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:58eadac9cd119677b60e1cf8ac4052f35949d71b8a9e5556efccbe82533cf22a", size = 377750, upload-time = "2026-06-30T07:15:24.659Z" }, + { url = "https://files.pythonhosted.org/packages/2e/05/ecda0bec46f9a1565090bcdc941d023f6a25aff85fda28f89f8d19878152/rpds_py-2026.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7491ee23305ac3eb59e492b6945881f5cd77a6f731061a3f25b77fd40f9e99a4", size = 395576, upload-time = "2026-06-30T07:15:25.987Z" }, + { url = "https://files.pythonhosted.org/packages/68/a8/6ed52f03ee6cb854ce78785cc9a9a672eb880e83fd7224d471f667d151f1/rpds_py-2026.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2c99f7e8ccb3dd6e3e4bfeac657a7b208c9bac8075f4b078c02d7404c34107fa", size = 543807, upload-time = "2026-06-30T07:15:27.356Z" }, + { url = "https://files.pythonhosted.org/packages/8f/d6/156c0d3eea27ba09b92562ba2364ba124c0a061b199e17eac637cd25a5e2/rpds_py-2026.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:62698275682bf121181861295c9181e789030a2d516071f5b8f3c23c170cd0fc", size = 611187, upload-time = "2026-06-30T07:15:28.931Z" }, + { url = "https://files.pythonhosted.org/packages/f1/31/774212ed989c62f7f310220089f9b0a3fb8f40f5443d1727abd5d9f52bc9/rpds_py-2026.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a214c993455f99a89aaeadc9b21241900037adc9d97203e374d75513c5911822", size = 573030, upload-time = "2026-06-30T07:15:30.553Z" }, + { url = "https://files.pythonhosted.org/packages/c9/50/22f73127a41f1ce4f87fe39aadfb9a126345801c274aa93ae88456249327/rpds_py-2026.6.3-cp312-cp312-win32.whl", hash = "sha256:501f9f04a588d6a09179368c57071301445191767c64e4b52a6aa9871f1ef5ed", size = 202185, upload-time = "2026-06-30T07:15:32.027Z" }, + { url = "https://files.pythonhosted.org/packages/04/3a/f0ee4d4dde9d3b69dedf1b5f74e7a40017046d55052d173e418c6a94f960/rpds_py-2026.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:2c958bf94822e9290a40aaf2a822d4bc5c88099093e3948ad6c571eca9272e5f", size = 220394, upload-time = "2026-06-30T07:15:33.359Z" }, + { url = "https://files.pythonhosted.org/packages/f3/83/3382fe37f809b59f02aac04dbc4e765b480b46ee0227ed516e3bdc4d3dfc/rpds_py-2026.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:22bffe6042b9bcb0822bcd1955ec00e245daf17b4344e4ed8e9551b976b63e96", size = 215753, upload-time = "2026-06-30T07:15:34.778Z" }, + { url = "https://files.pythonhosted.org/packages/a4/9e/b818ee580026ec578138e961027a68820c40afeb1ec8f6819b54fb99e196/rpds_py-2026.6.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3cfe765c1da0072636ca06628261e0ea05688e160d5c8a03e0217c3854037223", size = 343012, upload-time = "2026-06-30T07:15:36.005Z" }, + { url = "https://files.pythonhosted.org/packages/f3/6b/686d9dc4359a8f163cfbbf89ee0b4e586431de22fe8248edb63a8cf50d49/rpds_py-2026.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f4d78253f6996be4901669ad25319f842f740eccf4d58e3c7f3dd39e6dde1d8f", size = 338203, upload-time = "2026-06-30T07:15:37.462Z" }, + { url = "https://files.pythonhosted.org/packages/9e/9b/069aa329940f8207615e091f5eedbbd40e1e15eac68a0790fd05ccdf796c/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54f45a148e28767bf343d33a684693c70e451c6f4c0e9904709a723fafbdfc1f", size = 367984, upload-time = "2026-06-30T07:15:39.008Z" }, + { url = "https://files.pythonhosted.org/packages/14/db/34c203e4becff3703e4d3bc121842c00b8689197f398161203a880052f4e/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:842e7b070435622248c7a2c44ae53fa1440e073cc3023bc919fed570884097a7", size = 374815, upload-time = "2026-06-30T07:15:40.253Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7d/8071067d2cc453d916ad836e828c943f575e8a44612537759002a1e07381/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8020133a74bd81b4572dd8e4be028a6b1ebcd70e6726edc3918008c08bee6ee6", size = 490545, upload-time = "2026-06-30T07:15:41.729Z" }, + { url = "https://files.pythonhosted.org/packages/a3/42/da06c5aa8f0484ff07f270787434204d9f4535e2f8c3b51ed402267e63c3/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdc7e35386f3847df728fbcb5e887e2d79c19e2fa1eba9e51b6621d23e3243af", size = 382828, upload-time = "2026-06-30T07:15:43.327Z" }, + { url = "https://files.pythonhosted.org/packages/57/d7/fe978efc2ae50abe48eb7464668ea99f53c010c60aeebb7b35ad27f23661/rpds_py-2026.6.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acac386b453c2516111b50985d60ce46e7fadb5ea71ae7b25f4c946935bf27cf", size = 365678, upload-time = "2026-06-30T07:15:44.992Z" }, + { url = "https://files.pythonhosted.org/packages/69/9d/1d8922e1990b2a6eb532b6ff53d3e73d2b3bbffc84116c75826bee73dfc6/rpds_py-2026.6.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:425560c6fa0415f27261727bb20bd097568485e5eb0c121f1949417d1c516885", size = 377811, upload-time = "2026-06-30T07:15:46.523Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3d/198dceafb4fb034a6a47347e1b0735d34e0bd4a50be4e898d408ee66cb14/rpds_py-2026.6.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a550fb4950a06dde3beb4721f5ad4b25bf4513784665b0a8522c792e2bd822a4", size = 395382, upload-time = "2026-06-30T07:15:47.955Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f1/13968e49655d40b6b19d8b9140296bbc6f1d86b3f0f6c346cf9f1adddf4b/rpds_py-2026.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f4bca01b63096f606e095734dd56e74e175f94cfbf24ff3d63281cec61f7bb7", size = 543832, upload-time = "2026-06-30T07:15:49.33Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ab/289bcb1b90bd3e40a2900c561fa0e2087345ecbb094f0b870f2345142b7c/rpds_py-2026.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ccffae9a092a00deb7efd545fe5e2c33c33b88e7c054337e9a74c179347d0b7d", size = 611011, upload-time = "2026-06-30T07:15:50.847Z" }, + { url = "https://files.pythonhosted.org/packages/1e/16/5043105e679436ccfbc8e5e0dd2d663ed18a8b8113515fd06a5e5d77c83e/rpds_py-2026.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1cf01971c4f2c5553b772a542e4aaf191789cd331bc2cd4ff0e6e65ba49e1e97", size = 572431, upload-time = "2026-06-30T07:15:52.394Z" }, + { url = "https://files.pythonhosted.org/packages/85/ed/adab103321c0a6565d5ae1c2998349bc3ee175b82ccc5ae8fc04cc413075/rpds_py-2026.6.3-cp313-cp313-win32.whl", hash = "sha256:8c3d1e9c15b9d51ca0391e13da1a25a0a4df3c58a37c9dc368e0736cf7f69df0", size = 201710, upload-time = "2026-06-30T07:15:53.894Z" }, + { url = "https://files.pythonhosted.org/packages/7b/ed/a03b09668e74e5dabbf2e211f6468e1820c0552f7b0500082da31841bf7b/rpds_py-2026.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:9250a9a0a6fd4648b3f868da8d91a4c52b5811a62df58e753d50ae4454a36f80", size = 219454, upload-time = "2026-06-30T07:15:55.25Z" }, + { url = "https://files.pythonhosted.org/packages/27/17/b8642c12930b71bc2b25831f6708ccf0f75abcd11883932ec9ce54ba3a78/rpds_py-2026.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:900a67df3fd1660b035a4761c4ce73c382ea6b35f90f9863c36c6fd8bf8b09bb", size = 215063, upload-time = "2026-06-30T07:15:56.573Z" }, + { url = "https://files.pythonhosted.org/packages/b6/36/7fbe9dcdaf857fb3f63c2a2284b62492d95f5e8334e947e5fb6e7f68c9be/rpds_py-2026.6.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:931908d9fc855d8f74783377822be318edb6dcb19e47169dc038f9a1bf60b06e", size = 344510, upload-time = "2026-06-30T07:15:57.921Z" }, + { url = "https://files.pythonhosted.org/packages/ba/54/f785cc3d3f60839ca57a5af4927a9f347b07b2799c373fc20f7949f87c7e/rpds_py-2026.6.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d7469697dce35be237db177d42e2a2ee26e6dcc5fc052078a6fefabd288c6edd", size = 339495, upload-time = "2026-06-30T07:15:59.238Z" }, + { url = "https://files.pythonhosted.org/packages/63/ef/d4cdaf309e6b095b43597103cf8c0b951d6cca2acce68c474f75ec12e0c7/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcfbcf66006befb9fd2aeaa9e01feaf881b4dc330a02ba07d2322b1c11be7b5d", size = 369454, upload-time = "2026-06-30T07:16:01.021Z" }, + { url = "https://files.pythonhosted.org/packages/96/4a/9559a68b7ee15db09d7981212e8c2e219d2a1d6d4faa0391d813c3496a36/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:847927daf4cffbd4e90e42bc890069897101edd015f956cb8721b3473372edda", size = 374583, upload-time = "2026-06-30T07:16:02.287Z" }, + { url = "https://files.pythonhosted.org/packages/ef/75/8964aa7d2c6e8ac43eba8eb6e6b0fdda1f46d39f2fc3e6aa9f2cb17f485d/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aca6c1ef08a82bfe327cc156da694660f599923e2e6665b6d81c9c2d0ac9ffc8", size = 492919, upload-time = "2026-06-30T07:16:03.723Z" }, + { url = "https://files.pythonhosted.org/packages/8f/97/6908094ac804115e65aedfd90f1b5fee4eebebd3f6c4cfc5419939267565/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae50181a047c871561212bb97f7932a2d45fb53e947bd9b57ebad85b529cbc53", size = 383725, upload-time = "2026-06-30T07:16:05.305Z" }, + { url = "https://files.pythonhosted.org/packages/d1/9c/0d1fdc2e7aba23e290d603bc494e97bd205bae262ce33c6b32a69768ed5e/rpds_py-2026.6.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc319e5a1de4b6913aac94bf6a2f9e847371e0a140a43dd4991db1a09bc2d504", size = 367255, upload-time = "2026-06-30T07:16:07.086Z" }, + { url = "https://files.pythonhosted.org/packages/c4/fe/f0209ca4a9ed074bc8acb44dfd0e81c3122e94c9689f5645b7973a866719/rpds_py-2026.6.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:e4316bf32babbed84e691e352faf967ce2f0f024174a8643c37c94a1080374fc", size = 379060, upload-time = "2026-06-30T07:16:08.525Z" }, + { url = "https://files.pythonhosted.org/packages/c6/8d/f1cc54c616b9d8897de8738aac148d20afca93f68187475fe194d09a71b9/rpds_py-2026.6.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8c6e5a2f750cc71c3e3b11d71661f21d6f9bc6cebc6564b1466417a1ec03ec77", size = 395960, upload-time = "2026-06-30T07:16:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/fb/04/aafff00f73aeca2945f734f1d483c64ab8f472d0864ab02377fd8e89c3b2/rpds_py-2026.6.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4470ce197d4090875cf6affbf1f853338387428df97c4fb7b7106317b8214698", size = 545356, upload-time = "2026-06-30T07:16:11.816Z" }, + { url = "https://files.pythonhosted.org/packages/fd/cc/e229663b9e4ddac5a4acbe9085dd80a71af2a5d356b8b39d6bff233f24b0/rpds_py-2026.6.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ea964164cc9afa72d4d9b23cc28dafae93693c0a53e0b42acbff15b22c3f9ddd", size = 612319, upload-time = "2026-06-30T07:16:13.586Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7a/8a0e6d3e6cd066af108b71b43122c3fe158dd9eb86acac626593a2582eb1/rpds_py-2026.6.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:639c8929aa0afe81be836b04de888460d6bed38b9c54cfc18da8f6bfabf5af5d", size = 573508, upload-time = "2026-06-30T07:16:15.23Z" }, + { url = "https://files.pythonhosted.org/packages/87/03/2a69ab618a789cf6cf85c86bb844c62d090e700ab1a2aa676b3741b6c516/rpds_py-2026.6.3-cp314-cp314-win32.whl", hash = "sha256:882076c00c0a608b131187055ddc5ae29f2e7eaf870d6168980420d58528a5c8", size = 202504, upload-time = "2026-06-30T07:16:16.893Z" }, + { url = "https://files.pythonhosted.org/packages/85/62/a3892ba945f4e24c78f352e5de3c7620d8479f73f211406a97263d13c7d2/rpds_py-2026.6.3-cp314-cp314-win_amd64.whl", hash = "sha256:0be972be84cfcaf46c8c6edf690ca0f154ac17babf1f6a955a51579b34ad2dc5", size = 220380, upload-time = "2026-06-30T07:16:18.108Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e7/c2bd44dc831931815ad11ebb5f430b5a0a4d3caa9de837107876c30c3432/rpds_py-2026.6.3-cp314-cp314-win_arm64.whl", hash = "sha256:2a9c6f195058cb45335e8cc3802745c603d716eb96bc9625950c1aac71c0c703", size = 215976, upload-time = "2026-06-30T07:16:19.654Z" }, + { url = "https://files.pythonhosted.org/packages/79/9c/fff7b74bce9a091ec9a012a03f9ff5f69364eaf9451060dfc4486da2ffdd/rpds_py-2026.6.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:f90938e92afda60266da758ee7d363447f7f0138c9559f9e1811629580582d90", size = 346840, upload-time = "2026-06-30T07:16:21.268Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/77bcb1168b33704908295533d27f10eb811e9e3e193e8993dc99572211d3/rpds_py-2026.6.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ec829541c45bca16e61c7ae50c20501f213605beb75d1aba91a6ee37fbbb56a4", size = 340282, upload-time = "2026-06-30T07:16:22.875Z" }, + { url = "https://files.pythonhosted.org/packages/87/3c/7a9081c7c9e645b39efe19e4ffbeccd80add246327cd9b888aecffd72317/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd70d95892096cdb26f15a00c45907b17817577aa8d1c76b2dcc2788391f9e9", size = 370403, upload-time = "2026-06-30T07:16:24.415Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/af47021eb7dad6ff3396cb001c08f0f3c4d06c20253f75be6421a59fe6b7/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29dfa0533a5d4c94d4dfa1b694fcb56c9c63aad8330ffdd816fd225d0a7a162f", size = 376055, upload-time = "2026-06-30T07:16:26.111Z" }, + { url = "https://files.pythonhosted.org/packages/81/fc/a3bcf517084396a6dd258c592567a3c011ba4557f2fde23dceaf26e74f2e/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:af05d726809bff6b141be124d4c7ce998f9c9c7f30edb1f46c07aa103d540b41", size = 494419, upload-time = "2026-06-30T07:16:27.596Z" }, + { url = "https://files.pythonhosted.org/packages/c9/eb/13d529d1788135425c7bf207f8463458ca5d92e43f3f701365b83e9dffc1/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9826217f048f620d9a712672818bf231442c1b35d96b227a07eabd11b4bb6945", size = 384848, upload-time = "2026-06-30T07:16:29.183Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f4/b7ac49f30013aba8f7b9566b1dd07e81de95e708c1374b7bacc5b9bc5c9c/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:536bceea4fa4acf7e1c61da2b5786304367c816c8895be71b8f537c480b0ea1f", size = 371369, upload-time = "2026-06-30T07:16:30.912Z" }, + { url = "https://files.pythonhosted.org/packages/31/86/6260bafa622f788b07ddec0e52d810305c8b9b0b8c27f58a2ab04bf62b4f/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:bc0011654b91cc4fb2ae701bec0a0ba1e552c0714247fa7af6c59e0ccfa3a4e1", size = 379673, upload-time = "2026-06-30T07:16:32.486Z" }, + { url = "https://files.pythonhosted.org/packages/19/c3/03f1ee79a047b48daeca157c89a18509cde22b6b951d642b9b0af1be660a/rpds_py-2026.6.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:539d75de9e0d536c84ff18dfeb805398e58227001ce09231a26a08b9aed1ee0e", size = 397500, upload-time = "2026-06-30T07:16:34.471Z" }, + { url = "https://files.pythonhosted.org/packages/f0/95/8ed0cd8c377dca12aea498f119fe639fc474d1461545c39d2b5872eb1c0f/rpds_py-2026.6.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:166cf54d9f44fc6ceb53c7860258dde44a81406646de79f8ed3234fca3b6e538", size = 545978, upload-time = "2026-06-30T07:16:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f2/0eb57f0eaa83f8fc152a7e03de968ab77e1f00732bebc892b190c6eebde7/rpds_py-2026.6.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:d34c20167764fbcf927194d532dd7e0c56772f0a5f943fa5ef9e9afbba8fb9db", size = 613350, upload-time = "2026-06-30T07:16:38.213Z" }, + { url = "https://files.pythonhosted.org/packages/5b/de/e0674bdbc3ef7634989b3f854c3f34bc1f587d36e5bfdc5c378d57034619/rpds_py-2026.6.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ea7bb13b7c9a29791f87a0387ba7d3ad3a6d783d827e4d3f27b40a0ff44495e2", size = 576486, upload-time = "2026-06-30T07:16:39.797Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f6/21101359743cd136ada781e8210a85769578422ba460672eea0e29739200/rpds_py-2026.6.3-cp314-cp314t-win32.whl", hash = "sha256:6de4744d05bd1aa1be4ed7ea1189e3979196808008113bbbf899a460966b925e", size = 201068, upload-time = "2026-06-30T07:16:41.316Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b2/9574d4d44f7760c2aa32d92a0a4f41698e33f5b204a0bf5c9758f52c79d5/rpds_py-2026.6.3-cp314-cp314t-win_amd64.whl", hash = "sha256:c7b9a2f8f4d8e90af72571d3d495deebdd7e3c75451f5b41719aee166e940fc2", size = 220600, upload-time = "2026-06-30T07:16:43.091Z" }, + { url = "https://files.pythonhosted.org/packages/08/ae/f23a2697e6ee6340a578b0f136be6483657bef0c6f9497b752bb5c0964bb/rpds_py-2026.6.3-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:e059c5dde6452b44424bd1834557556c226b57781dee1227af23518459722b13", size = 344726, upload-time = "2026-06-30T07:16:44.5Z" }, + { url = "https://files.pythonhosted.org/packages/c3/63/e7b3a1a5358dd32c930a1062d8e15b67fd6e8922e81df9e91706d66ee5c8/rpds_py-2026.6.3-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:2f7c26fbc5acd2522b95d4177fe4710ffd8e9b20529e703ffbf8db4d93903f05", size = 339587, upload-time = "2026-06-30T07:16:46.255Z" }, + { url = "https://files.pythonhosted.org/packages/ec/64/10a85681916ca55fffb91b0a211f84e34297c109243484dd6394660a8a7c/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3086b538543802f84c843911242db20447de00d8752dd0efc936dbcf02218ba", size = 369585, upload-time = "2026-06-30T07:16:48.101Z" }, + { url = "https://files.pythonhosted.org/packages/76/c2/baf95c7c38823e12ba34407c5f5767a89e5cf2233895e56f608167ae9493/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f2e5c5ee828d42cb11760761c0af6507927bec42d0ad5458f97c9203b054617", size = 375479, upload-time = "2026-06-30T07:16:49.93Z" }, + { url = "https://files.pythonhosted.org/packages/6a/94/0aad06c72d65101e11d33528d438cda99a39ce0da99466e156158f2541d3/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed0c1e5d10cdc7135537988c74a0188da68e2f3c30813ba3744ab1e42e0480f9", size = 492418, upload-time = "2026-06-30T07:16:51.641Z" }, + { url = "https://files.pythonhosted.org/packages/b5/17/de3f5a479a1f056535d7489819639d8cd591ea6281d700390b43b1abd745/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c2642a7603ec0b16ed77da4555db3b4b472341904873788327c0b0d7b95f1bb", size = 384123, upload-time = "2026-06-30T07:16:53.622Z" }, + { url = "https://files.pythonhosted.org/packages/46/7d/bf09bd1b145bb2671c03e1e6d1ab8651858d90d8c7dfeadd85a37a934fd8/rpds_py-2026.6.3-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e4320744c1ffdd95a603def63344bfab2d33edeab301c5007e7de9f9f5b3885", size = 367351, upload-time = "2026-06-30T07:16:55.241Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ea/1bb734f314b8be319149ddee80b18bd41372bdcfbdf88d28131c0cd37719/rpds_py-2026.6.3-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:a9f4645593036b81bbdb36b9c8e0ea0d1c3fee968c4d59db0344c14087ef143a", size = 378827, upload-time = "2026-06-30T07:16:56.841Z" }, + { url = "https://files.pythonhosted.org/packages/4b/93/d9611e5b25e26df9a3649813ed66193ace9347a7c7fc4ab7cf70e94851c0/rpds_py-2026.6.3-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e55d236be29255554da47abe5c577637db7c24a02b8b46f0ca9524c855801868", size = 395966, upload-time = "2026-06-30T07:16:58.557Z" }, + { url = "https://files.pythonhosted.org/packages/c3/cb/99d77e16e5534ae1d90629bbe419ba6ee170833a6a85e3aa1cc41726fbbc/rpds_py-2026.6.3-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:24e9c5386e16669b674a69c156c8eeefcb578f3b3397b713b08e6d60f3c7b187", size = 545680, upload-time = "2026-06-30T07:17:00.164Z" }, + { url = "https://files.pythonhosted.org/packages/59/15/11a29755f790cef7a2f755e8e14f4f0c33f39489e1893a632a2eee59672b/rpds_py-2026.6.3-cp315-cp315-musllinux_1_2_i686.whl", hash = "sha256:c60924535c75f1566b6eb75b5c31a48a43fef04fa2d0d201acbad8a9969c6107", size = 611853, upload-time = "2026-06-30T07:17:01.962Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/0c27547e21644da938fb530f7e1a8148dd24d02db07e7a5f2567a17ce710/rpds_py-2026.6.3-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:38a2fea2787428f811719ceb9114cb78964a3138838320c29ac39526c79c16ba", size = 573715, upload-time = "2026-06-30T07:17:03.693Z" }, + { url = "https://files.pythonhosted.org/packages/29/71/4d8fcf700931815594bce892255bbd973b94efaf0fc1932b0590df18d886/rpds_py-2026.6.3-cp315-cp315-win32.whl", hash = "sha256:d483fe17f01ad64b7bf7cc38fcefff1ca9fb83f8c2b2542b68f97ffe0611b369", size = 202864, upload-time = "2026-06-30T07:17:05.746Z" }, + { url = "https://files.pythonhosted.org/packages/eb/62/b577562de0edbb55b2be85ce5fd09c33e386b9b13eee09833af4240fd5c4/rpds_py-2026.6.3-cp315-cp315-win_amd64.whl", hash = "sha256:67e3a721ffc5d8d2210d3671872298c4a84e4b8035cfe42ffd7cde35d772b146", size = 220430, upload-time = "2026-06-30T07:17:07.471Z" }, + { url = "https://files.pythonhosted.org/packages/c8/95/d6d0b2509825141eef60669a5739eec88dbc6a48053d6c92993a5704defe/rpds_py-2026.6.3-cp315-cp315-win_arm64.whl", hash = "sha256:6e84adbcf4bf841aed8116a8264b9f50b4cb3e7bd89b516122e616ac56ca269e", size = 215877, upload-time = "2026-06-30T07:17:09.008Z" }, + { url = "https://files.pythonhosted.org/packages/b7/bf/f3ea278f0afd615c1d0f19cb69043a41526e2bb600c2b536eb192218eb27/rpds_py-2026.6.3-cp315-cp315t-macosx_10_12_x86_64.whl", hash = "sha256:ae6dd8f10bd17aad820876d24caec9efdafd80a318d16c0a48edb5e136902c6b", size = 346933, upload-time = "2026-06-30T07:17:10.762Z" }, + { url = "https://files.pythonhosted.org/packages/9d/29/9907bdf1c5346763cf10b7f6852aad86652168c259def904cbe0082c5864/rpds_py-2026.6.3-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:bdbd97738551fca3917c1bd7188bec1920bb520104f28e7e1007f9ceb17b7690", size = 340274, upload-time = "2026-06-30T07:17:12.266Z" }, + { url = "https://files.pythonhosted.org/packages/6f/2c/8e03767b5778ef25cebf74a7a91a2c3806f8eced4c92cb7406bbe060756d/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b95977e7211527ab0ba576e286d023389fbeeb32a6b7b771665d333c60e5342", size = 370763, upload-time = "2026-06-30T07:17:14.107Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e1/df2a7e1ba2efd796af26194250b8d42c821b46592311595162af9ef0528d/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15fde0e6fb0d88a60d221204873743e5d9f0b7d29165e62cd86d0413ad74ba6", size = 376467, upload-time = "2026-06-30T07:17:15.76Z" }, + { url = "https://files.pythonhosted.org/packages/6b/de/8a0814d1946af29cb068fb259aa8622f856df1d0bab58429448726b537f5/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a136d453475ac0fcbda502ef1e6504bd28d6d904700915d278deeab0d00fe140", size = 496689, upload-time = "2026-06-30T07:17:17.308Z" }, + { url = "https://files.pythonhosted.org/packages/df/f3/f19e0c852ba13694f5a79f3b719331051573cb5693feacf8a88ffffc3a71/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f826877d462181e5eb1c26a0026b8d0cab05d99844ecb6d8bf3627a2ca0c0442", size = 385340, upload-time = "2026-06-30T07:17:18.928Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ae/7ec3a9d2d4351f99e37bcb06b6b6f954512646bfdbf9742e1de727865daf/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79486287de1730dbaff3dbd124d0ca4d2ef7f9d29bf2544f1f93c09b5bcbbd12", size = 372179, upload-time = "2026-06-30T07:17:20.539Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ac/9cee911dff2aaa9a5a8354f6610bf2e6a616de9197c5fff4f54f82585f1e/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_31_riscv64.whl", hash = "sha256:808345f53cb952433ca2816f1604ff3515608a81784954f38d4452acfe8e61d5", size = 379993, upload-time = "2026-06-30T07:17:22.212Z" }, + { url = "https://files.pythonhosted.org/packages/83/6b/7c2a07ba88d1e9a936612f7a5d067467ed03d971d5a06f7d309dff044a7e/rpds_py-2026.6.3-cp315-cp315t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1967debc37f64f2c4dc90a7f563aec558b471966e12adcac4e1c4240496b6ebf", size = 398909, upload-time = "2026-06-30T07:17:23.66Z" }, + { url = "https://files.pythonhosted.org/packages/97/0b/776ffcb66783637b0031f6d58d6fb55913c8b5abf00aeecd46bf933fb477/rpds_py-2026.6.3-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:f0840b5b17057f7fd918b76183a4b5a0635f43e14eb2ce60dce1d4ee4707ea00", size = 546584, upload-time = "2026-06-30T07:17:25.264Z" }, + { url = "https://files.pythonhosted.org/packages/55/33/ba3bc04d7092bd553c9b2b195624992d2cc4f3de1f380b7b93cbee67bd79/rpds_py-2026.6.3-cp315-cp315t-musllinux_1_2_i686.whl", hash = "sha256:faa679d19a6696fd54259ad321251ad77a13e70e03dd834daa762a44fb6196ef", size = 614357, upload-time = "2026-06-30T07:17:26.888Z" }, + { url = "https://files.pythonhosted.org/packages/8b/71/14edf065f04630b1a8472f7653cad03f6c478bcf95ea0e6aed55451e33ea/rpds_py-2026.6.3-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:23a439f31ccbeff1574e24889128821d1f7917470e830cf6544dced1c662262a", size = 576533, upload-time = "2026-06-30T07:17:28.546Z" }, + { url = "https://files.pythonhosted.org/packages/ba/76/65002b08596c389105720a8c0d22298b8dc25a4baf89b2ce431343c8b1de/rpds_py-2026.6.3-cp315-cp315t-win32.whl", hash = "sha256:913ca42ccad3f8cc6e292b587ae8ae49c8c823e5dce51a736252fc7c7cdfa577", size = 201204, upload-time = "2026-06-30T07:17:30.193Z" }, + { url = "https://files.pythonhosted.org/packages/8c/97/d855d6b3c322d1f27e26f5241c42016b56cf01377ea8ed348285f54652f0/rpds_py-2026.6.3-cp315-cp315t-win_amd64.whl", hash = "sha256:ae3d4fe8c0b9213624fdce7279d70e3b148b682ca20719ebd193a23ebfa47324", size = 220719, upload-time = "2026-06-30T07:17:31.788Z" }, + { url = "https://files.pythonhosted.org/packages/b4/9c/f0d19ac587fd0e4ab6b72cda355e9c5a6166b01ef7e064e437aef8eb9fef/rpds_py-2026.6.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4cf2d36a2357e4d07bb5a4f98801265327b48256867816cfd2ceb001e9754a8f", size = 349791, upload-time = "2026-06-30T07:17:33.315Z" }, + { url = "https://files.pythonhosted.org/packages/38/c7/1d49d204c9fd2ee6c537601dc4c1ba921e03363ca576bfab94a00254ac9a/rpds_py-2026.6.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:30c6dc199b24a5e3e81d50da0f00858c5bbdb2617a750395687f4339c5818171", size = 352842, upload-time = "2026-06-30T07:17:34.897Z" }, + { url = "https://files.pythonhosted.org/packages/ac/e5/c0b5dc93cd0d4c06ce1f438907649514e2ea077bcd911e3154a51e96c38e/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9891e594296ab9dada6551c8e7b387b2721f27a67eecd528412e8906247a7b90", size = 382094, upload-time = "2026-06-30T07:17:36.514Z" }, + { url = "https://files.pythonhosted.org/packages/0d/54/ec0e907b4ca8d541112db352409bd15f871c9b243e0c92c9b5a46ae96f01/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5c2dc92304aa48a4a60443b548bb12f12e119d4b72f314015e67b9e1be97fca", size = 388662, upload-time = "2026-06-30T07:17:38.235Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f4/921c22a4fd0f1c1ac13a3996ffbf0aa67951e2c8ad0d1d9574938a2932e8/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:127e08c0642d880cf32ca47ec2a4a77b901f7e2dd1ad9762adb13955d72ffcc9", size = 504896, upload-time = "2026-06-30T07:17:39.689Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1b/a114b972cefa1ab1cdb3c7bb177cd3844a12826c507c722d3a73516dbbaf/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bb68f03f395eb793220b45c097bd4d8c32944393da0fad8b999efac0868fc8c", size = 391545, upload-time = "2026-06-30T07:17:41.336Z" }, + { url = "https://files.pythonhosted.org/packages/4e/98/af9b3db77d47fcbe6c8c1f36e2c2147ec70292819e99c325f871584a1c11/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3450b693fde92133e9f51060568a4c31fcca76d5e53bbd611e689ca446517e9", size = 380059, upload-time = "2026-06-30T07:17:42.857Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ba/0efd8668b97c1d26a61566386c636a7a7a09829e474fdf807caa15a2c844/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:5e8d07bddee435a2ff6f1920e18feff28d0bc4533e42f4bf6927fbd073312c41", size = 393235, upload-time = "2026-06-30T07:17:44.637Z" }, + { url = "https://files.pythonhosted.org/packages/62/90/8c139ee9690f73b0829f32647de6f40d826f8f443af6fa72644f96351aac/rpds_py-2026.6.3-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a83ae6c67b7676b9878378547ca8e93ed77a580037bcbcd1d32f739e1e6089c", size = 413008, upload-time = "2026-06-30T07:17:46.225Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/0043896fdd7828ce09a1d9a8b06433714d0960fc4ff3fc4aa72b666b764e/rpds_py-2026.6.3-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2bfd04c19ddbd6640de0b51894d764bd2758854d5b75bd102d2ef10cb9c293a9", size = 558118, upload-time = "2026-06-30T07:17:47.759Z" }, + { url = "https://files.pythonhosted.org/packages/f6/40/02355f0e134f783a8f9814c4680a1bd311d37671577a5964ea838573ff37/rpds_py-2026.6.3-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:ca6546b66be9dc4738b1b043d5ebd5488c66c578c5ff0fd0e8065313fe3afb76", size = 623138, upload-time = "2026-06-30T07:17:49.355Z" }, + { url = "https://files.pythonhosted.org/packages/10/85/48f0abdcef5cce4e034c7a5b0ceeceba0b01bf0d942824f4bb720afe2dec/rpds_py-2026.6.3-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:8e65860d238379ed982fd9ba690579b5e95af2f4840f99c772816dbe573cb826", size = 586486, upload-time = "2026-06-30T07:17:51.141Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "sse-starlette" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "starlette" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/1b/bc9e3e7a72dcdad7dc7888758f5d00f56f8909ed5cfdff822bd72bb4c520/sse_starlette-3.4.5.tar.gz", hash = "sha256:83072538bc211a2f68b7b0422226c4af3e9b62e106e07034664b832ca019842a", size = 35249, upload-time = "2026-06-20T17:36:58.322Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/75/c88d3f5dafd59c791da1ce27650d30bf5b70cbf1cbf01cd00e5f9e360915/sse_starlette-3.4.5-py3-none-any.whl", hash = "sha256:e71bad53323f65573c3864a6c3bd0c1eb6e5f092b2e48082b0c35927d19ca296", size = 16518, upload-time = "2026-06-20T17:36:56.729Z" }, +] + +[[package]] +name = "starlette" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/e3/7c1dc7381d9f8ab7d854328ebfa884e62cb3f3d8549ddfd37c7814f42afa/starlette-1.3.1.tar.gz", hash = "sha256:05d0213193f2fbaae60e2ecb593b4add4262ad4e46536b54abe36f11a71724e0", size = 2703240, upload-time = "2026-06-12T09:23:11.602Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/bb/2799cc2ede3ed41131f8975621e7213dfc7ef4acbbaadfa440f32500c370/starlette-1.3.1-py3-none-any.whl", hash = "sha256:c7372aae11c3c3f26a42df7bd626cec2f47d03483d261d369516a615a53714c6", size = 73632, upload-time = "2026-06-12T09:23:10.017Z" }, +] + +[[package]] +name = "tqdm" +version = "4.68.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/5f/57ff8b434839e70dab45601284ea413e947a63799891b7553e5960a793a8/tqdm-4.68.4.tar.gz", hash = "sha256:19829c9673638f2a0b8617da4cdcb927e831cd88bcfcb6e78d42a4d1af131520", size = 792418, upload-time = "2026-07-07T09:58:18.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/2a/5e5e750890ada51017d18d0d4c30da696e5b5bd3180947729927628fc3cb/tqdm-4.68.4-py3-none-any.whl", hash = "sha256:5168118b2368f48c561afda8020fd79195b1bdb0bdf8086b88442c267a315dc2", size = 676612, upload-time = "2026-07-07T09:58:16.256Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "urllib3" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.51.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/65/b7c6c443ccc58678c91e1e973bbe2a878591538655d6e1d47f24ba1c51f3/uvicorn-0.51.0.tar.gz", hash = "sha256:f6f4b69b657c312f516dd2d268ab9ae6f254b11e4bac504f37b2ab58b24dd0b0", size = 94412, upload-time = "2026-07-08T10:59:05.962Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/ec/dbb7e5a6b91f86bfb9eb7d2988a2730907b6a729875b949c7f022e8b88fa/uvicorn-0.51.0-py3-none-any.whl", hash = "sha256:5d38af6cd620f2ae3849fb44fd4879e0890aa1febe8d47eb355fb45d93fe6a5b", size = 73219, upload-time = "2026-07-08T10:59:04.44Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/d5/69900f7883235562f1f50d8184bb7dd84a2fb61e9ec63f3782546fdbd057/uvloop-0.22.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c60ebcd36f7b240b30788554b6f0782454826a0ed765d8430652621b5de674b9", size = 1352420, upload-time = "2025-10-16T22:16:21.187Z" }, + { url = "https://files.pythonhosted.org/packages/a8/73/c4e271b3bce59724e291465cc936c37758886a4868787da0278b3b56b905/uvloop-0.22.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b7f102bf3cb1995cfeaee9321105e8f5da76fdb104cdad8986f85461a1b7b77", size = 748677, upload-time = "2025-10-16T22:16:22.558Z" }, + { url = "https://files.pythonhosted.org/packages/86/94/9fb7fad2f824d25f8ecac0d70b94d0d48107ad5ece03769a9c543444f78a/uvloop-0.22.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53c85520781d84a4b8b230e24a5af5b0778efdb39142b424990ff1ef7c48ba21", size = 3753819, upload-time = "2025-10-16T22:16:23.903Z" }, + { url = "https://files.pythonhosted.org/packages/74/4f/256aca690709e9b008b7108bc85fba619a2bc37c6d80743d18abad16ee09/uvloop-0.22.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56a2d1fae65fd82197cb8c53c367310b3eabe1bbb9fb5a04d28e3e3520e4f702", size = 3804529, upload-time = "2025-10-16T22:16:25.246Z" }, + { url = "https://files.pythonhosted.org/packages/7f/74/03c05ae4737e871923d21a76fe28b6aad57f5c03b6e6bfcfa5ad616013e4/uvloop-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40631b049d5972c6755b06d0bfe8233b1bd9a8a6392d9d1c45c10b6f9e9b2733", size = 3621267, upload-time = "2025-10-16T22:16:26.819Z" }, + { url = "https://files.pythonhosted.org/packages/75/be/f8e590fe61d18b4a92070905497aec4c0e64ae1761498cad09023f3f4b3e/uvloop-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:535cc37b3a04f6cd2c1ef65fa1d370c9a35b6695df735fcff5427323f2cd5473", size = 3723105, upload-time = "2025-10-16T22:16:28.252Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ff/7f72e8170be527b4977b033239a83a68d5c881cc4775fca255c677f7ac5d/uvloop-0.22.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fe94b4564e865d968414598eea1a6de60adba0c040ba4ed05ac1300de402cd42", size = 1359936, upload-time = "2025-10-16T22:16:29.436Z" }, + { url = "https://files.pythonhosted.org/packages/c3/c6/e5d433f88fd54d81ef4be58b2b7b0cea13c442454a1db703a1eea0db1a59/uvloop-0.22.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:51eb9bd88391483410daad430813d982010f9c9c89512321f5b60e2cddbdddd6", size = 752769, upload-time = "2025-10-16T22:16:30.493Z" }, + { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, + { url = "https://files.pythonhosted.org/packages/90/cd/b62bdeaa429758aee8de8b00ac0dd26593a9de93d302bff3d21439e9791d/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142", size = 1362067, upload-time = "2025-10-16T22:16:44.503Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f8/a132124dfda0777e489ca86732e85e69afcd1ff7686647000050ba670689/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74", size = 752423, upload-time = "2025-10-16T22:16:45.968Z" }, + { url = "https://files.pythonhosted.org/packages/a3/94/94af78c156f88da4b3a733773ad5ba0b164393e357cc4bd0ab2e2677a7d6/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35", size = 4272437, upload-time = "2025-10-16T22:16:47.451Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/60249e9fd07b32c665192cec7af29e06c7cd96fa1d08b84f012a56a0b38e/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25", size = 4292101, upload-time = "2025-10-16T22:16:49.318Z" }, + { url = "https://files.pythonhosted.org/packages/02/62/67d382dfcb25d0a98ce73c11ed1a6fba5037a1a1d533dcbb7cab033a2636/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6", size = 4114158, upload-time = "2025-10-16T22:16:50.517Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/f1171b4a882a5d13c8b7576f348acfe6074d72eaf52cccef752f748d4a9f/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079", size = 4177360, upload-time = "2025-10-16T22:16:52.646Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/b01414f31546caf0919da80ad57cbfe24c56b151d12af68cee1b04922ca8/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289", size = 1454790, upload-time = "2025-10-16T22:16:54.355Z" }, + { url = "https://files.pythonhosted.org/packages/d4/31/0bb232318dd838cad3fa8fb0c68c8b40e1145b32025581975e18b11fab40/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3", size = 796783, upload-time = "2025-10-16T22:16:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/42/38/c9b09f3271a7a723a5de69f8e237ab8e7803183131bc57c890db0b6bb872/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c", size = 4647548, upload-time = "2025-10-16T22:16:57.008Z" }, + { url = "https://files.pythonhosted.org/packages/c1/37/945b4ca0ac27e3dc4952642d4c900edd030b3da6c9634875af6e13ae80e5/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21", size = 4467065, upload-time = "2025-10-16T22:16:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/48d232f33d60e2e2e0b42f4e73455b146b76ebe216487e862700457fbf3c/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88", size = 4328384, upload-time = "2025-10-16T22:16:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/41/5e1a4bb12aac5f1493fa1bdc11154eca3b258ca4eba65d39c473fe19d8e9/watchfiles-1.2.0.tar.gz", hash = "sha256:c995fba777f1ea992f090f9236e9284cf7a5d1a0130dd5a3d82c598cacd76838", size = 108252, upload-time = "2026-05-18T04:32:04.251Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/3d/8024c801df84d1587740d0359e7fdd80afeae3d159011f3d5376dd82f18e/watchfiles-1.2.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:704fd259e332e01f9b9c178f4bce9e49027e5587cc2600eeeaf8e76e1c846201", size = 400242, upload-time = "2026-05-18T04:31:19.014Z" }, + { url = "https://files.pythonhosted.org/packages/87/5b/f4dfd45323e949984a3a7f9dc31d1cbb049921e7d98253488dda72ccdaa9/watchfiles-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6543cf55d170003296d185c0af981f3e1311564907e1f4e08671fc7693a890a5", size = 394562, upload-time = "2026-05-18T04:30:08.46Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/19483ef075d601c409bce8bcbb5c0f81a10876fff870400568f08ce484a1/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89d8c2394a065ca86f5d2910ff263ae67c127e1376ccc4f9fc35c71db879f80a", size = 456611, upload-time = "2026-05-18T04:30:45.723Z" }, + { url = "https://files.pythonhosted.org/packages/b1/6a/cc81fbe7ee42f2f22e661a6e12def7807e01b14b2f39e0ff83fd373fd307/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:772b80df316480d894a0e3165fdd19cf77f5d17f9a787f94029465ad0e3529d1", size = 461379, upload-time = "2026-05-18T04:31:29.292Z" }, + { url = "https://files.pythonhosted.org/packages/b1/57/7e669002082c0a0f4fb5113bb70125f7110124b846b0a11bc5ae8e90eac1/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d158cd89df6053823533e06fb1d73c549133bff5f0396170c0e53d9559340717", size = 493556, upload-time = "2026-05-18T04:30:05.44Z" }, + { url = "https://files.pythonhosted.org/packages/45/7d/f60a2b19807b21fe8281f3a8da4f59eef0d5f96825ac4680ba2d4f2ebf91/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d516b3283a758e087841aedb8031549fb41ced08f3db10aa6d2bf32dc042525b", size = 575255, upload-time = "2026-05-18T04:30:40.568Z" }, + { url = "https://files.pythonhosted.org/packages/bd/49/77f5b5e6efbcd57482f74948ebb1b97e5c0046d6b61475042d830c84b3ff/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53b2290c92e0506d102cd448fbc610d87079553f86caa39d67440856a8b8bba5", size = 467052, upload-time = "2026-05-18T04:31:17.942Z" }, + { url = "https://files.pythonhosted.org/packages/ee/5a/73e2959af1b97fd5d556f9a8bdba017be23ceeef731869d5eaa0a753d5a3/watchfiles-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a711b51aec4370d0dcda5b6c09463206f133a5759341d7744b953a7b62e1100e", size = 456858, upload-time = "2026-05-18T04:30:30.182Z" }, + { url = "https://files.pythonhosted.org/packages/50/57/1bc8c27fad7e6c19bddee15d276dbb6ab72480ec01c127afff1673aee417/watchfiles-1.2.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:e2ca07fa7d89195ec0865d3d285666286740bfa83d83e5cee204043a31ecc165", size = 467579, upload-time = "2026-05-18T04:32:15.897Z" }, + { url = "https://files.pythonhosted.org/packages/09/6c/3c2e44edba3553c5e3c3b8c8a2a6dee6b9e12ae2cf4bd2378bebf9dc3038/watchfiles-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e0618518f282c4ebff60f5e5b1247b6d91bb8b9f4476947563a1e74acc66f3c6", size = 633253, upload-time = "2026-05-18T04:31:37.123Z" }, + { url = "https://files.pythonhosted.org/packages/30/c2/d8c84a882ab39bbefcc4915ab3e91830b7a7e990c5570b0b69075aba3faf/watchfiles-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d191c054d0715c3c95c99df9b8dbf6fd096d8c1e021e8f212e1bd8bc444ccb5", size = 660713, upload-time = "2026-05-18T04:31:24.62Z" }, + { url = "https://files.pythonhosted.org/packages/a9/07/f97736a5fc605364fe67b25e9fa4a6965dfd4840d50c406ada507e9d735f/watchfiles-1.2.0-cp311-cp311-win32.whl", hash = "sha256:9342472aff9b093c5acd4f6d8f70ae0937964ab56542502bcf5579782da69ae8", size = 277222, upload-time = "2026-05-18T04:31:21.131Z" }, + { url = "https://files.pythonhosted.org/packages/cf/99/2b04981977fc2608afd60360d928c6aecf6b950292ca221d98f4005f6694/watchfiles-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:dbd6c97045dad81227c8d040173da044c1de08de64a5ea8b555da4aee1d5fa22", size = 290274, upload-time = "2026-05-18T04:31:45.966Z" }, + { url = "https://files.pythonhosted.org/packages/3c/74/f7f58a7075ee9cf612b0cfcddb78b8cd8234f0742d6f0075cf0da2dde1c6/watchfiles-1.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:57a2d9fa4fb4c2ecae57b13dfff2c7ab53e21a2ba674fe9f05506680fcdcc0d7", size = 283460, upload-time = "2026-05-18T04:31:39.126Z" }, + { url = "https://files.pythonhosted.org/packages/b8/2f/e42c992d2afda3108ea1c02acecc991b9f31d05c14adc2a7cee9ee211fc4/watchfiles-1.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:bc13eb17538be00c874699dc0abe4ee2bc8d50bb1166a6b9e175ef3fd7eb8f26", size = 400115, upload-time = "2026-05-18T04:32:02.06Z" }, + { url = "https://files.pythonhosted.org/packages/5f/8f/6af2ea19065c91d8b0ea3516fdfc8c0d349f407e8e9fbf4e5a17360de8ad/watchfiles-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d95ddc1eb6914154253d239089900813f6a767e174b8e6a50e7fdacb7e4236c", size = 393659, upload-time = "2026-05-18T04:30:50.951Z" }, + { url = "https://files.pythonhosted.org/packages/13/01/b32a967c56fb3e3e5be3db52c3d3b87fa4513aa367d8ed1ad96d42952e5f/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f70d8b291ef6e88d19b1f297a6905ddb978888d9272b0d05e6f53309856bcfc", size = 453207, upload-time = "2026-05-18T04:31:04.231Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/97557a812180338cb1abd32e1cffcc4588f59b5f23e0cb006b2ba95ba64a/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:56d8641cf834c2836922899105bd3ce3d0dfc69291d52edf0b4d0436829b34c0", size = 459273, upload-time = "2026-05-18T04:31:50.377Z" }, + { url = "https://files.pythonhosted.org/packages/e8/a8/b4b08dcb7653b8087c6586f7ce649505900e866bbcfe40dc9587af02e686/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2581a94056e55d7d0a31a823ea92bf73749c489ca2285bfdc0fbe6b2bb49d50c", size = 489927, upload-time = "2026-05-18T04:31:42.485Z" }, + { url = "https://files.pythonhosted.org/packages/50/94/3dceea03545d2e5ddfd839f0ddd5e1cecbf1697b5a428d5ba11cef6af95d/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41bc1199f7523b3f82843c88cbb979180c949caef0342cf90968f178e5d49b01", size = 570476, upload-time = "2026-05-18T04:31:03.071Z" }, + { url = "https://files.pythonhosted.org/packages/cc/f2/d39a5450c3532092b91f81d274360e613c2371bc874a89c7a1a3c5e8d138/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7571e4464cb6e434958f867f7f730b8ab0b75e3f8e5eac0499168486ab3c33a8", size = 465650, upload-time = "2026-05-18T04:30:12.701Z" }, + { url = "https://files.pythonhosted.org/packages/22/24/ed72f68cbc1333ca9b9f2200aa048bb6658ae41709bc1caad4310f4bdffd/watchfiles-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e53a384f76b631c3ae5334ce6a52f0baa3a911eb94a4eac7f160079868b716d5", size = 456398, upload-time = "2026-05-18T04:30:13.784Z" }, + { url = "https://files.pythonhosted.org/packages/0d/64/982ef4a4e5bab5b6e5b6becc8cd5e732f6130a78b855f0abec6439a9a135/watchfiles-1.2.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:d20029a60a71a052a24c4db7673bc4de39ab89adbaccbfb5d67987c5d73f424d", size = 465140, upload-time = "2026-05-18T04:31:52.111Z" }, + { url = "https://files.pythonhosted.org/packages/a0/0c/95282abf4ed680b6096010bcfc30c5fa7a041fc5aa5a2ad17a2cc6c75bba/watchfiles-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2cb93af48550faf1cea04c303107c8b75833de7013e57ce27d3b8d21d8d0f58c", size = 630259, upload-time = "2026-05-18T04:31:25.676Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/607c1de1530c4bdcf2cf1d1ecc2505ddba5d96bd43ba9f2b0e79876f850f/watchfiles-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2995c176de7692b86a2e4c58d9ec718f753150a979cb4a754e2b4ffa38e70906", size = 659859, upload-time = "2026-05-18T04:30:24.333Z" }, + { url = "https://files.pythonhosted.org/packages/fa/08/d9e2e0f9e8e6791d33aefc694ad7eefa7f901f63caff84a81ded38692f9c/watchfiles-1.2.0-cp312-cp312-win32.whl", hash = "sha256:7a2cffd17d27d2ecbb310c2b1d8174f222a5495b1a721894afa88ec11e25b898", size = 275480, upload-time = "2026-05-18T04:30:31.307Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e6/9d42569c0102645cc8cea5d8c7d8a1e9d4ada2cb7f05f75e554b8aa2202a/watchfiles-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:f155b3a1b2a5fc89cdc70d47ee5d54e3b75e88efa34982028a35daef9ba00379", size = 288718, upload-time = "2026-05-18T04:32:10.745Z" }, + { url = "https://files.pythonhosted.org/packages/0a/26/88e0dc6ee3898169d7fa22bb6a69cabf2502d2ee25cb8c876d1262d204f8/watchfiles-1.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:8fa585ede612ee9f9e91b18bebf9ba11b9ae29a4e3a0d0cf6fca3e382133f0d5", size = 281026, upload-time = "2026-05-18T04:30:22.23Z" }, + { url = "https://files.pythonhosted.org/packages/d1/4d/70a7feced9f87e2ff26dba42667290f41694fc64646c67261fbb8cab5d5c/watchfiles-1.2.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:01ea8d66f0693b9b60a6541c8d10263091ca9a9060d242f3c1f3143f9aad2c98", size = 399730, upload-time = "2026-05-18T04:31:38.162Z" }, + { url = "https://files.pythonhosted.org/packages/31/3a/0da302f2307aee316922806ebd5726c542cbd787c938271cf14a074c7daf/watchfiles-1.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ba0480b9a74af058f43b337e937a451e109295c420916d68ad24e3dc02f5e44", size = 392842, upload-time = "2026-05-18T04:30:27.051Z" }, + { url = "https://files.pythonhosted.org/packages/db/ef/d5bdb705c224dbc256aa0c1ec47bf4e61ec52558f2afb44a71a1fe4d7015/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f34e26a19f91f710c08e0183429f0d1d15df734e6bc78c31e77b9ea9c433658", size = 452989, upload-time = "2026-05-18T04:31:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/71/29/5495f2c1661949ef7a35e4d71111d129cfe7606414a26887a919d0a55406/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b4e77f6a55f858504069abd35d336a637555c09bca453dde1ee1e5ada8a6a1fb", size = 458978, upload-time = "2026-05-18T04:30:52.606Z" }, + { url = "https://files.pythonhosted.org/packages/d5/8c/7f9c07c433811c2fffd93e13fdfb7135de9aab5f2ae41be08960fa0047dc/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0cb4d80e212f116474a545c21c912b445f16bb0cef9e6a73a498164223e14e2f", size = 490248, upload-time = "2026-05-18T04:31:36.003Z" }, + { url = "https://files.pythonhosted.org/packages/3c/11/d93632febc52fbc21be90231bb7c17fd5387f46c9076fd40a5f9c2ae6910/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b974946a10af379d425e2eef5b62f5c6ebeaccf91d45eaad6f5b27ecd4f91aa0", size = 571847, upload-time = "2026-05-18T04:31:10.862Z" }, + { url = "https://files.pythonhosted.org/packages/55/b4/383173e73aabb07ad1d9c7aa859d95437ac46a6d6a1e11005facda0c9d19/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86bc13c25a8d1fcd70b51d0ce7c9b65e90de5666fcbfd3e34957cc73ee19aeb5", size = 465974, upload-time = "2026-05-18T04:30:17.006Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6c/89b1a230a78f57c52dd8893adb1f92f94411721b6ec12596c56d98c74356/watchfiles-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca148d73dea36c9763aaa351e4d7a51780ec1584217c45276f4fe8239c768b71", size = 454782, upload-time = "2026-05-18T04:30:35.656Z" }, + { url = "https://files.pythonhosted.org/packages/24/62/1732118367cfff0a9fce3bf62ff4bfded09ef5df21d9d446b858b3f70a96/watchfiles-1.2.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:c525543d91961c6955b2636b308569e84a1d1c5f5f2932041ab9ef46422f43e3", size = 465182, upload-time = "2026-05-18T04:30:20.846Z" }, + { url = "https://files.pythonhosted.org/packages/28/96/716f7e5f51339bf22963f3345f9f27d7f3b30e2eadc597e257c881dd3c53/watchfiles-1.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a204794696ffb8f9b10fba6f7cb5216d42f3b2b71860ccac6b6e42f5f10973b0", size = 629841, upload-time = "2026-05-18T04:31:05.397Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/c40783950fd771ccf66ab3ec2722d188a9af1c7f96c6e811f36e40c6e03f/watchfiles-1.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:10d86db20695afe7997ac9e1717637d6714a8d0220458c33f3d2061f54cec427", size = 658028, upload-time = "2026-05-18T04:31:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/71/72/4508db1856d1d87fcbb3b63f4839bab1b5682cb0e8d224d122263c09654a/watchfiles-1.2.0-cp313-cp313-win32.whl", hash = "sha256:eb283ee99e21ad6443c8cdb06ac5b34b1308c329cbdf03fa02b445363714c799", size = 275183, upload-time = "2026-05-18T04:30:59.57Z" }, + { url = "https://files.pythonhosted.org/packages/f9/36/14b76ca57652e5cc5fd1c11f32a261292c08a0d19a00351013c2549cbfb2/watchfiles-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a0f27f01bee51861392bb6b7c4fdb290b27d1eb194e9e28788d68102a0e898d9", size = 288059, upload-time = "2026-05-18T04:32:07.937Z" }, + { url = "https://files.pythonhosted.org/packages/1b/8d/0a85e395398d8d20fadfe5c5d32c726eee17a519e78fb356f2cf7531bffe/watchfiles-1.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:3651aa7058595e9cfb75d35dd5ada2bf9f48a5b8a0f3562821d3e210c507e077", size = 280186, upload-time = "2026-05-18T04:31:54.484Z" }, + { url = "https://files.pythonhosted.org/packages/37/68/36db056f1fdcc5f07302f56e631774d6835bcd6fa3ace402304621d5f9e5/watchfiles-1.2.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:faea288b6f0ab1902ef08f4ca6de005dccf856c4e0c4f21b8c5fce02d90a1b08", size = 399031, upload-time = "2026-05-18T04:30:44.576Z" }, + { url = "https://files.pythonhosted.org/packages/c1/64/01a9d6f66a82a5c101ce939274106cc72759d62427e153f01edd2b9f87c2/watchfiles-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01859b11fd9fbca670f4d5da00fbac282cfea9bd67a2125d8b2833a3b5617ea9", size = 391205, upload-time = "2026-05-18T04:30:25.413Z" }, + { url = "https://files.pythonhosted.org/packages/84/2c/0a44fe058cb4bb7b8ede6b6670698bbb7c0400740e378d00022189b7b31d/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fff610d7bb2256a317bb1e96f0d7862c7aa8076733ee5df0fd41bbe76a24a4f4", size = 451892, upload-time = "2026-05-18T04:32:14.005Z" }, + { url = "https://files.pythonhosted.org/packages/67/a1/351e0d56cd35e6488b5c8b4fb11a809a5bc923e8fe8fed9faf8920be0c89/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b141a4891c995a039cd89e9a49e62df1dc8a559a5d1a6e4c7106d16c12777a55", size = 458867, upload-time = "2026-05-18T04:31:22.279Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7d/9d09605187f1b838998624049fcf8bf47b73c1a3b76901fcac1782f62277/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f22943b7770483f6ea0721c6b11d022947a98eb0acae14694de034f4d0d38925", size = 490217, upload-time = "2026-05-18T04:31:43.657Z" }, + { url = "https://files.pythonhosted.org/packages/60/5d/a17a16eccb182f04188cd308ec24b1a71a9b5c4e7098269cf35d9fa56d02/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1bc6195825b7dcd217968bb1f801a60fd4c16e8eeab5bedc7fe917d7d5995ab4", size = 571458, upload-time = "2026-05-18T04:32:11.875Z" }, + { url = "https://files.pythonhosted.org/packages/d3/3d/4dd457062083ab1938e5dfd45032eb425cee2ac817287ca8ff4356183e5d/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4a4b147f5dca2a5d325a06a832fb43f345751adfbc63204aec30e0d9ca965a2", size = 464707, upload-time = "2026-05-18T04:30:43.492Z" }, + { url = "https://files.pythonhosted.org/packages/c6/71/ea8c57b128f5383de74d0c7d2d9c57ad7c9a65a930c451bd25d524b295b7/watchfiles-1.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4543579a9bdb0c9560039b4ffddbdb39545707659fbc430ce4c10f3f68d557f9", size = 454663, upload-time = "2026-05-18T04:30:16.061Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/2e812bf938406d7db351f0703ddd3fc6c061cf30d96153a77bc79a943a44/watchfiles-1.2.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:20aa0e708b920bde876a4aa82dc7dd6ebea228a63a67cda6632c2fc87b787efa", size = 463537, upload-time = "2026-05-18T04:31:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/86/56/d17a7f1dd1bc3035f1072694a551301272f1739c2d8e319c927cb9e29b38/watchfiles-1.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:d413349d565dab74297f2a63e84a097936be69bf8f3b3801f27f380e32040f44", size = 629194, upload-time = "2026-05-18T04:31:14.141Z" }, + { url = "https://files.pythonhosted.org/packages/be/06/f1ff66bf5cae50aa4062779a0ecd0bbaf15e466195719074078947d9a17d/watchfiles-1.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f28b2725eb8cce327b9b3ab02415c853011dc55c95832fe90de6bc56f5315f72", size = 656194, upload-time = "2026-05-18T04:31:47.14Z" }, + { url = "https://files.pythonhosted.org/packages/e7/54/a9c7ea9a82a4ac65e7004c0a03920b5cdd2f9c3b678757d9cd425aa51d53/watchfiles-1.2.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b8c8358484d5fa12ef34f05b7f4168eaf1932f408725ff6d023c33ec17bd79d4", size = 400205, upload-time = "2026-05-18T04:32:05.153Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5d/c9ab3534374a4a67450696905d6ef16a04405448b8dc52bd752ae50423d4/watchfiles-1.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f04b092229ad2c50126dd3c922c8822e51e605993764a33058d4a791ab42281", size = 392508, upload-time = "2026-05-18T04:30:54.849Z" }, + { url = "https://files.pythonhosted.org/packages/26/ca/1ad30103535cf0cecd7b993e8d50edc5351b1820e38f2d22e3df58962feb/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a7ce236284f002a156f70add88efe5c70879cccbb658be0822c54b1306fc09d", size = 452448, upload-time = "2026-05-18T04:30:53.727Z" }, + { url = "https://files.pythonhosted.org/packages/37/a1/ceee2cdf2afbd715fa07758d39c9859513eae411b23196f7fd039e5feedd/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b9909cc2b48468b575eefa944919e1fe8a36c5849d5c7c168f80a8c1db69398e", size = 459605, upload-time = "2026-05-18T04:30:23.312Z" }, + { url = "https://files.pythonhosted.org/packages/e8/f6/421e30fd1cb3907a84ed92ab3f1983e37ba2dca015e9a894a048418417a2/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a37faaed405c67e28e6be45a1fa4f206ef5a2860f27c237db9fa30704c38242", size = 490757, upload-time = "2026-05-18T04:30:47.358Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/55ed1b97ed08be7bba6f9a541cac15f2a858e1d74d2b07b6da70a82aab00/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9649193aa27bd9ff2e80ff29bfaa93085496c7a3a377592823cc58b77ee88add", size = 568672, upload-time = "2026-05-18T04:30:38.915Z" }, + { url = "https://files.pythonhosted.org/packages/d1/cf/d8ae8a80dd7bafab395ea7681c10237311bbf34d37704a8c744e7cf31fc7/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e4ff8e37f99cf1da89e255e07c9c4b37c214038c4283707bdec308cb1b0ea1f", size = 464197, upload-time = "2026-05-18T04:30:09.914Z" }, + { url = "https://files.pythonhosted.org/packages/7c/8a/3076c496ca8dafe0e8cd03fcebdfc47be4b1174b4e5b24ff6e396e6b3af2/watchfiles-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:054dc20fd2e3132b4c3883b4a00d72fd6e1f56fdaf89fccd12e8057d74cd74d7", size = 453181, upload-time = "2026-05-18T04:30:14.829Z" }, + { url = "https://files.pythonhosted.org/packages/e5/10/9745e17c98e7b8a86454df0a3c7b5686bd650383f1e9f26e4ebcbd6cc0c0/watchfiles-1.2.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:e140ed30ebde76796b686e67c182cff10ea2fbab186fafd1560f74bb5a473a6e", size = 465109, upload-time = "2026-05-18T04:30:28.123Z" }, + { url = "https://files.pythonhosted.org/packages/8f/95/8ef4a95481d3e0cb52d62a06fa6e972e81424be2d9698b91a2fecca9904c/watchfiles-1.2.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:bb7e52ecf68ba46d22df23467b87cffeb2146908aa523ebfe803019618cfda06", size = 630653, upload-time = "2026-05-18T04:31:49.304Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e4/3b3bf36b0f829b50c6ebcb8d031583863c59f923d6a6af3d485e470d0fac/watchfiles-1.2.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:23282a321c8baf9b3a3c4afff673f9fe65eb7fdc2338d765ccad9d3d1916a5ba", size = 657838, upload-time = "2026-05-18T04:31:06.497Z" }, + { url = "https://files.pythonhosted.org/packages/21/b1/6cbbb50c1f3002ab568777d44aa21206dfb8807a840990c4037523b51812/watchfiles-1.2.0-cp314-cp314-win32.whl", hash = "sha256:c0db965c5f79aa49fe672d297cf1febc5ad149b658594944f49a54a2b96270a7", size = 275108, upload-time = "2026-05-18T04:30:06.891Z" }, + { url = "https://files.pythonhosted.org/packages/92/45/190ce6db8dcb4536682cf75d3889ff1a27182a58cb519d343cb6d9ea63d8/watchfiles-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:71283b39fd17e5408eb123bd37aeecfd9d54c81fc184421943208aadb879d103", size = 288441, upload-time = "2026-05-18T04:32:12.901Z" }, + { url = "https://files.pythonhosted.org/packages/74/0d/3eae1c2313ab08378431d907c3f8095ecca00f3eda33111cf4f0f2591799/watchfiles-1.2.0-cp314-cp314-win_arm64.whl", hash = "sha256:c5c19526f4e54a00f2666a6c0e9e40d582c09e865055ea7378bf0009aab857b3", size = 280684, upload-time = "2026-05-18T04:31:26.902Z" }, + { url = "https://files.pythonhosted.org/packages/b1/75/fb64e6c25d6b5ca636d03df34ffb1c6e9873303e76d27967e045f8df088f/watchfiles-1.2.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d73a585accffa5ae39c17264c36ec3166d2fad7000c780f5ef83b2722afb9dd2", size = 398857, upload-time = "2026-05-18T04:32:17.108Z" }, + { url = "https://files.pythonhosted.org/packages/73/4e/9f7adf01754cbf81843722ccfec169d8f26c69778281a302855cecd2ee08/watchfiles-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ae99b14c5f21e026e0e9d96f40e07d8570ebee6cafd9d8fc318354606daa7a28", size = 392413, upload-time = "2026-05-18T04:31:07.911Z" }, + { url = "https://files.pythonhosted.org/packages/47/c8/bec626bcc2d69f44b9acb24ce7d60ed7b16b73628eea747fcbd169d8edda/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4429f3b105524a10b72c3a819b091c495d2811d419c1e1e8df773a5a5974f831", size = 452409, upload-time = "2026-05-18T04:31:20.142Z" }, + { url = "https://files.pythonhosted.org/packages/00/b7/b6362068e81e7c556d155a34c35d40ac3ef42d747b06d7f6e5bf58e359c2/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:43d818978d06062d9b22c4fab2ebe44cf5213d42dc8e62bda8c2760cfa2eeb33", size = 458827, upload-time = "2026-05-18T04:32:06.219Z" }, + { url = "https://files.pythonhosted.org/packages/67/f8/9a813fa42afb1e0b4625e75f0479826644d3ee8dc287e093799bc01f390c/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9f732dc58b2dbe69e464ccf8fff7a03b0dd0be439da4c0720d3558527d3d6b4", size = 490104, upload-time = "2026-05-18T04:31:56.034Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bf/27dfb6094ca4c9aad21298b5525b6c53cb36121ee454331d05161e58d130/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f200104103feb097de4cab8fe4f5dd18a2026934c7dea98c55a2f5fd6d5a33b", size = 571360, upload-time = "2026-05-18T04:31:57.133Z" }, + { url = "https://files.pythonhosted.org/packages/fb/39/44a096d67270ea93df91d33877dbe91fbda3aa4f8ec2edf799d93eda8736/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63ac26eefbf4af1741247d6fb68b11c49a25b2f7413fbd318a83a12aaa9cf666", size = 464644, upload-time = "2026-05-18T04:30:57.33Z" }, + { url = "https://files.pythonhosted.org/packages/0e/80/c7472203bad6268e3ef1ad260739704847898938ad7ea8b63a5131f46b50/watchfiles-1.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c4997d4e4a55f0d02b6cde327322daf3a0400e5df6c6b15948994bf72497925", size = 454771, upload-time = "2026-05-18T04:30:48.736Z" }, + { url = "https://files.pythonhosted.org/packages/51/cf/3b10b268b4b7f0fc26e9debb5eef1998b515887840f444cd3ec80c688755/watchfiles-1.2.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:4c887eba18b7945ac73067a8b4a66f21cd46c2539b2bc68588f7be6c7eb6d26b", size = 463494, upload-time = "2026-05-18T04:31:33.826Z" }, + { url = "https://files.pythonhosted.org/packages/3d/3e/a4302545cd589262a0dc7d140e86f7688eba3f9c72776c27f7e23b8864c4/watchfiles-1.2.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:3416ff151bb6b5a8d8d11664974fbef4d9305b9b2957839ab5a270468fd8df30", size = 629383, upload-time = "2026-05-18T04:31:15.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/99/d5649df0a9a410d45b7c882304d0b790903ac9b6e8f2cfd12114e0c6b9f2/watchfiles-1.2.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:0e831a271c035d89789cffc386b6aa1375f39f1cd25eb7ca0997e4970d152fc5", size = 656093, upload-time = "2026-05-18T04:31:58.707Z" }, + { url = "https://files.pythonhosted.org/packages/92/b9/362702539275019a54dd2e94511b31a9b89c5f9e6a21966de7eb692549fc/watchfiles-1.2.0-cp315-cp315-macosx_10_12_x86_64.whl", hash = "sha256:37a6721cdf3f65dbb13aa9503510ccb4451603ac837e44d265d7992a597e1374", size = 400109, upload-time = "2026-05-18T04:31:16.879Z" }, + { url = "https://files.pythonhosted.org/packages/8f/75/71d5ba62db781e5587bded1d944c675374bc4aa37ff33d5018d98e8b6538/watchfiles-1.2.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:2b37d10b5a63bd4d87e18472d80fa525bd670586fae62e5dd580452764879b65", size = 392167, upload-time = "2026-05-18T04:31:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/3c/01/c66dd95d0423fe30d31820e2d1d5bda773764131bbb6ac0cb1cf303ac328/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a105bc2283f67e8fbec74253ec2d94925de92ed72c0393f1206bf326b7b7b69", size = 452372, upload-time = "2026-05-18T04:31:00.836Z" }, + { url = "https://files.pythonhosted.org/packages/91/15/2fe99557e72f85627c6a8eed50d889e8d101623e060a22ad75b875cb932d/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5327989a465505f05cfe06f04fa9d0c2fd5432bb243e10e6f012b1bdca3c8579", size = 459596, upload-time = "2026-05-18T04:31:34.96Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/d4acfa0023367428ed48351b3b9b267893037b6cadae55620c61c24bcfd4/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecb47f183a8025b2aa18b546725c3657e542112ae9c0613a2af79b4fa8d04ad7", size = 490869, upload-time = "2026-05-18T04:31:59.923Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5f/3164cbdce06c9fb95c4f7b9e2f9760b5e2797af43a9ecc317ef42a23a278/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8520a4ab0e37f770afc34459c4f8f7019e153f9124dc101c15538365875d1ab2", size = 571641, upload-time = "2026-05-18T04:32:00.948Z" }, + { url = "https://files.pythonhosted.org/packages/41/e6/85d3731c55e65cd7690f3f803d24c139588aaf863e4bf2148fe7a7fa1a19/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71cd71740ed2c15211ebb237ced4e39a1cdf6f80566e5fe95428da1626f4fde6", size = 464444, upload-time = "2026-05-18T04:30:34.298Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7d/562641012b8b09872742c3b8adf9629ec479fd78f8d68ae4a0c13da8add6/watchfiles-1.2.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f88af53d6ddaf72179ef613ddc905e6f4785f712b49b80b3bef9f3525e6194b4", size = 453593, upload-time = "2026-05-18T04:31:23.464Z" }, + { url = "https://files.pythonhosted.org/packages/56/fe/cb8ef3d6f929d14158fdaaad9925985b7310abc9384dcd4d82dd0016fb59/watchfiles-1.2.0-cp315-cp315-manylinux_2_31_riscv64.whl", hash = "sha256:cee9d5efd929efdac5f7e58f72b3376f676b64050a91c5b99a7094c5b2317488", size = 465096, upload-time = "2026-05-18T04:31:30.384Z" }, + { url = "https://files.pythonhosted.org/packages/25/91/80908e835e100527a9267147b08c0eee1fa6ab0ffec15edc04d1d44885f7/watchfiles-1.2.0-cp315-cp315-musllinux_1_1_aarch64.whl", hash = "sha256:b718bf356bbc15e559bd8ef41782b573b8ae0e3f177ab244b440568d7ea02cfb", size = 630638, upload-time = "2026-05-18T04:30:49.89Z" }, + { url = "https://files.pythonhosted.org/packages/46/4b/95ab2f256bb4af3cb2eb23b9317bda984ee6e0f11733a5c004a6c95b06e3/watchfiles-1.2.0-cp315-cp315-musllinux_1_1_x86_64.whl", hash = "sha256:922c0e019fe68b3ae392965a766b02a71ba1168c932cebc3733cd52c5fe5b377", size = 657684, upload-time = "2026-05-18T04:31:32.027Z" }, + { url = "https://files.pythonhosted.org/packages/23/f4/7513ef1e85fc4c6331b59479d6d72661fc391fbe543678052ac72c8b6c19/watchfiles-1.2.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4674d49eb94706dfe666c069fc0a1b646ffcf920473492e209f6d5f60d3f0cc2", size = 403050, upload-time = "2026-05-18T04:30:36.753Z" }, + { url = "https://files.pythonhosted.org/packages/27/0b/a54103cfd732bb703c7a749222011a0483ef3705948dae3b203158601119/watchfiles-1.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:094b9b70103d4e963499bdea001ee3c2697b144cd9ae6218a62c0f89ec9e31db", size = 396629, upload-time = "2026-05-18T04:32:03.268Z" }, + { url = "https://files.pythonhosted.org/packages/5e/2c/73f31a3b893886206c3f54d73e8ad8dee58cdb2f69ad2622e0a8a9e07f4e/watchfiles-1.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0ef001f8c25ad0fa9529f914c1600647ecd0f542d11c19b7894768c67b6acb7", size = 457318, upload-time = "2026-05-18T04:31:01.932Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f9/45d021e4a5cc7b9dd567f7cbb06d3b75f751a690063fb6cc7ec60f4e46b7/watchfiles-1.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a88fc94e647bc4eec523f1caa540258eb71d14278b9daf72fa1e2658a98df0f0", size = 457771, upload-time = "2026-05-18T04:30:56.331Z" }, +] + +[[package]] +name = "websockets" +version = "16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/02/b9a097e1e16fee4e2fd1ec8c39f6a9c5d6257bae8fa12640caf869f54436/websockets-16.1.tar.gz", hash = "sha256:299468cbe42e2b9981134c7c51d99387d8a7bf562b00183b3eec53f882846dad", size = 182530, upload-time = "2026-07-10T06:32:57.734Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/13/d47429afcc2c28616c32640009c84ea3f95660dab805766345b9682468e0/websockets-16.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a9b1d7a63cba8e6b9b77e499a81eab29d31100298d090ad4507d1048c0b9cae0", size = 179770, upload-time = "2026-07-10T06:30:46.308Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c7/2f0a722039a1e0107be73ed672ba604449b4956e48733e8e6b8a005aea42/websockets-16.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bedbc5efeb96621aa2921d2d92608246691399418cac22acba427eb11877ea1f", size = 177455, upload-time = "2026-07-10T06:30:47.601Z" }, + { url = "https://files.pythonhosted.org/packages/43/6a/c26b0ae449e93d256ce5cdd50d5fe97b575a63e8dcd311a1faa972fd6bc6/websockets-16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fd847ab82133015afe65d778e7966ab42dba16bd7ad2e5b8a7918db6539f3f94", size = 177731, upload-time = "2026-07-10T06:30:49.102Z" }, + { url = "https://files.pythonhosted.org/packages/cc/3f/381550b344a02f0d2f84cda25e79b54575291bc7022128a41163fe8ba5b0/websockets-16.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e2fb33ccb16ee40a95cc676d7b0ff451a9a2632f11a0dbc2e666326892b2e1de", size = 187066, upload-time = "2026-07-10T06:30:50.505Z" }, + { url = "https://files.pythonhosted.org/packages/4a/87/5ab1ec2086910f23cfb9ec0c1c29fbcc24a9d190b5198b1557c00ce4a47e/websockets-16.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f15b6d9ea9c2eaf6ccab964a082b09bfa6634a495bb0c2e9e7ee6943f58976", size = 188301, upload-time = "2026-07-10T06:30:51.835Z" }, + { url = "https://files.pythonhosted.org/packages/75/4b/bbbb8e6fac4cfc53d7aaa69a3d531bf10799354b0021f4b58914aced8c1a/websockets-16.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:638cf57c48b4ad8ac1ff1e453f4f97db2426b690ddc111e6da96b27b4a340bc3", size = 191594, upload-time = "2026-07-10T06:30:53.229Z" }, + { url = "https://files.pythonhosted.org/packages/5c/da/6c0c349443d6e999f481e3d9a0e57e7ac2956d75d6391bec24b92af3fe13/websockets-16.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2c1c85f61bc9d5eac57ce705d848dc2d2ce3680638300bf4e1da7d749e2cf4ce", size = 188862, upload-time = "2026-07-10T06:30:54.744Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ea/a368d37c010425a5451f42052fe804e754e23333e8448aef5d55c8a8d64f/websockets-16.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:eeab6d27f51c7e579023c971f5e6dff200deadf01faf6831beaecd32052dfaef", size = 187633, upload-time = "2026-07-10T06:30:56.055Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4e/2ecd59add10d0855ec03dbdedfcdacdbd1aaabcd44b7dcbeda27538662e9/websockets-16.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:2ed64e5a97b0b97a0b66e18bfe281317a75fbbd5afe692f939ea8d14a4292f2c", size = 185089, upload-time = "2026-07-10T06:30:57.444Z" }, + { url = "https://files.pythonhosted.org/packages/6f/eb/c6c3dcd7a01097bb0d42f4e9ef21a2c2a491d36b77cd0870ab59f9e8e77f/websockets-16.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9b3b021d0ed4bc16eea9775f62c9fa71acdacba0fc790b38581754dedf29ca60", size = 187790, upload-time = "2026-07-10T06:30:58.731Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3e/775d36885d5e48ab8020aaf377de0ff5fbeb8bc2682a7e46419e4a14521c/websockets-16.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6eb604a4167f0a0d53c2243dfc667a29f0b43c3436057184e070bb82a1000fa2", size = 186381, upload-time = "2026-07-10T06:31:00.355Z" }, + { url = "https://files.pythonhosted.org/packages/ad/90/6305c00812a92e47d0582604c02bd759db0118bbafc13f707d712dbcf898/websockets-16.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9a3f125e44c3e34d61d111652e608e0f5b85ce08c225c8d56ad0eb822fa40030", size = 188193, upload-time = "2026-07-10T06:31:01.677Z" }, + { url = "https://files.pythonhosted.org/packages/f6/32/96bf8302c81d961585b4d34a2ddd3f229782f9b8c57bc78bbf98f1b1a4ac/websockets-16.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:8fdf0b00d0d1f30d1f06a92cab46fe542eec3eb302a7aee7163f142d0780f216", size = 185771, upload-time = "2026-07-10T06:31:03.062Z" }, + { url = "https://files.pythonhosted.org/packages/e8/1f/e8fe44b1d2dc417d740d9959d28fd2a846f268e7df38a686c04ac7dfe947/websockets-16.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:67b56828712f5fa7852de4c0265c28827311a657a4d275b7312ed0d1a918bee4", size = 186803, upload-time = "2026-07-10T06:31:04.34Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/b07d3a4e1eb2ab03e94e7f53f0c7a628e85fde6ad86011f7afd08f27b985/websockets-16.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39c7e7730be33b8f0cd6f0aa8e8c82f9cdd1813f159765e073b2ece65f4824b5", size = 187041, upload-time = "2026-07-10T06:31:05.567Z" }, + { url = "https://files.pythonhosted.org/packages/a6/fd/e0abb8acc435642ac4a671490f6cf781c882f3fe682cdced9080ea455ab5/websockets-16.1-cp311-cp311-win32.whl", hash = "sha256:c54fe94fb2f11e11b48920c5f971e298cec73ac35db56efe57a49db63dfc95d4", size = 180158, upload-time = "2026-07-10T06:31:06.929Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/85574d9458d3b913090087b817df0cc47b68e9a01dd0ab6ac04b77f49b0a/websockets-16.1-cp311-cp311-win_amd64.whl", hash = "sha256:f9f4fb9ae8b802e55609685db98382d48fd3feb1397804e1e774968dea0f28c7", size = 180456, upload-time = "2026-07-10T06:31:08.247Z" }, + { url = "https://files.pythonhosted.org/packages/a1/52/748c014f07f4e0e170c8932de7e647a1511d5ab3049cd978797136aee577/websockets-16.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b6aa3f7ad345cf3862c21f4fbf2ef5e14d911348476c2845e137c091fe3a3f0b", size = 179798, upload-time = "2026-07-10T06:31:09.664Z" }, + { url = "https://files.pythonhosted.org/packages/8b/5e/2a2e64d977d084e49d37c187c26c056daaff41965be7300cd5dbde6f8b07/websockets-16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b43fcfb521ac2f34ba80b7b8ea16303e4ad82dd8af667bf40839ad3a5d37b164", size = 177478, upload-time = "2026-07-10T06:31:11.072Z" }, + { url = "https://files.pythonhosted.org/packages/aa/12/5b85b4e75d697e548a94962ce5c036b05dd21cb9545759d555c5586422fc/websockets-16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2bd3e12cd9afbe2baedae0b1eeade8ba64329b60fe2f9abdc966bd10fd2c2ef5", size = 177746, upload-time = "2026-07-10T06:31:12.386Z" }, + { url = "https://files.pythonhosted.org/packages/9d/62/79b1c8f0cee0da648b4899e1c5b0dbd3aa59846985136a54854db6827ab4/websockets-16.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:35f41979c8623df9bd30d949d82010a8fda5c56ff12cd8508a5b7272b6d4b53a", size = 187345, upload-time = "2026-07-10T06:31:13.754Z" }, + { url = "https://files.pythonhosted.org/packages/25/34/b7c5c52c2f24280e1c017acb7ad491a566750a5cceca7f3cf999373bba21/websockets-16.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a24d1f35aef07d794a16c853c688e74956c50239bec37b4f2de080056046419b", size = 188581, upload-time = "2026-07-10T06:31:15.075Z" }, + { url = "https://files.pythonhosted.org/packages/bc/37/604193bebcbeffe96fdf795960b83a15d600880c64dc17ec9c31c5b3427d/websockets-16.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0c64c024ddf7a35331b21fcddb562a039c275d2c82e8c2d12939e7da23997270", size = 191362, upload-time = "2026-07-10T06:31:16.395Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b4/5ee27575b367d7110d4d13945e2a9de067ec84dc71e54b87f01e38550d9a/websockets-16.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c3e99757f5baafe20fc598e202ea6f5b0b265186ad38d0a17bd8beca16296955", size = 189216, upload-time = "2026-07-10T06:31:17.776Z" }, + { url = "https://files.pythonhosted.org/packages/7e/22/3e2dcc78d85fc5d9d814895ce6d07d0dfacc0f6aaa1d151f2b8c8d772299/websockets-16.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:353f3bc6e058ac1ccab4b3588e8598837a8c04cfc8351233e6d523be675d844c", size = 187971, upload-time = "2026-07-10T06:31:19.152Z" }, + { url = "https://files.pythonhosted.org/packages/9e/2f/cd271717b93d5ee19626cb5e38a85baab745c86e33db7c31a3ac729b31b8/websockets-16.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0352f5b38b40e857b6428d468fa21dbb4dd4a567d933c26d9831b4efe1b92f43", size = 185381, upload-time = "2026-07-10T06:31:20.665Z" }, + { url = "https://files.pythonhosted.org/packages/78/91/6ad6f2f1426317b5001bd490534208c7360636b35bac1dec2e0c22bfc40e/websockets-16.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:70bd789afab579602968c39f21cb925466505f3edff22f0ae852bca54978a4f9", size = 188015, upload-time = "2026-07-10T06:31:22.024Z" }, + { url = "https://files.pythonhosted.org/packages/c7/6d/533733132ab4c07540efd4a8f0b9a435d3a5059b2f26cc476ace1abf7f45/websockets-16.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d0fb4b46f121eccd539353baebd1083a8767a9a351109453d1d1caecd1ba40c2", size = 186619, upload-time = "2026-07-10T06:31:23.376Z" }, + { url = "https://files.pythonhosted.org/packages/08/73/16c059f3d73b3331eba10793704afa4faa9939234fb08ef7dca35794e8f0/websockets-16.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c14b6634af01541e4efe2954fd8f263386f7aa6d37c01e55dd8109fd17661452", size = 188497, upload-time = "2026-07-10T06:31:25.024Z" }, + { url = "https://files.pythonhosted.org/packages/4d/89/9a8fae7dd2acdcfb1a8844c29fe42b518a04b64fce38a0923b6290e452f1/websockets-16.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:a58532c49a851bcb481e58c1be23b315c17fe2fbbed509d75aeea12f543d2c15", size = 186051, upload-time = "2026-07-10T06:31:26.291Z" }, + { url = "https://files.pythonhosted.org/packages/f6/40/b240c7dd6a0e0c59c1f68377cc3015263521080c327c15f5e753c1f6d378/websockets-16.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4e969170c3b08e1d8dabd990fef1fa702c4233aeaabec33f871806e444f6a0e4", size = 187029, upload-time = "2026-07-10T06:31:27.605Z" }, + { url = "https://files.pythonhosted.org/packages/50/35/524e3fac40e47d6fdcf6c4b2c95ef1bc8a97e01593c90eff86621df7b716/websockets-16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ff9b000064b88787ba9f7a3cb2af2b68a658ca5aad76458a46469e7124b678a0", size = 187308, upload-time = "2026-07-10T06:31:28.927Z" }, + { url = "https://files.pythonhosted.org/packages/00/13/56840cf62c8859af6ba22b9529da937332468c80f32b598753e8a66d3990/websockets-16.1-cp312-cp312-win32.whl", hash = "sha256:b9f5d83f80f4d7c4bba6d97f3755ac05850c784dce0fd2ab371c4e41172f53ff", size = 180161, upload-time = "2026-07-10T06:31:30.316Z" }, + { url = "https://files.pythonhosted.org/packages/d6/ff/87eb9eb44cb62424a8d729834f2b0515a47e2669fabec29820268f4d50a1/websockets-16.1-cp312-cp312-win_amd64.whl", hash = "sha256:6852c9f653966c16109d3b6f31181fd734f7914927e3f0fa1117af7a18c9aa21", size = 180462, upload-time = "2026-07-10T06:31:31.708Z" }, + { url = "https://files.pythonhosted.org/packages/d9/63/df158b155420b566f025e75613424ad9649a24bcb0e9f259321ab3d58bea/websockets-16.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:b0232ed141cec3df2af5a3959a071c51f40036336b0d37e17faf9ef52fc73e47", size = 179791, upload-time = "2026-07-10T06:31:33.108Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/00fe9414dfeafa6fe54eae9f5716c8c8e9ac59d192be3b893c096d395846/websockets-16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a71b73d143991714144e159f767b698f03c4a70b8a65ae1733b650cff488045b", size = 177472, upload-time = "2026-07-10T06:31:34.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/76/b10633424d40681b4e892ffd08ca5226322b2426e62d4ab71eae484c3a32/websockets-16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:187323204c3b2fc465e8fc2609e60437c521790cb9c1acb49c4c452a33e57f37", size = 177737, upload-time = "2026-07-10T06:31:35.964Z" }, + { url = "https://files.pythonhosted.org/packages/dc/61/d3bb03b2229bb1afd72008742d586cf1ea240dce64dd48c71c8c7fd3294c/websockets-16.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9dba74233c8c3ce368850818c98354dad2570f57231b3fd3bd00d7aa57628881", size = 187403, upload-time = "2026-07-10T06:31:37.496Z" }, + { url = "https://files.pythonhosted.org/packages/26/16/cc2e80478f688fc3c39c67dc1fac6a0783858058914ebc2489917462cb42/websockets-16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63339bc8c63c86a463177775cb7c677691f5bcfac7b3b2f01b286d42acd41600", size = 188639, upload-time = "2026-07-10T06:31:38.86Z" }, + { url = "https://files.pythonhosted.org/packages/15/d6/ad87b2507e57de1cbf897a56c963f2925962ed5e85fbe06aaa83ced27acd/websockets-16.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:23e545ea8ae4263e37cdfd4e22a217f519e48e432728bc461185bbf585f38a83", size = 190078, upload-time = "2026-07-10T06:31:40.218Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1a/5b37b3fd335d5811f29fc829f2646a3e6d1463a4bf09c3100708684c766e/websockets-16.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2237081454846fb40403a80ba86d82e2038b9c45865ab96af0abe7d002a91045", size = 189267, upload-time = "2026-07-10T06:31:41.523Z" }, + { url = "https://files.pythonhosted.org/packages/42/98/06afc33e9450d4230f94c664db78875d90f5f6a5fb77f0bc6ec15ae74e1c/websockets-16.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5f5218de1ed047385ca53744caba9435d65f75d008364970a3fae95a05812cf9", size = 188022, upload-time = "2026-07-10T06:31:42.838Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/42fef5d5887c18cf2d148b02debf56cecb9cfbffc68027cde9b12c8f432c/websockets-16.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:75c98e3920039d0edff03b74478ada504b7ce3a1bc406db2cabfca84320f7baf", size = 185435, upload-time = "2026-07-10T06:31:44.219Z" }, + { url = "https://files.pythonhosted.org/packages/a0/9b/8021c133add5fe40ed40312553a6cd1408c069d7efe3444ad483d4973ed3/websockets-16.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1facd189d8190af30487a55b4c3688484dd50801628a3b5b2ccd26db08e67057", size = 188080, upload-time = "2026-07-10T06:31:45.986Z" }, + { url = "https://files.pythonhosted.org/packages/69/54/1e37384f395eaa127383aab15c1c45e200890a7d7b99db5c312233d193e0/websockets-16.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:cc0c6a6eef613c7da32d4fb068f82ef834b58134f6a16b54e6c1e5bf9529ab3d", size = 186678, upload-time = "2026-07-10T06:31:47.449Z" }, + { url = "https://files.pythonhosted.org/packages/68/79/1caeacab5bc2081e4519288d248bc8bd2de30652e6eaa94be6be09a1fe5b/websockets-16.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ad9411eded8988b879be6038206698bf7106c85a78f642c004485bcb95be17eb", size = 188554, upload-time = "2026-07-10T06:31:48.886Z" }, + { url = "https://files.pythonhosted.org/packages/ee/83/b3dca5fad71487b726e31cb0acf56f226792c1cc34e6ab18cbf146bd2d74/websockets-16.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:cd68f0914f3b64694895bc5e9b14e8b447e41d7bf5ffaf989bb8dcb5e2dfdce7", size = 186109, upload-time = "2026-07-10T06:31:50.508Z" }, + { url = "https://files.pythonhosted.org/packages/5b/0b/8f246c3712f07f207b52ea5fb47f3b2b66fafec7303162644c74aed51c6a/websockets-16.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fef2debfe7f7ebdda12176f26166f95b7af17af05ba06150fcf889032e0213e9", size = 187061, upload-time = "2026-07-10T06:31:51.861Z" }, + { url = "https://files.pythonhosted.org/packages/47/eb/27d6c92a01696b6495386af4fc941d7d0a13f2eab2bf9c336111d7321491/websockets-16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a3cd6c9b798218798f4bb7b2e71c38f0e744bb94ca537b13376f88019d46384d", size = 187347, upload-time = "2026-07-10T06:31:53.246Z" }, + { url = "https://files.pythonhosted.org/packages/6b/d5/eeee439921f55d5eaeabcea18d0f7ce32cdc39cb8fc1e185431a094c5c7b/websockets-16.1-cp313-cp313-win32.whl", hash = "sha256:84c170c6869633536921e4474b1cce7254c0c9b0053ef5725f966cee47e718e4", size = 180149, upload-time = "2026-07-10T06:31:55.058Z" }, + { url = "https://files.pythonhosted.org/packages/a3/03/971e98d4a4864cf263f9e94c5b2b7c9a9b7682d77bfbba4e732c55ee85a9/websockets-16.1-cp313-cp313-win_amd64.whl", hash = "sha256:bef52d327d70fa75dad93ee61ea2cb1d1489aca9f35c188833563f5a3b4df0a5", size = 180458, upload-time = "2026-07-10T06:31:56.767Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e6/da1dc11507f8118145a81c751fe0c77e5e1c11b8554496addb39389e2dc2/websockets-16.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:f881fca0a45dd6789939bd6637cd98169b92f1c3fdc78262f2cb9ec2cb1f324e", size = 179833, upload-time = "2026-07-10T06:31:58.19Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ac/c0d46f62e31e232487b2c123bc3cfd9a4e45684ca7dc0c37f0987f29baae/websockets-16.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:30c379d5b207d3a7f0ba4c2e4602a895b0bcc63fb5f5371a4ae7fbddb03b672b", size = 177524, upload-time = "2026-07-10T06:31:59.563Z" }, + { url = "https://files.pythonhosted.org/packages/4a/33/abd966074b34a51e4f134e0aaed80f5a4a0a35163ea5ac58a1bc5a076d23/websockets-16.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:98ab58a4faa72b46da0127ccc1931dcbfc0985b0778892300a092185910c4cbe", size = 177743, upload-time = "2026-07-10T06:32:00.959Z" }, + { url = "https://files.pythonhosted.org/packages/ea/30/646e47b8a8dff04e227bdab512e6dde60663a647eeac7bbd6edddd92bbc5/websockets-16.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8e9c4e369fc181b2d41a99e01477215cecdc8546a39f7d41a59cc0a7065a0b09", size = 187474, upload-time = "2026-07-10T06:32:02.54Z" }, + { url = "https://files.pythonhosted.org/packages/d2/72/890ab9d77494af93ea65268230bfbc0a90ba789401ed7a44356a44785644/websockets-16.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0704df094b2d5fa7f6f410925a594c2a5c9a09167731a76292e5410934208209", size = 188717, upload-time = "2026-07-10T06:32:04.156Z" }, + { url = "https://files.pythonhosted.org/packages/d5/aa/baedbbaa6bf9ed6029617ed5e8976535bd805f483ca9b3484e7ad9ee08bf/websockets-16.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b22b1f4950f6ab7126623329c3b47b3b90a14c05db517f2db2a026ad6c928352", size = 190090, upload-time = "2026-07-10T06:32:05.822Z" }, + { url = "https://files.pythonhosted.org/packages/52/4f/d813ec94e18002571ef4959d87a630eff6e01b72a51bcb0832b75ae8c51a/websockets-16.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1ae4a686a662964a6671069f84f7f908cc3475e782227726b0c622c715962105", size = 189320, upload-time = "2026-07-10T06:32:07.223Z" }, + { url = "https://files.pythonhosted.org/packages/b8/3c/8ec52a6662f3df64090fba28cd521d405d54759268d8e820477037e8c80d/websockets-16.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:856bdd638f8277f86465057bfdd4da097c73058fb0f9d2bd5baea29e2bf2d367", size = 188068, upload-time = "2026-07-10T06:32:08.586Z" }, + { url = "https://files.pythonhosted.org/packages/96/7f/f0ae6042b14f86fa5f996c6563ea4cf107adc036ccbedc9d4f418d0095f9/websockets-16.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9003a1fde1c21a322a3ca3fa0c4bda8c639da81dbc925162766086643b05ba87", size = 185493, upload-time = "2026-07-10T06:32:09.968Z" }, + { url = "https://files.pythonhosted.org/packages/89/ad/5ffc53af9939c49fd653d147fa5b8f78ced1f6bce6c49a7446860945b0ce/websockets-16.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:39e947b1f5fdab045174306e3916785bf3ed537648acc1549827c08c33b10953", size = 188141, upload-time = "2026-07-10T06:32:11.434Z" }, + { url = "https://files.pythonhosted.org/packages/67/62/729206c0ee577a4db8eae6dd06e0eef725a1287c6df11b2ef831d003df31/websockets-16.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:5dd0e666b5931c0509cf65714686a1c5126771e663a79ac5d40da4f58b1f9502", size = 186653, upload-time = "2026-07-10T06:32:12.845Z" }, + { url = "https://files.pythonhosted.org/packages/1b/86/e8806a99ec4589914f255e6b658853fe537bf359c05e6ba5762ad9c27917/websockets-16.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:a0285df7925657ad65a65fb8dc330808bce082827538fd50ef45fa12d1fc5bca", size = 188614, upload-time = "2026-07-10T06:32:14.236Z" }, + { url = "https://files.pythonhosted.org/packages/89/38/ac554e2fc6ff0b8deeff9798b92e7abd8f99e2bd9731532e7033de208220/websockets-16.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:82d1c2cab3c133e9d059b3a5420bed9376bd30e21c185c63dda4ddadf6ddda47", size = 186165, upload-time = "2026-07-10T06:32:15.626Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c5/4ef4d8e53342f94f3c49e1ae089b32c1e8b3878e15e0022c7708c647f351/websockets-16.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:c39907f1eaf11f6277def65aa02d68f30576b693d0c1ca332aafa3caa723ac6d", size = 187119, upload-time = "2026-07-10T06:32:17.114Z" }, + { url = "https://files.pythonhosted.org/packages/3a/33/4788b1dd417bd97eeb2698af3b9df6775ac656f96e9987da0419a067602f/websockets-16.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:45c5ea55446171949eb99fd34b771ceddd511ca21958d40d0197ced33159e5ee", size = 187411, upload-time = "2026-07-10T06:32:18.629Z" }, + { url = "https://files.pythonhosted.org/packages/30/38/00d37aad6dc3244ce349e2864815362e50b3cfc00cac28d216db20efe40f/websockets-16.1-cp314-cp314-win32.whl", hash = "sha256:b8ef8b1c8d6bd029a475ac432e730fba2dfd456715d26c473e2a82291024b99c", size = 179822, upload-time = "2026-07-10T06:32:20.233Z" }, + { url = "https://files.pythonhosted.org/packages/9d/37/2a8cb0eaddee5eaebda47a90a3ba0898d1ce3d866b02a4857fea17d82e5b/websockets-16.1-cp314-cp314-win_amd64.whl", hash = "sha256:7358ff21632b5d062707f73e859c824f1c3807e73d8ca25e71caca7c4cdcf145", size = 180167, upload-time = "2026-07-10T06:32:21.749Z" }, + { url = "https://files.pythonhosted.org/packages/07/5a/262ad5fcaef4198997b165060f09a63f861e76939b1786ab546ccc3f8120/websockets-16.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d0f38f4c3e9b359e257c339c2cc1967ccaeedb102e57c1c986bdce4bf4f32268", size = 180166, upload-time = "2026-07-10T06:32:23.278Z" }, + { url = "https://files.pythonhosted.org/packages/1a/c7/36377db690f4292826e4501a6dec2801dc55fd1cf0405923b04937e478df/websockets-16.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:3c3d2cbd1602593bad49bd86fa3fbb25407d87a3b4bf8857c0ac5ac4914e1901", size = 177697, upload-time = "2026-07-10T06:32:25.164Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c7/07171abce1e39799a76f473608580fe98bd43a1230f5146159622c02bccf/websockets-16.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:36069b74671e7e667f48a7484249f84c45a825a134c8b1bdc01875d0daa10d79", size = 177902, upload-time = "2026-07-10T06:32:26.564Z" }, + { url = "https://files.pythonhosted.org/packages/14/17/c831f48e250bc4749f57c00dcce73337c41cd32f6d59a64567b84e782601/websockets-16.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:587f83c2ce8a5d628e166384d77fa7f0ac69b9007d515ab442123e6615aa8da3", size = 187766, upload-time = "2026-07-10T06:32:27.981Z" }, + { url = "https://files.pythonhosted.org/packages/2c/2e/4dfe63e245b0ecfaf470cf082d25c6ce35808159135fd88c82653a6b11ab/websockets-16.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a6db7972d52bc1b66cefe2246902e256cbaebc9ba8a45eac09343d7eb6671b2", size = 188939, upload-time = "2026-07-10T06:32:29.365Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e5/5faf65aebd9562f6b4bc473d24ce38cc56f84eb5f5bee66ed9b86733f93c/websockets-16.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e7d6014888a0632e1ed7a4095248bb3095232999447f2d83bfb1900987dd9ed9", size = 191081, upload-time = "2026-07-10T06:32:30.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/cd/2634f2f2c0556c1aae6501ed6840019cc569dd6fdbcac6494378daea4dc0/websockets-16.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9cb074d150e4ad2a77aa8a332c2be85f3f64f2681519d2570c1225c12c9821ff", size = 189513, upload-time = "2026-07-10T06:32:32.399Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/2c700b51196104f09715b326b1f092ed25326bdf79a03e00a4842e503743/websockets-16.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d19c9067e1fe9490f974bffbc0e443b80a7674c5efb4980c429cc00771f07c5a", size = 188240, upload-time = "2026-07-10T06:32:33.897Z" }, + { url = "https://files.pythonhosted.org/packages/f1/20/86283636e499a1a357fa9441f690ba34f255e731f2fea174132b3b762b57/websockets-16.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d440ff0c6c7469ad59c0a412c383c235935b43635e89425e3f6a0c36de90c31b", size = 185955, upload-time = "2026-07-10T06:32:35.279Z" }, + { url = "https://files.pythonhosted.org/packages/91/23/d7fb734b0095d43bc7f1c9f68afd50adb4176e7e513403e8c70ad7daa4fa/websockets-16.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8613129a2533f08de24505e69a3e403cedaadae49abdb043c4d170ca71b7e4bd", size = 188491, upload-time = "2026-07-10T06:32:36.673Z" }, + { url = "https://files.pythonhosted.org/packages/6a/5e/168a192689db468405ecf3b8e4a2c18811936b0724d017ad7e6d252734f0/websockets-16.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:a5bf9c23f197b4ec88290fd5463f33db67362a1bb10f85fc2e8e7627f0ddab97", size = 186983, upload-time = "2026-07-10T06:32:38.207Z" }, + { url = "https://files.pythonhosted.org/packages/7e/9b/66795fa91ebe49019ebe4fa910282172252e37046b80e08fc52e0c365150/websockets-16.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:520b0fd0395f075febb283c76755af724ab9fd19dffa4f3bfd18cb4e622790a3", size = 188890, upload-time = "2026-07-10T06:32:39.545Z" }, + { url = "https://files.pythonhosted.org/packages/5a/32/126bbc844be5afb3613fd43211dac10a9645f4cf39741d04acaa2ec7030c/websockets-16.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:7143aa09a67e1c013be44e81a88dfe90fc6244198ab86c7edd064152cf619805", size = 186583, upload-time = "2026-07-10T06:32:41.038Z" }, + { url = "https://files.pythonhosted.org/packages/22/b9/0b5db9cbcf6e4970db4496893244a8d92e07f71a8ef27cf34b08aa02fef1/websockets-16.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:7acb811fad08e611755800d1560e395c67e11a6bd563598ea6abb319afb86938", size = 187353, upload-time = "2026-07-10T06:32:42.501Z" }, + { url = "https://files.pythonhosted.org/packages/99/2e/254b2131a10d831b76e2c18dfe7add9729c6292c674a8085bf8de01ad151/websockets-16.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c5cf88e3faa2f7931bc6baeee7599c97656a3f6ac7f831f4fccba233e141783a", size = 187784, upload-time = "2026-07-10T06:32:43.929Z" }, + { url = "https://files.pythonhosted.org/packages/21/dc/e7288aa8e3ac5a88a0924619984d663c1abf2a87d0ea98290c66fdaee0ec/websockets-16.1-cp314-cp314t-win32.whl", hash = "sha256:589f8842521c8307684ce0b40ce4ad70c5e0aa46484c6f1225a94ef4b8970341", size = 179947, upload-time = "2026-07-10T06:32:45.495Z" }, + { url = "https://files.pythonhosted.org/packages/d3/de/37edf1260ff0fbbd2f82433489c4cfbe799ac2ff21355331609879329fe6/websockets-16.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c0e0857c30bbbc2bb5c30687508f0b7ec19aa026cd9f2ff8424d0fee42dcc07", size = 180291, upload-time = "2026-07-10T06:32:47.119Z" }, + { url = "https://files.pythonhosted.org/packages/4d/f4/84ef884775bbe77c46cce79bc7d705ea3bc6574cc00acf81af89754c077d/websockets-16.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7289d899c79e763e6221c8dcb8959361cb43274418538d7c7ad16a43b01d12f9", size = 177387, upload-time = "2026-07-10T06:32:48.574Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d9/6831ec6f65e1eeac770375f4f4b604f23df9bafaa1b47004bc5f9488d513/websockets-16.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:e22e9e3719f5131bd62da4db63c8da63eb8c91cc99e16c1cbd122f130e1ae07a", size = 177663, upload-time = "2026-07-10T06:32:50.043Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d4/21d4922fa7fe855813a8b38f181a0ecf02a586e16c1f095fd05471f78cc2/websockets-16.1-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:83bdabafef431247e6b11a9aab8a0893fd8e82e1ed95b32e0373625b03ffce4a", size = 178501, upload-time = "2026-07-10T06:32:51.439Z" }, + { url = "https://files.pythonhosted.org/packages/91/87/7a0320df854dacd09507ca972cb04a4dc5aae279583cc5b80ad5f5819533/websockets-16.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b8d13ceabc5c60995f201b5211d76876e17e68706ebf5d3bc666b32eefff1a6", size = 179397, upload-time = "2026-07-10T06:32:52.892Z" }, + { url = "https://files.pythonhosted.org/packages/31/6a/0da1eb8c8da2ace7b578c8523d32618af85e62a9ebad56051d4a14a38a1c/websockets-16.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:81495f9c0085361c582efbc3207fb877174cfe03370f17d9cd70624404aa526f", size = 180546, upload-time = "2026-07-10T06:32:54.619Z" }, + { url = "https://files.pythonhosted.org/packages/66/58/bd83247f39ddc26ffc2c24eb05087a3b749e00cb4509fc6d19daa23c8495/websockets-16.1-py3-none-any.whl", hash = "sha256:c5149dfe490ec7e5ee5dbf624c642fb725f93a5575c7f00ab594ca9eddb8dd81", size = 174031, upload-time = "2026-07-10T06:32:56.079Z" }, +] diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py new file mode 100644 index 000000000..20c322e9c --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py @@ -0,0 +1,52 @@ +"""Stretch (Challenge 4): orchestrate the three agents as one sequential workflow. + +The ``HackOrchestrator`` already chains the agents from Python. This module makes +that chaining explicit and reusable as a single callable "workflow" so a caller +(the UI's future "Run the whole loop" button, a routine, or a test) can drive the +entire sense -> plan -> approve -> act loop from one entry point, pausing only at +the human-approval gate. + +This mirrors the Microsoft Agent Framework "sequential" pattern: deterministic +hand-off from one agent to the next, with a human gate before the terminal action. +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any, Callable + +from orchestrator import HackOrchestrator + + +@dataclass +class WorkflowResult: + assessment: str + recommendation: dict[str, Any] + proposal: dict[str, Any] + confirmation: dict[str, Any] | None + + +def run_planning_workflow( + scenario: str, + approve: Callable[[dict[str, Any]], bool], + approved_by: str = "Planner", + orchestrator: HackOrchestrator | None = None, +) -> WorkflowResult: + """Run the full loop. ``approve`` is the human gate: it receives the proposal + and returns True to submit or False to cancel.""" + orch = orchestrator or HackOrchestrator() + + assessment = orch.sense(scenario) + recommendation = orch.plan(assessment) + proposal = orch.propose(recommendation) + + confirmation = None + if approve(proposal): + confirmation = orch.approve(proposal.get("submitItems", []), approved_by=approved_by) + + return WorkflowResult( + assessment=assessment, + recommendation=recommendation, + proposal=proposal, + confirmation=confirmation, + ) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md new file mode 100644 index 000000000..b7a5fab35 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md @@ -0,0 +1,43 @@ +# Solution 00 — Get Grounded & Set Up + +**[← Back to Challenge 0](../../challenges/challenge-00.md)** · [Home](../../README.md) + +This walkthrough confirms a correct setup. There is no agent to build yet. + +## Expected end state + +- Codespace (or local devcontainer) built, dependencies installed. +- `az login` completed in the Codespace terminal. +- `src/.env` populated from the lab dashboard: + ``` + PROJECT_ENDPOINT=https://inv-xxxxxxxxxxxx.services.ai.azure.com/api/projects/inventory-hack + MODEL_DEPLOYMENT_NAME=gpt-5.4-mini + COSMOS_ENDPOINT=https://inv-cos-xxxxxxxxxxxx.documents.azure.com:443/ + REASONING_EFFORT=minimal + ``` +- The Foundry portal shows `gpt-5.4-mini` = *Succeeded* under **Models + endpoints**. +- The planner console loads on port 8000 and shows populated **Current exposure** + and **Order book** panels (from Cosmos, seeded on first load — no agent required). + +## Verify the data layer without any agent + +The console's **Current exposure** panel is served straight from the governed Cosmos +store (the `/api/state` endpoint → `list_low_stock`) — no agent required. Expect leaf +blowers (`P004`) and chainsaws (`P005`) at Portland (`ST03`) and Seattle (`ST04`) +flagged `CRITICAL`, plus a few `AT_RISK` rows. These numbers are seeded +deterministically by `inventory_store.py`, so they are stable every run. + +## Why the console still works before Challenge 1 + +`ui/app.py` serves the page and the `/api/state` snapshot from the bundled data. +The `/api/sense|plan|propose|approve` endpoints create the orchestrator lazily and +return a friendly `503 {"error": ...}` until the agents exist — so the shell loads, +and each step lights up as you build its agent. + +## Common issues + +| Symptom | Cause / fix | +|---------|-------------| +| `PROJECT_ENDPOINT is not set` | `.env` missing or not in `src/` — the console reads it via `config.py`. | +| Panels empty | A Python import error — check the `uvicorn` terminal output. | +| Port 8000 not forwarded | Open the **Ports** tab and forward 8000 manually. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md new file mode 100644 index 000000000..e80477ae5 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md @@ -0,0 +1,62 @@ +# Solution 01 — Demand Sensing (Hosted Agent) + +**[← Back to Challenge 1](../../challenges/challenge-01.md)** · [Home](../../README.md) + +## The reference implementation + +The agent is already defined in [`src/agents/__init__.py`](../../src/agents/__init__.py) +as `DEMAND_SENSING`. The key ideas: + +- **Tools:** `query_inventory`, `list_low_stock`, `get_external_signals` — all from + [`src/tools.py`](../../src/tools.py). +- **Instructions:** a strict *TOOL USE* rule forcing the model to call a tool for any + inventory number and to separate external signals from governed data. + +`AgentRuntime.ensure()` in [`src/agent_runtime.py`](../../src/agent_runtime.py) is what +makes it a **native hosted** agent: it calls `create_version(...)` on the new Foundry +agents API (`azure-ai-projects` 2.x) and points the agent's endpoint at that version. +The agent then appears in the portal under **Agents** with a **Traces** tab. + +## Run it + +Start the console from `src/`: + +```bash +uv run uvicorn ui.app:app --reload --port 8000 +``` + +Open port 8000, pick a scenario, and click **Sense demand**. The first click creates +the `demand-sensing-agent` hosted agent in your project and runs it. + +## Expected output (shape) + +A short assessment that: +- names one or more **external signals** (heatwave, search-trend spike, competitor + out of stock on chainsaws — from `get_external_signals`), +- cites **governed** stock (e.g. leaf blowers CRITICAL at Portland/Seattle — from + `list_low_stock` / `query_inventory`), +- ends with a verdict: **critically exposed** for outdoor power tools. + +![Planner console after Step 1 — the demand assessment appears and Step 2 unlocks](../../images/challenge-01-console.png) + +## Verify it is really hosted + +Open the Foundry portal → your project → **Agents**. `demand-sensing-agent` is listed +as a **native** agent (Playground / Traces / Monitor tabs, no "update your agents" +prompt). Re-running just adds a new **version** — it doesn't create a duplicate agent. + +## How the tool call flows + +1. `run()` calls the **Responses** API with the scenario as input. +2. The model replies with one or more `function_call` items in `response.output`. +3. The runtime runs each Python function locally and feeds the results back as + `function_call_output` items (chained via `previous_response_id`). +4. The model produces the final assessment (`response.output_text`). + +## Common issues + +| Symptom | Fix | +|---------|-----| +| Agent answers without a tool | Strengthen the *TOOL USE* rule; confirm the model card lists Functions/Tools. | +| `DefaultAzureCredential` error | `az login` in the same terminal. | +| Slow first response | Reasoning latency — `REASONING_EFFORT=minimal` (default) keeps it snappy. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md new file mode 100644 index 000000000..54d871a60 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md @@ -0,0 +1,53 @@ +# Solution 02 — Inventory Optimisation + Tracing + +**[← Back to Challenge 2](../../challenges/challenge-02.md)** · [Home](../../README.md) + +## The reference implementation + +`INVENTORY_OPTIMISATION` in [`src/agents/__init__.py`](../../src/agents/__init__.py): + +- **Tools:** `list_low_stock`, `calc_reorder`, `get_product`, `query_inventory`. +- **Instructions:** compute `reorder_qty = max(0, avg_daily_sales*30 - current_stock)` + via `calc_reorder`, flag items below safety stock as `CRITICAL`, and return **only** + a JSON object: `{"recommendations": [{sku, productName, location, currentStock, + suggestedReorderQty, priority}]}`. + +The planning maths lives in `calc_reorder` in [`src/tools.py`](../../src/tools.py), so +the model does not invent numbers — it orchestrates the tool. + +## Run it + +In the console, after Step 1, click **Generate reorder plan**. The first click creates +the `inventory-optimisation-agent` hosted agent and runs it: Step 2 renders the +recommendation table with at least one `CRITICAL` row (leaf blowers / chainsaws at +Portland / Seattle). + +![Planner console Step 2 — a reorder recommendation table with CRITICAL rows](../../images/challenge-02-console.png) + +## Structured output + +`orchestrator.plan()` calls `_extract_json()` which tolerates a ```json code fence +and pulls the JSON object out — so the UI can render a table reliably. gpt-5.4-mini +supports **Structured Outputs**, so the JSON is well-formed. + +## Reading the trace (the real learning) + +Your lab already connected **Application Insights** to the project, so **server-side +tracing** is on automatically (no code changes). Foundry portal → your agent → +**Traces** tab → latest `inventory-optimisation-agent` run. You should see: + +- one **model call** (the instructions + the demand assessment as input), +- one or more **`calc_reorder`** tool calls with their arguments, +- the **tool responses** (the exact numbers your code returned), +- the **final generation** assembling the JSON. + +Point to a specific `calc_reorder` response to prove *why* a quantity was suggested — +`suggestedReorderQty = thirtyDayDemand - currentStock`, never invented. + +## Common issues + +| Symptom | Fix | +|---------|-----| +| No CRITICAL row | Use a scenario touching outdoor power tools; Portland/Seattle are below safety stock. | +| Output not JSON | Reinforce *"Return ONLY the JSON"*; `_extract_json` handles fences but not prose. | +| No trace | Refresh after a few seconds; ensure the run actually executed. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md new file mode 100644 index 000000000..f3d35a4f5 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md @@ -0,0 +1,46 @@ +# Solution 03 — Replenishment + Human-in-the-Loop + +**[← Back to Challenge 3](../../challenges/challenge-03.md)** · [Home](../../README.md) + +## The reference implementation + +`REPLENISHMENT` in [`src/agents/__init__.py`](../../src/agents/__init__.py): + +- **Tools:** `get_product` (unit costs) and `submit_purchase_order` (the only side effect). +- **Instructions:** produce a PO proposal as JSON with `proposal` (per-line cost table + + total) and `submitItems`; **never** submit without approval. + +## The gate (the whole point) + +In [`src/agent_runtime.py`](../../src/agent_runtime.py): + +```python +APPROVAL_REQUIRED = {"submit_purchase_order"} +``` + +`run()` scans the model's `function_call` items. If the model asks for +`submit_purchase_order`, the runtime **returns a `ToolApprovalRequest` instead of +executing it** (the read-only tools still run normally). The write only happens when a +human calls `orchestrator.approve(...)`, which invokes `submit_purchase_order` +directly. So the acting tool is **structurally blocked** behind the human decision — +not just asked nicely in a prompt. + +## In the console + +Steps 1–2, then **Step 3** shows the proposal and **Step 4 (Approve & act)** offers **Approve & submit** / **Reject**. +- **Reject** → "Order cancelled. No action taken." Order book unchanged. +- **Approve** → `✅ Purchase order PO-… submitted and recorded in the order book.` and + the new order appears in the **Order book** panel. + +> The order is a **real write** to the Cosmos `orders` container, so it **persists** +> across server restarts — reload the console and it's still there. + +![Planner console Step 4 — the PO proposal with Approve / Reject, then the submitted confirmation](../../images/challenge-03-approve.png) + +## Common issues + +| Symptom | Fix | +|---------|-----| +| Order written without approval | Ensure `submit_purchase_order` is in `APPROVAL_REQUIRED`. | +| Unit costs all `$20` | `get_product` lookup failed — check the trace; `$20` is the fallback only. | +| `submitItems` empty | Reinforce the JSON shape in the agent instructions. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md new file mode 100644 index 000000000..effb0360d --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md @@ -0,0 +1,49 @@ +# Solution 04 — Orchestrate the Loop (Stretch) + +**[← Back to Challenge 4](../../challenges/challenge-04.md)** · [Home](../../README.md) + +## The reference implementation + +[`src/workflow.py`](../../src/workflow.py) → `run_planning_workflow(scenario, approve, ...)` +runs the full loop from one entry point: `sense → plan → propose → [human] → approve`. +The `approve` callback **is** the human gate — it receives the proposal and returns +`True` to submit or `False` to cancel. + +## How the console drives it + +The console exposes the workflow at **`/api/run-loop`** in +[`src/ui/app.py`](../../src/ui/app.py). It calls +`run_planning_workflow(scenario, approve=lambda _p: False, orchestrator=...)` so the +loop runs `sense → plan → propose` in one request and returns all three stages — +**without** submitting. The human still approves at Step 4 via `/api/approve`. + +```json +// POST /api/run-loop { "scenario": "..." } -> +{ "assessment": "…", "recommendation": { … }, "proposal": { … } } +``` + +`WorkflowResult` carries `assessment`, `recommendation`, `proposal`, and +`confirmation` (`None` when the gate returns False — which is exactly what the +endpoint uses, deferring the real decision to the human). + +## The one-click UI button + +Add a **Run the whole loop** button in +[`src/ui/static/index.html`](../../src/ui/static/index.html) that `POST`s the scenario +to **`/api/run-loop`**, fills Steps 1–3 from the response +(`assessment` / `recommendation` / `proposal`), then **stops** at Step 4 for the +human's Approve/Reject. Do **not** auto-call `/api/approve` — keeping the gate is the +point of the pattern. + +## Optional: evaluation pass + +In the portal **Evaluation**, build a 3–5 item dataset (e.g. *"Which store has the +lowest leaf blower stock?"* → *"Portland"*) and score `inventory-optimisation-agent` +on groundedness and relevance. + +## Talking points + +- Deterministic sequential workflow vs. a human clicking each step: automation for the + hand-offs, human judgment only at the gate. +- Where the gate belongs once the loop is one prompt (before the acting tool — exactly + where `APPROVAL_REQUIRED` puts it). diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md new file mode 100644 index 000000000..b7731e437 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md @@ -0,0 +1,104 @@ +# Solution 05 — The Loop Reacts (Event-Driven, Stretch) + +**[← Back to Challenge 5](../../challenges/challenge-05.md)** · [Home](../../README.md) + +## The idea + +The manual console has a human click Sense → Plan → Approve → Act. This challenge makes +the loop **reactive**: an independent write to the Cosmos `signals` container triggers +the agents automatically, and the console shows it live — while the **human-approval +gate is preserved** (automation runs everything *except* the decision). + +No new Azure infrastructure: Cosmos' **change feed** is intrinsic, and the watcher runs +inside the existing FastAPI process. + +## The reactive layer — [`src/live.py`](../../src/live.py) + +Three pieces: + +- **`start_watcher(store, orchestrator_factory)`** — a daemon thread that tails the + `signals` change feed with the **pull model**. It primes from `start_time="Now"` + (so the one-time seed never triggers a run), then polls with the continuation token + returned in the `etag` response header. Each new document calls `_auto_run`. +- **`_auto_run(signal, ...)`** — runs `orch.sense → orch.plan → orch.propose` (the same + `HackOrchestrator` the console uses), publishing a `step` event at each stage, then + emits `awaiting_approval` and **stops**. It never calls `approve`. +- **`EventBus`** — a tiny fan-out that pushes JSON events to every connected SSE client. + Because it's called from the watcher thread, it hops back onto the event loop with + `call_soon_threadsafe`. + +## The wiring — [`src/ui/app.py`](../../src/ui/app.py) + +```python +@app.on_event("startup") +async def _start_live_layer(): + bus.bind_loop(asyncio.get_running_loop()) + if config.COSMOS_ENDPOINT: + start_watcher(get_store(), get_orchestrator) # tail the change feed + +@app.post("/api/signal") # writes the signal only — the change feed triggers the loop +@app.get("/api/events") # SSE stream the console subscribes to +``` + +The key design choice: **`/api/signal` never calls an agent.** It only writes to Cosmos. +The change-feed watcher is the *single* trigger path, so the reactive behaviour is +identical no matter who does the insert — the console, an MCP client, or any other +system. That decoupling is the whole point. + +## The console — [`src/ui/static/index.html`](../../src/ui/static/index.html) + +An **Event trigger** panel injects a signal (`POST /api/signal`) and an `EventSource` +on `/api/events` drives Steps 1–3 as the events arrive, then enables **Approve / Reject** +at Step 4. The manual buttons still work — the SSE path reuses the same `renderPlan` / +`renderProposal` helpers. + +## The MCP edge — [`src/mcp_server.py`](../../src/mcp_server.py) + +A one-tool **FastMCP** server: + +```python +@mcp.tool() +def inject_signal(headline, category="outdoor_power_tools", region="Pacific Northwest") -> str: + doc = get_store().append_signal({"headline": headline, "category": category, + "region": region, "type": "market"}) + return f"Injected signal {doc['signalId']} — the planner loop will react automatically." +``` + +Run it with `uv run python mcp_server.py` (stdio) and point any MCP client at it. Calling +`inject_signal` writes to Cosmos → the console's watcher reacts → the loop runs → it stops +at the gate. An external system, speaking a standard protocol, drove your inventory loop. + +## Interactive planning & the informed gate + +The reactive loop produces a **draft**; the planner refines it in natural language before +approving. Two "refine" endpoints re-run the relevant agent with the current artifact plus +the instruction (see [`src/orchestrator.py`](../../src/orchestrator.py)): + +- `POST /api/plan/refine` → `refine_plan(recommendation, instruction)` re-runs the + **Inventory Optimisation** agent (*"only the CRITICAL SKUs"*, *"halve the leaf blowers"*). +- `POST /api/propose/refine` → `refine_proposal(proposal, instruction)` re-runs the + **Replenishment** agent (*"drop the warehouse line"*, *"cut chainsaws to 40"*), returning + the updated proposal **and** `submitItems`. + +Both are agentic (not regex): the agent regenerates the artifact honoring the instruction, +and both still only **propose** — the gate is unchanged. Step 4 then renders exactly what +will be written (every PO line + total), so the human approves with full context. + +**The signal queue:** the watcher is a producer/consumer pair — the producer tails the +change feed and enqueues; a single consumer drains one signal at a time. A burst shows up +as a visible backlog (`queue` SSE events) in the Sense step and drains as each run completes. + +## Why this preserves the lesson + +The reactivity is new; the **human-in-the-loop** teaching is untouched. `_auto_run` stops +at `propose` and emits `awaiting_approval`; only a person calling `/api/approve` triggers +`submit_purchase_order`. Even a signal injected over MCP reaches the gate and waits. + +## Talking points + +- **Event-driven vs. request-driven**: the loop reacts to *data changing*, not to a user + clicking — the same shift that makes real operations scalable. +- **Decoupling**: the producer (UI / MCP / job) knows nothing about the agents; it just + writes a signal. The change feed is the seam. +- **The gate still holds**: automation is safe precisely because the one side effect stays + behind a human — no matter how the loop was triggered. diff --git a/03-Azure/01-04-AI/Readme.md b/03-Azure/01-04-AI/Readme.md index 41174f219..718a09ce2 100644 --- a/03-Azure/01-04-AI/Readme.md +++ b/03-Azure/01-04-AI/Readme.md @@ -5,5 +5,6 @@ A collection of MicroHacks focused on AI on Azure and the GitHub + Azure agentic ## Available MicroHacks * [**Agentic SDLC with GitHub Copilot & Azure**](01_Agentic_SDLC/Readme.md) — Take a full-stack application through the complete Agentic Software Development Lifecycle (plan → implement → test → review → deploy → operate → maintain) using GitHub Copilot, GitHub Actions, the Azure SRE Agent, and GitHub Agentic Workflows. +* [**Inventory Planning with AI Agents, Cosmos DB & Hosted Agents (pro-code)**](03_Inventory_Planning_Agentic/README.md) — Build hosted AI agents **in code** (Python) on the **Microsoft Foundry Agent Service** that reason over a governed per-attendee **Azure Cosmos DB** via typed function tools, chained into a sequential planning workflow with a human-in-the-loop approval gate and Foundry tracing. Collaborators wanted :) — see [CONTRIBUTING.md](../../CONTRIBUTING.md) to add your own. \ No newline at end of file From 5fc6a18154c177699a64811288032711d921be5b Mon Sep 17 00:00:00 2001 From: Digvijay Chauhan Date: Thu, 23 Jul 2026 11:35:16 +0200 Subject: [PATCH 2/2] Fix challenge numbering to start at 01 (compliance) Renumber Agentic hack challenges and walkthroughs from 00-05 to 01-06 and update all internal references (docs, notebooks, and src comments/strings), per MicroHack compliance (numbering must start at 01, contiguous, count match preserved). Image filenames unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../03_Inventory_Planning_Agentic/README.md | 12 +- .../challenges/challenge-00.md | 108 ----------- .../challenges/challenge-01.md | 136 +++++++------- .../challenges/challenge-02.md | 120 +++++++------ .../challenges/challenge-03.md | 112 ++++++------ .../challenges/challenge-04.md | 134 ++++++-------- .../challenges/challenge-05.md | 170 ++++++++---------- .../challenges/challenge-06.md | 136 ++++++++++++++ .../images/README.md | 2 +- .../labautomation/deploy-lab.ps1 | 2 +- .../src/README.md | 4 +- .../src/agents/__init__.py | 2 +- .../src/config.py | 4 +- .../src/inventory_store.py | 2 +- .../03_Inventory_Planning_Agentic/src/live.py | 4 +- .../src/mcp_server.py | 2 +- .../src/ui/app.py | 8 +- .../src/workflow.py | 2 +- .../walkthrough/challenge-00/solution-00.md | 43 ----- .../walkthrough/challenge-01/solution-01.md | 81 ++++----- .../walkthrough/challenge-02/solution-02.md | 71 ++++---- .../walkthrough/challenge-03/solution-03.md | 61 ++++--- .../walkthrough/challenge-04/solution-04.md | 63 ++++--- .../walkthrough/challenge-05/solution-05.md | 121 ++++--------- .../walkthrough/challenge-06/solution-06.md | 104 +++++++++++ 25 files changed, 752 insertions(+), 752 deletions(-) delete mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-06.md delete mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md create mode 100644 03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-06/solution-06.md diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md index dac2d9764..df202b44e 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/README.md @@ -164,12 +164,12 @@ Each challenge follows the same anatomy, so you always know where to look: ### Challenge list -- **Challenge 0**: **[Get Grounded & Set Up](challenges/challenge-00.md)** *(45 min)* — the scenario, the data model, your Codespace, and the planner console. -- **Challenge 1**: **[Demand Sensing](challenges/challenge-01.md)** *(60 min)* — build and deploy your first hosted agent with function tools over the governed data. -- **Challenge 2**: **[Inventory Optimisation](challenges/challenge-02.md)** *(60 min)* — a reasoning agent that produces a reorder recommendation, then read its trace. -- **Challenge 3**: **[Replenishment + Human-in-the-Loop](challenges/challenge-03.md)** *(75 min)* — a real approval gate before the only side-effecting tool. -- **Challenge 4** *(stretch)*: **[Orchestrate the Loop](challenges/challenge-04.md)** *(45 min)* — chain all three agents into one sequential workflow with a one-click UI. -- **Challenge 5** *(stretch)*: **[The Loop Reacts](challenges/challenge-05.md)** *(60 min)* — event-driven: an independent Cosmos insert (from the console or an MCP client) auto-runs the loop live and stops at the human gate. +- **Challenge 1**: **[Get Grounded & Set Up](challenges/challenge-01.md)** *(45 min)* — the scenario, the data model, your Codespace, and the planner console. +- **Challenge 2**: **[Demand Sensing](challenges/challenge-02.md)** *(60 min)* — build and deploy your first hosted agent with function tools over the governed data. +- **Challenge 3**: **[Inventory Optimisation](challenges/challenge-03.md)** *(60 min)* — a reasoning agent that produces a reorder recommendation, then read its trace. +- **Challenge 4**: **[Replenishment + Human-in-the-Loop](challenges/challenge-04.md)** *(75 min)* — a real approval gate before the only side-effecting tool. +- **Challenge 5** *(stretch)*: **[Orchestrate the Loop](challenges/challenge-05.md)** *(45 min)* — chain all three agents into one sequential workflow with a one-click UI. +- **Challenge 6** *(stretch)*: **[The Loop Reacts](challenges/challenge-06.md)** *(60 min)* — event-driven: an independent Cosmos insert (from the console or an MCP client) auto-runs the loop live and stops at the human gate. > [!TIP] > It's tempting to race through, but pause and reflect: which planning decisions in diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md deleted file mode 100644 index 870fbb32f..000000000 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-00.md +++ /dev/null @@ -1,108 +0,0 @@ -# Challenge 0 — Get Grounded & Set Up - -**[Home](../README.md)** - [Next Challenge →](challenge-01.md) - -## 🎯 Objective - -Understand the inventory scenario and the architecture, get your -**Codespace** running, connect to your **Foundry project**, and open the **planner -console** — the empty shell you'll light up one agent at a time. - -## 🧭 Context - -You are a developer at **Zava**, a retail company. The planning team always reacts -to last month's data. Your job is to build three **hosted agents** that close the -gap — in code — and surface them through a small planner console: - -1. **Demand Sensing** — react to real-world changes -2. **Inventory Optimisation** — decide the right stock level -3. **Replenishment Action** — submit the order behind a human approval gate - -The governed data lives **inside your code** as function tools over `src/data` — the -app seeds it into Cosmos on first run, with nothing extra to set up. - -## ✅ Tasks - -### Part A — Open the Codespace (10 min) - -1. On the GitHub repo, click **Code → Codespaces → Create codespace on main**. - (Prefer local? Open the folder in VS Code with the Dev Containers extension.) -2. Wait for the container to build — it installs dependencies with `uv` and seeds - `src/.env` automatically (see `.devcontainer/post-create.sh`). - -### Part B — Connect to your Foundry project (10 min) - -1. In the Codespace terminal, sign in: - ```bash - az login --use-device-code - ``` -2. Open `src/.env` and paste the three values from your **lab dashboard**: - ``` - PROJECT_ENDPOINT= - MODEL_DEPLOYMENT_NAME= # gpt-5.4-mini - COSMOS_ENDPOINT= # the governed data store - ``` -3. Confirm the model is deployed: open [ai.azure.com](https://ai.azure.com), select - your project, and check **Models + endpoints** shows `gpt-5.4-mini` = *Succeeded*. - -### Part C — Read the data model (15 min) - -The governed data lives in a **per-attendee Azure Cosmos DB** that the lab -provisioned (serverless, keyless). `src/inventory_store.py` seeds it from `src/data` -on first run and serves these containers to the tools: - -| Container | What it contains | Tool that exposes it | -|-----------|------------------|----------------------| -| `inventory` | `onHand`, `reorderPoint`, `safetyStock` per product per location | `query_inventory`, `list_low_stock` | -| `products` | `name`, `category`, `unitCost`, `leadTimeDays`, `supplierId` | `get_product` | -| `demand` | Weekly sales per product per retail store | `calc_reorder` (avg daily sales) | -| `signals` | Weather, search trends, competitor, news | `get_external_signals` | -| `orders` | Purchase orders / transfers | `submit_purchase_order` (**real write**) | - -**Categories:** `garden_and_lawn`, `outdoor_power_tools`, `paint_and_supplies`, `smart_home` -**Locations:** Boston, Brooklyn, Portland, Seattle stores + Chicago, Dallas warehouses - -A row is **CRITICAL** when `onHand < safetyStock`, **AT_RISK** at/below `reorderPoint`. - -### Part D — Open the planner console (10 min) - -1. From `src/`, launch the console: - ```bash - cd src && uv run uvicorn ui.app:app --reload --port 8000 - ``` -2. Open the forwarded **port 8000** (Codespaces pops it automatically). -3. The **first** load seeds Cosmos from `src/data` (a few seconds), then the - **current exposure** and **order book** panels populate from the store. The - **Sense demand** button is already wired to the agent you build next; Steps 2–4 - stay **locked** until the previous step succeeds. (Clicking **Sense demand** now - would create and run your first hosted agent — that *is* Challenge 1, so you can - stop here and pick it up in the next challenge.) - -## 🏁 Success criteria - -- [ ] Your Codespace (or local devcontainer) is running with dependencies installed. -- [ ] `az login` succeeded and `src/.env` has your endpoint, model name, and Cosmos endpoint. -- [ ] `gpt-5.4-mini` shows *Succeeded* in your Foundry project. -- [ ] The planner console loads and shows current exposure + the order book (Cosmos seeded). -- [ ] You can name the tools each of the three agents will use. - -## 🛠️ Troubleshooting - -| Symptom | Fix | -|---------|-----| -| `gpt-5.4-mini` missing | Flag your facilitator — it's part of the provisioned lab. | -| Port 8000 didn't open | Open the **Ports** tab and click the globe on 8000. | -| `az login` opens no browser | Use `az login --use-device-code` and follow the URL. | -| Panels show "not connected" | Set `COSMOS_ENDPOINT` in `src/.env` and `az login`. If just provisioned, the data-plane role can take a minute to propagate — wait and reload. | -| `Forbidden` / 403 from Cosmos | Your identity's **Cosmos DB Built-in Data Contributor** role is still propagating, or you're signed into the wrong tenant — re-check `az login`. | - -## 🚀 Go further - -- Open `src/tools.py` and read `list_low_stock` — the console's **current exposure** - panel is exactly what it returns. -- Predict which locations Challenge 2 will flag CRITICAL before you get there. - -## 📚 Learning resources - -- [What is Microsoft Foundry Agent Service?](https://learn.microsoft.com/azure/foundry/agents/overview) -- [Develop in a Codespace / devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md index 5e1f377f7..a8bc76c64 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-01.md @@ -1,104 +1,108 @@ -# Challenge 1 — Demand Sensing (Hosted Agent) +# Challenge 1 — Get Grounded & Set Up -**[← Previous](challenge-00.md)** - [Home](../README.md) - [Next Challenge →](challenge-02.md) +**[Home](../README.md)** - [Next Challenge →](challenge-02.md) ## 🎯 Objective -Build and deploy your first **hosted agent** in code. Give it **function tools** -over the governed inventory data, run it against a real-world scenario, and light -up **Step 1** of the planner console. +Understand the inventory scenario and the architecture, get your +**Codespace** running, connect to your **Foundry project**, and open the **planner +console** — the empty shell you'll light up one agent at a time. ## 🧭 Context -Your facilitator announces a scenario, for example: +You are a developer at **Zava**, a retail company. The planning team always reacts +to last month's data. Your job is to build three **hosted agents** that close the +gap — in code — and surface them through a small planner console: -> *"A prolonged heatwave and early spring across the Pacific Northwest is driving a -> surge in demand for garden and outdoor power equipment."* +1. **Demand Sensing** — react to real-world changes +2. **Inventory Optimisation** — decide the right stock level +3. **Replenishment Action** — submit the order behind a human approval gate -Your agent must sense that signal, reconcile it against the governed inventory -position, and produce a demand assessment planners can act on. +The governed data lives **inside your code** as function tools over `src/data` — the +app seeds it into Cosmos on first run, with nothing extra to set up. ## ✅ Tasks -### Part A — Read the agent definition (15 min) +### Part A — Open the Codespace (10 min) -Open [`src/agents/__init__.py`](../src/agents/__init__.py) and study `DEMAND_SENSING`: +1. On the GitHub repo, click **Code → Codespaces → Create codespace on main**. + (Prefer local? Open the folder in VS Code with the Dev Containers extension.) +2. Wait for the container to build — it installs dependencies with `uv` and seeds + `src/.env` automatically (see `.devcontainer/post-create.sh`). -- **`name`** — becomes the hosted agent's name in your Foundry project. -- **`instructions`** — the system prompt; note the strict *TOOL USE* rule. -- **`functions`** — `query_inventory`, `list_low_stock`, `get_external_signals` - from [`src/tools.py`](../src/tools.py). +### Part B — Connect to your Foundry project (10 min) -Open [`src/agent_runtime.py`](../src/agent_runtime.py) and follow `AgentRuntime.ensure`: -it **creates a versioned agent** with the new Foundry agents API and routes the -agent's endpoint to it — this is what makes it a *native hosted* agent (it appears in -the portal under **Agents**, with a **Traces** tab). - -### Part B — Run the agent from the console (20 min) - -You run the agent straight from the planner console — there are no scripts to run. - -1. Launch the console (if it isn't already running) and open the forwarded port 8000: +1. In the Codespace terminal, sign in: ```bash - cd src && uv run uvicorn ui.app:app --reload --port 8000 + az login --use-device-code + ``` +2. Open `src/.env` and paste the three values from your **lab dashboard**: ``` -2. Pick a scenario and click **Sense demand**. + PROJECT_ENDPOINT= + MODEL_DEPLOYMENT_NAME= # gpt-5.4-mini + COSMOS_ENDPOINT= # the governed data store + ``` +3. Confirm the model is deployed: open [ai.azure.com](https://ai.azure.com), select + your project, and check **Models + endpoints** shows `gpt-5.4-mini` = *Succeeded*. -That first click does two things: `AgentRuntime.ensure()` **creates the -`demand-sensing-agent` hosted agent** in your Foundry project, then runs it. Step 1 -turns green and shows an assessment that: -- cites at least one **external signal** (from `get_external_signals`), -- references at least one **governed inventory** number (from `list_low_stock` / - `query_inventory`), and -- states whether stock is **adequate / at risk / critically exposed**. +### Part C — Read the data model (15 min) -Step 2's button unlocks once Step 1 succeeds. +The governed data lives in a **per-attendee Azure Cosmos DB** that the lab +provisioned (serverless, keyless). `src/inventory_store.py` seeds it from `src/data` +on first run and serves these containers to the tools: -![The planner console after Step 1: the demand assessment appears and Step 2 unlocks](../images/challenge-01-console.png) +| Container | What it contains | Tool that exposes it | +|-----------|------------------|----------------------| +| `inventory` | `onHand`, `reorderPoint`, `safetyStock` per product per location | `query_inventory`, `list_low_stock` | +| `products` | `name`, `category`, `unitCost`, `leadTimeDays`, `supplierId` | `get_product` | +| `demand` | Weekly sales per product per retail store | `calc_reorder` (avg daily sales) | +| `signals` | Weather, search trends, competitor, news | `get_external_signals` | +| `orders` | Purchase orders / transfers | `submit_purchase_order` (**real write**) | -Now confirm it's really hosted: open [ai.azure.com](https://ai.azure.com) → your -project → **Agents**. You'll see **`demand-sensing-agent`** listed — the hosted agent -your click just created. Edit its instructions in `src/agents/__init__.py`, save (the -server auto-reloads), and click **Sense demand** again to update it in place. +**Categories:** `garden_and_lawn`, `outdoor_power_tools`, `paint_and_supplies`, `smart_home` +**Locations:** Boston, Brooklyn, Portland, Seattle stores + Chicago, Dallas warehouses -> [!NOTE] -> In the agent's **Playground** tab, its function tools may show *"Not supported by -> the selected model."* This is a **cosmetic** portal capability flag for -> `gpt-5.4-mini` — the tools **do** execute at runtime via the Responses API (the -> assessment's governed numbers come straight from those tool calls). +A row is **CRITICAL** when `onHand < safetyStock`, **AT_RISK** at/below `reorderPoint`. -### Part C — (Optional) add Web Search grounding (10 min) +### Part D — Open the planner console (10 min) -The `get_external_signals` tool already grounds the agent in pre-loaded market -signals, so the challenge completes without any live web tool. If your project has -the Web Search / Bing grounding tool enabled, set `ENABLE_WEB_SEARCH=true` in -`src/.env` and extend the agent to add it (see **Go further**). +1. From `src/`, launch the console: + ```bash + cd src && uv run uvicorn ui.app:app --reload --port 8000 + ``` +2. Open the forwarded **port 8000** (Codespaces pops it automatically). +3. The **first** load seeds Cosmos from `src/data` (a few seconds), then the + **current exposure** and **order book** panels populate from the store. The + **Sense demand** button is already wired to the agent you build next; Steps 2–4 + stay **locked** until the previous step succeeds. (Clicking **Sense demand** now + would create and run your first hosted agent — that *is* Challenge 2, so you can + stop here and pick it up in the next challenge.) ## 🏁 Success criteria -- [ ] `demand-sensing-agent` appears under **Agents** in your Foundry project. -- [ ] Running the agent returns an assessment backed by a governed data point **and** - an external signal, with a clear adequate / at-risk / exposed verdict. -- [ ] The planner console's **Step 1** turns green and unlocks Step 2. -- [ ] You can explain what each function tool contributed. +- [ ] Your Codespace (or local devcontainer) is running with dependencies installed. +- [ ] `az login` succeeded and `src/.env` has your endpoint, model name, and Cosmos endpoint. +- [ ] `gpt-5.4-mini` shows *Succeeded* in your Foundry project. +- [ ] The planner console loads and shows current exposure + the order book (Cosmos seeded). +- [ ] You can name the tools each of the three agents will use. ## 🛠️ Troubleshooting | Symptom | Fix | |---------|-----| -| `PROJECT_ENDPOINT is not set` | Fill in `src/.env` from your dashboard (Challenge 0). | -| `DefaultAzureCredential` error | Run `az login` in the same terminal. | -| Agent answers from memory | Strengthen the *TOOL USE* rule in the instructions. | -| The agent never calls a tool | Confirm the deployed model's Foundry card lists **Functions/Tools** support (e.g. `gpt-5.4-mini`); avoid the older o-series. | +| `gpt-5.4-mini` missing | Flag your facilitator — it's part of the provisioned lab. | +| Port 8000 didn't open | Open the **Ports** tab and click the globe on 8000. | +| `az login` opens no browser | Use `az login --use-device-code` and follow the URL. | +| Panels show "not connected" | Set `COSMOS_ENDPOINT` in `src/.env` and `az login`. If just provisioned, the data-plane role can take a minute to propagate — wait and reload. | +| `Forbidden` / 403 from Cosmos | Your identity's **Cosmos DB Built-in Data Contributor** role is still propagating, or you're signed into the wrong tenant — re-check `az login`. | ## 🚀 Go further -- Add the Bing grounding tool: create a `BingGroundingTool` in `agent_runtime.ensure` - when `config.ENABLE_WEB_SEARCH` is true, and pass a `BING_CONNECTION_ID`. -- Ask the agent to rank **all** locations by exposure, not just the worst. -- Add a second scenario (a supplier delay) and compare the assessment. +- Open `src/tools.py` and read `list_low_stock` — the console's **current exposure** + panel is exactly what it returns. +- Predict which locations Challenge 3 will flag CRITICAL before you get there. ## 📚 Learning resources -- [Create and run agents with the Foundry Agents SDK](https://learn.microsoft.com/azure/ai-foundry/agents/quickstart) -- [Function tools for agents](https://learn.microsoft.com/azure/ai-foundry/agents/how-to/tools/function-calling) +- [What is Microsoft Foundry Agent Service?](https://learn.microsoft.com/azure/foundry/agents/overview) +- [Develop in a Codespace / devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md index 65db86d04..bdcd18c3b 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-02.md @@ -1,88 +1,104 @@ -# Challenge 2 — Inventory Optimisation (Hosted Agent) + Tracing +# Challenge 2 — Demand Sensing (Hosted Agent) **[← Previous](challenge-01.md)** - [Home](../README.md) - [Next Challenge →](challenge-03.md) ## 🎯 Objective -Build the second hosted agent: it takes the demand assessment and produces a -concrete **reorder recommendation** using a planning rule and the governed data. -Then use **tracing** in the Foundry portal to inspect every tool call it made. +Build and deploy your first **hosted agent** in code. Give it **function tools** +over the governed inventory data, run it against a real-world scenario, and light +up **Step 1** of the planner console. ## 🧭 Context -The demand signal shows exposure. The planning team now needs to know *which SKUs* -to reorder, *how many units*, *to which location*, and *why*. +Your facilitator announces a scenario, for example: + +> *"A prolonged heatwave and early spring across the Pacific Northwest is driving a +> surge in demand for garden and outdoor power equipment."* + +Your agent must sense that signal, reconcile it against the governed inventory +position, and produce a demand assessment planners can act on. ## ✅ Tasks -### Part A — Read the agent & the reorder rule (15 min) +### Part A — Read the agent definition (15 min) + +Open [`src/agents/__init__.py`](../src/agents/__init__.py) and study `DEMAND_SENSING`: + +- **`name`** — becomes the hosted agent's name in your Foundry project. +- **`instructions`** — the system prompt; note the strict *TOOL USE* rule. +- **`functions`** — `query_inventory`, `list_low_stock`, `get_external_signals` + from [`src/tools.py`](../src/tools.py). -Open [`src/agents/__init__.py`](../src/agents/__init__.py) → `INVENTORY_OPTIMISATION` -and [`src/tools.py`](../src/tools.py) → `calc_reorder`. The rule is: +Open [`src/agent_runtime.py`](../src/agent_runtime.py) and follow `AgentRuntime.ensure`: +it **creates a versioned agent** with the new Foundry agents API and routes the +agent's endpoint to it — this is what makes it a *native hosted* agent (it appears in +the portal under **Agents**, with a **Traces** tab). -``` -reorder_qty = max(0, average_daily_sales * 30 - current_stock) -``` +### Part B — Run the agent from the console (20 min) -The agent is instructed to return a **structured JSON** recommendation (so the UI -can render a table), marking any SKU below safety stock as **CRITICAL**. +You run the agent straight from the planner console — there are no scripts to run. -### Part B — Run the optimisation step (15 min) +1. Launch the console (if it isn't already running) and open the forwarded port 8000: + ```bash + cd src && uv run uvicorn ui.app:app --reload --port 8000 + ``` +2. Pick a scenario and click **Sense demand**. -In the console, after Step 1, click **Generate reorder plan**. That first click -**creates the `inventory-optimisation-agent` hosted agent**, then runs it: Step 2 -renders the recommendation table and unlocks Step 3. +That first click does two things: `AgentRuntime.ensure()` **creates the +`demand-sensing-agent` hosted agent** in your Foundry project, then runs it. Step 1 +turns green and shows an assessment that: +- cites at least one **external signal** (from `get_external_signals`), +- references at least one **governed inventory** number (from `list_low_stock` / + `query_inventory`), and +- states whether stock is **adequate / at risk / critically exposed**. -Confirm at least one item is flagged **CRITICAL** (leaf blowers / chainsaws at -Portland and Seattle are strong candidates). Behind the scenes the agent returns a -JSON `recommendations` array — the console renders it as a table. +Step 2's button unlocks once Step 1 succeeds. -![Planner console Step 2: a reorder recommendation table with a CRITICAL row](../images/challenge-02-console.png) +![The planner console after Step 1: the demand assessment appears and Step 2 unlocks](../images/challenge-01-console.png) -### Part C — Inspect the trace (25 min) +Now confirm it's really hosted: open [ai.azure.com](https://ai.azure.com) → your +project → **Agents**. You'll see **`demand-sensing-agent`** listed — the hosted agent +your click just created. Edit its instructions in `src/agents/__init__.py`, save (the +server auto-reloads), and click **Sense demand** again to update it in place. -> [!IMPORTANT] -> Understanding *what an agent did and why* is the core skill for trustworthy AI. +> [!NOTE] +> In the agent's **Playground** tab, its function tools may show *"Not supported by +> the selected model."* This is a **cosmetic** portal capability flag for +> `gpt-5.4-mini` — the tools **do** execute at runtime via the Responses API (the +> assessment's governed numbers come straight from those tool calls). -1. In the Foundry portal, open your agent → the **Traces** tab (your lab already - connected Application Insights, so tracing is on — no setup needed). -2. Find the most recent `inventory-optimisation-agent` run. -3. Locate and read: - - the **model call** — the instructions + input the model received, - - each **tool call** — e.g. `calc_reorder` with its arguments, - - the **tool response** — the numbers your code returned, - - the **final generation** — how the model assembled the JSON. -4. Answer from the trace: - - Did the agent call `calc_reorder` once or per SKU? Why? - - Are the reorder quantities traceable to real `avgDailySales × 30 − stock` numbers? - - Did it correctly flag the CRITICAL items? +### Part C — (Optional) add Web Search grounding (10 min) -![Trace view: the model call, the calc_reorder tool call, its response, and the final generation](../images/challenge-02-trace.png) +The `get_external_signals` tool already grounds the agent in pre-loaded market +signals, so the challenge completes without any live web tool. If your project has +the Web Search / Bing grounding tool enabled, set `ENABLE_WEB_SEARCH=true` in +`src/.env` and extend the agent to add it (see **Go further**). ## 🏁 Success criteria -- [ ] `inventory-optimisation-agent` exists in your project with only the read tools. -- [ ] The plan step returns a recommendation with at least one **CRITICAL** item. -- [ ] The console's **Step 2** renders the table and unlocks Step 3. -- [ ] You can point to the trace and prove *why* a quantity was recommended. +- [ ] `demand-sensing-agent` appears under **Agents** in your Foundry project. +- [ ] Running the agent returns an assessment backed by a governed data point **and** + an external signal, with a clear adequate / at-risk / exposed verdict. +- [ ] The planner console's **Step 1** turns green and unlocks Step 2. +- [ ] You can explain what each function tool contributed. ## 🛠️ Troubleshooting | Symptom | Fix | |---------|-----| -| No run under **Traces** | Traces can take a minute or two to reach Application Insights — wait, then refresh; make sure the agent actually ran. | -| Tools show "Not supported by the selected model" | Cosmetic portal flag for `gpt-5.4-mini`; the tools run via the Responses API (the real reorder numbers prove it). | -| Output isn't valid JSON | The orchestrator tolerates code-fences, but reinforce *"Return ONLY the JSON"* in instructions. | -| No CRITICAL item | Use a scenario touching outdoor power tools (Portland/Seattle are below safety stock). | -| Quantities look wrong | Check the trace — confirm `calc_reorder` was called and returned real numbers. | +| `PROJECT_ENDPOINT is not set` | Fill in `src/.env` from your dashboard (Challenge 1). | +| `DefaultAzureCredential` error | Run `az login` in the same terminal. | +| Agent answers from memory | Strengthen the *TOOL USE* rule in the instructions. | +| The agent never calls a tool | Confirm the deployed model's Foundry card lists **Functions/Tools** support (e.g. `gpt-5.4-mini`); avoid the older o-series. | ## 🚀 Go further -- Extend `calc_reorder` to respect `safetyStock` as well as `reorderPoint`. -- Have the agent rank recommendations by estimated spend using `unitCost`. -- Add a `transfer` suggestion when another location has surplus. +- Add the Bing grounding tool: create a `BingGroundingTool` in `agent_runtime.ensure` + when `config.ENABLE_WEB_SEARCH` is true, and pass a `BING_CONNECTION_ID`. +- Ask the agent to rank **all** locations by exposure, not just the worst. +- Add a second scenario (a supplier delay) and compare the assessment. ## 📚 Learning resources -- [Trace agents in Foundry](https://learn.microsoft.com/azure/ai-foundry/observability/concepts/trace-agent-concept) -- [Responsible AI for agents](https://learn.microsoft.com/azure/ai-foundry/responsible-use-of-ai-overview) +- [Create and run agents with the Foundry Agents SDK](https://learn.microsoft.com/azure/ai-foundry/agents/quickstart) +- [Function tools for agents](https://learn.microsoft.com/azure/ai-foundry/agents/how-to/tools/function-calling) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md index f473d34cb..23a1be0eb 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-03.md @@ -1,92 +1,88 @@ -# Challenge 3 — Replenishment Action + Human-in-the-Loop +# Challenge 3 — Inventory Optimisation (Hosted Agent) + Tracing **[← Previous](challenge-02.md)** - [Home](../README.md) - [Next Challenge →](challenge-04.md) ## 🎯 Objective -Build the third hosted agent: it proposes a purchase order, then a **human approves -or rejects it in code** before the one side-effecting tool runs. This is the gate -that turns an AI assistant into an AI agent that genuinely acts. +Build the second hosted agent: it takes the demand assessment and produces a +concrete **reorder recommendation** using a planning rule and the governed data. +Then use **tracing** in the Foundry portal to inspect every tool call it made. ## 🧭 Context -Someone has to actually place the order — but purchase orders need a human sign-off. -Your Replenishment Action Agent **proposes**; a person **decides**; the tool **acts**. +The demand signal shows exposure. The planning team now needs to know *which SKUs* +to reorder, *how many units*, *to which location*, and *why*. ## ✅ Tasks -### Part A — Read the agent & the gate (20 min) +### Part A — Read the agent & the reorder rule (15 min) -Open [`src/agents/__init__.py`](../src/agents/__init__.py) → `REPLENISHMENT`. It has -two tools: `get_product` (to look up unit costs) and `submit_purchase_order` (the -only side effect). Its instructions tell it to **propose** a PO as JSON and to -**never** submit without approval. +Open [`src/agents/__init__.py`](../src/agents/__init__.py) → `INVENTORY_OPTIMISATION` +and [`src/tools.py`](../src/tools.py) → `calc_reorder`. The rule is: -Now open [`src/agent_runtime.py`](../src/agent_runtime.py). The set -`APPROVAL_REQUIRED = {"submit_purchase_order"}` makes the runtime **refuse to -auto-execute** that tool: if the model asks for it, `run()` returns a -`ToolApprovalRequest` instead of acting. The human decision happens in -[`src/orchestrator.py`](../src/orchestrator.py) → `approve()`, which only runs the -tool after a person says yes. +``` +reorder_qty = max(0, average_daily_sales * 30 - current_stock) +``` -> [!NOTE] -> The approval here isn't *simulated in a prompt* — the acting tool is **structurally -> blocked** until a human approves. +The agent is instructed to return a **structured JSON** recommendation (so the UI +can render a table), marking any SKU below safety stock as **CRITICAL**. -### Part B — Build the proposal (20 min) +### Part B — Run the optimisation step (15 min) -In the console, after Steps 1–2, click **Build PO proposal**. That first click -**creates the `replenishment-action-agent` hosted agent**, then runs it: **Step 3** -renders a per-line purchase-order proposal with a total, and **Step 4 (Approve & -act)** unlocks. Nothing is submitted yet — the agent only *proposes*. The **Approve** -/ **Reject** buttons appear for the human gate you test next, and **Step 4 shows a -summary of exactly what you're approving** — the per-line PO and total — so the -decision is fully informed. +In the console, after Step 1, click **Generate reorder plan**. That first click +**creates the `inventory-optimisation-agent` hosted agent**, then runs it: Step 2 +renders the recommendation table and unlocks Step 3. -### Part C — Approve in the console (25 min) +Confirm at least one item is flagged **CRITICAL** (leaf blowers / chainsaws at +Portland and Seattle are strong candidates). Behind the scenes the agent returns a +JSON `recommendations` array — the console renders it as a table. -> [!IMPORTANT] -> This is the payoff: the whole loop, with the human gate, in the UI. - -1. With the proposal at **Step 3** and the **Approve** / **Reject** buttons at **Step 4** (from Part B): -2. Click **Reject** first — confirm *"Order cancelled. No action taken."* and that - the order book does **not** change. -3. Refresh the page, re-run Steps 1–3, then click **Approve & submit** — the - confirmation `✅ Purchase order PO-… submitted and recorded in the order book.` - appears and the new order shows up in the **order book** panel (a real Cosmos write). +![Planner console Step 2: a reorder recommendation table with a CRITICAL row](../images/challenge-02-console.png) -![Planner console at the approval gate — Step 4 shows the per-line PO summary with Approve / Reject before the write](../images/challenge-03-approve.png) +### Part C — Inspect the trace (25 min) -### Part D — Trace the acting run (10 min) - -In the portal, open the `replenishment-action-agent` **Traces** tab and its latest -run. You'll see the `get_product` unit-cost lookups — but **no** `submit_purchase_order` -call, because the runtime blocks it and hands control to the human before it can run. +> [!IMPORTANT] +> Understanding *what an agent did and why* is the core skill for trustworthy AI. + +1. In the Foundry portal, open your agent → the **Traces** tab (your lab already + connected Application Insights, so tracing is on — no setup needed). +2. Find the most recent `inventory-optimisation-agent` run. +3. Locate and read: + - the **model call** — the instructions + input the model received, + - each **tool call** — e.g. `calc_reorder` with its arguments, + - the **tool response** — the numbers your code returned, + - the **final generation** — how the model assembled the JSON. +4. Answer from the trace: + - Did the agent call `calc_reorder` once or per SKU? Why? + - Are the reorder quantities traceable to real `avgDailySales × 30 − stock` numbers? + - Did it correctly flag the CRITICAL items? + +![Trace view: the model call, the calc_reorder tool call, its response, and the final generation](../images/challenge-02-trace.png) ## 🏁 Success criteria -- [ ] `replenishment-action-agent` exists with `get_product` + `submit_purchase_order`. -- [ ] The proposal is a per-line cost table with a total. -- [ ] **Reject** writes nothing; **Approve** appends a `PO-…` to the order book. -- [ ] You can explain, pointing at the code, *why* the agent can't submit on its own. +- [ ] `inventory-optimisation-agent` exists in your project with only the read tools. +- [ ] The plan step returns a recommendation with at least one **CRITICAL** item. +- [ ] The console's **Step 2** renders the table and unlocks Step 3. +- [ ] You can point to the trace and prove *why* a quantity was recommended. ## 🛠️ Troubleshooting | Symptom | Fix | |---------|-----| -| An order is written without approval | Confirm `submit_purchase_order` is in `APPROVAL_REQUIRED`. | -| Unit costs all show `$20` | The `get_product` lookup failed — check the trace; `$20` is the fallback only. | -| Proposal isn't valid JSON | Reinforce *"Return ONLY the JSON"* in the instructions. | -| Approve does nothing | Ensure `submitItems` is populated in the proposal (see the agent instructions). | +| No run under **Traces** | Traces can take a minute or two to reach Application Insights — wait, then refresh; make sure the agent actually ran. | +| Tools show "Not supported by the selected model" | Cosmetic portal flag for `gpt-5.4-mini`; the tools run via the Responses API (the real reorder numbers prove it). | +| Output isn't valid JSON | The orchestrator tolerates code-fences, but reinforce *"Return ONLY the JSON"* in instructions. | +| No CRITICAL item | Use a scenario touching outdoor power tools (Portland/Seattle are below safety stock). | +| Quantities look wrong | Check the trace — confirm `calc_reorder` was called and returned real numbers. | ## 🚀 Go further -- Add a **spend cap**: reject any proposal above a threshold and escalate. -- Capture the approver's **name and reason** and echo them in the confirmation. -- Query the Cosmos `orders` container directly (portal Data Explorer) to see your - submitted PO persisted alongside the seed orders. +- Extend `calc_reorder` to respect `safetyStock` as well as `reorderPoint`. +- Have the agent rank recommendations by estimated spend using `unitCost`. +- Add a `transfer` suggestion when another location has surplus. ## 📚 Learning resources -- [Human-in-the-loop tool approvals for agents](https://learn.microsoft.com/agent-framework/agents/tools/tool-approval) -- [Agent development lifecycle](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/development-lifecycle) +- [Trace agents in Foundry](https://learn.microsoft.com/azure/ai-foundry/observability/concepts/trace-agent-concept) +- [Responsible AI for agents](https://learn.microsoft.com/azure/ai-foundry/responsible-use-of-ai-overview) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md index 063e11331..e15f6d6ff 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-04.md @@ -1,114 +1,92 @@ -# Challenge 4 — Orchestrate the Loop (Stretch) +# Challenge 4 — Replenishment Action + Human-in-the-Loop **[← Previous](challenge-03.md)** - [Home](../README.md) - [Next Challenge →](challenge-05.md) -> [!NOTE] -> Optional stretch for teams that finish early. It builds on the three agents from -> Challenges 1–3. Skip without penalty — Challenges 0–3 are the core. - ## 🎯 Objective -Chain the three agents into one **sequential workflow** so the entire -sense → plan → approve → act loop runs from a single entry point, pausing only at -the human-approval gate. Then wire the console's one-click **"Run the whole loop"**. +Build the third hosted agent: it proposes a purchase order, then a **human approves +or rejects it in code** before the one side-effecting tool runs. This is the gate +that turns an AI assistant into an AI agent that genuinely acts. ## 🧭 Context -Planners don't want to click four buttons — they want to type one sentence and have -the system run the loop, stopping only for approval. +Someone has to actually place the order — but purchase orders need a human sign-off. +Your Replenishment Action Agent **proposes**; a person **decides**; the tool **acts**. ## ✅ Tasks -### Part A — Read the workflow (10 min) - -Open [`src/workflow.py`](../src/workflow.py) → `run_planning_workflow`. It takes a -scenario and an `approve` callback (the human gate) and runs -`sense → plan → propose → [human] → approve`. This mirrors the Microsoft Agent -Framework **sequential** pattern: deterministic hand-off with a gate before the -terminal action. +### Part A — Read the agent & the gate (20 min) -### Part B — Read the workflow endpoint (10 min) +Open [`src/agents/__init__.py`](../src/agents/__init__.py) → `REPLENISHMENT`. It has +two tools: `get_product` (to look up unit costs) and `submit_purchase_order` (the +only side effect). Its instructions tell it to **propose** a PO as JSON and to +**never** submit without approval. -The console already exposes the workflow through one endpoint. Open -[`src/ui/app.py`](../src/ui/app.py) → `/api/run-loop`: it calls -`run_planning_workflow(scenario, approve=lambda _p: False, ...)` — running -`sense → plan → propose` server-side in one shot and returning all three stages, -**without** submitting (the human still approves at Step 4). This is the sequential -workflow driving the whole loop from a single call. +Now open [`src/agent_runtime.py`](../src/agent_runtime.py). The set +`APPROVAL_REQUIRED = {"submit_purchase_order"}` makes the runtime **refuse to +auto-execute** that tool: if the model asks for it, `run()` returns a +`ToolApprovalRequest` instead of acting. The human decision happens in +[`src/orchestrator.py`](../src/orchestrator.py) → `approve()`, which only runs the +tool after a person says yes. -### Part C — Add the one-click UI button (25 min) - -Wire a **"Run the whole loop"** button in -[`src/ui/static/index.html`](../src/ui/static/index.html) that: - -1. `POST`s the chosen scenario to **`/api/run-loop`**, then -2. fills Steps 1–3 from the response (`assessment`, `recommendation`, `proposal`) and - **stops at Step 4** for the human's **Approve / Reject**. +> [!NOTE] +> The approval here isn't *simulated in a prompt* — the acting tool is **structurally +> blocked** until a human approves. -First add the button element (for example next to the Step 1 **Sense demand** -button): +### Part B — Build the proposal (20 min) -```html - -``` +In the console, after Steps 1–2, click **Build PO proposal**. That first click +**creates the `replenishment-action-agent` hosted agent**, then runs it: **Step 3** +renders a per-line purchase-order proposal with a total, and **Step 4 (Approve & +act)** unlocks. Nothing is submitted yet — the agent only *proposes*. The **Approve** +/ **Reject** buttons appear for the human gate you test next, and **Step 4 shows a +summary of exactly what you're approving** — the per-line PO and total — so the +decision is fully informed. -Then attach a handler to get you started: +### Part C — Approve in the console (25 min) -```javascript -document.getElementById("btnRunLoop").onclick = async () => { - const r = await api("/api/run-loop", { scenario: $("scenario").value }); - if (r.error) return showError("outSense", r.error); - $("outSense").hidden = false; $("outSense").textContent = r.assessment; - recommendation = r.recommendation; - submitItems = (r.proposal.submitItems) || []; - renderPlan(r.recommendation); // existing helper — fills the Step 2 table - renderProposal(r.proposal); // existing helper — fills Step 3 and the Step 4 summary - $("btnApprove").disabled = false; $("btnReject").disabled = false; // open the human gate -}; -``` +> [!IMPORTANT] +> This is the payoff: the whole loop, with the human gate, in the UI. -> [!TIP] -> `renderPlan()` and `renderProposal()` already exist in `index.html` — they power the -> manual Step 2/3 buttons. Reuse them here instead of hand-rolling table markup. +1. With the proposal at **Step 3** and the **Approve** / **Reject** buttons at **Step 4** (from Part B): +2. Click **Reject** first — confirm *"Order cancelled. No action taken."* and that + the order book does **not** change. +3. Refresh the page, re-run Steps 1–3, then click **Approve & submit** — the + confirmation `✅ Purchase order PO-… submitted and recorded in the order book.` + appears and the new order shows up in the **order book** panel (a real Cosmos write). -> Keep the human gate: the button must still stop at approval — the whole point is -> that automation runs everything *except* the human decision. Never auto-call -> `/api/approve`. +![Planner console at the approval gate — Step 4 shows the per-line PO summary with Approve / Reject before the write](../images/challenge-03-approve.png) -### Part D — (Alternative) evaluation pass (optional) +### Part D — Trace the acting run (10 min) -If you'd rather evaluate quality: in the portal **Evaluation**, build a small -dataset of 3–5 questions with expected answers (e.g. *"Which store has the lowest -leaf blower stock?"* → *"Portland"*), run it against `inventory-optimisation-agent`, -and review **groundedness** and **relevance**. +In the portal, open the `replenishment-action-agent` **Traces** tab and its latest +run. You'll see the `get_product` unit-cost lookups — but **no** `submit_purchase_order` +call, because the runtime blocks it and hands control to the human before it can run. ## 🏁 Success criteria -- [ ] You can explain how `/api/run-loop` + `run_planning_workflow` drive the full - loop from one call, pausing at approval. -- [ ] The console's **Run the whole loop** button fills Steps 1–3 and stops at Step 4. - *Quick test:* run it with *"A prolonged heatwave is forecast across the Southwest"* — - Step 1 shows an assessment within ~10 s and Steps 2–3 populate on their own, with - **Approve / Reject** live at Step 4. -- [ ] **Reject** submits nothing; **Approve** appends a `PO-…` to the order book. -- [ ] You can explain when a deterministic workflow beats manual step-by-step driving. +- [ ] `replenishment-action-agent` exists with `get_product` + `submit_purchase_order`. +- [ ] The proposal is a per-line cost table with a total. +- [ ] **Reject** writes nothing; **Approve** appends a `PO-…` to the order book. +- [ ] You can explain, pointing at the code, *why* the agent can't submit on its own. ## 🛠️ Troubleshooting | Symptom | Fix | |---------|-----| -| `/api/run-loop` returns an error | Ensure all three agents work (Challenges 1–3) and `az login` is valid. | -| The button submits automatically | Don't call `/api/approve` from the button; only from the Approve button. | -| Nothing renders | Check the browser console — the response keys are `assessment`, `recommendation`, `proposal`. | +| An order is written without approval | Confirm `submit_purchase_order` is in `APPROVAL_REQUIRED`. | +| Unit costs all show `$20` | The `get_product` lookup failed — check the trace; `$20` is the fallback only. | +| Proposal isn't valid JSON | Reinforce *"Return ONLY the JSON"* in the instructions. | +| Approve does nothing | Ensure `submitItems` is populated in the proposal (see the agent instructions). | ## 🚀 Go further -- Export the sequence as an **Agent Framework** YAML workflow and run it as a routine. -- Add a **group-chat** variant where agents hand off dynamically instead of in a fixed order. -- Publish the console behind auth and add an audit log of every approval. +- Add a **spend cap**: reject any proposal above a threshold and escalate. +- Capture the approver's **name and reason** and echo them in the confirmation. +- Query the Cosmos `orders` container directly (portal Data Explorer) to see your + submitted PO persisted alongside the seed orders. ## 📚 Learning resources -- [Agent Framework sequential workflows](https://learn.microsoft.com/agent-framework/workflows/orchestrations/sequential) -- [Build a workflow in Microsoft Foundry (Preview)](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/workflow) -- [Evaluate agents in Foundry](https://learn.microsoft.com/azure/ai-foundry/observability/how-to/evaluate-agent) +- [Human-in-the-loop tool approvals for agents](https://learn.microsoft.com/agent-framework/agents/tools/tool-approval) +- [Agent development lifecycle](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/development-lifecycle) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md index 7e8f7b6ef..39861e3c6 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-05.md @@ -1,136 +1,114 @@ -# Challenge 5 — The Loop Reacts (Event-Driven, Stretch) +# Challenge 5 — Orchestrate the Loop (Stretch) -**[← Previous](challenge-04.md)** - [Home](../README.md) +**[← Previous](challenge-04.md)** - [Home](../README.md) - [Next Challenge →](challenge-06.md) > [!NOTE] -> Optional capstone for teams that finish early. It builds on the three agents from -> Challenges 1–3. Skip without penalty — Challenges 0–3 are the core. +> Optional stretch for teams that finish early. It builds on the three agents from +> Challenges 2–4. Skip without penalty — Challenges 1–4 are the core. ## 🎯 Objective -Turn the planner loop from *click-driven* into *event-driven*. A background watcher -tails the Cosmos **change feed**; any **independent insert** into the `signals` -container — from the console, an **MCP** client, or any other system — makes the loop -**run itself** (Sense → Plan → Propose) and stream progress live, then **stop at the -human-approval gate**. No new Azure infrastructure: the change feed is intrinsic to -Cosmos, and the watcher runs inside the console you already have. +Chain the three agents into one **sequential workflow** so the entire +sense → plan → approve → act loop runs from a single entry point, pausing only at +the human-approval gate. Then wire the console's one-click **"Run the whole loop"**. ## 🧭 Context -Planners don't watch a dashboard all day. In real operations a *signal* arrives — a -weather alert, a competitor stockout, a supplier delay lands in a system — and the -planning process should react on its own, surfacing a decision for a human to approve. - -That's the shift here: the **write is the trigger**. Whoever drops a signal into the -governed store kicks off the loop, and the agents you built react to it automatically — -while the human still owns the final **Approve**. +Planners don't want to click four buttons — they want to type one sentence and have +the system run the loop, stopping only for approval. ## ✅ Tasks -### Part A — Read the reactive layer (15 min) - -Open [`src/live.py`](../src/live.py) and follow three pieces: +### Part A — Read the workflow (10 min) -- **`start_watcher`** — tails the `signals` **change feed** (pull model: poll with a - continuation token, primed from *now* so the one-time seed never triggers a run). -- **`_auto_run`** — on each new signal, runs `sense → plan → propose` via the same - orchestrator the console uses, publishing an event at each step — then **stops** and - emits `awaiting_approval`. It never submits. -- **`EventBus`** — fans those events out to the browser over **SSE** (`/api/events`). +Open [`src/workflow.py`](../src/workflow.py) → `run_planning_workflow`. It takes a +scenario and an `approve` callback (the human gate) and runs +`sense → plan → propose → [human] → approve`. This mirrors the Microsoft Agent +Framework **sequential** pattern: deterministic hand-off with a gate before the +terminal action. -Then skim [`src/ui/app.py`](../src/ui/app.py): the `startup` hook launches the watcher, -`POST /api/signal` only **writes** the signal (it never calls an agent — the change -feed does the triggering), and `GET /api/events` is the SSE stream the console watches. +### Part B — Read the workflow endpoint (10 min) -### Part B — Watch it react from the console (15 min) +The console already exposes the workflow through one endpoint. Open +[`src/ui/app.py`](../src/ui/app.py) → `/api/run-loop`: it calls +`run_planning_workflow(scenario, approve=lambda _p: False, ...)` — running +`sense → plan → propose` server-side in one shot and returning all three stages, +**without** submitting (the human still approves at Step 4). This is the sequential +workflow driving the whole loop from a single call. -1. Launch the console and open port 8000. The **Event trigger** panel shows a green - dot once the watcher is **listening**. -2. Pick a signal and click **⚡ Inject signal**. Watch **Steps 1–3 run themselves** — - the activity log narrates each step — and the loop **stop at Step 4**. Notice that - **Sense demand disables** and shows an *"⚡ External signal received"* banner: the - run was driven by the signal, not a human click. If several signals arrive at once, - Step 1 shows a **queue** that drains one run at a time. -3. **Step 4 shows exactly what you're approving** — the per-line purchase order and the - total — so the human decision is fully informed. Click **Approve & submit** and a - real `PO-…` is written to Cosmos, exactly as in Challenge 3. The automation ran - everything *except* the human decision. +### Part C — Add the one-click UI button (25 min) -![The planner console reacting to an injected signal: Sense demand disabled with an external-signal banner, the plan and PO built automatically with natural-language edit boxes, and Step 4 showing exactly what is being approved before the human gate](../images/challenge-05-reactive.png) +Wire a **"Run the whole loop"** button in +[`src/ui/static/index.html`](../src/ui/static/index.html) that: -### Part B2 — Steer the loop in natural language (10 min) +1. `POST`s the chosen scenario to **`/api/run-loop`**, then +2. fills Steps 1–3 from the response (`assessment`, `recommendation`, `proposal`) and + **stops at Step 4** for the human's **Approve / Reject**. -The reactive loop produces a *draft* — the planner stays in control and can refine it -in plain English before approving, each edit re-running the relevant agent: +First add the button element (for example next to the Step 1 **Sense demand** +button): -- Under **Step 2**, type into *"Refine the plan…"* — e.g. *"only the CRITICAL SKUs"* or - *"halve the leaf blower quantities"* — and the **Inventory Optimisation agent** - regenerates the recommendation (`POST /api/plan/refine`). -- Under **Step 3**, type into *"Edit the PO…"* — e.g. *"drop the warehouse line"* or - *"cut chainsaws to 40"* — and the **Replenishment agent** rewrites the proposal - (`POST /api/propose/refine`). The approval summary at Step 4 updates to match. +```html + +``` -The gate is untouched: refining is still only *proposing* — nothing is written until a -human clicks **Approve**. +Then attach a handler to get you started: -### Part C — Trigger it from outside via MCP (20 min) +```javascript +document.getElementById("btnRunLoop").onclick = async () => { + const r = await api("/api/run-loop", { scenario: $("scenario").value }); + if (r.error) return showError("outSense", r.error); + $("outSense").hidden = false; $("outSense").textContent = r.assessment; + recommendation = r.recommendation; + submitItems = (r.proposal.submitItems) || []; + renderPlan(r.recommendation); // existing helper — fills the Step 2 table + renderProposal(r.proposal); // existing helper — fills Step 3 and the Step 4 summary + $("btnApprove").disabled = false; $("btnReject").disabled = false; // open the human gate +}; +``` -The write can come from anywhere — including an **MCP** client (GitHub Copilot, Claude, -another agent). [`src/mcp_server.py`](../src/mcp_server.py) exposes one tool, -`inject_signal`, that writes to the same `signals` container. +> [!TIP] +> `renderPlan()` and `renderProposal()` already exist in `index.html` — they power the +> manual Step 2/3 buttons. Reuse them here instead of hand-rolling table markup. -1. From `src/`, run the MCP server. It uses **stdio transport** — it talks over standard - input/output, **not a network port**, so there's nothing to `curl`; an MCP client - launches and speaks to the process directly. - ```bash - uv run python mcp_server.py - ``` -2. Point an MCP client at that command (or use an MCP client session to call the tool). - Invoke **`inject_signal`** with a headline, e.g. *"Competitor out of stock on - chainsaws in the West"*. -3. Switch to the console — it **reacts on its own** to the MCP-driven insert, runs the - loop, and waits at the gate. An external system just drove your inventory loop. +> Keep the human gate: the button must still stop at approval — the whole point is +> that automation runs everything *except* the human decision. Never auto-call +> `/api/approve`. -### Part D — (Go further) any producer, same reaction +### Part D — (Alternative) evaluation pass (optional) -The trigger is **decoupled** from the loop: the watcher reacts to the *data*, not to -who wrote it. Prove it by writing a signal from a third path — the Cosmos portal Data -Explorer, a `az cosmosdb`/SDK script, or a scheduled job — and watch the console react. +If you'd rather evaluate quality: in the portal **Evaluation**, build a small +dataset of 3–5 questions with expected answers (e.g. *"Which store has the lowest +leaf blower stock?"* → *"Portland"*), run it against `inventory-optimisation-agent`, +and review **groundedness** and **relevance**. ## 🏁 Success criteria -- [ ] The **Event trigger** panel shows the watcher **listening** (green dot). -- [ ] Injecting a signal (console **or** MCP) auto-runs Sense → Plan → Propose with - **no manual clicks**, streamed live, and **disables Sense** with an external-signal banner. -- [ ] You can **refine the plan and the PO in natural language**, and each edit re-runs the agent. -- [ ] **Step 4 shows exactly what's being approved** (per-line PO + total). -- [ ] The loop **stops at the gate** — nothing is submitted without a human. -- [ ] **Approve** writes a real `PO-…` to the order book. -- [ ] You can explain how the change feed **decouples** the trigger from the loop. +- [ ] You can explain how `/api/run-loop` + `run_planning_workflow` drive the full + loop from one call, pausing at approval. +- [ ] The console's **Run the whole loop** button fills Steps 1–3 and stops at Step 4. + *Quick test:* run it with *"A prolonged heatwave is forecast across the Southwest"* — + Step 1 shows an assessment within ~10 s and Steps 2–3 populate on their own, with + **Approve / Reject** live at Step 4. +- [ ] **Reject** submits nothing; **Approve** appends a `PO-…` to the order book. +- [ ] You can explain when a deterministic workflow beats manual step-by-step driving. ## 🛠️ Troubleshooting | Symptom | Fix | |---------|-----| -| Watcher dot never turns green | Check `COSMOS_ENDPOINT` in `.env` + `az login`; the watcher starts only when Cosmos is configured. | -| Nothing happens after injecting | The watcher primes from *now* — inject **after** the app has started. Check the server log for `watcher: …` errors. | -| Steps error out mid-run | The auto-run uses the same agents as Challenges 1–3 — make sure they work manually first, and that `az login` is valid. | -| SSE doesn't update the UI | Some corporate proxies buffer `text/event-stream`; open the forwarded port directly, or check the browser console for the `/api/events` connection. | -| Watcher dot goes gray mid-session | The SSE link dropped; it **reconnects automatically** and the dot re-greens on the next event. If it stays gray, reload the page. | -| MCP client can't call the tool | Run `uv run python mcp_server.py` from `src/`, and make sure `.env` + `az login` are in that shell (the tool writes to Cosmos). | +| `/api/run-loop` returns an error | Ensure all three agents work (Challenges 2–4) and `az login` is valid. | +| The button submits automatically | Don't call `/api/approve` from the button; only from the Approve button. | +| Nothing renders | Check the browser console — the response keys are `assessment`, `recommendation`, `proposal`. | ## 🚀 Go further -- Add a **debounce** so a burst of signals collapses into one run. -- Emit a **completion event** and have the UI toast when a proposal is ready. -- Swap the in-process watcher for a **Cosmos-trigger Azure Function** (fully serverless) - — same pattern, detached from the console. Note the added Function App infra. -- Give the MCP server a second tool, `list_exposure`, so an external agent can *ask* - before it *injects*. +- Export the sequence as an **Agent Framework** YAML workflow and run it as a routine. +- Add a **group-chat** variant where agents hand off dynamically instead of in a fixed order. +- Publish the console behind auth and add an audit log of every approval. ## 📚 Learning resources -- [Change feed in Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db/change-feed) -- [Change feed pull model](https://learn.microsoft.com/azure/cosmos-db/nosql/change-feed-pull-model) -- [Model Context Protocol](https://modelcontextprotocol.io/) -- [Server-Sent Events (MDN)](https://developer.mozilla.org/docs/Web/API/Server-sent_events) +- [Agent Framework sequential workflows](https://learn.microsoft.com/agent-framework/workflows/orchestrations/sequential) +- [Build a workflow in Microsoft Foundry (Preview)](https://learn.microsoft.com/azure/ai-foundry/agents/concepts/workflow) +- [Evaluate agents in Foundry](https://learn.microsoft.com/azure/ai-foundry/observability/how-to/evaluate-agent) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-06.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-06.md new file mode 100644 index 000000000..6c4ae4d6c --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/challenges/challenge-06.md @@ -0,0 +1,136 @@ +# Challenge 6 — The Loop Reacts (Event-Driven, Stretch) + +**[← Previous](challenge-05.md)** - [Home](../README.md) + +> [!NOTE] +> Optional capstone for teams that finish early. It builds on the three agents from +> Challenges 2–4. Skip without penalty — Challenges 1–4 are the core. + +## 🎯 Objective + +Turn the planner loop from *click-driven* into *event-driven*. A background watcher +tails the Cosmos **change feed**; any **independent insert** into the `signals` +container — from the console, an **MCP** client, or any other system — makes the loop +**run itself** (Sense → Plan → Propose) and stream progress live, then **stop at the +human-approval gate**. No new Azure infrastructure: the change feed is intrinsic to +Cosmos, and the watcher runs inside the console you already have. + +## 🧭 Context + +Planners don't watch a dashboard all day. In real operations a *signal* arrives — a +weather alert, a competitor stockout, a supplier delay lands in a system — and the +planning process should react on its own, surfacing a decision for a human to approve. + +That's the shift here: the **write is the trigger**. Whoever drops a signal into the +governed store kicks off the loop, and the agents you built react to it automatically — +while the human still owns the final **Approve**. + +## ✅ Tasks + +### Part A — Read the reactive layer (15 min) + +Open [`src/live.py`](../src/live.py) and follow three pieces: + +- **`start_watcher`** — tails the `signals` **change feed** (pull model: poll with a + continuation token, primed from *now* so the one-time seed never triggers a run). +- **`_auto_run`** — on each new signal, runs `sense → plan → propose` via the same + orchestrator the console uses, publishing an event at each step — then **stops** and + emits `awaiting_approval`. It never submits. +- **`EventBus`** — fans those events out to the browser over **SSE** (`/api/events`). + +Then skim [`src/ui/app.py`](../src/ui/app.py): the `startup` hook launches the watcher, +`POST /api/signal` only **writes** the signal (it never calls an agent — the change +feed does the triggering), and `GET /api/events` is the SSE stream the console watches. + +### Part B — Watch it react from the console (15 min) + +1. Launch the console and open port 8000. The **Event trigger** panel shows a green + dot once the watcher is **listening**. +2. Pick a signal and click **⚡ Inject signal**. Watch **Steps 1–3 run themselves** — + the activity log narrates each step — and the loop **stop at Step 4**. Notice that + **Sense demand disables** and shows an *"⚡ External signal received"* banner: the + run was driven by the signal, not a human click. If several signals arrive at once, + Step 1 shows a **queue** that drains one run at a time. +3. **Step 4 shows exactly what you're approving** — the per-line purchase order and the + total — so the human decision is fully informed. Click **Approve & submit** and a + real `PO-…` is written to Cosmos, exactly as in Challenge 4. The automation ran + everything *except* the human decision. + +![The planner console reacting to an injected signal: Sense demand disabled with an external-signal banner, the plan and PO built automatically with natural-language edit boxes, and Step 4 showing exactly what is being approved before the human gate](../images/challenge-05-reactive.png) + +### Part B2 — Steer the loop in natural language (10 min) + +The reactive loop produces a *draft* — the planner stays in control and can refine it +in plain English before approving, each edit re-running the relevant agent: + +- Under **Step 2**, type into *"Refine the plan…"* — e.g. *"only the CRITICAL SKUs"* or + *"halve the leaf blower quantities"* — and the **Inventory Optimisation agent** + regenerates the recommendation (`POST /api/plan/refine`). +- Under **Step 3**, type into *"Edit the PO…"* — e.g. *"drop the warehouse line"* or + *"cut chainsaws to 40"* — and the **Replenishment agent** rewrites the proposal + (`POST /api/propose/refine`). The approval summary at Step 4 updates to match. + +The gate is untouched: refining is still only *proposing* — nothing is written until a +human clicks **Approve**. + +### Part C — Trigger it from outside via MCP (20 min) + +The write can come from anywhere — including an **MCP** client (GitHub Copilot, Claude, +another agent). [`src/mcp_server.py`](../src/mcp_server.py) exposes one tool, +`inject_signal`, that writes to the same `signals` container. + +1. From `src/`, run the MCP server. It uses **stdio transport** — it talks over standard + input/output, **not a network port**, so there's nothing to `curl`; an MCP client + launches and speaks to the process directly. + ```bash + uv run python mcp_server.py + ``` +2. Point an MCP client at that command (or use an MCP client session to call the tool). + Invoke **`inject_signal`** with a headline, e.g. *"Competitor out of stock on + chainsaws in the West"*. +3. Switch to the console — it **reacts on its own** to the MCP-driven insert, runs the + loop, and waits at the gate. An external system just drove your inventory loop. + +### Part D — (Go further) any producer, same reaction + +The trigger is **decoupled** from the loop: the watcher reacts to the *data*, not to +who wrote it. Prove it by writing a signal from a third path — the Cosmos portal Data +Explorer, a `az cosmosdb`/SDK script, or a scheduled job — and watch the console react. + +## 🏁 Success criteria + +- [ ] The **Event trigger** panel shows the watcher **listening** (green dot). +- [ ] Injecting a signal (console **or** MCP) auto-runs Sense → Plan → Propose with + **no manual clicks**, streamed live, and **disables Sense** with an external-signal banner. +- [ ] You can **refine the plan and the PO in natural language**, and each edit re-runs the agent. +- [ ] **Step 4 shows exactly what's being approved** (per-line PO + total). +- [ ] The loop **stops at the gate** — nothing is submitted without a human. +- [ ] **Approve** writes a real `PO-…` to the order book. +- [ ] You can explain how the change feed **decouples** the trigger from the loop. + +## 🛠️ Troubleshooting + +| Symptom | Fix | +|---------|-----| +| Watcher dot never turns green | Check `COSMOS_ENDPOINT` in `.env` + `az login`; the watcher starts only when Cosmos is configured. | +| Nothing happens after injecting | The watcher primes from *now* — inject **after** the app has started. Check the server log for `watcher: …` errors. | +| Steps error out mid-run | The auto-run uses the same agents as Challenges 2–4 — make sure they work manually first, and that `az login` is valid. | +| SSE doesn't update the UI | Some corporate proxies buffer `text/event-stream`; open the forwarded port directly, or check the browser console for the `/api/events` connection. | +| Watcher dot goes gray mid-session | The SSE link dropped; it **reconnects automatically** and the dot re-greens on the next event. If it stays gray, reload the page. | +| MCP client can't call the tool | Run `uv run python mcp_server.py` from `src/`, and make sure `.env` + `az login` are in that shell (the tool writes to Cosmos). | + +## 🚀 Go further + +- Add a **debounce** so a burst of signals collapses into one run. +- Emit a **completion event** and have the UI toast when a proposal is ready. +- Swap the in-process watcher for a **Cosmos-trigger Azure Function** (fully serverless) + — same pattern, detached from the console. Note the added Function App infra. +- Give the MCP server a second tool, `list_exposure`, so an external agent can *ask* + before it *injects*. + +## 📚 Learning resources + +- [Change feed in Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db/change-feed) +- [Change feed pull model](https://learn.microsoft.com/azure/cosmos-db/nosql/change-feed-pull-model) +- [Model Context Protocol](https://modelcontextprotocol.io/) +- [Server-Sent Events (MDN)](https://developer.mozilla.org/docs/Web/API/Server-sent_events) diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/README.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/README.md index e793ca4a7..8c3678bea 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/README.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/images/README.md @@ -20,7 +20,7 @@ portal) from the sense → plan → approve → act loop: | `challenge-02-console.png` | Planner console **Step 2** — the reorder recommendation table with CRITICAL rows. | | `challenge-02-trace.png` | Foundry **Traces** view of an `inventory-optimisation-agent` run: the `invoke_agent` span and the `execute_tool` call showing `calc_reorder` / `query_inventory` with their parameters. | | `challenge-03-approve.png` | Planner console at the **approval gate** — the purchase-order proposal plus Step 4's summary of exactly what's being approved, with Approve / Reject. | -| `challenge-05-reactive.png` | The event-driven loop (Challenge 5): an injected signal auto-runs sense → plan → propose live, with the natural-language edit boxes and the informed approval gate. | +| `challenge-05-reactive.png` | The event-driven loop (Challenge 6): an injected signal auto-runs sense → plan → propose live, with the natural-language edit boxes and the informed approval gate. | To refresh one, run the matching step in the planner console (or open the agent's **Traces** tab in the Foundry portal for the trace) and re-save it under the same file diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 index 481ccd8fe..167f33b77 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/labautomation/deploy-lab.ps1 @@ -471,7 +471,7 @@ Write-Host "[OK] Lab provisioning complete." @{ HackboxCredential = @{ name = "FoundryProjectEndpoint" value = $projectEndpoint - note = "Paste into src/.env as PROJECT_ENDPOINT (Challenge 0)" + note = "Paste into src/.env as PROJECT_ENDPOINT (Challenge 1)" } } @{ HackboxCredential = @{ diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md index 5e65db37e..79860d93a 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/README.md @@ -52,8 +52,8 @@ again. | `agent_runtime.py` | Creates the **native** (versioned) Foundry agents and runs them over the Responses API; pauses on approval-gated tools | | `orchestrator.py` | `sense → plan → propose → approve` for the UI (plus `refine_plan` / `refine_proposal` for natural-language edits) | | `workflow.py` | Stretch: the whole loop as one callable (used by `/api/run-loop`) | -| `live.py` | Stretch (Challenge 5): Cosmos change-feed watcher — auto-runs the loop when a signal is written, streamed to the UI over SSE, stopping at the human gate | -| `mcp_server.py` | Stretch (Challenge 5): MCP server exposing `inject_signal` so an external client can trigger the loop | +| `live.py` | Stretch (Challenge 6): Cosmos change-feed watcher — auto-runs the loop when a signal is written, streamed to the UI over SSE, stopping at the human gate | +| `mcp_server.py` | Stretch (Challenge 6): MCP server exposing `inject_signal` so an external client can trigger the loop | | `ui/` | Minimal FastAPI + static-HTML planner console — the only way in | > The store is provisioned by `labautomation` (per-attendee Cosmos DB, keyless). The diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py index 35343943b..c4fe8de97 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/agents/__init__.py @@ -2,7 +2,7 @@ Each agent is declared as an :class:`AgentSpec`: a name, system instructions, and the set of function tools it may call. The runtime turns these into real hosted -agents in your Foundry project. Participants build these up across Challenges 1-3. +agents in your Foundry project. Participants build these up across Challenges 2-4. """ from __future__ import annotations diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py index 023050257..3d315b304 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/config.py @@ -66,7 +66,7 @@ def require_endpoint() -> str: if not PROJECT_ENDPOINT: raise RuntimeError( "PROJECT_ENDPOINT is not set. Copy .env.example to .env and paste the " - "FoundryProjectEndpoint value from your lab dashboard (Challenge 0)." + "FoundryProjectEndpoint value from your lab dashboard (Challenge 1)." ) return PROJECT_ENDPOINT @@ -76,6 +76,6 @@ def require_cosmos_endpoint() -> str: if not COSMOS_ENDPOINT: raise RuntimeError( "COSMOS_ENDPOINT is not set. Copy .env.example to .env and paste the " - "CosmosEndpoint value from your lab dashboard (Challenge 0)." + "CosmosEndpoint value from your lab dashboard (Challenge 1)." ) return COSMOS_ENDPOINT diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py index 1cf8e2b2b..99fe769de 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/inventory_store.py @@ -190,7 +190,7 @@ def append_signal(self, signal: dict[str, Any]) -> dict[str, Any]: This is the *independent insert* that the change-feed watcher reacts to — the console's Inject control, an MCP client, or any other system can call it, and - the event-driven loop (Challenge 5) kicks off automatically. Returns the stored + the event-driven loop (Challenge 6) kicks off automatically. Returns the stored document (with the ``id``/``signalId`` it was given). """ signal_id = signal.get("signalId") or signal.get("id") or f"SIG-{uuid.uuid4().hex[:8].upper()}" diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py index 8885a15be..ed9b56eb1 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/live.py @@ -1,6 +1,6 @@ -"""Event-driven "living demo" layer — Challenge 5 (stretch). +"""Event-driven "living demo" layer — Challenge 6 (stretch). -The manual console (Challenges 0–4) has a human click **Sense → Plan → Approve → Act**. +The manual console (Challenges 1–5) has a human click **Sense → Plan → Approve → Act**. This module makes the loop **reactive**: a background watcher tails the Cosmos ``signals`` **change feed**, and whenever an *independent write* lands — from the console's Inject control, an MCP client (see ``mcp_server.py``), or any other system — it **auto-runs** diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py index e7969a0c3..8fe08b194 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/mcp_server.py @@ -1,5 +1,5 @@ """MCP server that lets an *external* system drop a market signal into the governed -store — Challenge 5 (stretch). +store — Challenge 6 (stretch). This is the "real-life" edge of the event-driven story: an MCP client (GitHub Copilot, Claude, another agent, a WebIQ-style watcher, …) calls the ``inject_signal`` tool, which diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py index 877e9734b..31d6ab362 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/ui/app.py @@ -9,7 +9,7 @@ The page always loads. Endpoints that need the agents create the orchestrator lazily and return a friendly error until your Foundry project + agents are ready - -so Challenge 0 can open an empty console before any agent exists. +so Challenge 1 can open an empty console before any agent exists. """ from __future__ import annotations @@ -79,7 +79,7 @@ class RunLoopRequest(BaseModel): class SignalRequest(BaseModel): - """An external market signal injected into the governed store (Challenge 5).""" + """An external market signal injected into the governed store (Challenge 6).""" headline: str type: str = "weather" @@ -164,7 +164,7 @@ def approve(req: ApproveRequest) -> Any: @app.post("/api/run-loop") def run_loop(req: RunLoopRequest) -> Any: - """Challenge 4: run sense -> plan -> propose in one call (stops before acting). + """Challenge 5: run sense -> plan -> propose in one call (stops before acting). Uses the sequential workflow with a False approval gate, so it produces the PO proposal but never submits — the human still approves at Step 4 via /api/approve. @@ -186,7 +186,7 @@ def _run() -> dict[str, Any]: # --------------------------------------------------------------------------- -# Event-driven "living demo" (Challenge 5, stretch). A background watcher tails the +# Event-driven "living demo" (Challenge 6, stretch). A background watcher tails the # Cosmos `signals` change feed; any independent insert (from the Inject control below, # an MCP client, or any other system) auto-runs sense -> plan -> propose and streams # progress to the console over SSE — stopping at the human-approval gate. diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py index 20c322e9c..2dbd395d8 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/src/workflow.py @@ -1,4 +1,4 @@ -"""Stretch (Challenge 4): orchestrate the three agents as one sequential workflow. +"""Stretch (Challenge 5): orchestrate the three agents as one sequential workflow. The ``HackOrchestrator`` already chains the agents from Python. This module makes that chaining explicit and reusable as a single callable "workflow" so a caller diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md deleted file mode 100644 index b7a5fab35..000000000 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-00/solution-00.md +++ /dev/null @@ -1,43 +0,0 @@ -# Solution 00 — Get Grounded & Set Up - -**[← Back to Challenge 0](../../challenges/challenge-00.md)** · [Home](../../README.md) - -This walkthrough confirms a correct setup. There is no agent to build yet. - -## Expected end state - -- Codespace (or local devcontainer) built, dependencies installed. -- `az login` completed in the Codespace terminal. -- `src/.env` populated from the lab dashboard: - ``` - PROJECT_ENDPOINT=https://inv-xxxxxxxxxxxx.services.ai.azure.com/api/projects/inventory-hack - MODEL_DEPLOYMENT_NAME=gpt-5.4-mini - COSMOS_ENDPOINT=https://inv-cos-xxxxxxxxxxxx.documents.azure.com:443/ - REASONING_EFFORT=minimal - ``` -- The Foundry portal shows `gpt-5.4-mini` = *Succeeded* under **Models + endpoints**. -- The planner console loads on port 8000 and shows populated **Current exposure** - and **Order book** panels (from Cosmos, seeded on first load — no agent required). - -## Verify the data layer without any agent - -The console's **Current exposure** panel is served straight from the governed Cosmos -store (the `/api/state` endpoint → `list_low_stock`) — no agent required. Expect leaf -blowers (`P004`) and chainsaws (`P005`) at Portland (`ST03`) and Seattle (`ST04`) -flagged `CRITICAL`, plus a few `AT_RISK` rows. These numbers are seeded -deterministically by `inventory_store.py`, so they are stable every run. - -## Why the console still works before Challenge 1 - -`ui/app.py` serves the page and the `/api/state` snapshot from the bundled data. -The `/api/sense|plan|propose|approve` endpoints create the orchestrator lazily and -return a friendly `503 {"error": ...}` until the agents exist — so the shell loads, -and each step lights up as you build its agent. - -## Common issues - -| Symptom | Cause / fix | -|---------|-------------| -| `PROJECT_ENDPOINT is not set` | `.env` missing or not in `src/` — the console reads it via `config.py`. | -| Panels empty | A Python import error — check the `uvicorn` terminal output. | -| Port 8000 not forwarded | Open the **Ports** tab and forward 8000 manually. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md index e80477ae5..2448b229f 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-01/solution-01.md @@ -1,62 +1,43 @@ -# Solution 01 — Demand Sensing (Hosted Agent) +# Solution 00 — Get Grounded & Set Up **[← Back to Challenge 1](../../challenges/challenge-01.md)** · [Home](../../README.md) -## The reference implementation +This walkthrough confirms a correct setup. There is no agent to build yet. -The agent is already defined in [`src/agents/__init__.py`](../../src/agents/__init__.py) -as `DEMAND_SENSING`. The key ideas: +## Expected end state -- **Tools:** `query_inventory`, `list_low_stock`, `get_external_signals` — all from - [`src/tools.py`](../../src/tools.py). -- **Instructions:** a strict *TOOL USE* rule forcing the model to call a tool for any - inventory number and to separate external signals from governed data. +- Codespace (or local devcontainer) built, dependencies installed. +- `az login` completed in the Codespace terminal. +- `src/.env` populated from the lab dashboard: + ``` + PROJECT_ENDPOINT=https://inv-xxxxxxxxxxxx.services.ai.azure.com/api/projects/inventory-hack + MODEL_DEPLOYMENT_NAME=gpt-5.4-mini + COSMOS_ENDPOINT=https://inv-cos-xxxxxxxxxxxx.documents.azure.com:443/ + REASONING_EFFORT=minimal + ``` +- The Foundry portal shows `gpt-5.4-mini` = *Succeeded* under **Models + endpoints**. +- The planner console loads on port 8000 and shows populated **Current exposure** + and **Order book** panels (from Cosmos, seeded on first load — no agent required). -`AgentRuntime.ensure()` in [`src/agent_runtime.py`](../../src/agent_runtime.py) is what -makes it a **native hosted** agent: it calls `create_version(...)` on the new Foundry -agents API (`azure-ai-projects` 2.x) and points the agent's endpoint at that version. -The agent then appears in the portal under **Agents** with a **Traces** tab. +## Verify the data layer without any agent -## Run it +The console's **Current exposure** panel is served straight from the governed Cosmos +store (the `/api/state` endpoint → `list_low_stock`) — no agent required. Expect leaf +blowers (`P004`) and chainsaws (`P005`) at Portland (`ST03`) and Seattle (`ST04`) +flagged `CRITICAL`, plus a few `AT_RISK` rows. These numbers are seeded +deterministically by `inventory_store.py`, so they are stable every run. -Start the console from `src/`: +## Why the console still works before Challenge 2 -```bash -uv run uvicorn ui.app:app --reload --port 8000 -``` - -Open port 8000, pick a scenario, and click **Sense demand**. The first click creates -the `demand-sensing-agent` hosted agent in your project and runs it. - -## Expected output (shape) - -A short assessment that: -- names one or more **external signals** (heatwave, search-trend spike, competitor - out of stock on chainsaws — from `get_external_signals`), -- cites **governed** stock (e.g. leaf blowers CRITICAL at Portland/Seattle — from - `list_low_stock` / `query_inventory`), -- ends with a verdict: **critically exposed** for outdoor power tools. - -![Planner console after Step 1 — the demand assessment appears and Step 2 unlocks](../../images/challenge-01-console.png) - -## Verify it is really hosted - -Open the Foundry portal → your project → **Agents**. `demand-sensing-agent` is listed -as a **native** agent (Playground / Traces / Monitor tabs, no "update your agents" -prompt). Re-running just adds a new **version** — it doesn't create a duplicate agent. - -## How the tool call flows - -1. `run()` calls the **Responses** API with the scenario as input. -2. The model replies with one or more `function_call` items in `response.output`. -3. The runtime runs each Python function locally and feeds the results back as - `function_call_output` items (chained via `previous_response_id`). -4. The model produces the final assessment (`response.output_text`). +`ui/app.py` serves the page and the `/api/state` snapshot from the bundled data. +The `/api/sense|plan|propose|approve` endpoints create the orchestrator lazily and +return a friendly `503 {"error": ...}` until the agents exist — so the shell loads, +and each step lights up as you build its agent. ## Common issues -| Symptom | Fix | -|---------|-----| -| Agent answers without a tool | Strengthen the *TOOL USE* rule; confirm the model card lists Functions/Tools. | -| `DefaultAzureCredential` error | `az login` in the same terminal. | -| Slow first response | Reasoning latency — `REASONING_EFFORT=minimal` (default) keeps it snappy. | +| Symptom | Cause / fix | +|---------|-------------| +| `PROJECT_ENDPOINT is not set` | `.env` missing or not in `src/` — the console reads it via `config.py`. | +| Panels empty | A Python import error — check the `uvicorn` terminal output. | +| Port 8000 not forwarded | Open the **Ports** tab and forward 8000 manually. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md index 54d871a60..f0e512f5e 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-02/solution-02.md @@ -1,53 +1,62 @@ -# Solution 02 — Inventory Optimisation + Tracing +# Solution 01 — Demand Sensing (Hosted Agent) **[← Back to Challenge 2](../../challenges/challenge-02.md)** · [Home](../../README.md) ## The reference implementation -`INVENTORY_OPTIMISATION` in [`src/agents/__init__.py`](../../src/agents/__init__.py): +The agent is already defined in [`src/agents/__init__.py`](../../src/agents/__init__.py) +as `DEMAND_SENSING`. The key ideas: -- **Tools:** `list_low_stock`, `calc_reorder`, `get_product`, `query_inventory`. -- **Instructions:** compute `reorder_qty = max(0, avg_daily_sales*30 - current_stock)` - via `calc_reorder`, flag items below safety stock as `CRITICAL`, and return **only** - a JSON object: `{"recommendations": [{sku, productName, location, currentStock, - suggestedReorderQty, priority}]}`. +- **Tools:** `query_inventory`, `list_low_stock`, `get_external_signals` — all from + [`src/tools.py`](../../src/tools.py). +- **Instructions:** a strict *TOOL USE* rule forcing the model to call a tool for any + inventory number and to separate external signals from governed data. -The planning maths lives in `calc_reorder` in [`src/tools.py`](../../src/tools.py), so -the model does not invent numbers — it orchestrates the tool. +`AgentRuntime.ensure()` in [`src/agent_runtime.py`](../../src/agent_runtime.py) is what +makes it a **native hosted** agent: it calls `create_version(...)` on the new Foundry +agents API (`azure-ai-projects` 2.x) and points the agent's endpoint at that version. +The agent then appears in the portal under **Agents** with a **Traces** tab. ## Run it -In the console, after Step 1, click **Generate reorder plan**. The first click creates -the `inventory-optimisation-agent` hosted agent and runs it: Step 2 renders the -recommendation table with at least one `CRITICAL` row (leaf blowers / chainsaws at -Portland / Seattle). +Start the console from `src/`: -![Planner console Step 2 — a reorder recommendation table with CRITICAL rows](../../images/challenge-02-console.png) +```bash +uv run uvicorn ui.app:app --reload --port 8000 +``` -## Structured output +Open port 8000, pick a scenario, and click **Sense demand**. The first click creates +the `demand-sensing-agent` hosted agent in your project and runs it. -`orchestrator.plan()` calls `_extract_json()` which tolerates a ```json code fence -and pulls the JSON object out — so the UI can render a table reliably. gpt-5.4-mini -supports **Structured Outputs**, so the JSON is well-formed. +## Expected output (shape) -## Reading the trace (the real learning) +A short assessment that: +- names one or more **external signals** (heatwave, search-trend spike, competitor + out of stock on chainsaws — from `get_external_signals`), +- cites **governed** stock (e.g. leaf blowers CRITICAL at Portland/Seattle — from + `list_low_stock` / `query_inventory`), +- ends with a verdict: **critically exposed** for outdoor power tools. -Your lab already connected **Application Insights** to the project, so **server-side -tracing** is on automatically (no code changes). Foundry portal → your agent → -**Traces** tab → latest `inventory-optimisation-agent` run. You should see: +![Planner console after Step 1 — the demand assessment appears and Step 2 unlocks](../../images/challenge-01-console.png) -- one **model call** (the instructions + the demand assessment as input), -- one or more **`calc_reorder`** tool calls with their arguments, -- the **tool responses** (the exact numbers your code returned), -- the **final generation** assembling the JSON. +## Verify it is really hosted -Point to a specific `calc_reorder` response to prove *why* a quantity was suggested — -`suggestedReorderQty = thirtyDayDemand - currentStock`, never invented. +Open the Foundry portal → your project → **Agents**. `demand-sensing-agent` is listed +as a **native** agent (Playground / Traces / Monitor tabs, no "update your agents" +prompt). Re-running just adds a new **version** — it doesn't create a duplicate agent. + +## How the tool call flows + +1. `run()` calls the **Responses** API with the scenario as input. +2. The model replies with one or more `function_call` items in `response.output`. +3. The runtime runs each Python function locally and feeds the results back as + `function_call_output` items (chained via `previous_response_id`). +4. The model produces the final assessment (`response.output_text`). ## Common issues | Symptom | Fix | |---------|-----| -| No CRITICAL row | Use a scenario touching outdoor power tools; Portland/Seattle are below safety stock. | -| Output not JSON | Reinforce *"Return ONLY the JSON"*; `_extract_json` handles fences but not prose. | -| No trace | Refresh after a few seconds; ensure the run actually executed. | +| Agent answers without a tool | Strengthen the *TOOL USE* rule; confirm the model card lists Functions/Tools. | +| `DefaultAzureCredential` error | `az login` in the same terminal. | +| Slow first response | Reasoning latency — `REASONING_EFFORT=minimal` (default) keeps it snappy. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md index f3d35a4f5..6c295ef8a 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-03/solution-03.md @@ -1,46 +1,53 @@ -# Solution 03 — Replenishment + Human-in-the-Loop +# Solution 02 — Inventory Optimisation + Tracing **[← Back to Challenge 3](../../challenges/challenge-03.md)** · [Home](../../README.md) ## The reference implementation -`REPLENISHMENT` in [`src/agents/__init__.py`](../../src/agents/__init__.py): +`INVENTORY_OPTIMISATION` in [`src/agents/__init__.py`](../../src/agents/__init__.py): -- **Tools:** `get_product` (unit costs) and `submit_purchase_order` (the only side effect). -- **Instructions:** produce a PO proposal as JSON with `proposal` (per-line cost table - + total) and `submitItems`; **never** submit without approval. +- **Tools:** `list_low_stock`, `calc_reorder`, `get_product`, `query_inventory`. +- **Instructions:** compute `reorder_qty = max(0, avg_daily_sales*30 - current_stock)` + via `calc_reorder`, flag items below safety stock as `CRITICAL`, and return **only** + a JSON object: `{"recommendations": [{sku, productName, location, currentStock, + suggestedReorderQty, priority}]}`. -## The gate (the whole point) +The planning maths lives in `calc_reorder` in [`src/tools.py`](../../src/tools.py), so +the model does not invent numbers — it orchestrates the tool. -In [`src/agent_runtime.py`](../../src/agent_runtime.py): +## Run it -```python -APPROVAL_REQUIRED = {"submit_purchase_order"} -``` +In the console, after Step 1, click **Generate reorder plan**. The first click creates +the `inventory-optimisation-agent` hosted agent and runs it: Step 2 renders the +recommendation table with at least one `CRITICAL` row (leaf blowers / chainsaws at +Portland / Seattle). -`run()` scans the model's `function_call` items. If the model asks for -`submit_purchase_order`, the runtime **returns a `ToolApprovalRequest` instead of -executing it** (the read-only tools still run normally). The write only happens when a -human calls `orchestrator.approve(...)`, which invokes `submit_purchase_order` -directly. So the acting tool is **structurally blocked** behind the human decision — -not just asked nicely in a prompt. +![Planner console Step 2 — a reorder recommendation table with CRITICAL rows](../../images/challenge-02-console.png) -## In the console +## Structured output -Steps 1–2, then **Step 3** shows the proposal and **Step 4 (Approve & act)** offers **Approve & submit** / **Reject**. -- **Reject** → "Order cancelled. No action taken." Order book unchanged. -- **Approve** → `✅ Purchase order PO-… submitted and recorded in the order book.` and - the new order appears in the **Order book** panel. +`orchestrator.plan()` calls `_extract_json()` which tolerates a ```json code fence +and pulls the JSON object out — so the UI can render a table reliably. gpt-5.4-mini +supports **Structured Outputs**, so the JSON is well-formed. -> The order is a **real write** to the Cosmos `orders` container, so it **persists** -> across server restarts — reload the console and it's still there. +## Reading the trace (the real learning) -![Planner console Step 4 — the PO proposal with Approve / Reject, then the submitted confirmation](../../images/challenge-03-approve.png) +Your lab already connected **Application Insights** to the project, so **server-side +tracing** is on automatically (no code changes). Foundry portal → your agent → +**Traces** tab → latest `inventory-optimisation-agent` run. You should see: + +- one **model call** (the instructions + the demand assessment as input), +- one or more **`calc_reorder`** tool calls with their arguments, +- the **tool responses** (the exact numbers your code returned), +- the **final generation** assembling the JSON. + +Point to a specific `calc_reorder` response to prove *why* a quantity was suggested — +`suggestedReorderQty = thirtyDayDemand - currentStock`, never invented. ## Common issues | Symptom | Fix | |---------|-----| -| Order written without approval | Ensure `submit_purchase_order` is in `APPROVAL_REQUIRED`. | -| Unit costs all `$20` | `get_product` lookup failed — check the trace; `$20` is the fallback only. | -| `submitItems` empty | Reinforce the JSON shape in the agent instructions. | +| No CRITICAL row | Use a scenario touching outdoor power tools; Portland/Seattle are below safety stock. | +| Output not JSON | Reinforce *"Return ONLY the JSON"*; `_extract_json` handles fences but not prose. | +| No trace | Refresh after a few seconds; ensure the run actually executed. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md index effb0360d..9d25ff9ce 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-04/solution-04.md @@ -1,49 +1,46 @@ -# Solution 04 — Orchestrate the Loop (Stretch) +# Solution 03 — Replenishment + Human-in-the-Loop **[← Back to Challenge 4](../../challenges/challenge-04.md)** · [Home](../../README.md) ## The reference implementation -[`src/workflow.py`](../../src/workflow.py) → `run_planning_workflow(scenario, approve, ...)` -runs the full loop from one entry point: `sense → plan → propose → [human] → approve`. -The `approve` callback **is** the human gate — it receives the proposal and returns -`True` to submit or `False` to cancel. +`REPLENISHMENT` in [`src/agents/__init__.py`](../../src/agents/__init__.py): -## How the console drives it +- **Tools:** `get_product` (unit costs) and `submit_purchase_order` (the only side effect). +- **Instructions:** produce a PO proposal as JSON with `proposal` (per-line cost table + + total) and `submitItems`; **never** submit without approval. -The console exposes the workflow at **`/api/run-loop`** in -[`src/ui/app.py`](../../src/ui/app.py). It calls -`run_planning_workflow(scenario, approve=lambda _p: False, orchestrator=...)` so the -loop runs `sense → plan → propose` in one request and returns all three stages — -**without** submitting. The human still approves at Step 4 via `/api/approve`. +## The gate (the whole point) -```json -// POST /api/run-loop { "scenario": "..." } -> -{ "assessment": "…", "recommendation": { … }, "proposal": { … } } +In [`src/agent_runtime.py`](../../src/agent_runtime.py): + +```python +APPROVAL_REQUIRED = {"submit_purchase_order"} ``` -`WorkflowResult` carries `assessment`, `recommendation`, `proposal`, and -`confirmation` (`None` when the gate returns False — which is exactly what the -endpoint uses, deferring the real decision to the human). +`run()` scans the model's `function_call` items. If the model asks for +`submit_purchase_order`, the runtime **returns a `ToolApprovalRequest` instead of +executing it** (the read-only tools still run normally). The write only happens when a +human calls `orchestrator.approve(...)`, which invokes `submit_purchase_order` +directly. So the acting tool is **structurally blocked** behind the human decision — +not just asked nicely in a prompt. -## The one-click UI button +## In the console -Add a **Run the whole loop** button in -[`src/ui/static/index.html`](../../src/ui/static/index.html) that `POST`s the scenario -to **`/api/run-loop`**, fills Steps 1–3 from the response -(`assessment` / `recommendation` / `proposal`), then **stops** at Step 4 for the -human's Approve/Reject. Do **not** auto-call `/api/approve` — keeping the gate is the -point of the pattern. +Steps 1–2, then **Step 3** shows the proposal and **Step 4 (Approve & act)** offers **Approve & submit** / **Reject**. +- **Reject** → "Order cancelled. No action taken." Order book unchanged. +- **Approve** → `✅ Purchase order PO-… submitted and recorded in the order book.` and + the new order appears in the **Order book** panel. -## Optional: evaluation pass +> The order is a **real write** to the Cosmos `orders` container, so it **persists** +> across server restarts — reload the console and it's still there. -In the portal **Evaluation**, build a 3–5 item dataset (e.g. *"Which store has the -lowest leaf blower stock?"* → *"Portland"*) and score `inventory-optimisation-agent` -on groundedness and relevance. +![Planner console Step 4 — the PO proposal with Approve / Reject, then the submitted confirmation](../../images/challenge-03-approve.png) -## Talking points +## Common issues -- Deterministic sequential workflow vs. a human clicking each step: automation for the - hand-offs, human judgment only at the gate. -- Where the gate belongs once the loop is one prompt (before the acting tool — exactly - where `APPROVAL_REQUIRED` puts it). +| Symptom | Fix | +|---------|-----| +| Order written without approval | Ensure `submit_purchase_order` is in `APPROVAL_REQUIRED`. | +| Unit costs all `$20` | `get_product` lookup failed — check the trace; `$20` is the fallback only. | +| `submitItems` empty | Reinforce the JSON shape in the agent instructions. | diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md index b7731e437..313cbef17 100644 --- a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-05/solution-05.md @@ -1,104 +1,49 @@ -# Solution 05 — The Loop Reacts (Event-Driven, Stretch) +# Solution 04 — Orchestrate the Loop (Stretch) **[← Back to Challenge 5](../../challenges/challenge-05.md)** · [Home](../../README.md) -## The idea +## The reference implementation -The manual console has a human click Sense → Plan → Approve → Act. This challenge makes -the loop **reactive**: an independent write to the Cosmos `signals` container triggers -the agents automatically, and the console shows it live — while the **human-approval -gate is preserved** (automation runs everything *except* the decision). +[`src/workflow.py`](../../src/workflow.py) → `run_planning_workflow(scenario, approve, ...)` +runs the full loop from one entry point: `sense → plan → propose → [human] → approve`. +The `approve` callback **is** the human gate — it receives the proposal and returns +`True` to submit or `False` to cancel. -No new Azure infrastructure: Cosmos' **change feed** is intrinsic, and the watcher runs -inside the existing FastAPI process. +## How the console drives it -## The reactive layer — [`src/live.py`](../../src/live.py) +The console exposes the workflow at **`/api/run-loop`** in +[`src/ui/app.py`](../../src/ui/app.py). It calls +`run_planning_workflow(scenario, approve=lambda _p: False, orchestrator=...)` so the +loop runs `sense → plan → propose` in one request and returns all three stages — +**without** submitting. The human still approves at Step 4 via `/api/approve`. -Three pieces: - -- **`start_watcher(store, orchestrator_factory)`** — a daemon thread that tails the - `signals` change feed with the **pull model**. It primes from `start_time="Now"` - (so the one-time seed never triggers a run), then polls with the continuation token - returned in the `etag` response header. Each new document calls `_auto_run`. -- **`_auto_run(signal, ...)`** — runs `orch.sense → orch.plan → orch.propose` (the same - `HackOrchestrator` the console uses), publishing a `step` event at each stage, then - emits `awaiting_approval` and **stops**. It never calls `approve`. -- **`EventBus`** — a tiny fan-out that pushes JSON events to every connected SSE client. - Because it's called from the watcher thread, it hops back onto the event loop with - `call_soon_threadsafe`. - -## The wiring — [`src/ui/app.py`](../../src/ui/app.py) - -```python -@app.on_event("startup") -async def _start_live_layer(): - bus.bind_loop(asyncio.get_running_loop()) - if config.COSMOS_ENDPOINT: - start_watcher(get_store(), get_orchestrator) # tail the change feed - -@app.post("/api/signal") # writes the signal only — the change feed triggers the loop -@app.get("/api/events") # SSE stream the console subscribes to -``` - -The key design choice: **`/api/signal` never calls an agent.** It only writes to Cosmos. -The change-feed watcher is the *single* trigger path, so the reactive behaviour is -identical no matter who does the insert — the console, an MCP client, or any other -system. That decoupling is the whole point. - -## The console — [`src/ui/static/index.html`](../../src/ui/static/index.html) - -An **Event trigger** panel injects a signal (`POST /api/signal`) and an `EventSource` -on `/api/events` drives Steps 1–3 as the events arrive, then enables **Approve / Reject** -at Step 4. The manual buttons still work — the SSE path reuses the same `renderPlan` / -`renderProposal` helpers. - -## The MCP edge — [`src/mcp_server.py`](../../src/mcp_server.py) - -A one-tool **FastMCP** server: - -```python -@mcp.tool() -def inject_signal(headline, category="outdoor_power_tools", region="Pacific Northwest") -> str: - doc = get_store().append_signal({"headline": headline, "category": category, - "region": region, "type": "market"}) - return f"Injected signal {doc['signalId']} — the planner loop will react automatically." +```json +// POST /api/run-loop { "scenario": "..." } -> +{ "assessment": "…", "recommendation": { … }, "proposal": { … } } ``` -Run it with `uv run python mcp_server.py` (stdio) and point any MCP client at it. Calling -`inject_signal` writes to Cosmos → the console's watcher reacts → the loop runs → it stops -at the gate. An external system, speaking a standard protocol, drove your inventory loop. - -## Interactive planning & the informed gate - -The reactive loop produces a **draft**; the planner refines it in natural language before -approving. Two "refine" endpoints re-run the relevant agent with the current artifact plus -the instruction (see [`src/orchestrator.py`](../../src/orchestrator.py)): - -- `POST /api/plan/refine` → `refine_plan(recommendation, instruction)` re-runs the - **Inventory Optimisation** agent (*"only the CRITICAL SKUs"*, *"halve the leaf blowers"*). -- `POST /api/propose/refine` → `refine_proposal(proposal, instruction)` re-runs the - **Replenishment** agent (*"drop the warehouse line"*, *"cut chainsaws to 40"*), returning - the updated proposal **and** `submitItems`. +`WorkflowResult` carries `assessment`, `recommendation`, `proposal`, and +`confirmation` (`None` when the gate returns False — which is exactly what the +endpoint uses, deferring the real decision to the human). -Both are agentic (not regex): the agent regenerates the artifact honoring the instruction, -and both still only **propose** — the gate is unchanged. Step 4 then renders exactly what -will be written (every PO line + total), so the human approves with full context. +## The one-click UI button -**The signal queue:** the watcher is a producer/consumer pair — the producer tails the -change feed and enqueues; a single consumer drains one signal at a time. A burst shows up -as a visible backlog (`queue` SSE events) in the Sense step and drains as each run completes. +Add a **Run the whole loop** button in +[`src/ui/static/index.html`](../../src/ui/static/index.html) that `POST`s the scenario +to **`/api/run-loop`**, fills Steps 1–3 from the response +(`assessment` / `recommendation` / `proposal`), then **stops** at Step 4 for the +human's Approve/Reject. Do **not** auto-call `/api/approve` — keeping the gate is the +point of the pattern. -## Why this preserves the lesson +## Optional: evaluation pass -The reactivity is new; the **human-in-the-loop** teaching is untouched. `_auto_run` stops -at `propose` and emits `awaiting_approval`; only a person calling `/api/approve` triggers -`submit_purchase_order`. Even a signal injected over MCP reaches the gate and waits. +In the portal **Evaluation**, build a 3–5 item dataset (e.g. *"Which store has the +lowest leaf blower stock?"* → *"Portland"*) and score `inventory-optimisation-agent` +on groundedness and relevance. ## Talking points -- **Event-driven vs. request-driven**: the loop reacts to *data changing*, not to a user - clicking — the same shift that makes real operations scalable. -- **Decoupling**: the producer (UI / MCP / job) knows nothing about the agents; it just - writes a signal. The change feed is the seam. -- **The gate still holds**: automation is safe precisely because the one side effect stays - behind a human — no matter how the loop was triggered. +- Deterministic sequential workflow vs. a human clicking each step: automation for the + hand-offs, human judgment only at the gate. +- Where the gate belongs once the loop is one prompt (before the acting tool — exactly + where `APPROVAL_REQUIRED` puts it). diff --git a/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-06/solution-06.md b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-06/solution-06.md new file mode 100644 index 000000000..a34074144 --- /dev/null +++ b/03-Azure/01-04-AI/03_Inventory_Planning_Agentic/walkthrough/challenge-06/solution-06.md @@ -0,0 +1,104 @@ +# Solution 05 — The Loop Reacts (Event-Driven, Stretch) + +**[← Back to Challenge 6](../../challenges/challenge-06.md)** · [Home](../../README.md) + +## The idea + +The manual console has a human click Sense → Plan → Approve → Act. This challenge makes +the loop **reactive**: an independent write to the Cosmos `signals` container triggers +the agents automatically, and the console shows it live — while the **human-approval +gate is preserved** (automation runs everything *except* the decision). + +No new Azure infrastructure: Cosmos' **change feed** is intrinsic, and the watcher runs +inside the existing FastAPI process. + +## The reactive layer — [`src/live.py`](../../src/live.py) + +Three pieces: + +- **`start_watcher(store, orchestrator_factory)`** — a daemon thread that tails the + `signals` change feed with the **pull model**. It primes from `start_time="Now"` + (so the one-time seed never triggers a run), then polls with the continuation token + returned in the `etag` response header. Each new document calls `_auto_run`. +- **`_auto_run(signal, ...)`** — runs `orch.sense → orch.plan → orch.propose` (the same + `HackOrchestrator` the console uses), publishing a `step` event at each stage, then + emits `awaiting_approval` and **stops**. It never calls `approve`. +- **`EventBus`** — a tiny fan-out that pushes JSON events to every connected SSE client. + Because it's called from the watcher thread, it hops back onto the event loop with + `call_soon_threadsafe`. + +## The wiring — [`src/ui/app.py`](../../src/ui/app.py) + +```python +@app.on_event("startup") +async def _start_live_layer(): + bus.bind_loop(asyncio.get_running_loop()) + if config.COSMOS_ENDPOINT: + start_watcher(get_store(), get_orchestrator) # tail the change feed + +@app.post("/api/signal") # writes the signal only — the change feed triggers the loop +@app.get("/api/events") # SSE stream the console subscribes to +``` + +The key design choice: **`/api/signal` never calls an agent.** It only writes to Cosmos. +The change-feed watcher is the *single* trigger path, so the reactive behaviour is +identical no matter who does the insert — the console, an MCP client, or any other +system. That decoupling is the whole point. + +## The console — [`src/ui/static/index.html`](../../src/ui/static/index.html) + +An **Event trigger** panel injects a signal (`POST /api/signal`) and an `EventSource` +on `/api/events` drives Steps 1–3 as the events arrive, then enables **Approve / Reject** +at Step 4. The manual buttons still work — the SSE path reuses the same `renderPlan` / +`renderProposal` helpers. + +## The MCP edge — [`src/mcp_server.py`](../../src/mcp_server.py) + +A one-tool **FastMCP** server: + +```python +@mcp.tool() +def inject_signal(headline, category="outdoor_power_tools", region="Pacific Northwest") -> str: + doc = get_store().append_signal({"headline": headline, "category": category, + "region": region, "type": "market"}) + return f"Injected signal {doc['signalId']} — the planner loop will react automatically." +``` + +Run it with `uv run python mcp_server.py` (stdio) and point any MCP client at it. Calling +`inject_signal` writes to Cosmos → the console's watcher reacts → the loop runs → it stops +at the gate. An external system, speaking a standard protocol, drove your inventory loop. + +## Interactive planning & the informed gate + +The reactive loop produces a **draft**; the planner refines it in natural language before +approving. Two "refine" endpoints re-run the relevant agent with the current artifact plus +the instruction (see [`src/orchestrator.py`](../../src/orchestrator.py)): + +- `POST /api/plan/refine` → `refine_plan(recommendation, instruction)` re-runs the + **Inventory Optimisation** agent (*"only the CRITICAL SKUs"*, *"halve the leaf blowers"*). +- `POST /api/propose/refine` → `refine_proposal(proposal, instruction)` re-runs the + **Replenishment** agent (*"drop the warehouse line"*, *"cut chainsaws to 40"*), returning + the updated proposal **and** `submitItems`. + +Both are agentic (not regex): the agent regenerates the artifact honoring the instruction, +and both still only **propose** — the gate is unchanged. Step 4 then renders exactly what +will be written (every PO line + total), so the human approves with full context. + +**The signal queue:** the watcher is a producer/consumer pair — the producer tails the +change feed and enqueues; a single consumer drains one signal at a time. A burst shows up +as a visible backlog (`queue` SSE events) in the Sense step and drains as each run completes. + +## Why this preserves the lesson + +The reactivity is new; the **human-in-the-loop** teaching is untouched. `_auto_run` stops +at `propose` and emits `awaiting_approval`; only a person calling `/api/approve` triggers +`submit_purchase_order`. Even a signal injected over MCP reaches the gate and waits. + +## Talking points + +- **Event-driven vs. request-driven**: the loop reacts to *data changing*, not to a user + clicking — the same shift that makes real operations scalable. +- **Decoupling**: the producer (UI / MCP / job) knows nothing about the agents; it just + writes a signal. The change feed is the seam. +- **The gate still holds**: automation is safe precisely because the one side effect stays + behind a human — no matter how the loop was triggered.