diff --git a/.github/scripts/check_python_api_compatibility.py b/.github/scripts/check_python_api_compatibility.py index 2174a4d40de..7f9bcd815ef 100644 --- a/.github/scripts/check_python_api_compatibility.py +++ b/.github/scripts/check_python_api_compatibility.py @@ -1,6 +1,10 @@ # Copyright (c) Microsoft. All rights reserved. -"""Check Python API compatibility against a pull request's base commit.""" +"""Check Python API compatibility against a pull request's base commit. + +Compare public enum member value expressions statically, without importing packages. +Leave other attribute values to Griffe's compatibility policy. +""" from __future__ import annotations @@ -18,8 +22,12 @@ from griffe import ( Alias, AliasResolutionError, + Attribute, AttributeChangedValueBreakage, + Breakage, + Class, ExplanationStyle, + ExprCall, Object, find_breaking_changes, load, @@ -144,6 +152,88 @@ def _unreleased_owner(obj: Object | Alias) -> str | None: return None +def _is_enum(cls: Class, seen: set[str] | None = None) -> bool: + seen = set() if seen is None else seen + if cls.path in seen: + return False + seen.add(cls.path) + if any( + (base if isinstance(base, str) else base.canonical_path) + in { + "enum.Enum", + "enum.IntEnum", + "enum.StrEnum", + "enum.Flag", + "enum.IntFlag", + "enum.ReprEnum", + } + for base in cls.bases + ): + return True + return any( + _is_enum(base, seen) for base in cls.resolved_bases if isinstance(base, Class) + ) + + +def _enum_value_changes( + old: Object | Alias, + new: Object | Alias, + seen: set[tuple[str, str]] | None = None, +) -> Iterator[tuple[Object, AttributeChangedValueBreakage]]: + old_obj, new_obj = _resolved(old), _resolved(new) + if ( + old_obj is None + or new_obj is None + or old_obj.kind != new_obj.kind + or not (old_obj.is_module or old_obj.is_class) + ): + return + seen = set() if seen is None else seen + paths = (old_obj.path, new_obj.path) + if paths in seen: + return + seen.add(paths) + is_enum = isinstance(old_obj, Class) and _is_enum(old_obj) + new_members = new_obj.all_members + for name, old_member in old_obj.all_members.items(): + if not old_member.is_public or name not in new_members: + continue + new_member = new_members[name] + old_attribute, new_attribute = _resolved(old_member), _resolved(new_member) + if ( + is_enum + and isinstance(old_attribute, Attribute) + and isinstance(new_attribute, Attribute) + and "class-attribute" in old_attribute.labels + and old_attribute.value is not None + and not ( + isinstance(old_attribute.value, ExprCall) + and old_attribute.value.function.canonical_path == "enum.nonmember" + ) + and str(old_attribute.value) != str(new_attribute.value) + ): + yield ( + old_attribute, + AttributeChangedValueBreakage( + new_attribute, old_attribute.value, new_attribute.value + ), + ) + yield from _enum_value_changes(old_member, new_member, seen) + + +def _published_breaking_changes(old: Object, new: Object) -> Iterator[Breakage]: + for breakage in find_breaking_changes(old, new): + try: + old_breakage_obj = old.modules_collection.get_member(breakage.obj.path) + except KeyError: + old_breakage_obj = breakage.obj + if _unreleased_owner(old_breakage_obj) is None: + yield breakage + for old_member, breakage in _enum_value_changes(old, new): + if _unreleased_owner(old_member) is None: + yield breakage + + def _write_summary( *, checked: int, @@ -230,27 +320,11 @@ def main() -> int: print("::endgroup::") continue - for breakage in find_breaking_changes(old_package, new_package): - if ( - isinstance(breakage, AttributeChangedValueBreakage) - and "instance-attribute" in breakage.obj.labels - and "class-attribute" not in breakage.obj.labels - ): - continue - - try: - old_breakage_obj = old_package.modules_collection.get_member( - breakage.obj.path - ) - except KeyError: - old_breakage_obj = breakage.obj - unreleased_owner = _unreleased_owner(old_breakage_obj) - - if unreleased_owner is None: - breakage_count += 1 - explanation = breakage.explain(style=ExplanationStyle.GITHUB) - source_prefix = f"file={current_source.as_posix()}/" - print(explanation.replace(source_prefix, "file=", 1)) + for breakage in _published_breaking_changes(old_package, new_package): + breakage_count += 1 + explanation = breakage.explain(style=ExplanationStyle.GITHUB) + source_prefix = f"file={current_source.as_posix()}/" + print(explanation.replace(source_prefix, "file=", 1)) print("::endgroup::") diff --git a/.github/tests/test_python_api_compatibility.py b/.github/tests/test_python_api_compatibility.py index 516ee7b436a..02189738b36 100644 --- a/.github/tests/test_python_api_compatibility.py +++ b/.github/tests/test_python_api_compatibility.py @@ -287,51 +287,192 @@ def test_external_current_source_reports_repository_relative_path(self) -> None: ) self.assertNotIn(str(current_source), warning) - def test_ignores_instance_values_but_reports_other_attribute_values(self) -> None: + def test_attribute_value_changes_are_not_breaking(self) -> None: self.write_status([("agent-framework-stable", "stable", "released")]) self.write_module( "stable", "stable_api", { "__init__.py": ( - "from enum import Enum\n\n" 'PUBLIC_VALUE = "old"\n\n' "class PublicClass:\n" " class_value: int = 1\n\n" " instance_value: str\n\n" " def __init__(self):\n" - ' self.instance_value = "old"\n\n' - "class PublicEnum(Enum):\n" - " MEMBER = 1\n" + ' self.instance_value = "old"\n' ) }, ) base_sha = self.commit() (self.repo / "python/packages/stable/stable_api/__init__.py").write_text( - "from enum import Enum\n\n" 'PUBLIC_VALUE = "new"\n\n' "class PublicClass:\n" " class_value: int = 2\n\n" " instance_value: str\n\n" " def __init__(self):\n" - ' self.instance_value = "new"\n\n' - "class PublicEnum(Enum):\n" - " MEMBER = 2\n" + ' self.instance_value = "new"\n' ) result = self.run_checker(base_sha) - self.assertEqual(result.returncode, 1) + self.assertEqual(result.returncode, 0) warnings = [ line for line in result.stdout.splitlines() if line.startswith("::warning ") ] - self.assertEqual(len(warnings), 3) - self.assertTrue(any("PUBLIC_VALUE" in warning for warning in warnings)) - self.assertTrue( - any("PublicClass.class_value" in warning for warning in warnings) + self.assertEqual(warnings, []) + self.assertIn( + "- Published API breakages: 0", (self.repo / "summary.md").read_text() + ) + + def test_public_enum_value_changes_are_breaking_and_acknowledgeable(self) -> None: + self.write_status([("agent-framework-stable", "stable", "released")]) + for enum_base in ("Enum", "IntEnum", "StrEnum", "Flag", "IntFlag"): + with self.subTest(enum_base=enum_base): + old_value, new_value = ( + ('"old"', '"new"') if enum_base == "StrEnum" else ("1", "2") + ) + source = ( + f"from enum import {enum_base}\n\n" + f"class PublicEnum({enum_base}):\n" + f" MEMBER = {old_value}\n" + ) + module_path = self.write_module( + "stable", "stable_api", {"__init__.py": source} + ) + base_sha = self.commit() + (module_path / "__init__.py").write_text( + source.replace(f"MEMBER = {old_value}", f"MEMBER = {new_value}") + ) + + result = self.run_checker(base_sha) + acknowledged_result = self.run_checker(base_sha, acknowledged=True) + + self.assertEqual(result.returncode, 1, result.stdout + result.stderr) + warnings = [ + line + for line in result.stdout.splitlines() + if line.startswith("::warning ") + ] + self.assertEqual(len(warnings), 1, result.stdout) + self.assertIn("PublicEnum.MEMBER", warnings[0]) + self.assertIn("file=python/packages/stable/stable_api/", warnings[0]) + self.assertIn( + "- Published API breakages: 1", + (self.repo / "summary.md").read_text(), + ) + self.assertEqual( + acknowledged_result.returncode, + 0, + acknowledged_result.stdout + acknowledged_result.stderr, + ) + + def test_reexported_indirect_enum_changes_are_reported_once(self) -> None: + self.write_status([("agent-framework-stable", "stable", "released")]) + source = ( + "import enum\n\n" + "class Base(str, enum.Enum): pass\n\n" + "class PublicEnum(Base):\n" + ' MEMBER = "old"\n\n' + "class HiddenEnum(enum.Enum):\n" + " MEMBER = 1\n" + ) + module_path = self.write_module( + "stable", + "stable_api", + { + "__init__.py": ( + "from ._api import PublicEnum, PublicEnum as OtherName\n" + '__all__ = ["PublicEnum", "OtherName"]\n' + ), + "_api.py": source, + }, + ) + base_sha = self.commit() + (module_path / "_api.py").write_text( + source.replace('"old"', '"new"').replace("MEMBER = 1", "MEMBER = 2") + ) + + result = self.run_checker(base_sha) + + self.assertEqual(result.returncode, 1, result.stdout + result.stderr) + warnings = [ + line for line in result.stdout.splitlines() if line.startswith("::warning ") + ] + self.assertEqual(len(warnings), 1, result.stdout) + self.assertIn("PublicEnum.MEMBER", warnings[0]) + + def test_enum_additions_and_non_member_attributes_are_not_breaking(self) -> None: + self.write_status([("agent-framework-stable", "stable", "released")]) + source = ( + "from enum import Enum, nonmember\n\n" + "class PublicEnum(Enum):\n" + " MEMBER = 1\n" + ' metadata = nonmember("old")\n' + " def __init__(self, value):\n" + ' self.description = "old"\n' + ) + module_path = self.write_module("stable", "stable_api", {"__init__.py": source}) + base_sha = self.commit() + (module_path / "__init__.py").write_text( + source.replace('"old"', '"new"').replace( + "MEMBER = 1", "MEMBER = 1\n ADDED = 2" + ) + ) + + result = self.run_checker(base_sha) + + self.assertEqual(result.returncode, 0, result.stdout + result.stderr) + self.assertNotIn("::warning ", result.stdout) + + def test_enum_changes_use_base_feature_stage_even_after_relocation(self) -> None: + self.write_status([("agent-framework-core", "core", "released")]) + source = ( + "from enum import Enum\n" + "from ._feature_stage import experimental, release_candidate\n\n" + '@experimental(feature_id="TEST")\n' + "class ExperimentalEnum(Enum):\n" + " MEMBER = 1\n\n" + '@release_candidate(feature_id="TEST")\n' + "class ReleaseCandidateEnum(Enum):\n" + " MEMBER = 1\n\n" + "class StableEnum(Enum):\n" + " MEMBER = 1\n" ) - self.assertTrue(any("PublicEnum.MEMBER" in warning for warning in warnings)) - self.assertFalse(any("instance_value" in warning for warning in warnings)) + exports = ( + "from ._api import ExperimentalEnum, ReleaseCandidateEnum, StableEnum\n" + '__all__ = ["ExperimentalEnum", "ReleaseCandidateEnum", "StableEnum"]\n' + ) + module_path = self.write_module( + "core", + "agent_framework", + { + "__init__.py": exports, + "_api.py": source, + "_feature_stage.py": ( + "def experimental(*, feature_id):\n" + " return lambda obj: obj\n\n" + "def release_candidate(*, feature_id):\n" + " return lambda obj: obj\n" + ), + }, + ) + base_sha = self.commit() + (module_path / "_api.py").unlink() + (module_path / "_new_api.py").write_text( + source.replace("MEMBER = 1", "MEMBER = 2").replace( + "class StableEnum", '@experimental(feature_id="TEST")\nclass StableEnum' + ) + ) + (module_path / "__init__.py").write_text(exports.replace("._api", "._new_api")) + + result = self.run_checker(base_sha) + + self.assertEqual(result.returncode, 1, result.stdout + result.stderr) + warnings = [ + line for line in result.stdout.splitlines() if line.startswith("::warning ") + ] + self.assertEqual(len(warnings), 1, result.stdout) + self.assertIn("StableEnum.MEMBER", warnings[0]) if __name__ == "__main__": diff --git a/python/.github/release-python-1.24.0.json b/python/.github/release-python-1.24.0.json new file mode 100644 index 00000000000..1841b4e77c3 --- /dev/null +++ b/python/.github/release-python-1.24.0.json @@ -0,0 +1,179 @@ +{ + "tag": "python-1.24.0", + "packages": { + "agent-framework": "1.24.0", + "agent-framework-a2a": "1.0.0b261030", + "agent-framework-ag-ui": "1.7.1", + "agent-framework-anthropic": "1.0.0b261030", + "agent-framework-azure-ai-search": "1.0.0b261030", + "agent-framework-azure-contentunderstanding": "1.0.0b261030", + "agent-framework-azure-cosmos": "1.0.0b261030", + "agent-framework-azure-documentdb": "1.0.0a261030", + "agent-framework-bedrock": "1.0.0b261030", + "agent-framework-chatkit": "1.0.0b261030", + "agent-framework-claude": "1.0.0b261030", + "agent-framework-copilotstudio": "1.0.0b261030", + "agent-framework-core": "1.24.0", + "agent-framework-declarative": "1.4.1", + "agent-framework-devui": "1.0.0b261030", + "agent-framework-duckdb": "1.0.0a261030", + "agent-framework-foundry": "1.16.0", + "agent-framework-foundry-hosting": "1.0.0b261030", + "agent-framework-foundry-local": "1.0.0b261030", + "agent-framework-gemini": "1.0.0b261030", + "agent-framework-github-copilot": "2.1.1", + "agent-framework-hosting": "1.0.0a261030", + "agent-framework-hosting-a2a": "1.0.0a261030", + "agent-framework-hosting-mcp": "1.0.0a261030", + "agent-framework-hosting-responses": "1.0.0a261030", + "agent-framework-hosting-telegram": "1.0.0a261030", + "agent-framework-hyperlight": "1.0.0b261030", + "agent-framework-mem0": "1.0.0b261030", + "agent-framework-mistral": "1.0.0b261030", + "agent-framework-mongodb": "1.0.0a261030", + "agent-framework-monty": "1.0.0b261030", + "agent-framework-nvidia": "1.0.0a261030", + "agent-framework-ollama": "1.0.0b261030", + "agent-framework-openai": "1.18.0", + "agent-framework-oracle": "1.0.0a261030", + "agent-framework-orchestrations": "1.4.1", + "agent-framework-postgres": "1.0.0a261030", + "agent-framework-purview": "1.0.0b261030", + "agent-framework-qdrant": "1.0.0a261030", + "agent-framework-redis": "1.0.0b261030", + "agent-framework-sql-server": "1.0.0a261030", + "agent-framework-tools": "1.0.0b261030", + "agent-framework-typesafe": "1.0.0a261030" + }, + "smoke_imports": { + "agent-framework": [ + "agent_framework:Agent" + ], + "agent-framework-a2a": [ + "agent_framework.a2a:A2AAgent" + ], + "agent-framework-ag-ui": [ + "agent_framework.ag_ui:AgentFrameworkAgent" + ], + "agent-framework-anthropic": [ + "agent_framework.anthropic:AnthropicClient" + ], + "agent-framework-azure-ai-search": [ + "agent_framework.azure:AzureAISearchStore" + ], + "agent-framework-azure-contentunderstanding": [ + "agent_framework.foundry:ContentUnderstandingContextProvider" + ], + "agent-framework-azure-cosmos": [ + "agent_framework.azure:CosmosStore" + ], + "agent-framework-azure-documentdb": [ + "agent_framework_azure_documentdb:AzureDocumentDBStore" + ], + "agent-framework-bedrock": [ + "agent_framework.amazon:BedrockChatClient" + ], + "agent-framework-chatkit": [ + "agent_framework.chatkit:stream_agent_response" + ], + "agent-framework-claude": [ + "agent_framework.anthropic:ClaudeAgent" + ], + "agent-framework-copilotstudio": [ + "agent_framework.microsoft:CopilotStudioAgent" + ], + "agent-framework-core": [ + "agent_framework:Message" + ], + "agent-framework-declarative": [ + "agent_framework.declarative:AgentFactory" + ], + "agent-framework-devui": [ + "agent_framework.devui:serve" + ], + "agent-framework-duckdb": [ + "agent_framework_duckdb:DuckDBStore" + ], + "agent-framework-foundry": [ + "agent_framework.foundry:FoundryAgent" + ], + "agent-framework-foundry-hosting": [ + "agent_framework.foundry:FoundryAgentSessionStore" + ], + "agent-framework-foundry-local": [ + "agent_framework.foundry:FoundryLocalClient" + ], + "agent-framework-gemini": [ + "agent_framework.gemini:GeminiEmbeddingClient" + ], + "agent-framework-github-copilot": [ + "agent_framework.github:GitHubCopilotAgent" + ], + "agent-framework-hosting": [ + "agent_framework_hosting:AgentState" + ], + "agent-framework-hosting-a2a": [ + "agent_framework_hosting_a2a:AgentA2AAdapter" + ], + "agent-framework-hosting-mcp": [ + "agent_framework_hosting_mcp:AgentMCPTool" + ], + "agent-framework-hosting-responses": [ + "agent_framework_hosting_responses:responses_from_run" + ], + "agent-framework-hosting-telegram": [ + "agent_framework_hosting_telegram:telegram_to_run" + ], + "agent-framework-hyperlight": [ + "agent_framework.hyperlight:HyperlightCodeActProvider" + ], + "agent-framework-mem0": [ + "agent_framework.mem0:Mem0ContextProvider" + ], + "agent-framework-mistral": [ + "agent_framework.mistral:MistralChatClient" + ], + "agent-framework-mongodb": [ + "agent_framework_mongodb:MongoDBStore" + ], + "agent-framework-monty": [ + "agent_framework.monty:MontyCodeActProvider" + ], + "agent-framework-nvidia": [ + "agent_framework_nvidia:NvidiaEmbeddingClient" + ], + "agent-framework-ollama": [ + "agent_framework.ollama:OllamaChatClient" + ], + "agent-framework-openai": [ + "agent_framework.openai:OpenAIChatClient" + ], + "agent-framework-oracle": [ + "agent_framework_oracle:OracleStore" + ], + "agent-framework-orchestrations": [ + "agent_framework.orchestrations:SequentialBuilder" + ], + "agent-framework-postgres": [ + "agent_framework_postgres:PostgresStore" + ], + "agent-framework-purview": [ + "agent_framework.microsoft:PurviewPolicyMiddleware" + ], + "agent-framework-qdrant": [ + "agent_framework_qdrant:QdrantStore" + ], + "agent-framework-redis": [ + "agent_framework.redis:RedisStore" + ], + "agent-framework-sql-server": [ + "agent_framework_sql_server:SqlServerStore" + ], + "agent-framework-tools": [ + "agent_framework.tools:LocalShellTool" + ], + "agent-framework-typesafe": [ + "agent_framework_typesafe:TypeSafeChatClient" + ] + } +} diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md index 3cd530199fc..c5211d5639b 100644 --- a/python/CHANGELOG.md +++ b/python/CHANGELOG.md @@ -7,6 +7,66 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.24.0] - 2026-10-30 + +> [!WARNING] +> **Redis context index migration:** The beta `RedisContextProvider` now preserves exact scope identity and rejects the legacy raw-scope index schema. Delete the old context index and its context hashes, let the provider create a new index, and re-ingest the context data. `overwrite_index=True` does not migrate incompatible indexes. + +> [!IMPORTANT] +> **Python support:** Python 3.11 or later is now the supported baseline, subject to package-specific upper limits. Python 3.10 installation remains permitted by `Requires-Python` in this release, but compatibility is not guaranteed. The next release will also remove Python 3.10 installation eligibility from `Requires-Python`. Upgrade to Python 3.11 or later as soon as possible. + +### Added +- **agent-framework-core**: Add an explicit default approval mode for local MCP tools and prompts outside the per-tool approval lists, and warn when `never_require_approval` leaves the default implicit while preserving the existing fallback ([#9828](https://github.com/microsoft/agent-framework/pull/9828)) +- **agent-framework-core**: Add the shared `microsoft.agent-framework` telemetry resource attribute across logs, traces, and metrics while preserving explicit resource overrides ([#9589](https://github.com/microsoft/agent-framework/pull/9589)) +- **agent-framework-core**: Add experimental agent-triggered in-run compaction and skill unloading with `AgentTriggeredCompactionStrategy` and `UnloadSkillsCompactionStrategy` ([#9384](https://github.com/microsoft/agent-framework/pull/9384)) +- **agent-framework-core**: Support async conditions in switch-case workflow edge groups ([#9669](https://github.com/microsoft/agent-framework/pull/9669)) +- **agent-framework-core**: Load Agent Hooks middleware from a host declaration and support tool-name prefixes on `FileAccessProvider` ([#9405](https://github.com/microsoft/agent-framework/pull/9405), [#9654](https://github.com/microsoft/agent-framework/pull/9654)) +- **agent-framework-core**, **agent-framework-anthropic**, **agent-framework-bedrock**, **agent-framework-foundry**, **agent-framework-foundry-local**, **agent-framework-gemini**, **agent-framework-mistral**, **agent-framework-ollama**, **agent-framework-openai**: Add optional async chat-client contexts and ownership-aware connection cleanup without closing caller-supplied resources ([#9748](https://github.com/microsoft/agent-framework/pull/9748)) +- **agent-framework-foundry**: Add a timeout parameter to `FoundryChatClient` ([#9699](https://github.com/microsoft/agent-framework/pull/9699)) +- **agent-framework-nvidia**, **agent-framework-openai**: Add an alpha NVIDIA NIM embedding client and the OpenAI-compatible embedding request-options extension point it requires ([#8920](https://github.com/microsoft/agent-framework/pull/8920)) + +### Changed +- **agent-framework-oracle**: Require python-oracledb 3.0 or later so the supported dependency floor passes strict pool API type checking. +- **tests**: Declare package-local test dependencies for isolated dependency-bound checks, match NVIDIA test transports to the OpenAI SDK's HTTPX version, preserve meaningful assertions across supported Pydantic and Foundry SDK versions, and exclude virtual environments from feature-registry source discovery. +- **agent-framework-claude**: Require Claude Agent SDK 0.2.140 or later for custom-tool servers compatible with MCP 2. +- **agent-framework-azure-documentdb**, **agent-framework-mongodb**: Require PyMongo 4.15 or later for complete asynchronous bulk-write type annotations at the supported dependency floor. +- **agent-framework-redis**: [BREAKING] Preserve case-sensitive, punctuation-safe context scope identity with dedicated scope tokens, enforce configured scope on writes and searches, and reject incompatible legacy indexes ([#9461](https://github.com/microsoft/agent-framework/pull/9461)) +- **agent-framework**, **agent-framework-a2a**, **agent-framework-ag-ui**, **agent-framework-anthropic**, **agent-framework-azure-ai-search**, **agent-framework-azure-contentunderstanding**, **agent-framework-azure-cosmos**, **agent-framework-azure-documentdb**, **agent-framework-bedrock**, **agent-framework-chatkit**, **agent-framework-claude**, **agent-framework-copilotstudio**, **agent-framework-core**, **agent-framework-declarative**, **agent-framework-devui**, **agent-framework-duckdb**, **agent-framework-foundry**, **agent-framework-foundry-hosting**, **agent-framework-foundry-local**, **agent-framework-gemini**, **agent-framework-hosting**, **agent-framework-hosting-a2a**, **agent-framework-hosting-mcp**, **agent-framework-hosting-responses**, **agent-framework-hosting-telegram**, **agent-framework-hyperlight**, **agent-framework-mem0**, **agent-framework-mistral**, **agent-framework-mongodb**, **agent-framework-monty**, **agent-framework-nvidia**, **agent-framework-ollama**, **agent-framework-openai**, **agent-framework-oracle**, **agent-framework-orchestrations**, **agent-framework-postgres**, **agent-framework-purview**, **agent-framework-qdrant**, **agent-framework-redis**, **agent-framework-sql-server**, **agent-framework-tools**, **agent-framework-typesafe**: Stop advertising Python 3.10 support while retaining installation compatibility metadata, and document Python 3.11 as the supported baseline ([#9824](https://github.com/microsoft/agent-framework/pull/9824)) +- **agent-framework-monty**: Bound captured file counts and per-file and total byte sizes, and report omitted output explicitly ([#9802](https://github.com/microsoft/agent-framework/pull/9802)) +- **agent-framework-tools**: Apply shell output limits to standard error as well as standard output ([#9795](https://github.com/microsoft/agent-framework/pull/9795)) +- **agent-framework-devui**: Improve generated file display and URL handling ([#9792](https://github.com/microsoft/agent-framework/pull/9792)) +- **agent-framework-devui**: Update Zustand to 5.0.16 and ESLint to 10.13.0, pin TypeScript to the compatible 5.9.3 version, and rebuild the bundled UI ([#9833](https://github.com/microsoft/agent-framework/pull/9833), [#9835](https://github.com/microsoft/agent-framework/pull/9835)) +- **agent-framework-nvidia**: Allow Flit Core 4.x as a build backend ([#9839](https://github.com/microsoft/agent-framework/pull/9839)) +- **tests**, **samples**: Update Pyrefly to 1.4.0 with explicit provider option types, upgrade Griffe to 2.4.1 so attribute-value changes no longer produce API compatibility false positives, and refresh the standalone Lab lockfile to LiteLLM 1.106.2 ([#9838](https://github.com/microsoft/agent-framework/pull/9838), [#9840](https://github.com/microsoft/agent-framework/pull/9840), [#9842](https://github.com/microsoft/agent-framework/pull/9842), [#9834](https://github.com/microsoft/agent-framework/pull/9834), [#9837](https://github.com/microsoft/agent-framework/pull/9837)) +- **agent-framework-azure-contentunderstanding**: Align the Azure Content Understanding SDK dependency floor ([#9695](https://github.com/microsoft/agent-framework/pull/9695)) +- **agent-framework**, **agent-framework-core**: Advance the exact Core pin and standard-install dependency cohort to the versions in this release. +- **agent-framework-anthropic**, **agent-framework-azure-cosmos**, **agent-framework-bedrock**, **agent-framework-foundry**, **agent-framework-foundry-hosting**, **agent-framework-foundry-local**, **agent-framework-gemini**, **agent-framework-mistral**, **agent-framework-ollama**, **agent-framework-openai**: Require Core 1.24 for inherited chat-client lifecycle methods, citation helpers, or checkpoint encoding; retain other Core floors under the strict API-usage policy. +- **agent-framework-foundry**, **agent-framework-foundry-local**, **agent-framework-nvidia**: Require OpenAI 1.18 for owned-client cleanup or the new embedding request-options hook. +- **agent-framework-hosting-a2a**, **agent-framework-hosting-mcp**, **agent-framework-hosting-responses**, **agent-framework-hosting-telegram**: Keep the exact shared hosting dependency pin aligned with its co-released version. +- **docs**, **samples**: Refresh chat-client selectors and lifecycle guidance, compaction, harness file-memory configuration, skills environment setup, Foundry Toolbox tool search, Foundry memory settings, Redis context usage, ChatKit startup and weather widgets, migration examples, and sample run commands; add OpenViking, Membase, BotsRated, and ACGS community entries ([#9673](https://github.com/microsoft/agent-framework/pull/9673), [#9748](https://github.com/microsoft/agent-framework/pull/9748), [#9384](https://github.com/microsoft/agent-framework/pull/9384), [#9670](https://github.com/microsoft/agent-framework/pull/9670), [#9700](https://github.com/microsoft/agent-framework/pull/9700), [#9113](https://github.com/microsoft/agent-framework/pull/9113), [#9741](https://github.com/microsoft/agent-framework/pull/9741), [#9446](https://github.com/microsoft/agent-framework/pull/9446), [#9579](https://github.com/microsoft/agent-framework/pull/9579), [#9599](https://github.com/microsoft/agent-framework/pull/9599), [#9580](https://github.com/microsoft/agent-framework/pull/9580), [#9641](https://github.com/microsoft/agent-framework/pull/9641), [#9683](https://github.com/microsoft/agent-framework/pull/9683), [#9660](https://github.com/microsoft/agent-framework/pull/9660), [#9618](https://github.com/microsoft/agent-framework/pull/9618)) +- **docs**, **tests**: Refresh development setup, coding standards, sample guidance, and tooling helpers; validate dependency bounds for version bumps and new packages; prepare reviewed release manifests for the protected Azure DevOps publisher ([#9733](https://github.com/microsoft/agent-framework/pull/9733), [#9637](https://github.com/microsoft/agent-framework/pull/9637), [#9706](https://github.com/microsoft/agent-framework/pull/9706), [#9668](https://github.com/microsoft/agent-framework/pull/9668), [#9801](https://github.com/microsoft/agent-framework/pull/9801), [#9821](https://github.com/microsoft/agent-framework/pull/9821)) + +### Fixed +- **agent-framework-core**: Use the MCP transport's HTTPX 2 dependency to preserve HTTP span server attributes without requiring legacy HTTPX. +- **agent-framework-foundry-hosting**: Declare the retry dependency required by Foundry Toolbox MCP subscription recovery. +- **agent-framework-core**: Compare in-memory vector filters in the field's declared type, restoring native date, time, duration, Decimal, and UUID values and rejecting incompatible filter operands ([#9574](https://github.com/microsoft/agent-framework/pull/9574)) +- **agent-framework-core**: Reject metaclasses during restricted checkpoint reconstruction, including aliases and explicit allowlist entries, while preserving ordinary application-type round trips ([#9825](https://github.com/microsoft/agent-framework/pull/9825)) +- **agent-framework-core**: Preserve streamed workflow-agent usage, filter non-assistant workflow responses, finish in-flight checkpoint saves after sibling failures, resolve checkpoint timestamp ties through lineage, reject oversized MessagePack history records before writing, prevent in-memory file/directory collisions, and scope FIDES quarantine clients to their owning configuration ([#9720](https://github.com/microsoft/agent-framework/pull/9720), [#8729](https://github.com/microsoft/agent-framework/pull/8729), [#9644](https://github.com/microsoft/agent-framework/pull/9644), [#9261](https://github.com/microsoft/agent-framework/pull/9261), [#9260](https://github.com/microsoft/agent-framework/pull/9260), [#9608](https://github.com/microsoft/agent-framework/pull/9608), [#9445](https://github.com/microsoft/agent-framework/pull/9445)) +- **agent-framework-core**: Allow optional MCP task tools through plain calls, reject non-positive MCP request timeouts, and define the workflow edge type alias at module scope ([#9746](https://github.com/microsoft/agent-framework/pull/9746), [#9314](https://github.com/microsoft/agent-framework/pull/9314), [#9614](https://github.com/microsoft/agent-framework/pull/9614)) +- **agent-framework-ag-ui**, **agent-framework-anthropic**, **agent-framework-core**, **agent-framework-foundry-hosting**, **agent-framework-openai**: Preserve citations and distinguish source coordinates from generated-content offsets across providers, replay, and protocol adapters ([#9436](https://github.com/microsoft/agent-framework/pull/9436)) +- **agent-framework-anthropic**: Preserve server-tool continuation and replay, and honor `allow_multiple_tool_calls` when tool choice is unset ([#9718](https://github.com/microsoft/agent-framework/pull/9718), [#8980](https://github.com/microsoft/agent-framework/pull/8980)) +- **agent-framework-azure-cosmos**: Refuse checkpoints that cannot be restored under the configured type allowlist, and resolve latest-checkpoint timestamp ties through lineage ([#8875](https://github.com/microsoft/agent-framework/pull/8875), [#9261](https://github.com/microsoft/agent-framework/pull/9261)) +- **agent-framework-claude**: Send declared tool JSON schemas to Claude ([#9302](https://github.com/microsoft/agent-framework/pull/9302)) +- **agent-framework-declarative**: Honor registered function approval requirements even when an action omits or disables approval ([#9606](https://github.com/microsoft/agent-framework/pull/9606)) +- **agent-framework-devui**: Return client errors for unsupported conversation items ([#9507](https://github.com/microsoft/agent-framework/pull/9507)) +- **agent-framework-foundry**, **agent-framework-openai**: Merge both hosted MCP approval lists and wrap undecodable base64 embedding responses in a framework error ([#9499](https://github.com/microsoft/agent-framework/pull/9499), [#9705](https://github.com/microsoft/agent-framework/pull/9705)) +- **agent-framework-foundry-hosting**: Preserve generated image data, resolve checkpoint timestamp ties, and filter non-assistant workflow output ([#9351](https://github.com/microsoft/agent-framework/pull/9351), [#9261](https://github.com/microsoft/agent-framework/pull/9261), [#8729](https://github.com/microsoft/agent-framework/pull/8729)) +- **agent-framework-gemini**: Report the requested model on non-streaming responses ([#9736](https://github.com/microsoft/agent-framework/pull/9736)) +- **agent-framework-github-copilot**: Compose session hooks without dropping configured behavior ([#9649](https://github.com/microsoft/agent-framework/pull/9649)) +- **agent-framework-openai**: Preserve streamed Responses message identity and SSE error metadata, capture completed code-interpreter outputs, and reject misaligned base64 embedding payloads with descriptive errors ([#9768](https://github.com/microsoft/agent-framework/pull/9768), [#9616](https://github.com/microsoft/agent-framework/pull/9616), [#9744](https://github.com/microsoft/agent-framework/pull/9744), [#9512](https://github.com/microsoft/agent-framework/pull/9512)) +- **agent-framework-orchestrations**: Coerce Magentic round limits below one to one and correct HandoffBuilder output-selection documentation ([#9502](https://github.com/microsoft/agent-framework/pull/9502), [#9717](https://github.com/microsoft/agent-framework/pull/9717)) +- **docs**: Correct the Ollama embedding truncate default and make response-to-updates examples self-contained ([#9672](https://github.com/microsoft/agent-framework/pull/9672), [#9437](https://github.com/microsoft/agent-framework/pull/9437)) + ## [1.23.0] - 2026-10-22 ### Added @@ -1886,7 +1946,8 @@ Release candidate for **agent-framework-core** and **agent-framework-azure-ai** For more information, see the [announcement blog post](https://devblogs.microsoft.com/foundry/introducing-microsoft-agent-framework-the-open-source-engine-for-agentic-ai-apps/). -[Unreleased]: https://github.com/microsoft/agent-framework/compare/python-1.23.0...HEAD +[Unreleased]: https://github.com/microsoft/agent-framework/compare/python-1.24.0...HEAD +[1.24.0]: https://github.com/microsoft/agent-framework/compare/python-1.23.0...python-1.24.0 [1.23.0]: https://github.com/microsoft/agent-framework/compare/python-1.22.0...python-1.23.0 [1.22.0]: https://github.com/microsoft/agent-framework/compare/python-1.21.0...python-1.22.0 [1.21.0]: https://github.com/microsoft/agent-framework/compare/python-1.20.0...python-1.21.0 diff --git a/python/packages/a2a/pyproject.toml b/python/packages/a2a/pyproject.toml index 0c6f36a0b01..1c20a45564e 100644 --- a/python/packages/a2a/pyproject.toml +++ b/python/packages/a2a/pyproject.toml @@ -4,7 +4,7 @@ description = "A2A integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/ag-ui/pyproject.toml b/python/packages/ag-ui/pyproject.toml index bf2d7608581..66a5ff64ee7 100644 --- a/python/packages/ag-ui/pyproject.toml +++ b/python/packages/ag-ui/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "agent-framework-ag-ui" -version = "1.7.0" +version = "1.7.1" description = "AG-UI protocol integration for Agent Framework" readme = "README.md" license-files = ["LICENSE"] diff --git a/python/packages/anthropic/pyproject.toml b/python/packages/anthropic/pyproject.toml index 428994de2a2..0a3cc9f5b1b 100644 --- a/python/packages/anthropic/pyproject.toml +++ b/python/packages/anthropic/pyproject.toml @@ -4,7 +4,7 @@ description = "Anthropic integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.24.0,<2", "anthropic>=1.11.0,<2", ] diff --git a/python/packages/azure-ai-search/pyproject.toml b/python/packages/azure-ai-search/pyproject.toml index 7b488ea32d4..973b8332d85 100644 --- a/python/packages/azure-ai-search/pyproject.toml +++ b/python/packages/azure-ai-search/pyproject.toml @@ -4,7 +4,7 @@ description = "Azure AI Search integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/azure-contentunderstanding/pyproject.toml b/python/packages/azure-contentunderstanding/pyproject.toml index 3220355fe1d..6aae6dcfcaa 100644 --- a/python/packages/azure-contentunderstanding/pyproject.toml +++ b/python/packages/azure-contentunderstanding/pyproject.toml @@ -4,7 +4,7 @@ description = "Azure Content Understanding integration for Microsoft Agent Frame authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/azure-cosmos/pyproject.toml b/python/packages/azure-cosmos/pyproject.toml index e82f699ef04..83306a2a262 100644 --- a/python/packages/azure-cosmos/pyproject.toml +++ b/python/packages/azure-cosmos/pyproject.toml @@ -4,7 +4,7 @@ description = "Azure Cosmos DB for NoSQL integrations for Microsoft Agent Framew authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.19.0,<2", + "agent-framework-core>=1.24.0,<2", "azure-cosmos>=4.7.0,<5", "six>=1.17.0,<2", ] diff --git a/python/packages/azure-documentdb/README.md b/python/packages/azure-documentdb/README.md index e568ac41cca..a707ada9617 100644 --- a/python/packages/azure-documentdb/README.md +++ b/python/packages/azure-documentdb/README.md @@ -20,7 +20,7 @@ pip install agent-framework-azure-documentdb --pre Supports Python 3.11–3.15. Python 3.10 installation remains permitted, but compatibility is not guaranteed. -Requires PyMongo 4.13+ and an Azure DocumentDB cluster. IVF +Requires PyMongo 4.15+ and an Azure DocumentDB cluster. IVF indexes are intended for smaller datasets and M10/M20 tiers. HNSW and DiskANN require M30 or higher; consult the current service documentation before choosing a production tier. diff --git a/python/packages/azure-documentdb/pyproject.toml b/python/packages/azure-documentdb/pyproject.toml index 5d567876d53..1aed417d204 100644 --- a/python/packages/azure-documentdb/pyproject.toml +++ b/python/packages/azure-documentdb/pyproject.toml @@ -4,7 +4,7 @@ description = "Azure DocumentDB vector stores for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.19.0,<2", - "pymongo>=4.13,<5", + "pymongo>=4.15,<5", ] [tool.pytest.ini_options] diff --git a/python/packages/bedrock/pyproject.toml b/python/packages/bedrock/pyproject.toml index 07d628ab034..c35efd28f6c 100644 --- a/python/packages/bedrock/pyproject.toml +++ b/python/packages/bedrock/pyproject.toml @@ -4,7 +4,7 @@ description = "Amazon Bedrock integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.24.0,<2", "boto3>=1.35.0,<2.0.0", "botocore>=1.35.0,<2.0.0", ] diff --git a/python/packages/chatkit/pyproject.toml b/python/packages/chatkit/pyproject.toml index 81cb52b623f..e2c6bb4c8a7 100644 --- a/python/packages/chatkit/pyproject.toml +++ b/python/packages/chatkit/pyproject.toml @@ -4,7 +4,7 @@ description = "OpenAI ChatKit integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/claude/README.md b/python/packages/claude/README.md index a89f99920a0..066e59959eb 100644 --- a/python/packages/claude/README.md +++ b/python/packages/claude/README.md @@ -6,6 +6,8 @@ Please install this package via pip: pip install agent-framework-claude --pre ``` +Requires Claude Agent SDK 0.2.140 or later for MCP 2-compatible custom-tool servers. + ## Claude Agent The Claude agent enables integration with Claude Agent SDK, allowing you to interact with Claude's agentic capabilities through the Agent Framework. diff --git a/python/packages/claude/pyproject.toml b/python/packages/claude/pyproject.toml index ce1792ef057..2df2f64da43 100644 --- a/python/packages/claude/pyproject.toml +++ b/python/packages/claude/pyproject.toml @@ -4,7 +4,7 @@ description = "Claude Agent SDK integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.22.0,<2", - "claude-agent-sdk>=0.1.46,<0.3", + "claude-agent-sdk>=0.2.140,<0.3", ] [tool.uv] diff --git a/python/packages/copilotstudio/pyproject.toml b/python/packages/copilotstudio/pyproject.toml index edd24f551dd..6f96db6dfc9 100644 --- a/python/packages/copilotstudio/pyproject.toml +++ b/python/packages/copilotstudio/pyproject.toml @@ -4,7 +4,7 @@ description = "Copilot Studio integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/core/agent_framework/_mcp.py b/python/packages/core/agent_framework/_mcp.py index 45b514cccf9..e3ca013f908 100644 --- a/python/packages/core/agent_framework/_mcp.py +++ b/python/packages/core/agent_framework/_mcp.py @@ -4284,7 +4284,7 @@ def _mcp_base_span_attributes(self) -> dict[str, Any]: attrs[OtelAttr.NETWORK_TRANSPORT] = "tcp" attrs[OtelAttr.NETWORK_PROTOCOL_NAME] = "http" try: - from httpx import URL + from httpx2 import URL parsed = URL(self.url) if parsed.host: diff --git a/python/packages/core/pyproject.toml b/python/packages/core/pyproject.toml index 66c895f6213..c82bc1b8faa 100644 --- a/python/packages/core/pyproject.toml +++ b/python/packages/core/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Agent Framework for building AI Agents with Python. Thi authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.23.0" +version = "1.24.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -36,35 +36,35 @@ dependencies = [ all = [ "mcp>=2.2.0,<3", "tenacity>=9.1.4,<9.2.0", - "agent-framework-a2a>=1.0.0b261022,<2", - "agent-framework-ag-ui>=1.7.0,<2", - "agent-framework-anthropic>=1.0.0b261022,<2", - "agent-framework-azure-ai-search>=1.0.0b261015,<2", - "agent-framework-azure-contentunderstanding>=1.0.0b261015,<2", - "agent-framework-azure-cosmos>=1.0.0b261015,<2", + "agent-framework-a2a>=1.0.0b261030,<2", + "agent-framework-ag-ui>=1.7.1,<2", + "agent-framework-anthropic>=1.0.0b261030,<2", + "agent-framework-azure-ai-search>=1.0.0b261030,<2", + "agent-framework-azure-contentunderstanding>=1.0.0b261030,<2", + "agent-framework-azure-cosmos>=1.0.0b261030,<2", "agent-framework-azurefunctions>=1.0.0b260922,<2", - "agent-framework-bedrock>=1.0.0b261022,<2", - "agent-framework-chatkit>=1.0.0b261015,<2", - "agent-framework-claude>=1.0.0b261015,<2", - "agent-framework-copilotstudio>=1.0.0b261015,<2", - "agent-framework-declarative>=1.4.0,<2", - "agent-framework-devui>=1.0.0b261022,<2", + "agent-framework-bedrock>=1.0.0b261030,<2", + "agent-framework-chatkit>=1.0.0b261030,<2", + "agent-framework-claude>=1.0.0b261030,<2", + "agent-framework-copilotstudio>=1.0.0b261030,<2", + "agent-framework-declarative>=1.4.1,<2", + "agent-framework-devui>=1.0.0b261030,<2", "agent-framework-durabletask>=1.0.0b260922,<2", - "agent-framework-foundry>=1.15.0,<2", - "agent-framework-foundry-hosting>=1.0.0b261022,<2", - "agent-framework-foundry-local>=1.0.0b261015,<2", - "agent-framework-gemini>=1.0.0b261022,<2", - "agent-framework-github-copilot>=2.1.0,<3; python_version >= '3.11'", - "agent-framework-hyperlight>=1.0.0b261022,<2; (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')", - "agent-framework-mem0>=1.0.0b261015,<2", - "agent-framework-mistral>=1.0.0b261015,<2", - "agent-framework-monty>=1.0.0b261015,<2", - "agent-framework-ollama>=1.0.0b261022,<2", - "agent-framework-openai>=1.17.0,<2", - "agent-framework-orchestrations>=1.4.0,<2", - "agent-framework-purview>=1.0.0b261015,<2", - "agent-framework-redis>=1.0.0b261022,<2; python_version < '3.15'", - "agent-framework-tools>=1.0.0b261022,<2", + "agent-framework-foundry>=1.16.0,<2", + "agent-framework-foundry-hosting>=1.0.0b261030,<2", + "agent-framework-foundry-local>=1.0.0b261030,<2", + "agent-framework-gemini>=1.0.0b261030,<2", + "agent-framework-github-copilot>=2.1.1,<3; python_version >= '3.11'", + "agent-framework-hyperlight>=1.0.0b261030,<2; (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')", + "agent-framework-mem0>=1.0.0b261030,<2", + "agent-framework-mistral>=1.0.0b261030,<2", + "agent-framework-monty>=1.0.0b261030,<2", + "agent-framework-ollama>=1.0.0b261030,<2", + "agent-framework-openai>=1.18.0,<2", + "agent-framework-orchestrations>=1.4.1,<2", + "agent-framework-purview>=1.0.0b261030,<2", + "agent-framework-redis>=1.0.0b261030,<2; python_version < '3.15'", + "agent-framework-tools>=1.0.0b261030,<2", ] [dependency-groups] @@ -76,6 +76,13 @@ dev = [ "opentelemetry-exporter-otlp>=1.39.0,<2", "types-pyyaml>=6.0,<7.0", ] +test = [ + "agent-framework-azurefunctions>=1.0.0b260922,<2", + "agent-framework-durabletask>=1.0.0b260922,<2", + "httpx>=0.28,<1", + "openai>=2.25.0,<4", + "tenacity>=9.1.4,<9.2.0", +] [tool.uv] prerelease = "if-necessary" diff --git a/python/packages/core/tests/core/test_agents.py b/python/packages/core/tests/core/test_agents.py index 8d6ec0033a4..7b67dc15951 100644 --- a/python/packages/core/tests/core/test_agents.py +++ b/python/packages/core/tests/core/test_agents.py @@ -4600,17 +4600,17 @@ async def test_shared_local_storage_cross_provider_responses_history_does_not_le from openai.types.chat.chat_completion_message import ChatCompletionMessage from agent_framework._sessions import InMemoryHistoryProvider - from agent_framework.openai import OpenAIChatClient, OpenAIChatCompletionClient + from agent_framework.openai import OpenAIChatClient, OpenAIChatCompletionClient, OpenAIChatOptions @tool(approval_mode="never_require") def search_hotels(city: str) -> str: return f"Found 3 hotels in {city}" responses_client = OpenAIChatClient(model="test-model", api_key="test-key") - responses_agent = Agent( + responses_agent = Agent[OpenAIChatOptions]( client=responses_client, # ty: ignore[invalid-argument-type] tools=[search_hotels], - default_options={"store": False}, # pyrefly: ignore[bad-argument-type] + default_options={"store": False}, ) session = responses_agent.create_session() diff --git a/python/packages/core/tests/core/test_function_invocation_logic.py b/python/packages/core/tests/core/test_function_invocation_logic.py index 4b8a34dc829..73544412e05 100644 --- a/python/packages/core/tests/core/test_function_invocation_logic.py +++ b/python/packages/core/tests/core/test_function_invocation_logic.py @@ -6753,7 +6753,9 @@ def capture(value: Any) -> str: ( UUID, "12345678-1234-5678-1234-567812345678", - lambda value: UUID(str(value), is_safe=SafeUUID.safe), + lambda value: UUID( + str(value), is_safe=SafeUUID.safe if value.is_safe is not SafeUUID.safe else SafeUUID.unsafe + ), ), ], ids=[ diff --git a/python/packages/core/tests/core/test_mcp_observability.py b/python/packages/core/tests/core/test_mcp_observability.py index 9858823119e..47a28b9d205 100644 --- a/python/packages/core/tests/core/test_mcp_observability.py +++ b/python/packages/core/tests/core/test_mcp_observability.py @@ -9,7 +9,7 @@ import logging from typing import Any -from unittest.mock import AsyncMock, Mock +from unittest.mock import AsyncMock, Mock, patch import pytest from mcp import MCPError, types @@ -456,7 +456,8 @@ def test_mcp_stdio_tool_with_command_and_supplied_session_preserves_pipe_transpo def test_mcp_http_tool_transport_attributes(): """MCPStreamableHTTPTool should have tcp transport and URL-based server address/port.""" tool = MCPStreamableHTTPTool(name="test", url="https://api.example.com:8443/mcp") - attrs = tool._mcp_base_span_attributes() + with patch.dict("sys.modules", {"httpx": None}): + attrs = tool._mcp_base_span_attributes() assert attrs[OtelAttr.NETWORK_TRANSPORT] == "tcp" assert attrs[OtelAttr.NETWORK_PROTOCOL_NAME] == "http" assert attrs[OtelAttr.ADDRESS] == "api.example.com" diff --git a/python/packages/core/tests/core/test_observability.py b/python/packages/core/tests/core/test_observability.py index b649777bb57..fab710a7c53 100644 --- a/python/packages/core/tests/core/test_observability.py +++ b/python/packages/core/tests/core/test_observability.py @@ -16,6 +16,7 @@ Agent, AgentResponse, BaseChatClient, + ChatOptions, ChatResponse, ChatResponseUpdate, Content, @@ -5244,12 +5245,12 @@ async def _get() -> ChatResponse: return _get() - agent = Agent( + agent = Agent[ChatOptions]( client=NestedTelemetryChatClient(), # ty: ignore[invalid-argument-type] id="nested_agent_id", name="nested_agent", description="Nested telemetry agent", - default_options={"model": "NestedModel"}, # pyrefly: ignore[bad-argument-type] + default_options={"model": "NestedModel"}, ) span_exporter.clear() @@ -6779,11 +6780,11 @@ async def _get() -> ChatResponse: return _get() - agent = Agent( + agent = Agent[ChatOptions]( client=NestedChatClient(), # ty: ignore[invalid-argument-type] id="nested_agent_id", name="nested_agent", - default_options={"model": "NestedModel"}, # pyrefly: ignore[bad-argument-type] + default_options={"model": "NestedModel"}, ) span_exporter.clear() @@ -6897,11 +6898,11 @@ async def _get() -> ChatResponse: return _get() - agent = Agent( + agent = Agent[ChatOptions]( client=NestedToolChatClient(), # ty: ignore[invalid-argument-type] id="tool_agent_id", name="tool_agent", - default_options={"model": "ToolModel", "tools": [get_weather], "tool_choice": "auto"}, # pyrefly: ignore[bad-argument-type] + default_options={"model": "ToolModel", "tools": [get_weather], "tool_choice": "auto"}, ) span_exporter.clear() @@ -7001,11 +7002,11 @@ async def _get_final() -> ChatResponse: return _get_final() - agent = Agent( + agent = Agent[ChatOptions]( client=ParallelToolChatClient(), # ty: ignore[invalid-argument-type] id="parallel_tool_agent_id", name="parallel_tool_agent", - default_options={"model": "ToolModel", "tools": [first_tool, second_tool], "tool_choice": "auto"}, # pyrefly: ignore[bad-argument-type] + default_options={"model": "ToolModel", "tools": [first_tool, second_tool], "tool_choice": "auto"}, ) span_exporter.clear() diff --git a/python/packages/core/tests/core/test_telemetry.py b/python/packages/core/tests/core/test_telemetry.py index e9b4e2f9cf8..a3d20a62c37 100644 --- a/python/packages/core/tests/core/test_telemetry.py +++ b/python/packages/core/tests/core/test_telemetry.py @@ -202,7 +202,11 @@ def test_declared_feature_indexes_match_registry() -> None: declaration_files = [ repository_root / "python" / "packages" / "core" / "agent_framework" / "_telemetry.py", - *repository_root.glob("python/packages/**/_feature_usage.py"), + *( + path + for path in repository_root.glob("python/packages/**/_feature_usage.py") + if "site-packages" not in path.relative_to(repository_root).parts + ), ] external_package_roots: dict[Path, Path] = {} # Their stable registry rows stay in this repository, but their declarations moved to the durable extension. @@ -257,7 +261,8 @@ def test_declared_feature_indexes_match_registry() -> None: _, member_name = pair referenced = False for source_file in package_root.rglob("*.py"): - if source_file == declaration_file or "tests" in source_file.parts: + relative_parts = source_file.relative_to(package_root).parts + if source_file == declaration_file or "tests" in relative_parts or "site-packages" in relative_parts: continue source_tree = ast.parse(source_file.read_text(encoding="utf-8")) if any( diff --git a/python/packages/core/tests/workflow/test_workflow_agent.py b/python/packages/core/tests/workflow/test_workflow_agent.py index 93a1db2a807..0b859bbe593 100644 --- a/python/packages/core/tests/workflow/test_workflow_agent.py +++ b/python/packages/core/tests/workflow/test_workflow_agent.py @@ -3150,9 +3150,7 @@ async def mixed_stream_executor( ctx: WorkflowContext[Never, AgentResponseUpdate], # type: ignore[valid-type] ) -> None: await ctx.yield_output( - AgentResponseUpdate( - contents=[Content.from_text("user said hi")], role="user", message_id="m-user" - ) + AgentResponseUpdate(contents=[Content.from_text("user said hi")], role="user", message_id="m-user") ) await ctx.yield_output( AgentResponseUpdate(contents=[Content.from_text("assistant answer")], message_id="m-answer") diff --git a/python/packages/declarative/pyproject.toml b/python/packages/declarative/pyproject.toml index a49ad2322cc..ca152d3af32 100644 --- a/python/packages/declarative/pyproject.toml +++ b/python/packages/declarative/pyproject.toml @@ -4,7 +4,7 @@ description = "Declarative specification support for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.4.0" +version = "1.4.1" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -31,6 +31,9 @@ dependencies = [ dev = [ "types-PyYaml==6.0.12.20260906" ] +test = [ + "tenacity>=9.1.4,<9.2.0", +] [tool.uv] prerelease = "if-necessary" diff --git a/python/packages/devui/agent_framework_devui/ui/assets/index.js b/python/packages/devui/agent_framework_devui/ui/assets/index.js index 45ec4311f38..70f60b11b0e 100644 --- a/python/packages/devui/agent_framework_devui/ui/assets/index.js +++ b/python/packages/devui/agent_framework_devui/ui/assets/index.js @@ -46,12 +46,12 @@ Error generating stack: `+e.message+` `},zs=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},Bs=function(){y.useEffect(function(){return document.body.setAttribute(Ls,(zs()+1).toString()),function(){var e=zs()-1;e<=0?document.body.removeAttribute(Ls):document.body.setAttribute(Ls,e.toString())}},[])},Vs=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;Bs();var a=y.useMemo(function(){return Fs(i)},[i]);return y.createElement(Is,{styles:Rs(a,!t,i,n?``:`!important`)})},Hs=!1;if(typeof window<`u`)try{var Us=Object.defineProperty({},"passive",{get:function(){return Hs=!0,!0}});window.addEventListener(`test`,Us,Us),window.removeEventListener(`test`,Us,Us)}catch{Hs=!1}var Ws=Hs?{passive:!1}:!1,Gs=function(e){return e.tagName===`TEXTAREA`},Ks=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!Gs(e)&&n[t]===`visible`)},qs=function(e){return Ks(e,`overflowY`)},Js=function(e){return Ks(e,`overflowX`)},Ys=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),Qs(e,r)){var i=$s(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},Xs=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},Zs=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},Qs=function(e,t){return e===`v`?qs(t):Js(t)},$s=function(e,t){return e===`v`?Xs(t):Zs(t)},ec=function(e,t){return e===`h`&&t===`rtl`?-1:1},tc=function(e,t,n,r,i){var a=ec(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=$s(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&Qs(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},nc=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},rc=function(e){return[e.deltaX,e.deltaY]},ic=function(e){return e&&`current`in e?e.current:e},ac=function(e,t){return e[0]===t[0]&&e[1]===t[1]},oc=function(e){return` .block-interactivity-${e} {pointer-events: none;} .allow-interactivity-${e} {pointer-events: all;} -`},sc=0,cc=[];function lc(e){var t=y.useRef([]),n=y.useRef([0,0]),r=y.useRef(),i=y.useState(sc++)[0],a=y.useState(js)[0],o=y.useRef(e);y.useEffect(function(){o.current=e},[e]),y.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=ss([e.lockRef.current],(e.shards||[]).map(ic),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=y.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=nc(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=Ys(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=Ys(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return tc(h,t,e,h===`h`?s:c,!0)},[]),c=y.useCallback(function(e){var n=e;if(cc.length&&cc[cc.length-1]===a){var r=`deltaY`in n?rc(n):nc(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&ac(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(ic).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=y.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:uc(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=y.useCallback(function(e){n.current=nc(e),r.current=void 0},[]),d=y.useCallback(function(t){l(t.type,rc(t),t.target,s(t,e.lockRef.current))},[]),f=y.useCallback(function(t){l(t.type,nc(t),t.target,s(t,e.lockRef.current))},[]);y.useEffect(function(){return cc.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,Ws),document.addEventListener(`touchmove`,c,Ws),document.addEventListener(`touchstart`,u,Ws),function(){cc=cc.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,Ws),document.removeEventListener(`touchmove`,c,Ws),document.removeEventListener(`touchstart`,u,Ws)}},[]);var p=e.removeScrollBar,m=e.inert;return y.createElement(y.Fragment,null,m?y.createElement(a,{styles:oc(i)}):null,p?y.createElement(Vs,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function uc(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var dc=xs(Ss,lc),fc=y.forwardRef(function(e,t){return y.createElement(ws,as({},e,{ref:t,sideCar:dc}))});fc.classNames=ws.classNames;var pc=Object.defineProperty,mc=(e,t)=>pc(e,`name`,{value:t,configurable:!0}),hc=[`Enter`,` `],gc=[`ArrowDown`,`PageUp`,`Home`],_c=[`ArrowUp`,`PageDown`,`End`],vc=[...gc,..._c];[...hc],[...hc];var yc=`Menu`,[bc,xc,Sc]=hn(yc),[Cc,wc]=Kt(yc,[Sc,Ja,Io]),Tc=Ja(),Ec=Io(),[Dc,Oc]=Cc(yc),[kc,Ac]=Cc(yc),jc=mc(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=Tc(t),[c,l]=y.useState(null),u=y.useRef(!1),d=Fn(a),f=jn(i);return y.useEffect(()=>{let e=mc(()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=mc(()=>u.current=!1,`handlePointer`);return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),y.useEffect(()=>{if(!n)return;let e=mc(()=>d(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,d]),(0,K.jsx)(Za,{...s,children:(0,K.jsx)(Dc,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,K.jsx)(kc,{scope:t,onClose:y.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})},`Menu`),Mc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,...r}=e,i=Tc(n);return(0,K.jsx)($a,{...i,...r,ref:t})},`MenuAnchor`)),Nc=`MenuPortal`,[Pc,Fc]=Cc(Nc,{forceMount:void 0}),Ic=mc(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Oc(Nc,t);return(0,K.jsx)(Pc,{scope:t,forceMount:n,children:(0,K.jsx)(po,{present:n||a.open,children:(0,K.jsx)(co,{asChild:!0,container:i,children:r})})})},`MenuPortal`),Lc=`MenuContent`,[Rc,zc]=Cc(Lc),Bc=y.forwardRef(mc(function(e,t){let n=Fc(Lc,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Oc(Lc,e.__scopeMenu),o=Ac(Lc,e.__scopeMenu);return(0,K.jsx)(bc.Provider,{scope:e.__scopeMenu,children:(0,K.jsx)(po,{present:r||a.open,children:(0,K.jsx)(bc.Slot,{scope:e.__scopeMenu,children:o.modal?(0,K.jsx)(Vc,{...i,ref:t}):(0,K.jsx)(Hc,{...i,ref:t})})})})},`MenuContent`)),Vc=y.forwardRef(mc(function(e,t){let n=Oc(Lc,e.__scopeMenu),r=y.useRef(null),i=T(t,r);return y.useEffect(()=>{let e=r.current;if(e)return is(e)},[]),(0,K.jsx)(Wc,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:J(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentModal`)),Hc=y.forwardRef(mc(function(e,t){let n=Oc(Lc,e.__scopeMenu);return(0,K.jsx)(Wc,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Uc=O(`MenuContent.ScrollLock`),Wc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,disableOutsideScroll:m,...h}=e,g=Oc(Lc,n),_=Ac(Lc,n),v=Tc(n),b=Ec(n),x=xc(n),[S,C]=y.useState(null),w=y.useRef(null),[E,D]=y.useState(null);fr(E);let{nodes:O,registry:k}=dr(),A=!!(i||m),j=T(t,w,g.onContentChange,D),M=y.useRef(0),N=y.useRef(``),P=y.useRef(0),F=y.useRef(null),I=y.useRef(`right`),L=y.useRef(0),R=y.useMemo(()=>m?[w,...O.map(e=>({current:e}))]:[],[w,O,m]),z=m?fc:y.Fragment,B=m?{as:Uc,allowPinchZoom:!0,shards:R}:void 0,ee=mc(e=>{let t=N.current+e,n=x().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=cl(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;function s(e){N.current=e,window.clearTimeout(M.current),e!==``&&(M.current=window.setTimeout(()=>s(``),1e3))}mc(s,`updateSearch`),s(t),o&&setTimeout(()=>o.focus())},`handleTypeaheadSearch`);y.useEffect(()=>()=>window.clearTimeout(M.current),[]),tr();let V=y.useCallback(e=>I.current===F.current?.side&&ul(e,F.current?.area),[]);return(0,K.jsx)(Rc,{scope:n,searchRef:N,onItemEnter:y.useCallback(e=>{V(e)&&e.preventDefault()},[V]),onItemLeave:y.useCallback(e=>{V(e)||(w.current?.focus(),C(null))},[V]),onTriggerLeave:y.useCallback(e=>{V(e)&&e.preventDefault()},[V]),pointerGraceTimerRef:P,onPointerGraceIntentChange:y.useCallback(e=>{F.current=e},[]),children:(0,K.jsx)(ur,{registry:A?k:null,children:(0,K.jsx)(z,{...B,children:(0,K.jsx)(cr,{asChild:!0,trapped:i,branches:O,onMountAutoFocus:J(a,e=>{e.preventDefault(),w.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,K.jsx)(Un,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:(0,K.jsx)(Vo,{asChild:!0,...b,dir:_.dir,orientation:`vertical`,loop:r,currentTabStopId:S,onCurrentTabStopIdChange:C,onEntryFocus:J(c,e=>{_.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,K.jsx)(ro,{role:`menu`,"aria-orientation":`vertical`,"data-state":rl(g.open),"data-radix-menu-content":``,dir:_.dir,...v,...h,ref:j,style:{outline:`none`,...h.style},onKeyDown:J(h.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&ee(e.key));let i=w.current;if(e.target!==i||!vc.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);_c.includes(e.key)&&a.reverse(),ol(a)}),onBlur:J(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(M.current),N.current=``)}),onPointerMove:J(e.onPointerMove,dl(e=>{let t=e.target,n=L.current!==e.clientX;if(e.currentTarget.contains(t)&&n){let t=e.clientX>L.current?`right`:`left`;I.current=t,L.current=e.clientX}}))})})})})})})})},`MenuContentImpl`)),Gc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(Y.div,{...r,ref:t})},`MenuLabel`)),Kc=`MenuItem`,qc=`menu.itemSelect`,Jc=y.forwardRef(mc(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=y.useRef(null),o=Ac(Kc,e.__scopeMenu),s=zc(Kc,e.__scopeMenu),c=T(t,a),l=y.useRef(!1),u=mc(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(qc,{bubbles:!0,cancelable:!0});e.addEventListener(qc,e=>r?.(e),{once:!0}),fn(e,t),t.defaultPrevented?l.current=!1:o.onClose()}},`handleSelect`);return(0,K.jsx)(Yc,{...i,ref:c,disabled:n,onClick:J(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:J(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:J(e.onKeyDown,e=>{n||e.target!==e.currentTarget||(s.searchRef.current===``||e.key!==` `)&&hc.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),Yc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=zc(Kc,n),s=Ec(n),c=y.useRef(null),l=T(t,c),[u,d]=y.useState(!1),[f,p]=y.useState(``);return y.useEffect(()=>{let e=c.current;e&&p((e.textContent??``).trim())},[a.children]),(0,K.jsx)(bc.ItemSlot,{scope:n,disabled:r,textValue:i??f,children:(0,K.jsx)(Wo,{asChild:!0,...s,focusable:!r,children:(0,K.jsx)(Y.div,{role:`menuitem`,"data-highlighted":u?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:l,onPointerMove:J(e.onPointerMove,dl(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:J(e.onPointerLeave,dl(e=>o.onItemLeave(e))),onFocus:J(e.onFocus,()=>d(!0)),onBlur:J(e.onBlur,()=>d(!1))})})})},`MenuItemImpl`)),[Xc,Zc]=Cc(`MenuRadioGroup`,{value:void 0,onValueChange:mc(()=>{},`onValueChange`)}),[Qc,$c]=Cc(`MenuItemIndicator`,{checked:!1}),el=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(Y.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),[tl,nl]=Cc(`MenuSub`);function rl(e){return e?`open`:`closed`}mc(rl,`getOpenState`);function il(e){return e===`indeterminate`}mc(il,`isIndeterminate`);function al(e){return il(e)?`indeterminate`:e?`checked`:`unchecked`}mc(al,`getCheckedState`);function ol(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}mc(ol,`focusFirst`);function sl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}mc(sl,`wrapArray`);function cl(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=sl(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}mc(cl,`getNextMatch`);function ll(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}mc(ll,`isPointInPolygon`);function ul(e,t){return t?ll({x:e.clientX,y:e.clientY},t):!1}mc(ul,`isPointerInGraceArea`);function dl(e){return t=>t.pointerType===`mouse`?e(t):void 0}mc(dl,`whenMouse`);var fl=Object.defineProperty,pl=(e,t)=>fl(e,`name`,{value:t,configurable:!0}),ml=`DropdownMenu`,[hl,gl]=Kt(ml,[wc]),_l=wc(),[vl,yl]=hl(ml),bl=pl(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=_l(t),l=y.useRef(null),[u,d]=rn({prop:i,defaultProp:a??!1,onChange:o,caller:ml});return(0,K.jsx)(vl,{scope:t,triggerId:Or(),triggerRef:l,contentId:Or(),open:u,onOpenChange:d,onOpenToggle:y.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,K.jsx)(jc,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})},`DropdownMenu`),xl=`DropdownMenuTrigger`,Sl=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=yl(xl,n),o=_l(n),s=T(t,a.triggerRef);return(0,K.jsx)(Mc,{asChild:!0,...o,children:(0,K.jsx)(Y.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:s,onPointerDown:J(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:J(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})},`DropdownMenuTrigger`)),Cl=pl(e=>{let{__scopeDropdownMenu:t,...n}=e,r=_l(t);return(0,K.jsx)(Ic,{...r,...n})},`DropdownMenuPortal`),wl=`DropdownMenuContent`,Tl=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=yl(wl,n),a=_l(n),o=y.useRef(!1);return(0,K.jsx)(Bc,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:J(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:J(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuContent`)),El=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=_l(n);return(0,K.jsx)(Gc,{...i,...r,ref:t})},`DropdownMenuLabel`)),Dl=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=_l(n);return(0,K.jsx)(Jc,{...i,...r,ref:t})},`DropdownMenuItem`)),Ol=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=_l(n);return(0,K.jsx)(el,{...i,...r,ref:t})},`DropdownMenuSeparator`)),kl=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function Al(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:kl(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var jl=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},Ml=e=>{let t=jl(e);return t.charAt(0).toUpperCase()+t.slice(1)},Nl=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Pl={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Fl(e){return e!=null}function Il(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Pl.width,a=e.size??e.height??Pl.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?Nl(...c):Nl(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Pl[`stroke-width`])*Number(e.size??e.width??Pl.width)/Number(t.size??t.width??Pl.width):t.strokeWidth??Pl[`stroke-width`];return[`svg`,{...Object.entries(Pl).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&Fl(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&Fl(t.width)&&{[r(`width`)]:t.width},...`height`in t&&Fl(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function Ll(e,t={}){return Il(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var Rl=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},zl=(0,y.createContext)({}),Bl=()=>(0,y.useContext)(zl),Vl=(0,y.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:_=`currentColor`,className:v=``}=Bl()??{},b=!!c||Rl(d),[x,S,C=[]]=Ll(u,{color:e??_,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:Nl(v,s),hasA11yProp:b,attributes:d});return(0,y.createElement)(x,{ref:f,...S},[...C.map(([e,t])=>(0,y.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function Z(e,t=[],n=[]){let r=typeof e==`string`?Al(e,t,n):e,i=(0,y.forwardRef)(({className:e,...t},n)=>(0,y.createElement)(Vl,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=Ml(r.name)),i}var Hl={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Hl.node;var Ul=Z(Hl),Wl={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};Wl.node;var Gl=Z(Wl),Kl={name:`arrow-left-right`,size:24,node:[[`path`,{d:`M8 3 4 7l4 4`,key:`9rb6wj`}],[`path`,{d:`M4 7h16`,key:`6tx8e3`}],[`path`,{d:`m16 21 4-4-4-4`,key:`siv7j2`}],[`path`,{d:`M20 17H4`,key:`h6l3hr`}]]};Kl.node;var ql=Z(Kl),Jl={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};Jl.node;var Yl=Z(Jl),Xl={name:`book-open`,size:24,node:[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]};Xl.node;var Zl=Z(Xl),Ql={name:`bot`,size:24,node:[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]};Ql.node;var $l=Z(Ql),eu={name:`chart-column`,size:24,node:[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-3`]};eu.node;var tu=Z(eu),nu={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]};nu.node;var ru=Z(nu),iu={name:`check-check`,size:24,node:[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]};iu.node;var au=Z(iu),ou={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]};ou.node;var su=Z(ou),cu={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};cu.node;var lu=Z(cu),uu={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};uu.node;var du=Z(uu),fu={name:`chevron-up`,size:24,node:[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]};fu.node;var pu=Z(fu),mu={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};mu.node;var hu=Z(mu),gu={name:`circle-check-big`,size:24,node:[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],aliases:[`check-circle`]};gu.node;var _u=Z(gu),vu={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};vu.node;var yu=Z(vu),bu={name:`circle-play`,size:24,node:[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],aliases:[`play-circle`]};bu.node;var xu=Z(bu),Su={name:`circle-x`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-circle`]};Su.node;var Cu=Z(Su),wu={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]};wu.node;var Tu=Z(wu),Eu={name:`cloud`,size:24,node:[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`,key:`p7xjir`}]]};Eu.node;var Du=Z(Eu),Ou={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};Ou.node;var ku=Z(Ou),Au={name:`container`,size:24,node:[[`path`,{d:`M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z`,key:`1t2lqe`}],[`path`,{d:`M10 21.9V14L2.1 9.1`,key:`o7czzq`}],[`path`,{d:`m10 14 11.9-6.9`,key:`zm5e20`}],[`path`,{d:`M14 19.8v-8.1`,key:`159ecu`}],[`path`,{d:`M18 17.5V9.4`,key:`11uown`}]]};Au.node;var ju=Z(Au),Mu={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};Mu.node;var Nu=Z(Mu),Pu={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Pu.node;var Fu=Z(Pu),Iu={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};Iu.node;var Lu=Z(Iu),Ru={name:`ellipsis-vertical`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]],aliases:[`more-vertical`]};Ru.node;var zu=Z(Ru),Bu={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};Bu.node;var Vu=Z(Bu),Hu={name:`file-text`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]};Hu.node;var Uu=Z(Hu),Wu={name:`folder-open`,size:24,node:[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]};Wu.node;var Gu=Z(Wu),Ku={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};Ku.node;var qu=Z(Ku),Ju={name:`grid-3x3`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]],aliases:[`grid`,`grid-3-x-3`]};Ju.node;var Yu=Z(Ju),Xu={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};Xu.node;var Zu=Z(Xu),Qu={name:`image`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]};Qu.node;var $u=Z(Qu),ed={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};ed.node;var td=Z(ed),nd={name:`key`,size:24,node:[[`path`,{d:`m2 21 9.6-9.6`,key:`9l79m3`}],[`path`,{d:`m7.5 15.5 2.3 2.3a1 1 0 0 1 0 1.4l-2.1 2.1a1 1 0 0 1-1.4 0L4 19`,key:`fw8biw`}],[`circle`,{cx:`15.5`,cy:`7.5`,r:`5.5`,key:`4wxmhb`}]]};nd.node;var rd=Z(nd),id={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};id.node;var ad=Z(id),od={name:`lightbulb`,size:24,node:[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`,key:`1gvzjb`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]};od.node;var sd=Z(od),cd={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};cd.node;var ld=Z(cd),ud={name:`lock`,size:24,node:[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]};ud.node;var dd=Z(ud),fd={name:`map`,size:24,node:[[`path`,{d:`M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z`,key:`169xi5`}],[`path`,{d:`M15 5.764v15`,key:`1pn4in`}],[`path`,{d:`M9 3.236v15`,key:`1uimfh`}]]};fd.node;var pd=Z(fd),md={name:`maximize`,size:24,node:[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]};md.node;var hd=Z(md),gd={name:`message-square`,size:24,node:[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]};gd.node;var _d=Z(gd),vd={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};vd.node;var yd=Z(vd),bd={name:`music`,size:24,node:[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]};bd.node;var xd=Z(bd),Sd={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};Sd.node;var Cd=Z(Sd),wd={name:`panel-right-open`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]};wd.node;var Td=Z(wd),Ed={name:`paperclip`,size:24,node:[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]};Ed.node;var Dd=Z(Ed),Od={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};Od.node;var kd=Z(Od),Ad={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};Ad.node;var jd=Z(Ad),Md={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};Md.node;var Nd=Z(Md),Pd={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};Pd.node;var Fd=Z(Pd),Id={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};Id.node;var Ld=Z(Id),Rd={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};Rd.node;var zd=Z(Rd),Bd={name:`send-horizontal`,size:24,node:[[`path`,{d:`M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z`,key:`117uat`}],[`path`,{d:`M6 12h16`,key:`s4cdu5`}]],aliases:[`send-horizonal`]};Bd.node;var Vd=Z(Bd),Hd={name:`send`,size:24,node:[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]};Hd.node;var Ud=Z(Hd),Wd={name:`server-off`,size:24,node:[[`path`,{d:`M7 2h13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-5`,key:`bt2siv`}],[`path`,{d:`M10 10 2.5 2.5C2 2 2 2.5 2 5v3a2 2 0 0 0 2 2h6z`,key:`1hjrv1`}],[`path`,{d:`M22 17v-1a2 2 0 0 0-2-2h-1`,key:`1iynyr`}],[`path`,{d:`M4 14a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16.5l1-.5.5.5-8-8H4z`,key:`161ggg`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]};Wd.node;var Gd=Z(Wd),Kd={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};Kd.node;var qd=Z(Kd),Jd={name:`shuffle`,size:24,node:[[`path`,{d:`m18 14 4 4-4 4`,key:`10pe0f`}],[`path`,{d:`m18 2 4 4-4 4`,key:`pucp1d`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`,key:`1ailkh`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`,key:`km57vx`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`,key:`os18l9`}]]};Jd.node;var Yd=Z(Jd),Xd={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]};Xd.node;var Zd=Z(Xd),Qd={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};Qd.node;var $d=Z(Qd),ef={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};ef.node;var tf=Z(ef),nf={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};nf.node;var rf=Z(nf),af={name:`upload`,size:24,node:[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]};af.node;var of=Z(af),sf={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};sf.node;var cf=Z(sf),lf={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};lf.node;var uf=Z(lf),df={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};df.node;var ff=Z(df),pf={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};pf.node;var mf=Z(pf),hf={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};hf.node;var gf=Z(hf);function _f({...e}){return(0,K.jsx)(bl,{"data-slot":`dropdown-menu`,...e})}function vf({...e}){return(0,K.jsx)(Sl,{"data-slot":`dropdown-menu-trigger`,...e})}function yf({className:e,sideOffset:t=4,...n}){return(0,K.jsx)(Cl,{children:(0,K.jsx)(Tl,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:jt(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md`,e),...n})})}function bf({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(Dl,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:jt(`focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function xf({className:e,inset:t,...n}){return(0,K.jsx)(El,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:jt(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function Sf({className:e,...t}){return(0,K.jsx)(Ol,{"data-slot":`dropdown-menu-separator`,className:jt(`bg-border -mx-1 my-1 h-px`,e),...t})}function Cf({size:e=`md`,className:t}){return(0,K.jsx)(ld,{className:jt(`animate-spin`,{"h-4 w-4":e===`sm`,"h-6 w-6":e===`md`,"h-8 w-8":e===`lg`},t)})}var wf=e=>e===`workflow`?uf:$l;function Tf({agents:e,workflows:t,entities:n,selectedItem:r,onSelect:i,onBrowseGallery:a,isLoading:o=!1}){let[s,c]=(0,y.useState)(!1),l=n||[...e,...t],u=e=>{i(e),c(!1)},d=r?wf(r.type):$l,f=r?.name||r?.id||`Select Agent or Workflow`,p=r?.metadata?.lazy_loaded!==!1;return(0,K.jsxs)(_f,{open:s,onOpenChange:c,children:[(0,K.jsx)(vf,{asChild:!0,children:(0,K.jsx)(q,{variant:`outline`,className:`w-64 justify-between font-mono text-sm`,disabled:o,children:o?(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Cf,{size:`sm`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Loading...`})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,K.jsx)(d,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsx)(`span`,{className:`truncate`,children:f}),r&&!p&&(0,K.jsx)(ld,{className:`h-3 w-3 text-muted-foreground animate-spin ml-auto flex-shrink-0`})]}),(0,K.jsx)(su,{className:`h-4 w-4 opacity-50`})]})})}),(0,K.jsxs)(yf,{className:`w-80 font-mono`,children:[(()=>{let e=l.filter(e=>e.type===`workflow`),t=l.filter(e=>e.type===`agent`),n=l[0]?.type;return(0,K.jsxs)(K.Fragment,{children:[n===`workflow`&&e.length>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(xf,{className:`flex items-center gap-2`,children:[(0,K.jsx)(uf,{className:`h-4 w-4`}),`Workflows (`,e.length,`)`]}),e.map(e=>{let t=e.metadata?.lazy_loaded!==!1;return(0,K.jsx)(bf,{className:`cursor-pointer group`,onClick:()=>u(e),children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,K.jsx)(uf,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium block`,children:e.name||e.id}),t&&e.description&&(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]})]})},e.id)})]}),e.length>0&&t.length>0&&(0,K.jsx)(Sf,{}),t.length>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(xf,{className:`flex items-center gap-2`,children:[(0,K.jsx)($l,{className:`h-4 w-4`}),`Agents (`,t.length,`)`]}),t.map(e=>{let t=e.metadata?.lazy_loaded!==!1;return(0,K.jsx)(bf,{className:`cursor-pointer group`,onClick:()=>u(e),children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,K.jsx)($l,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium block`,children:e.name||e.id}),t&&e.description&&(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]})]})},e.id)})]}),n===`agent`&&e.length>0&&(0,K.jsxs)(K.Fragment,{children:[t.length>0&&(0,K.jsx)(Sf,{}),(0,K.jsxs)(xf,{className:`flex items-center gap-2`,children:[(0,K.jsx)(uf,{className:`h-4 w-4`}),`Workflows (`,e.length,`)`]}),e.map(e=>{let t=e.metadata?.lazy_loaded!==!1;return(0,K.jsx)(bf,{className:`cursor-pointer group`,onClick:()=>u(e),children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,K.jsx)(uf,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium block`,children:e.name||e.id}),t&&e.description&&(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]})]})},e.id)})]})]})})(),l.length===0&&(0,K.jsx)(bf,{disabled:!0,children:(0,K.jsx)(`div`,{className:`text-center text-muted-foreground py-2`,children:o?`Loading agents and workflows...`:`No agents or workflows found`})}),(0,K.jsx)(Sf,{}),(0,K.jsxs)(bf,{className:`cursor-pointer text-primary`,onClick:()=>{a?.(),c(!1)},children:[(0,K.jsx)(jd,{className:`h-4 w-4 mr-2`}),`Browse Gallery`]})]})]})}var Ef=(e,t,n,r,i,a,o,s)=>{let c=document.documentElement,l=[`light`,`dark`];function u(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n=e===`class`,r=n&&a?i.map(e=>a[e]||e):i;n?(c.classList.remove(...r),c.classList.add(a&&a[t]?a[t]:t)):c.setAttribute(e,t)}),d(t)}function d(e){s&&l.includes(e)&&(c.style.colorScheme=e)}function f(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}if(r)u(r);else try{let e=localStorage.getItem(t)||n;u(o&&e===`system`?f():e)}catch{}},Df=[`light`,`dark`],Of=`(prefers-color-scheme: dark)`,kf=typeof window>`u`,Af=y.createContext(void 0),jf={setTheme:e=>{},themes:[]},Mf=()=>y.useContext(Af)??jf,Nf=e=>y.useContext(Af)?y.createElement(y.Fragment,null,e.children):y.createElement(Ff,{...e}),Pf=[`light`,`dark`],Ff=({forcedTheme:e,disableTransitionOnChange:t=!1,enableSystem:n=!0,enableColorScheme:r=!0,storageKey:i=`theme`,themes:a=Pf,defaultTheme:o=n?`system`:`light`,attribute:s=`data-theme`,value:c,children:l,nonce:u,scriptProps:d})=>{let[f,p]=y.useState(()=>Lf(i,o)),[m,h]=y.useState(()=>f===`system`?zf():f),g=c?Object.values(c):a,_=y.useCallback(e=>{let i=e;if(!i)return;e===`system`&&n&&(i=zf());let a=c?c[i]:i,l=t?Rf(u):null,d=document.documentElement,f=e=>{e===`class`?(d.classList.remove(...g),a&&d.classList.add(a)):e.startsWith(`data-`)&&(a?d.setAttribute(e,a):d.removeAttribute(e))};if(Array.isArray(s)?s.forEach(f):f(s),r){let e=Df.includes(o)?o:null,t=Df.includes(i)?i:e;d.style.colorScheme=t}l?.()},[u]),v=y.useCallback(e=>{let t=typeof e==`function`?e(f):e;p(t);try{localStorage.setItem(i,t)}catch{}},[f]),b=y.useCallback(t=>{let r=zf(t);h(r),f===`system`&&n&&!e&&_(`system`)},[f,e]);y.useEffect(()=>{let e=window.matchMedia(Of);return e.addListener(b),b(e),()=>e.removeListener(b)},[b]),y.useEffect(()=>{let e=e=>{e.key===i&&(e.newValue?p(e.newValue):v(o))};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[v]),y.useEffect(()=>{_(e??f)},[e,f]);let x=y.useMemo(()=>({theme:f,setTheme:v,forcedTheme:e,resolvedTheme:f===`system`?m:f,themes:n?[...a,`system`]:a,systemTheme:n?m:void 0}),[f,v,e,m,n,a]);return y.createElement(Af.Provider,{value:x},y.createElement(If,{forcedTheme:e,storageKey:i,attribute:s,enableSystem:n,enableColorScheme:r,defaultTheme:o,value:c,themes:a,nonce:u,scriptProps:d}),l)},If=y.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:a,value:o,themes:s,nonce:c,scriptProps:l})=>{let u=JSON.stringify([n,t,a,e,s,o,r,i]).slice(1,-1);return y.createElement(`script`,{...l,suppressHydrationWarning:!0,nonce:typeof window>`u`?c:``,dangerouslySetInnerHTML:{__html:`(${Ef.toString()})(${u})`}})}),Lf=(e,t)=>{if(kf)return;let n;try{n=localStorage.getItem(e)||void 0}catch{}return n||t},Rf=e=>{let t=document.createElement(`style`);return e&&t.setAttribute(`nonce`,e),t.appendChild(document.createTextNode(`*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`)),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},zf=e=>(e||=window.matchMedia(Of),e.matches?`dark`:`light`);function Bf(){let{setTheme:e}=Mf();return(0,K.jsxs)(_f,{children:[(0,K.jsx)(vf,{asChild:!0,children:(0,K.jsxs)(q,{variant:`ghost`,size:`sm`,children:[(0,K.jsx)($d,{className:`h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0`}),(0,K.jsx)(yd,{className:`absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Toggle theme`})]})}),(0,K.jsxs)(yf,{align:`end`,children:[(0,K.jsx)(bf,{onClick:()=>e(`light`),children:`Light`}),(0,K.jsx)(bf,{onClick:()=>e(`dark`),children:`Dark`}),(0,K.jsx)(bf,{onClick:()=>e(`system`),children:`System`})]})]})}var Vf,Hf,Uf=o((()=>{Vf=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Hf=(e=>e?Vf(e):Vf)}));function Wf(e,t=Kf){let n=Gf.useSyncExternalStore(e.subscribe,Gf.useCallback(()=>t(e.getState()),[e,t]),Gf.useCallback(()=>t(e.getInitialState()),[e,t]));return Gf.useDebugValue(n),n}var Gf,Kf,qf,Jf,Yf=o((()=>{Gf=u(f(),1),Uf(),Kf=e=>e,qf=e=>{let t=Hf(e),n=e=>Wf(t,e);return Object.assign(n,t),n},Jf=(e=>e?qf(e):qf)})),Xf=o((()=>{Uf(),Yf()}));function Zf(e){if(!e)return;let t=e.split(` -`),n=t.findIndex(e=>e.includes(`api.setState`));if(n<0)return;let r=t[n+1]?.trim()||``;return ip.exec(r)?.[1]||ap.exec(r)?.[1]}function Qf(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var $f,ep,tp,np,rp,ip,ap,op,sp,cp,lp,up,dp,fp=o((()=>{$f=e=>!!e.dispatchFromDevtools&&typeof e.dispatch==`function`,ep=new Map,tp=e=>{let t=ep.get(e);return t?Object.fromEntries(Object.entries(t.stores).map(([e,t])=>[e,t.getState()])):{}},np=(e,t,n)=>{if(e===void 0)return{type:`untracked`,connection:t.connect(n)};let r=ep.get(n.name);if(r)return{type:`tracked`,store:e,...r};let i={connection:t.connect(n),stores:{}};return ep.set(n.name,i),{type:`tracked`,store:e,...i}},rp=(e,t)=>{if(t===void 0)return;let n=ep.get(e);n&&(delete n.stores[t],Object.keys(n.stores).length===0&&ep.delete(e))},ip=/^at (?:new |async )?(.+?) \(/,ap=/^([^@]+)@/,op=(e,t={})=>(n,r,i)=>{let{enabled:a,anonymousActionType:o,store:s,...c}=t,l;try{l=(a??!1)&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!l)return e(n,r,i);let{connection:u,...d}=np(s,l,c),f=!0;i.setState=((e,t,a)=>{let l=n(e,t);if(!f)return l;let d=a===void 0?{type:o||Zf(Error().stack)||`anonymous`}:typeof a==`string`?{type:a}:a;return s===void 0?(u?.send(d,r()),l):(u?.send({...d,type:`${s}/${d.type}`},{...tp(c.name),[s]:i.getState()}),l)}),i.devtools={cleanup:()=>{u&&typeof u.unsubscribe==`function`&&u.unsubscribe(),rp(c.name,s)}};let p=(...e)=>{let t=f;f=!1,n(...e),f=t},m=e(i.setState,r,i);if(d.type===`untracked`?u?.init(m):(d.stores[d.store]=i,u?.init(Object.fromEntries(Object.entries(d.stores).map(([e,t])=>[e,e===d.store?m:t.getState()])))),$f(i)){let e=i.dispatch;i.dispatch=(...t)=>{e(...t)}}return u.subscribe(e=>{switch(e.type){case`ACTION`:if(typeof e.payload!=`string`){console.error(`[zustand devtools middleware] Unsupported action format`);return}return cp(e.payload,e=>{if(e.type===`__setState`){if(s===void 0){p(e.state);return}Object.keys(e.state).length!==1&&console.error(` +`},sc=0,cc=[];function lc(e){var t=y.useRef([]),n=y.useRef([0,0]),r=y.useRef(),i=y.useState(sc++)[0],a=y.useState(js)[0],o=y.useRef(e);y.useEffect(function(){o.current=e},[e]),y.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=ss([e.lockRef.current],(e.shards||[]).map(ic),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=y.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=nc(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=Ys(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=Ys(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return tc(h,t,e,h===`h`?s:c,!0)},[]),c=y.useCallback(function(e){var n=e;if(cc.length&&cc[cc.length-1]===a){var r=`deltaY`in n?rc(n):nc(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&ac(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(ic).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=y.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:uc(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=y.useCallback(function(e){n.current=nc(e),r.current=void 0},[]),d=y.useCallback(function(t){l(t.type,rc(t),t.target,s(t,e.lockRef.current))},[]),f=y.useCallback(function(t){l(t.type,nc(t),t.target,s(t,e.lockRef.current))},[]);y.useEffect(function(){return cc.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,Ws),document.addEventListener(`touchmove`,c,Ws),document.addEventListener(`touchstart`,u,Ws),function(){cc=cc.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,Ws),document.removeEventListener(`touchmove`,c,Ws),document.removeEventListener(`touchstart`,u,Ws)}},[]);var p=e.removeScrollBar,m=e.inert;return y.createElement(y.Fragment,null,m?y.createElement(a,{styles:oc(i)}):null,p?y.createElement(Vs,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function uc(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var dc=xs(Ss,lc),fc=y.forwardRef(function(e,t){return y.createElement(ws,as({},e,{ref:t,sideCar:dc}))});fc.classNames=ws.classNames;var pc=Object.defineProperty,mc=(e,t)=>pc(e,`name`,{value:t,configurable:!0}),hc=[`Enter`,` `],gc=[`ArrowDown`,`PageUp`,`Home`],_c=[`ArrowUp`,`PageDown`,`End`],vc=[...gc,..._c];[...hc],[...hc];var yc=`Menu`,[bc,xc,Sc]=hn(yc),[Cc,wc]=Kt(yc,[Sc,Ja,Io]),Tc=Ja(),Ec=Io(),[Dc,Oc]=Cc(yc),[kc,Ac]=Cc(yc),jc=mc(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=Tc(t),[c,l]=y.useState(null),u=y.useRef(!1),d=Fn(a),f=jn(i);return y.useEffect(()=>{let e=mc(()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=mc(()=>u.current=!1,`handlePointer`);return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),y.useEffect(()=>{if(!n)return;let e=mc(()=>d(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,d]),(0,K.jsx)(Za,{...s,children:(0,K.jsx)(Dc,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,K.jsx)(kc,{scope:t,onClose:y.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})},`Menu`),Mc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,...r}=e,i=Tc(n);return(0,K.jsx)($a,{...i,...r,ref:t})},`MenuAnchor`)),Nc=`MenuPortal`,[Pc,Fc]=Cc(Nc,{forceMount:void 0}),Ic=mc(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Oc(Nc,t);return(0,K.jsx)(Pc,{scope:t,forceMount:n,children:(0,K.jsx)(po,{present:n||a.open,children:(0,K.jsx)(co,{asChild:!0,container:i,children:r})})})},`MenuPortal`),Lc=`MenuContent`,[Rc,zc]=Cc(Lc),Bc=y.forwardRef(mc(function(e,t){let n=Fc(Lc,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Oc(Lc,e.__scopeMenu),o=Ac(Lc,e.__scopeMenu);return(0,K.jsx)(bc.Provider,{scope:e.__scopeMenu,children:(0,K.jsx)(po,{present:r||a.open,children:(0,K.jsx)(bc.Slot,{scope:e.__scopeMenu,children:o.modal?(0,K.jsx)(Vc,{...i,ref:t}):(0,K.jsx)(Hc,{...i,ref:t})})})})},`MenuContent`)),Vc=y.forwardRef(mc(function(e,t){let n=Oc(Lc,e.__scopeMenu),r=y.useRef(null),i=T(t,r);return y.useEffect(()=>{let e=r.current;if(e)return is(e)},[]),(0,K.jsx)(Wc,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:J(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentModal`)),Hc=y.forwardRef(mc(function(e,t){let n=Oc(Lc,e.__scopeMenu);return(0,K.jsx)(Wc,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Uc=O(`MenuContent.ScrollLock`),Wc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,disableOutsideScroll:m,...h}=e,g=Oc(Lc,n),_=Ac(Lc,n),v=Tc(n),b=Ec(n),x=xc(n),[S,C]=y.useState(null),w=y.useRef(null),[E,D]=y.useState(null);fr(E);let{nodes:O,registry:k}=dr(),A=!!(i||m),j=T(t,w,g.onContentChange,D),M=y.useRef(0),N=y.useRef(``),P=y.useRef(0),F=y.useRef(null),I=y.useRef(`right`),L=y.useRef(0),R=y.useMemo(()=>m?[w,...O.map(e=>({current:e}))]:[],[w,O,m]),z=m?fc:y.Fragment,B=m?{as:Uc,allowPinchZoom:!0,shards:R}:void 0,ee=mc(e=>{let t=N.current+e,n=x().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=cl(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;function s(e){N.current=e,window.clearTimeout(M.current),e!==``&&(M.current=window.setTimeout(()=>s(``),1e3))}mc(s,`updateSearch`),s(t),o&&setTimeout(()=>o.focus())},`handleTypeaheadSearch`);y.useEffect(()=>()=>window.clearTimeout(M.current),[]),tr();let V=y.useCallback(e=>I.current===F.current?.side&&ul(e,F.current?.area),[]);return(0,K.jsx)(Rc,{scope:n,searchRef:N,onItemEnter:y.useCallback(e=>{V(e)&&e.preventDefault()},[V]),onItemLeave:y.useCallback(e=>{V(e)||(w.current?.focus(),C(null))},[V]),onTriggerLeave:y.useCallback(e=>{V(e)&&e.preventDefault()},[V]),pointerGraceTimerRef:P,onPointerGraceIntentChange:y.useCallback(e=>{F.current=e},[]),children:(0,K.jsx)(ur,{registry:A?k:null,children:(0,K.jsx)(z,{...B,children:(0,K.jsx)(cr,{asChild:!0,trapped:i,branches:O,onMountAutoFocus:J(a,e=>{e.preventDefault(),w.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,K.jsx)(Un,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:(0,K.jsx)(Vo,{asChild:!0,...b,dir:_.dir,orientation:`vertical`,loop:r,currentTabStopId:S,onCurrentTabStopIdChange:C,onEntryFocus:J(c,e=>{_.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,K.jsx)(ro,{role:`menu`,"aria-orientation":`vertical`,"data-state":rl(g.open),"data-radix-menu-content":``,dir:_.dir,...v,...h,ref:j,style:{outline:`none`,...h.style},onKeyDown:J(h.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&ee(e.key));let i=w.current;if(e.target!==i||!vc.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);_c.includes(e.key)&&a.reverse(),ol(a)}),onBlur:J(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(M.current),N.current=``)}),onPointerMove:J(e.onPointerMove,dl(e=>{let t=e.target,n=L.current!==e.clientX;if(e.currentTarget.contains(t)&&n){let t=e.clientX>L.current?`right`:`left`;I.current=t,L.current=e.clientX}}))})})})})})})})},`MenuContentImpl`)),Gc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(Y.div,{...r,ref:t})},`MenuLabel`)),Kc=`MenuItem`,qc=`menu.itemSelect`,Jc=y.forwardRef(mc(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=y.useRef(null),o=Ac(Kc,e.__scopeMenu),s=zc(Kc,e.__scopeMenu),c=T(t,a),l=y.useRef(!1),u=mc(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(qc,{bubbles:!0,cancelable:!0});e.addEventListener(qc,e=>r?.(e),{once:!0}),fn(e,t),t.defaultPrevented?l.current=!1:o.onClose()}},`handleSelect`);return(0,K.jsx)(Yc,{...i,ref:c,disabled:n,onClick:J(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:J(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:J(e.onKeyDown,e=>{n||e.target!==e.currentTarget||(s.searchRef.current===``||e.key!==` `)&&hc.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),Yc=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=zc(Kc,n),s=Ec(n),c=y.useRef(null),l=T(t,c),[u,d]=y.useState(!1),[f,p]=y.useState(``);return y.useEffect(()=>{let e=c.current;e&&p((e.textContent??``).trim())},[a.children]),(0,K.jsx)(bc.ItemSlot,{scope:n,disabled:r,textValue:i??f,children:(0,K.jsx)(Wo,{asChild:!0,...s,focusable:!r,children:(0,K.jsx)(Y.div,{role:`menuitem`,"data-highlighted":u?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:l,onPointerMove:J(e.onPointerMove,dl(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:J(e.onPointerLeave,dl(e=>o.onItemLeave(e))),onFocus:J(e.onFocus,()=>d(!0)),onBlur:J(e.onBlur,()=>d(!1))})})})},`MenuItemImpl`)),[Xc,Zc]=Cc(`MenuRadioGroup`,{value:void 0,onValueChange:mc(()=>{},`onValueChange`)}),[Qc,$c]=Cc(`MenuItemIndicator`,{checked:!1}),el=y.forwardRef(mc(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(Y.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),[tl,nl]=Cc(`MenuSub`);function rl(e){return e?`open`:`closed`}mc(rl,`getOpenState`);function il(e){return e===`indeterminate`}mc(il,`isIndeterminate`);function al(e){return il(e)?`indeterminate`:e?`checked`:`unchecked`}mc(al,`getCheckedState`);function ol(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}mc(ol,`focusFirst`);function sl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}mc(sl,`wrapArray`);function cl(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=sl(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}mc(cl,`getNextMatch`);function ll(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}mc(ll,`isPointInPolygon`);function ul(e,t){return t?ll({x:e.clientX,y:e.clientY},t):!1}mc(ul,`isPointerInGraceArea`);function dl(e){return t=>t.pointerType===`mouse`?e(t):void 0}mc(dl,`whenMouse`);var fl=Object.defineProperty,pl=(e,t)=>fl(e,`name`,{value:t,configurable:!0}),ml=`DropdownMenu`,[hl,gl]=Kt(ml,[wc]),_l=wc(),[vl,yl]=hl(ml),bl=pl(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=_l(t),l=y.useRef(null),[u,d]=rn({prop:i,defaultProp:a??!1,onChange:o,caller:ml});return(0,K.jsx)(vl,{scope:t,triggerId:Or(),triggerRef:l,contentId:Or(),open:u,onOpenChange:d,onOpenToggle:y.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,K.jsx)(jc,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})},`DropdownMenu`),xl=`DropdownMenuTrigger`,Sl=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=yl(xl,n),o=_l(n),s=T(t,a.triggerRef);return(0,K.jsx)(Mc,{asChild:!0,...o,children:(0,K.jsx)(Y.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:s,onPointerDown:J(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:J(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})},`DropdownMenuTrigger`)),Cl=pl(e=>{let{__scopeDropdownMenu:t,...n}=e,r=_l(t);return(0,K.jsx)(Ic,{...r,...n})},`DropdownMenuPortal`),wl=`DropdownMenuContent`,Tl=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=yl(wl,n),a=_l(n),o=y.useRef(!1);return(0,K.jsx)(Bc,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:J(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:J(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuContent`)),El=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=_l(n);return(0,K.jsx)(Gc,{...i,...r,ref:t})},`DropdownMenuLabel`)),Dl=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=_l(n);return(0,K.jsx)(Jc,{...i,...r,ref:t})},`DropdownMenuItem`)),Ol=y.forwardRef(pl(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=_l(n);return(0,K.jsx)(el,{...i,...r,ref:t})},`DropdownMenuSeparator`)),kl=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function Al(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:kl(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var jl=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},Ml=e=>{let t=jl(e);return t.charAt(0).toUpperCase()+t.slice(1)},Nl=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Pl={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Fl(e){return e!=null}function Il(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Pl.width,a=e.size??e.height??Pl.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?Nl(...c):Nl(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Pl[`stroke-width`])*Number(e.size??e.width??Pl.width)/Number(t.size??t.width??Pl.width):t.strokeWidth??Pl[`stroke-width`];return[`svg`,{...Object.entries(Pl).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&Fl(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&Fl(t.width)&&{[r(`width`)]:t.width},...`height`in t&&Fl(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function Ll(e,t={}){return Il(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var Rl=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},zl=(0,y.createContext)({}),Bl=()=>(0,y.useContext)(zl),Vl=(0,y.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:_=`currentColor`,className:v=``}=Bl()??{},b=!!c||Rl(d),[x,S,C=[]]=Ll(u,{color:e??_,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:Nl(v,s),hasA11yProp:b,attributes:d});return(0,y.createElement)(x,{ref:f,...S},[...C.map(([e,t])=>(0,y.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function Z(e,t=[],n=[]){let r=typeof e==`string`?Al(e,t,n):e,i=(0,y.forwardRef)(({className:e,...t},n)=>(0,y.createElement)(Vl,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=Ml(r.name)),i}var Hl={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Hl.node;var Ul=Z(Hl),Wl={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};Wl.node;var Gl=Z(Wl),Kl={name:`arrow-left-right`,size:24,node:[[`path`,{d:`M8 3 4 7l4 4`,key:`9rb6wj`}],[`path`,{d:`M4 7h16`,key:`6tx8e3`}],[`path`,{d:`m16 21 4-4-4-4`,key:`siv7j2`}],[`path`,{d:`M20 17H4`,key:`h6l3hr`}]]};Kl.node;var ql=Z(Kl),Jl={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};Jl.node;var Yl=Z(Jl),Xl={name:`book-open`,size:24,node:[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]};Xl.node;var Zl=Z(Xl),Ql={name:`bot`,size:24,node:[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]};Ql.node;var $l=Z(Ql),eu={name:`chart-column`,size:24,node:[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-3`]};eu.node;var tu=Z(eu),nu={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]};nu.node;var ru=Z(nu),iu={name:`check-check`,size:24,node:[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]};iu.node;var au=Z(iu),ou={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]};ou.node;var su=Z(ou),cu={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};cu.node;var lu=Z(cu),uu={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};uu.node;var du=Z(uu),fu={name:`chevron-up`,size:24,node:[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]};fu.node;var pu=Z(fu),mu={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};mu.node;var hu=Z(mu),gu={name:`circle-check-big`,size:24,node:[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],aliases:[`check-circle`]};gu.node;var _u=Z(gu),vu={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};vu.node;var yu=Z(vu),bu={name:`circle-play`,size:24,node:[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],aliases:[`play-circle`]};bu.node;var xu=Z(bu),Su={name:`circle-x`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-circle`]};Su.node;var Cu=Z(Su),wu={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]};wu.node;var Tu=Z(wu),Eu={name:`cloud`,size:24,node:[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`,key:`p7xjir`}]]};Eu.node;var Du=Z(Eu),Ou={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};Ou.node;var ku=Z(Ou),Au={name:`container`,size:24,node:[[`path`,{d:`M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z`,key:`1t2lqe`}],[`path`,{d:`M10 21.9V14L2.1 9.1`,key:`o7czzq`}],[`path`,{d:`m10 14 11.9-6.9`,key:`zm5e20`}],[`path`,{d:`M14 19.8v-8.1`,key:`159ecu`}],[`path`,{d:`M18 17.5V9.4`,key:`11uown`}]]};Au.node;var ju=Z(Au),Mu={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};Mu.node;var Nu=Z(Mu),Pu={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Pu.node;var Fu=Z(Pu),Iu={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};Iu.node;var Lu=Z(Iu),Ru={name:`ellipsis-vertical`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]],aliases:[`more-vertical`]};Ru.node;var zu=Z(Ru),Bu={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};Bu.node;var Vu=Z(Bu),Hu={name:`file-text`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]};Hu.node;var Uu=Z(Hu),Wu={name:`folder-open`,size:24,node:[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]};Wu.node;var Gu=Z(Wu),Ku={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};Ku.node;var qu=Z(Ku),Ju={name:`grid-3x3`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]],aliases:[`grid`,`grid-3-x-3`]};Ju.node;var Yu=Z(Ju),Xu={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};Xu.node;var Zu=Z(Xu),Qu={name:`image`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]};Qu.node;var $u=Z(Qu),ed={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};ed.node;var td=Z(ed),nd={name:`key`,size:24,node:[[`path`,{d:`m2 21 9.6-9.6`,key:`9l79m3`}],[`path`,{d:`m7.5 15.5 2.3 2.3a1 1 0 0 1 0 1.4l-2.1 2.1a1 1 0 0 1-1.4 0L4 19`,key:`fw8biw`}],[`circle`,{cx:`15.5`,cy:`7.5`,r:`5.5`,key:`4wxmhb`}]]};nd.node;var rd=Z(nd),id={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};id.node;var ad=Z(id),od={name:`lightbulb`,size:24,node:[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`,key:`1gvzjb`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]};od.node;var sd=Z(od),cd={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};cd.node;var ld=Z(cd),ud={name:`lock`,size:24,node:[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]};ud.node;var dd=Z(ud),fd={name:`map`,size:24,node:[[`path`,{d:`M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z`,key:`169xi5`}],[`path`,{d:`M15 5.764v15`,key:`1pn4in`}],[`path`,{d:`M9 3.236v15`,key:`1uimfh`}]]};fd.node;var pd=Z(fd),md={name:`maximize`,size:24,node:[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]};md.node;var hd=Z(md),gd={name:`message-square`,size:24,node:[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]};gd.node;var _d=Z(gd),vd={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};vd.node;var yd=Z(vd),bd={name:`music`,size:24,node:[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]};bd.node;var xd=Z(bd),Sd={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};Sd.node;var Cd=Z(Sd),wd={name:`panel-right-open`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]};wd.node;var Td=Z(wd),Ed={name:`paperclip`,size:24,node:[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]};Ed.node;var Dd=Z(Ed),Od={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};Od.node;var kd=Z(Od),Ad={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};Ad.node;var jd=Z(Ad),Md={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};Md.node;var Nd=Z(Md),Pd={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};Pd.node;var Fd=Z(Pd),Id={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};Id.node;var Ld=Z(Id),Rd={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};Rd.node;var zd=Z(Rd),Bd={name:`send-horizontal`,size:24,node:[[`path`,{d:`M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z`,key:`117uat`}],[`path`,{d:`M6 12h16`,key:`s4cdu5`}]],aliases:[`send-horizonal`]};Bd.node;var Vd=Z(Bd),Hd={name:`send`,size:24,node:[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]};Hd.node;var Ud=Z(Hd),Wd={name:`server-off`,size:24,node:[[`path`,{d:`M7 2h13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-5`,key:`bt2siv`}],[`path`,{d:`M10 10 2.5 2.5C2 2 2 2.5 2 5v3a2 2 0 0 0 2 2h6z`,key:`1hjrv1`}],[`path`,{d:`M22 17v-1a2 2 0 0 0-2-2h-1`,key:`1iynyr`}],[`path`,{d:`M4 14a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16.5l1-.5.5.5-8-8H4z`,key:`161ggg`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]};Wd.node;var Gd=Z(Wd),Kd={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};Kd.node;var qd=Z(Kd),Jd={name:`shuffle`,size:24,node:[[`path`,{d:`m18 14 4 4-4 4`,key:`10pe0f`}],[`path`,{d:`m18 2 4 4-4 4`,key:`pucp1d`}],[`path`,{d:`M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22`,key:`1ailkh`}],[`path`,{d:`M2 6h1.972a4 4 0 0 1 3.6 2.2`,key:`km57vx`}],[`path`,{d:`M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45`,key:`os18l9`}]]};Jd.node;var Yd=Z(Jd),Xd={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]};Xd.node;var Zd=Z(Xd),Qd={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};Qd.node;var $d=Z(Qd),ef={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};ef.node;var tf=Z(ef),nf={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};nf.node;var rf=Z(nf),af={name:`upload`,size:24,node:[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]};af.node;var of=Z(af),sf={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};sf.node;var cf=Z(sf),lf={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};lf.node;var uf=Z(lf),df={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};df.node;var ff=Z(df),pf={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};pf.node;var mf=Z(pf),hf={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};hf.node;var gf=Z(hf);function _f({...e}){return(0,K.jsx)(bl,{"data-slot":`dropdown-menu`,...e})}function vf({...e}){return(0,K.jsx)(Sl,{"data-slot":`dropdown-menu-trigger`,...e})}function yf({className:e,sideOffset:t=4,...n}){return(0,K.jsx)(Cl,{children:(0,K.jsx)(Tl,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:jt(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md`,e),...n})})}function bf({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(Dl,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:jt(`focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function xf({className:e,inset:t,...n}){return(0,K.jsx)(El,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:jt(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function Sf({className:e,...t}){return(0,K.jsx)(Ol,{"data-slot":`dropdown-menu-separator`,className:jt(`bg-border -mx-1 my-1 h-px`,e),...t})}function Cf({size:e=`md`,className:t}){return(0,K.jsx)(ld,{className:jt(`animate-spin`,{"h-4 w-4":e===`sm`,"h-6 w-6":e===`md`,"h-8 w-8":e===`lg`},t)})}var wf=e=>e===`workflow`?uf:$l;function Tf({agents:e,workflows:t,entities:n,selectedItem:r,onSelect:i,onBrowseGallery:a,isLoading:o=!1}){let[s,c]=(0,y.useState)(!1),l=n||[...e,...t],u=e=>{i(e),c(!1)},d=r?wf(r.type):$l,f=r?.name||r?.id||`Select Agent or Workflow`,p=r?.metadata?.lazy_loaded!==!1;return(0,K.jsxs)(_f,{open:s,onOpenChange:c,children:[(0,K.jsx)(vf,{asChild:!0,children:(0,K.jsx)(q,{variant:`outline`,className:`w-64 justify-between font-mono text-sm`,disabled:o,children:o?(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Cf,{size:`sm`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Loading...`})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,K.jsx)(d,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsx)(`span`,{className:`truncate`,children:f}),r&&!p&&(0,K.jsx)(ld,{className:`h-3 w-3 text-muted-foreground animate-spin ml-auto flex-shrink-0`})]}),(0,K.jsx)(su,{className:`h-4 w-4 opacity-50`})]})})}),(0,K.jsxs)(yf,{className:`w-80 font-mono`,children:[(()=>{let e=l.filter(e=>e.type===`workflow`),t=l.filter(e=>e.type===`agent`),n=l[0]?.type;return(0,K.jsxs)(K.Fragment,{children:[n===`workflow`&&e.length>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(xf,{className:`flex items-center gap-2`,children:[(0,K.jsx)(uf,{className:`h-4 w-4`}),`Workflows (`,e.length,`)`]}),e.map(e=>{let t=e.metadata?.lazy_loaded!==!1;return(0,K.jsx)(bf,{className:`cursor-pointer group`,onClick:()=>u(e),children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,K.jsx)(uf,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium block`,children:e.name||e.id}),t&&e.description&&(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]})]})},e.id)})]}),e.length>0&&t.length>0&&(0,K.jsx)(Sf,{}),t.length>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(xf,{className:`flex items-center gap-2`,children:[(0,K.jsx)($l,{className:`h-4 w-4`}),`Agents (`,t.length,`)`]}),t.map(e=>{let t=e.metadata?.lazy_loaded!==!1;return(0,K.jsx)(bf,{className:`cursor-pointer group`,onClick:()=>u(e),children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,K.jsx)($l,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium block`,children:e.name||e.id}),t&&e.description&&(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]})]})},e.id)})]}),n===`agent`&&e.length>0&&(0,K.jsxs)(K.Fragment,{children:[t.length>0&&(0,K.jsx)(Sf,{}),(0,K.jsxs)(xf,{className:`flex items-center gap-2`,children:[(0,K.jsx)(uf,{className:`h-4 w-4`}),`Workflows (`,e.length,`)`]}),e.map(e=>{let t=e.metadata?.lazy_loaded!==!1;return(0,K.jsx)(bf,{className:`cursor-pointer group`,onClick:()=>u(e),children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,K.jsx)(uf,{className:`h-4 w-4 flex-shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`truncate font-medium block`,children:e.name||e.id}),t&&e.description&&(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.description})]})]})},e.id)})]})]})})(),l.length===0&&(0,K.jsx)(bf,{disabled:!0,children:(0,K.jsx)(`div`,{className:`text-center text-muted-foreground py-2`,children:o?`Loading agents and workflows...`:`No agents or workflows found`})}),(0,K.jsx)(Sf,{}),(0,K.jsxs)(bf,{className:`cursor-pointer text-primary`,onClick:()=>{a?.(),c(!1)},children:[(0,K.jsx)(jd,{className:`h-4 w-4 mr-2`}),`Browse Gallery`]})]})]})}var Ef=(e,t,n,r,i,a,o,s)=>{let c=document.documentElement,l=[`light`,`dark`];function u(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n=e===`class`,r=n&&a?i.map(e=>a[e]||e):i;n?(c.classList.remove(...r),c.classList.add(a&&a[t]?a[t]:t)):c.setAttribute(e,t)}),d(t)}function d(e){s&&l.includes(e)&&(c.style.colorScheme=e)}function f(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}if(r)u(r);else try{let e=localStorage.getItem(t)||n;u(o&&e===`system`?f():e)}catch{}},Df=[`light`,`dark`],Of=`(prefers-color-scheme: dark)`,kf=typeof window>`u`,Af=y.createContext(void 0),jf={setTheme:e=>{},themes:[]},Mf=()=>y.useContext(Af)??jf,Nf=e=>y.useContext(Af)?y.createElement(y.Fragment,null,e.children):y.createElement(Ff,{...e}),Pf=[`light`,`dark`],Ff=({forcedTheme:e,disableTransitionOnChange:t=!1,enableSystem:n=!0,enableColorScheme:r=!0,storageKey:i=`theme`,themes:a=Pf,defaultTheme:o=n?`system`:`light`,attribute:s=`data-theme`,value:c,children:l,nonce:u,scriptProps:d})=>{let[f,p]=y.useState(()=>Lf(i,o)),[m,h]=y.useState(()=>f===`system`?zf():f),g=c?Object.values(c):a,_=y.useCallback(e=>{let i=e;if(!i)return;e===`system`&&n&&(i=zf());let a=c?c[i]:i,l=t?Rf(u):null,d=document.documentElement,f=e=>{e===`class`?(d.classList.remove(...g),a&&d.classList.add(a)):e.startsWith(`data-`)&&(a?d.setAttribute(e,a):d.removeAttribute(e))};if(Array.isArray(s)?s.forEach(f):f(s),r){let e=Df.includes(o)?o:null,t=Df.includes(i)?i:e;d.style.colorScheme=t}l?.()},[u]),v=y.useCallback(e=>{let t=typeof e==`function`?e(f):e;p(t);try{localStorage.setItem(i,t)}catch{}},[f]),b=y.useCallback(t=>{let r=zf(t);h(r),f===`system`&&n&&!e&&_(`system`)},[f,e]);y.useEffect(()=>{let e=window.matchMedia(Of);return e.addListener(b),b(e),()=>e.removeListener(b)},[b]),y.useEffect(()=>{let e=e=>{e.key===i&&(e.newValue?p(e.newValue):v(o))};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[v]),y.useEffect(()=>{_(e??f)},[e,f]);let x=y.useMemo(()=>({theme:f,setTheme:v,forcedTheme:e,resolvedTheme:f===`system`?m:f,themes:n?[...a,`system`]:a,systemTheme:n?m:void 0}),[f,v,e,m,n,a]);return y.createElement(Af.Provider,{value:x},y.createElement(If,{forcedTheme:e,storageKey:i,attribute:s,enableSystem:n,enableColorScheme:r,defaultTheme:o,value:c,themes:a,nonce:u,scriptProps:d}),l)},If=y.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:a,value:o,themes:s,nonce:c,scriptProps:l})=>{let u=JSON.stringify([n,t,a,e,s,o,r,i]).slice(1,-1);return y.createElement(`script`,{...l,suppressHydrationWarning:!0,nonce:typeof window>`u`?c:``,dangerouslySetInnerHTML:{__html:`(${Ef.toString()})(${u})`}})}),Lf=(e,t)=>{if(kf)return;let n;try{n=localStorage.getItem(e)||void 0}catch{}return n||t},Rf=e=>{let t=document.createElement(`style`);return e&&t.setAttribute(`nonce`,e),t.appendChild(document.createTextNode(`*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`)),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},zf=e=>(e||=window.matchMedia(Of),e.matches?`dark`:`light`);function Bf(){let{setTheme:e}=Mf();return(0,K.jsxs)(_f,{children:[(0,K.jsx)(vf,{asChild:!0,children:(0,K.jsxs)(q,{variant:`ghost`,size:`sm`,children:[(0,K.jsx)($d,{className:`h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0`}),(0,K.jsx)(yd,{className:`absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Toggle theme`})]})}),(0,K.jsxs)(yf,{align:`end`,children:[(0,K.jsx)(bf,{onClick:()=>e(`light`),children:`Light`}),(0,K.jsx)(bf,{onClick:()=>e(`dark`),children:`Dark`}),(0,K.jsx)(bf,{onClick:()=>e(`system`),children:`System`})]})]})}var Vf,Hf,Uf=o((()=>{Vf=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Hf=(e=>e?Vf(e):Vf)}));function Wf(e,t=Kf){let n=Gf.useSyncExternalStore(e.subscribe,Gf.useCallback(()=>t(e.getState()),[e,t]),()=>t(e.getInitialState()));return Gf.useDebugValue(n),n}var Gf,Kf,qf,Jf,Yf=o((()=>{Gf=u(f(),1),Uf(),Kf=e=>e,qf=e=>{let t=Hf(e),n=e=>Wf(t,e);return Object.assign(n,t),n},Jf=(e=>e?qf(e):qf)})),Xf=o((()=>{Uf(),Yf()}));function Zf(e){if(!e)return;let t=e.split(` +`),n=t.findIndex(e=>e.includes(`api.setState`));if(n<0)return;let r=t[n+1]?.trim()||``;return ip.exec(r)?.[1]||ap.exec(r)?.[1]}function Qf(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var $f,ep,tp,np,rp,ip,ap,op,sp,cp,lp,up,dp,fp=o((()=>{$f=e=>!!e.dispatchFromDevtools&&typeof e.dispatch==`function`,ep=new Map,tp=e=>{let t=ep.get(e);return t?Object.fromEntries(Object.entries(t.stores).map(([e,t])=>[e,t.getState()])):{}},np=(e,t,n)=>{if(e===void 0)return{type:`untracked`,connection:t.connect(n)};let r=ep.get(n.name);if(r)return{type:`tracked`,store:e,...r};let i={connection:t.connect(n),stores:{}};return ep.set(n.name,i),{type:`tracked`,store:e,...i}},rp=(e,t,n)=>{if(t===void 0)return;let r=ep.get(e);r?.stores[t]===n&&(delete r.stores[t],Object.keys(r.stores).length===0&&ep.delete(e))},ip=/^at (?:new |async )?(.+?) \(/,ap=/^([^@]+)@/,op=(e,t={})=>(n,r,i)=>{let{enabled:a,anonymousActionType:o,store:s,...c}=t,l;try{l=(a??!1)&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!l)return e(n,r,i);let{connection:u,...d}=np(s,l,c),f=!0;i.setState=((e,t,a)=>{let l=n(e,t);if(!f)return l;let d=a===void 0?{type:o||Zf(Error().stack)||`anonymous`}:typeof a==`string`?{type:a}:a;return s===void 0?(u?.send(d,r()),l):(u?.send({...d,type:`${s}/${d.type}`},{...tp(c.name),[s]:i.getState()}),l)});let p;i.devtools={cleanup:()=>{p?.(),p=void 0,rp(c.name,s,i),(s===void 0||!ep.has(c.name))&&u&&typeof u.unsubscribe==`function`&&u.unsubscribe()}};let m=(...e)=>{let t=f;f=!1,n(...e),f=t},h=e(i.setState,r,i);if(d.type===`untracked`?u?.init(h):(d.stores[d.store]=i,u?.init(Object.fromEntries(Object.entries(d.stores).map(([e,t])=>[e,e===d.store?h:t.getState()])))),$f(i)){let e=i.dispatch;i.dispatch=(...t)=>{e(...t)}}return p=u.subscribe(e=>{let t=typeof c.serialize==`object`?c.serialize.reviver:void 0;switch(e.type){case`ACTION`:if(typeof e.payload!=`string`){console.error(`[zustand devtools middleware] Unsupported action format`);return}return cp(e.payload,t,e=>{if(e.type===`__setState`){if(s===void 0){m(e.state);return}Object.keys(e.state).length!==1&&console.error(` [zustand devtools middleware] Unsupported __setState action format. When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(), and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } } - `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}$f(i)&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(tp(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(tp(c.name));case`ROLLBACK`:return cp(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(tp(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return cp(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},sp=op,cp=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},lp=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return lp(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return lp(t)(e)}}}},up=(e,t)=>(n,r,i)=>{let a={storage:Qf(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=0,c=new Set,l=new Set,u=a.storage;if(!u)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let d=()=>{let e=a.partialize({...r()});return u.setItem(a.name,{state:e,version:a.version})},f=i.setState;i.setState=(e,t)=>(f(e,t),d());let p=e((...e)=>(n(...e),d()),r,i);i.getInitialState=()=>p;let m,h=()=>{if(!u)return;let e=++s;o=!1,c.forEach(e=>e(r()??p));let t=a.onRehydrateStorage?.call(a,r()??p)||void 0;return lp(u.getItem.bind(u))(a.name).then(e=>{if(e){if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state]}return[!1,void 0]}).then(t=>{if(e!==s)return;let[i,o]=t;if(m=a.merge(o,r()??p),n(m,!0),i)return d()}).then(()=>{e===s&&(t?.(r(),void 0),m=r(),o=!0,l.forEach(e=>e(m)))}).catch(n=>{e===s&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(u=e.storage)},clearStorage:()=>{++s,u?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(l.add(e),()=>{l.delete(e)})},a.skipHydration||h(),m||p},dp=up}));function pp(e){if(e.type!==`response.output_text.delta`||!(`delta`in e)||typeof e.delta!=`string`||e.delta.length<=hp)return e;let t=e.delta.length-hp;return{...e,delta:`${e.delta.slice(0,hp)}\n...[${t} chars omitted from debug view]`}}var mp,hp,Q,gp=o((()=>{Xf(),fp(),mp=1e3,hp=2048,Q=Jf()(sp(dp(e=>({agents:[],workflows:[],entities:[],selectedAgent:void 0,isLoadingEntities:!0,entityError:null,currentConversation:void 0,availableConversations:[],chatItems:[],isStreaming:!1,isSubmitting:!1,loadingConversations:!1,inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},pendingApprovals:[],currentSession:void 0,availableSessions:[],sessionCheckpoints:[],loadingSessions:!1,loadingCheckpoints:!1,showDebugPanel:!0,debugPanelMinimized:!1,debugPanelWidth:320,debugEvents:[],isResizing:!1,showToolCalls:!0,streamingEnabled:!0,debugPanelTab:`events`,debugTraceSubTab:`spans`,contextInspectorViewMode:`tokens`,contextInspectorCumulative:!1,showAboutModal:!1,showGallery:!1,showDeployModal:!1,showEntityNotFoundToast:!1,toasts:[],oaiMode:{enabled:!1,model:`gpt-4o-mini`},uiMode:`developer`,runtime:`python`,serverCapabilities:{instrumentation:!1,trace_retrieval:!1,openai_proxy:!1,deployment:!1},authRequired:!1,serverVersion:null,isDeploying:!1,deploymentLogs:[],lastDeployment:null,azureDeploymentEnabled:!1,setAgents:t=>e({agents:t}),setWorkflows:t=>e({workflows:t}),setEntities:t=>e({entities:t}),setSelectedAgent:t=>e({selectedAgent:t}),addAgent:t=>e(e=>({agents:[...e.agents,t]})),addWorkflow:t=>e(e=>({workflows:[...e.workflows,t]})),updateAgent:t=>e(e=>({agents:e.agents.map(e=>e.id===t.id?t:e),selectedAgent:e.selectedAgent?.id===t.id&&e.selectedAgent.type===`agent`?t:e.selectedAgent})),updateWorkflow:t=>e(e=>({workflows:e.workflows.map(e=>e.id===t.id?t:e),selectedAgent:e.selectedAgent?.id===t.id&&e.selectedAgent.type===`workflow`?t:e.selectedAgent})),removeEntity:t=>e(e=>({agents:e.agents.filter(e=>e.id!==t),workflows:e.workflows.filter(e=>e.id!==t),selectedAgent:e.selectedAgent?.id===t?void 0:e.selectedAgent})),setEntityError:t=>e({entityError:t}),setIsLoadingEntities:t=>e({isLoadingEntities:t}),setCurrentConversation:t=>e({currentConversation:t}),setAvailableConversations:t=>e({availableConversations:t}),setChatItems:t=>e({chatItems:t}),setIsStreaming:t=>e({isStreaming:t}),setIsSubmitting:t=>e({isSubmitting:t}),setLoadingConversations:t=>e({loadingConversations:t}),setInputValue:t=>e({inputValue:t}),setAttachments:t=>e({attachments:t}),updateConversationUsage:t=>e(e=>({conversationUsage:{total_tokens:e.conversationUsage.total_tokens+t,message_count:e.conversationUsage.message_count+1}})),setPendingApprovals:t=>e({pendingApprovals:t}),setCurrentSession:t=>e({currentSession:t}),setAvailableSessions:t=>e({availableSessions:t}),setSessionCheckpoints:t=>e({sessionCheckpoints:t}),setLoadingSessions:t=>e({loadingSessions:t}),setLoadingCheckpoints:t=>e({loadingCheckpoints:t}),addSession:t=>e(e=>({availableSessions:[t,...e.availableSessions]})),removeSession:t=>e(e=>({availableSessions:e.availableSessions.filter(e=>e.conversation_id!==t),currentSession:e.currentSession?.conversation_id===t?void 0:e.currentSession,sessionCheckpoints:e.currentSession?.conversation_id===t?[]:e.sessionCheckpoints})),setShowDebugPanel:t=>e({showDebugPanel:t}),setDebugPanelMinimized:t=>e({debugPanelMinimized:t}),setDebugPanelWidth:t=>e({debugPanelWidth:t}),setShowToolCalls:t=>e({showToolCalls:t}),setStreamingEnabled:t=>e({streamingEnabled:t}),addDebugEvent:t=>e(e=>{let n=pp(t),r=Math.floor(Date.now()/1e3),i=(e.debugEvents.length>0?e.debugEvents[e.debugEvents.length-1]:null)?._uiTimestamp??0,a=Math.max(r,i+1);return{debugEvents:[...e.debugEvents.length>=mp?e.debugEvents.slice(-999):e.debugEvents,{...n,_uiTimestamp:`created_at`in n&&n.created_at?n.created_at:a}]}}),clearDebugEvents:()=>e({debugEvents:[]}),setIsResizing:t=>e({isResizing:t}),setDebugPanelTab:t=>e({debugPanelTab:t}),setDebugTraceSubTab:t=>e({debugTraceSubTab:t}),setContextInspectorViewMode:t=>e({contextInspectorViewMode:t}),setContextInspectorCumulative:t=>e({contextInspectorCumulative:t}),setShowAboutModal:t=>e({showAboutModal:t}),setShowGallery:t=>e({showGallery:t}),setShowDeployModal:t=>e({showDeployModal:t}),setShowEntityNotFoundToast:t=>e({showEntityNotFoundToast:t}),addToast:t=>e(e=>({toasts:[...e.toasts,{id:`toast-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,type:t.type||`info`,duration:t.duration||4e3,...t}]})),removeToast:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)})),setOAIMode:t=>e(e=>t.enabled&&!e.oaiMode.enabled||!t.enabled&&e.oaiMode.enabled?(Object.keys(localStorage).forEach(e=>{e.startsWith(`devui_convs_`)&&localStorage.removeItem(e)}),{oaiMode:t,currentConversation:void 0,availableConversations:[],chatItems:[],inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},isStreaming:!1,isSubmitting:!1,pendingApprovals:[],debugEvents:[]}):{oaiMode:t}),toggleOAIMode:()=>e(e=>{let t=!e.oaiMode.enabled;return{oaiMode:{...e.oaiMode,enabled:t},currentConversation:void 0,availableConversations:[],chatItems:[],inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},isStreaming:!1,isSubmitting:!1,pendingApprovals:[],debugEvents:[]}}),setServerMeta:t=>e({uiMode:t.uiMode,runtime:t.runtime,serverCapabilities:t.capabilities,authRequired:t.authRequired,serverVersion:t.version||null}),startDeployment:()=>e({isDeploying:!0,deploymentLogs:[],lastDeployment:null}),addDeploymentLog:t=>e(e=>({deploymentLogs:[...e.deploymentLogs,t]})),setDeploymentResult:t=>e({isDeploying:!1,lastDeployment:t}),stopDeployment:()=>e({isDeploying:!1}),clearDeploymentState:()=>e({isDeploying:!1,deploymentLogs:[],lastDeployment:null}),setAzureDeploymentEnabled:t=>e({azureDeploymentEnabled:t}),selectEntity:t=>{e({selectedAgent:t,currentConversation:void 0,availableConversations:[],chatItems:[],inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},isStreaming:!1,isSubmitting:!1,pendingApprovals:[],currentSession:void 0,availableSessions:[],sessionCheckpoints:[],debugEvents:[]});let n=new URL(window.location.href);n.searchParams.set(`entity_id`,t.id),window.history.pushState({},``,n)}}),{name:`devui-storage`,partialize:e=>({showDebugPanel:e.showDebugPanel,debugPanelMinimized:e.debugPanelMinimized,debugPanelWidth:e.debugPanelWidth,showToolCalls:e.showToolCalls,streamingEnabled:e.streamingEnabled,oaiMode:e.oaiMode,azureDeploymentEnabled:e.azureDeploymentEnabled,debugPanelTab:e.debugPanelTab,debugTraceSubTab:e.debugTraceSubTab,contextInspectorViewMode:e.contextInspectorViewMode,contextInspectorCumulative:e.contextInspectorCumulative})}),{name:`DevUI Store`}))})),_p=c({useDevUIStore:()=>Q}),vp=o((()=>{gp()}));vp();function yp({agents:e,workflows:t,entities:n,selectedItem:r,onSelect:i,onBrowseGallery:a,isLoading:o=!1,onSettingsClick:s}){let{oaiMode:c,serverVersion:l}=Q();return(0,K.jsxs)(`header`,{className:`flex h-14 items-center gap-4 border-b px-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 font-semibold`,children:[(0,K.jsxs)(`svg`,{width:`24`,height:`24`,viewBox:`0 0 805 805`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`flex-shrink-0`,children:[(0,K.jsx)(`path`,{d:`M402.488 119.713C439.197 119.713 468.955 149.472 468.955 186.18C468.955 192.086 471.708 197.849 476.915 200.635L546.702 237.977C555.862 242.879 566.95 240.96 576.092 236.023C585.476 230.955 596.218 228.078 607.632 228.078C644.341 228.078 674.098 257.836 674.099 294.545C674.099 316.95 663.013 336.765 646.028 348.806C637.861 354.595 631.412 363.24 631.412 373.251V430.818C631.412 440.83 637.861 449.475 646.028 455.264C663.013 467.305 674.099 487.121 674.099 509.526C674.099 546.235 644.341 575.994 607.632 575.994C598.598 575.994 589.985 574.191 582.133 570.926C573.644 567.397 563.91 566.393 555.804 570.731L469.581 616.867C469.193 617.074 468.955 617.479 468.955 617.919C468.955 654.628 439.197 684.386 402.488 684.386C365.779 684.386 336.021 654.628 336.021 617.919C336.021 616.802 335.423 615.765 334.439 615.238L249.895 570C241.61 565.567 231.646 566.713 223.034 570.472C214.898 574.024 205.914 575.994 196.47 575.994C159.761 575.994 130.002 546.235 130.002 509.526C130.002 486.66 141.549 466.49 159.13 454.531C167.604 448.766 174.349 439.975 174.349 429.726V372.538C174.349 362.289 167.604 353.498 159.13 347.734C141.549 335.774 130.002 315.604 130.002 292.738C130.002 256.029 159.761 226.271 196.47 226.271C208.223 226.271 219.263 229.322 228.843 234.674C238.065 239.827 249.351 241.894 258.666 236.91L328.655 199.459C333.448 196.895 336.021 191.616 336.021 186.18C336.021 149.471 365.779 119.713 402.488 119.713ZM475.716 394.444C471.337 396.787 468.955 401.586 468.955 406.552C468.955 429.68 457.142 450.048 439.221 461.954C430.571 467.7 423.653 476.574 423.653 486.959V537.511C423.653 547.896 430.746 556.851 439.379 562.622C449 569.053 461.434 572.052 471.637 566.592L527.264 536.826C536.887 531.677 541.164 520.44 541.164 509.526C541.164 485.968 553.42 465.272 571.904 453.468C580.846 447.757 588.054 438.749 588.054 428.139V371.427C588.054 363.494 582.671 356.676 575.716 352.862C569.342 349.366 561.663 348.454 555.253 351.884L475.716 394.444ZM247.992 349.841C241.997 346.633 234.806 347.465 228.873 350.785C222.524 354.337 217.706 360.639 217.706 367.915V429.162C217.706 439.537 224.611 448.404 233.248 454.152C251.144 466.062 262.937 486.417 262.937 509.526C262.937 519.654 267.026 529.991 275.955 534.769L334.852 566.284C344.582 571.49 356.362 568.81 365.528 562.667C373.735 557.166 380.296 548.643 380.296 538.764V486.305C380.296 476.067 373.564 467.282 365.103 461.516C347.548 449.552 336.021 429.398 336.021 406.552C336.021 400.967 333.389 395.536 328.465 392.902L247.992 349.841ZM270.019 280.008C265.421 282.469 262.936 287.522 262.937 292.738C262.937 293.308 262.929 293.876 262.915 294.443C262.615 306.354 266.961 318.871 277.466 324.492L334.017 354.751C344.13 360.163 356.442 357.269 366.027 350.969C376.495 344.088 389.024 340.085 402.488 340.085C416.203 340.085 428.947 344.239 439.532 351.357C449.163 357.834 461.63 360.861 471.864 355.385L526.625 326.083C537.106 320.474 541.458 307.999 541.182 296.115C541.17 295.593 541.164 295.069 541.164 294.545C541.164 288.551 538.376 282.696 533.091 279.868L463.562 242.664C454.384 237.753 443.274 239.688 434.123 244.65C424.716 249.75 413.941 252.647 402.488 252.647C390.83 252.647 379.873 249.646 370.348 244.373C361.148 239.281 349.917 237.256 340.646 242.217L270.019 280.008Z`,fill:`url(#paint0_linear_510_1294)`}),(0,K.jsx)(`defs`,{children:(0,K.jsxs)(`linearGradient`,{id:`paint0_linear_510_1294`,x1:`255.628`,y1:`-34.3245`,x2:`618.483`,y2:`632.032`,gradientUnits:`userSpaceOnUse`,children:[(0,K.jsx)(`stop`,{stopColor:`#D59FFF`}),(0,K.jsx)(`stop`,{offset:`1`,stopColor:`#8562C5`})]})})]}),`Dev UI`,l&&(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground ml-1`,children:[`v`,l]}),c.enabled&&(0,K.jsxs)(Ft,{variant:`secondary`,className:`gap-1 ml-2`,children:[(0,K.jsx)(gf,{className:`h-3 w-3`}),`OpenAI: `,c.model]})]}),!c.enabled&&(0,K.jsx)(Tf,{agents:e,workflows:t,entities:n,selectedItem:r,onSelect:i,onBrowseGallery:a,isLoading:o}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,K.jsx)(Bf,{}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:e=>{e.stopPropagation(),s?.()},children:(0,K.jsx)(qd,{className:`h-4 w-4`})})]})]})}var bp=Object.defineProperty,xp=(e,t)=>bp(e,`name`,{value:t,configurable:!0});function Sp(e,[t,n]){return Math.min(n,Math.max(t,e))}xp(Sp,`clamp`);var Cp=Object.defineProperty,wp=(e,t)=>Cp(e,`name`,{value:t,configurable:!0});function Tp(e,t){return y.useReducer((e,n)=>t[e][n]??e,e)}wp(Tp,`useStateMachine`);var Ep={Auto:`auto`,Always:`always`,Scroll:`scroll`,Hover:`hover`},Dp={Vertical:`vertical`,Horizontal:`horizontal`},Op={LTR:`ltr`,RTL:`rtl`},kp=`ScrollArea`,[Ap,jp]=Kt(kp),[Mp,Np]=Ap(kp),Pp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,type:r=Ep.Hover,dir:i,scrollHideDelay:a=600,...o}=e,[s,c]=y.useState(null),[l,u]=y.useState(null),[d,f]=y.useState(null),[p,m]=y.useState(null),[h,g]=y.useState(null),[_,v]=y.useState(0),[b,x]=y.useState(0),[S,C]=y.useState(!1),[w,E]=y.useState(!1),D=T(t,c),O=jn(i);return(0,K.jsx)(Mp,{scope:n,type:r,dir:O,scrollHideDelay:a,scrollArea:s,viewport:l,onViewportChange:u,content:d,onContentChange:f,scrollbarX:p,onScrollbarXChange:m,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:h,onScrollbarYChange:g,scrollbarYEnabled:w,onScrollbarYEnabledChange:E,onCornerWidthChange:v,onCornerHeightChange:x,children:(0,K.jsx)(Y.div,{dir:O,...o,ref:D,style:{position:`relative`,"--radix-scroll-area-corner-width":_+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})},`ScrollArea`)),Fp=`ScrollAreaViewport`,Ip=j(Fp),Lp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,children:r,nonce:i,disableImplicitContentElement:a,...o}=e,s=Np(Fp,n),c=T(t,y.useRef(null),s.onViewportChange),l=y.isValidElement(r);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Rp,{nonce:i}),(0,K.jsx)(Y.div,{"data-radix-scroll-area-viewport":``,...o,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:a?r:l?(0,K.jsx)(Ip,{child:r,children:e=>(0,K.jsx)(Bp,{__scopeScrollArea:n,children:e})}):(0,K.jsx)(Ip,{children:(0,K.jsx)(Bp,{__scopeScrollArea:n,children:r})})})]})},`ScrollAreaViewport`)),Rp=y.memo(wp(function({nonce:e}){return(0,K.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:e})},`ScrollAreaViewportStyle`),(e,t)=>e.nonce===t.nonce),zp=`ScrollAreaContent`,Bp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,children:r,...i}=e,a=T(t,Np(zp,n).onContentChange);return(0,K.jsx)(Y.div,{...i,ref:a,style:{minWidth:`100%`,display:`table`,...e.style},children:r})},`ScrollAreaContent`)),Vp=`ScrollAreaScrollbar`,Hp=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Np(Vp,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===Dp.Horizontal;return y.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===Ep.Hover?(0,K.jsx)(Up,{...r,ref:t,forceMount:n}):i.type===Ep.Scroll?(0,K.jsx)(Wp,{...r,ref:t,forceMount:n}):i.type===Ep.Auto?(0,K.jsx)(Gp,{...r,ref:t,forceMount:n}):i.type===Ep.Always?(0,K.jsx)(Kp,{...r,ref:t,"data-state":`visible`}):null},`ScrollAreaScrollbar`)),Up=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Np(Vp,e.__scopeScrollArea),[a,o]=y.useState(!1);return y.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=wp(()=>{window.clearTimeout(t),o(!0)},`handlePointerEnter`),r=wp(()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)},`handlePointerLeave`);return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,K.jsx)(po,{present:n||a,children:(0,K.jsx)(Gp,{"data-state":a?`visible`:`hidden`,...r,ref:t})})},`ScrollAreaScrollbarHover`)),Wp=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Np(Vp,e.__scopeScrollArea),a=e.orientation===Dp.Horizontal,o=fm(()=>c(`SCROLL_END`),100),[s,c]=Tp(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return y.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),y.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=wp(()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r},`handleScroll`);return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,K.jsx)(po,{present:n||s!==`hidden`,children:(0,K.jsx)(Kp,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:J(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:J(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})},`ScrollAreaScrollbarScroll`)),Gp=y.forwardRef(wp(function(e,t){let n=Np(Vp,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=y.useState(!1),s=e.orientation===Dp.Horizontal,c=fm(()=>{if(n.viewport){let e=n.viewport.offsetWidth0&&l<1,onThumbChange:wp(e=>a.current=e,`onThumbChange`),onThumbPointerUp:wp(()=>o.current=0,`onThumbPointerUp`),onThumbPointerDown:wp(e=>o.current=e,`onThumbPointerDown`)};function d(e,t){return sm(e,o.current,s,t)}return wp(d,`getScrollPosition`),n===Dp.Horizontal?(0,K.jsx)(qp,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=cm(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===Dp.Vertical?(0,K.jsx)(Jp,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=cm(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null},`ScrollAreaScrollbarVisible`)),qp=y.forwardRef(wp(function(e,t){let{sizes:n,onSizesChange:r,...i}=e,a=Np(Vp,e.__scopeScrollArea),[o,s]=y.useState(),c=y.useRef(null),l=T(t,c,a.onScrollbarXChange);return y.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,K.jsx)(Zp,{"data-orientation":`horizontal`,...i,ref:l,sizes:n,style:{bottom:0,left:a.dir===Op.RTL?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===Op.LTR?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":om(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),um(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:im(o.paddingLeft),paddingEnd:im(o.paddingRight)}})}})},`ScrollAreaScrollbarX`)),Jp=y.forwardRef(wp(function(e,t){let{sizes:n,onSizesChange:r,...i}=e,a=Np(Vp,e.__scopeScrollArea),[o,s]=y.useState(),c=y.useRef(null),l=T(t,c,a.onScrollbarYChange);return y.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,K.jsx)(Zp,{"data-orientation":`vertical`,...i,ref:l,sizes:n,style:{top:0,right:a.dir===Op.LTR?0:void 0,left:a.dir===Op.RTL?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":om(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),um(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:im(o.paddingTop),paddingEnd:im(o.paddingBottom)}})}})},`ScrollAreaScrollbarY`)),[Yp,Xp]=Ap(Vp),Zp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:c,onDragScroll:l,onWheelScroll:u,onResize:d,...f}=e,p=Np(Vp,n),[m,h]=y.useState(null),g=T(t,h),_=y.useRef(null),v=y.useRef(``),b=p.viewport,x=r.content-r.viewport,S=Fn(u),C=Fn(c),w=fm(d,10);function E(e){if(_.current){let t=e.clientX-_.current.left,n=e.clientY-_.current.top;l({x:t,y:n})}}return wp(E,`handleDragScroll`),y.useEffect(()=>{let e=wp(e=>{let t=e.target;m?.contains(t)&&S(e,x)},`handleWheel`);return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[b,m,x,S]),y.useEffect(C,[r,C]),pm(m,w),pm(p.content,w),(0,K.jsx)(Yp,{scope:n,scrollbar:m,hasThumb:i,onThumbChange:Fn(a),onThumbPointerUp:Fn(o),onThumbPositionChange:C,onThumbPointerDown:Fn(s),children:(0,K.jsx)(Y.div,{...f,ref:g,style:{position:`absolute`,...f.style},onPointerDown:J(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=m.getBoundingClientRect(),v.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,p.viewport&&(p.viewport.style.scrollBehavior=`auto`),E(e))}),onPointerMove:J(e.onPointerMove,E),onPointerUp:J(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=v.current,p.viewport&&(p.viewport.style.scrollBehavior=``),_.current=null})})})},`ScrollAreaScrollbarImpl`)),Qp=`ScrollAreaThumb`,$p=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Xp(Qp,e.__scopeScrollArea);return(0,K.jsx)(po,{present:n||i.hasThumb,children:(0,K.jsx)(em,{ref:t,...r})})},`ScrollAreaThumb`)),em=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,style:r,...i}=e,a=Np(Qp,n),o=Xp(Qp,n),{onThumbPositionChange:s}=o,c=T(t,o.onThumbChange),l=y.useRef(void 0),u=fm(()=>{l.current&&=(l.current(),void 0)},100);return y.useEffect(()=>{let e=a.viewport;if(e){let t=wp(()=>{if(u(),!l.current){let t=dm(e,s);l.current=t,s()}},`handleScroll`);return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,u,s]),(0,K.jsx)(Y.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:J(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:J(e.onPointerUp,o.onThumbPointerUp)})},`ScrollAreaThumbImpl`)),tm=`ScrollAreaCorner`,nm=y.forwardRef(wp(function(e,t){let n=Np(tm,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==Ep.Scroll&&r?(0,K.jsx)(rm,{...e,ref:t}):null},`ScrollAreaCorner`)),rm=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,...r}=e,i=Np(tm,n),[a,o]=y.useState(0),[s,c]=y.useState(0),l=!!(a&&s),{onCornerWidthChange:u,onCornerHeightChange:d}=i;return pm(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),pm(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),y.useEffect(()=>()=>{u(0),d(0)},[u,d]),l?(0,K.jsx)(Y.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===Op.LTR?0:void 0,left:i.dir===Op.RTL?0:void 0,bottom:0,...e.style}}):null},`ScrollAreaCornerImpl`));function im(e){return e?parseInt(e,10):0}wp(im,`toInt`);function am(e,t){let n=e/t;return isNaN(n)?0:n}wp(am,`getThumbRatio`);function om(e){let t=am(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}wp(om,`getThumbSize`);function sm(e,t,n,r=Op.LTR){let i=om(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===Op.LTR?[0,u]:[u*-1,0];return lm([c,l],d)(e)}wp(sm,`getScrollPositionFromPointer`);function cm(e,t,n=Op.LTR){let r=om(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=Sp(e,n===Op.LTR?[0,o]:[o*-1,0]);return lm([0,o],[0,s])(c)}wp(cm,`getThumbOffsetFromScroll`);function lm(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}wp(lm,`linearScale`);function um(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)}return wp(i,`loop`),i(),()=>window.cancelAnimationFrame(r)},`addUnlinkedScrollListener`);function fm(e,t){let n=Fn(e),r=y.useRef(0);return y.useEffect(()=>()=>window.clearTimeout(r.current),[]),y.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}wp(fm,`useDebounceCallback`);function pm(e,t){let n=Fn(t);Jt(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}wp(pm,`useResizeObserver`);var mm=y.forwardRef(({className:e,children:t,...n},r)=>(0,K.jsxs)(Pp,{ref:r,className:jt(`relative overflow-hidden`,e),...n,children:[(0,K.jsx)(Lp,{className:`h-full w-full rounded-[inherit]`,children:t}),(0,K.jsx)(hm,{}),(0,K.jsx)(nm,{})]}));mm.displayName=Pp.displayName;var hm=y.forwardRef(({className:e,orientation:t=`vertical`,...n},r)=>(0,K.jsx)(Hp,{ref:r,orientation:t,className:jt(`flex touch-none select-none transition-colors`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent p-[1px]`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent p-[1px]`,e),...n,children:(0,K.jsx)($p,{className:`relative flex-1 rounded-full bg-border`})}));hm.displayName=Hp.displayName;var gm=Object.defineProperty,_m=(e,t)=>gm(e,`name`,{value:t,configurable:!0}),vm={Automatic:`automatic`,Manual:`manual`},ym=`Tabs`,[bm,xm]=Kt(ym,[Io]),Sm=Io(),[Cm,wm]=bm(ym),Tm=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:c=vm.Automatic,...l}=e,u=jn(s),[d,f]=rn({prop:r,onChange:i,defaultProp:a??``,caller:ym});return(0,K.jsx)(Cm,{scope:n,baseId:Or(),value:d,onValueChange:f,orientation:o,dir:u,activationMode:c,children:(0,K.jsx)(Y.div,{dir:u,"data-orientation":o,...l,ref:t})})},`Tabs`)),Em=`TabsList`,Dm=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,loop:r=!0,...i}=e,a=wm(Em,n),o=Sm(n);return(0,K.jsx)(Vo,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,K.jsx)(Y.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})},`TabsList`)),Om=`TabsTrigger`,km=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=wm(Om,n),s=Sm(n),c=Mm(o.baseId,r),l=Nm(o.baseId,r),u=r===o.value;return(0,K.jsx)(Wo,{asChild:!0,...s,focusable:!i,active:u,children:(0,K.jsx)(Y.button,{type:`button`,role:`tab`,"aria-selected":u,"aria-controls":l,"data-state":u?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:J(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?(e.currentTarget.focus(),o.onValueChange(r)):e.preventDefault()}),onKeyDown:J(e.onKeyDown,e=>{i||e.target!==e.currentTarget||[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:J(e.onFocus,()=>{let e=o.activationMode!==vm.Manual;!u&&!i&&e&&o.onValueChange(r)})})})},`TabsTrigger`)),Am=`TabsContent`,jm=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=wm(Am,n),c=Mm(s.baseId,r),l=Nm(s.baseId,r),u=r===s.value,d=y.useRef(u);return y.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,K.jsx)(po,{present:i||u,children:({present:n})=>(0,K.jsx)(Y.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:d.current?`0s`:void 0},children:n&&a})})},`TabsContent`));function Mm(e,t){return`${e}-trigger-${t}`}_m(Mm,`makeTriggerId`);function Nm(e,t){return`${e}-content-${t}`}_m(Nm,`makeContentId`);var Pm=Tm,Fm=y.forwardRef(({className:e,...t},n)=>(0,K.jsx)(Dm,{ref:n,className:jt(`inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground`,e),...t}));Fm.displayName=Dm.displayName;var Im=y.forwardRef(({className:e,...t},n)=>(0,K.jsx)(km,{ref:n,className:jt(`inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow`,e),...t}));Im.displayName=km.displayName;var Lm=y.forwardRef(({className:e,...t},n)=>(0,K.jsx)(jm,{ref:n,className:jt(`mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,e),...t}));Lm.displayName=jm.displayName;var Rm=Object.defineProperty,zm=(e,t)=>Rm(e,`name`,{value:t,configurable:!0}),Bm=`Checkbox`,[Vm,Hm]=Kt(Bm),[Um,Wm]=Vm(Bm);function Gm(e){let{__scopeCheckbox:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:l,value:u=`on`,internal_do_not_use_render:d}=e,[f,p]=rn({prop:n,defaultProp:i??!1,onChange:c,caller:Bm}),[m,h]=y.useState(null),[g,_]=y.useState(null),[v,b]=y.useState(null),x=!m||!!o||!!m.closest(`form`),S={checked:f,disabled:a,setChecked:p,control:m,setControl:h,name:s,form:o,value:u,userClick:v,onUserClick:b,required:l,defaultChecked:!eh(i)&&i,isFormControl:x,bubbleInput:g,setBubbleInput:_};return(0,K.jsx)(Um,{scope:t,...S,children:$m(d)?d(S):r})}zm(Gm,`CheckboxProvider`);var Km=`CheckboxTrigger`,qm=y.forwardRef(zm(function({__scopeCheckbox:e,onKeyDown:t,onClick:n,...r},i){let{control:a,value:o,disabled:s,checked:c,required:l,setControl:u,setChecked:d,onUserClick:f,isFormControl:p,bubbleInput:m}=Wm(Km,e),h=T(i,u),g=y.useRef(c);return y.useEffect(()=>{let e=a?.form;if(e){let t=zm(()=>d(g.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[a,d]),(0,K.jsx)(Y.button,{type:`button`,role:`checkbox`,"aria-checked":eh(c)?`mixed`:c,"aria-required":l,"data-state":th(c),"data-disabled":s?``:void 0,disabled:s,value:o,...r,ref:h,onKeyDown:J(t,e=>{e.key===`Enter`&&e.preventDefault()}),onClick:J(n,e=>{let t=e.isPropagationStopped();f({requestedChecked:eh(c)?!0:!c,hasConsumerStoppedPropagation:t}),d(e=>eh(e)?!0:!e),m&&p&&(t||e.stopPropagation())})})},`CheckboxTrigger`)),Jm=y.forwardRef(zm(function(e,t){let{__scopeCheckbox:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,K.jsx)(Gm,{__scopeCheckbox:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(qm,{...d,ref:t,__scopeCheckbox:n}),e&&(0,K.jsx)(Qm,{__scopeCheckbox:n})]})})},`Checkbox`)),Ym=`CheckboxIndicator`,Xm=y.forwardRef(zm(function(e,t){let{__scopeCheckbox:n,forceMount:r,...i}=e,a=Wm(Ym,n);return(0,K.jsx)(po,{present:r||eh(a.checked)||a.checked===!0,children:(0,K.jsx)(Y.span,{"data-state":th(a.checked),"data-disabled":a.disabled?``:void 0,...i,ref:t,style:{pointerEvents:`none`,...e.style}})})},`CheckboxIndicator`)),Zm=`CheckboxBubbleInput`,Qm=y.forwardRef(zm(function({__scopeCheckbox:e,onClick:t,...n},r){let{control:i,userClick:a,checked:o,defaultChecked:s,required:c,disabled:l,name:u,value:d,form:f,bubbleInput:p,setBubbleInput:m}=Wm(Zm,e),h=T(r,m),g=Va(i),_=y.useRef(!1),v=y.useRef(o),b=y.useRef(a),x=y.useRef(null);y.useEffect(()=>{let e=p;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set;if(!n)return;let r=v.current!==o;v.current=o;let i=a!==null&&a!==b.current;if(b.current=a,i)x.current=r?null:a,r&&(e.indeterminate=eh(o),n.call(e,!eh(o)&&o)),e.dispatchEvent(new Event(`click`,{bubbles:!a.hasConsumerStoppedPropagation}));else if(r){let t=x.current;x.current=null;let r=t?.requestedChecked===o;_.current=!0,e.indeterminate=eh(o),n.call(e,!eh(o)&&o),e.dispatchEvent(new Event(`click`,{bubbles:!(r&&t.hasConsumerStoppedPropagation)})),_.current=!1}},[p,o,a]);let S=y.useRef(!eh(o)&&o);return(0,K.jsx)(Y.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:s??S.current,required:c,disabled:l,name:u,value:d,form:f,...n,tabIndex:-1,ref:h,onClick:J(t,e=>{_.current&&e.stopPropagation()}),style:{...n.style,...g,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})},`CheckboxBubbleInput`));function $m(e){return typeof e==`function`}zm($m,`isFunction`);function eh(e){return e===`indeterminate`}zm(eh,`isIndeterminate`);function th(e){return eh(e)?`indeterminate`:e?`checked`:`unchecked`}zm(th,`getState`);function nh({className:e,...t}){return(0,K.jsx)(Jm,{"data-slot":`checkbox`,className:jt(`peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,K.jsx)(Xm,{"data-slot":`checkbox-indicator`,className:`flex items-center justify-center text-current transition-none`,children:(0,K.jsx)(ru,{className:`size-3.5`})})})}var rh=Object.defineProperty,ih=(e,t)=>rh(e,`name`,{value:t,configurable:!0}),ah=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),oh=y.forwardRef(ih(function(e,t){return(0,K.jsx)(Y.span,{...e,ref:t,style:{...ah,...e.style}})},`VisuallyHidden`)),sh=Object.defineProperty,ch=(e,t)=>sh(e,`name`,{value:t,configurable:!0}),[lh,uh]=Kt(`Tooltip`,[Ja]),dh=Ja(),fh=`TooltipProvider`,ph=700,mh=`tooltip.open`,[hh,gh]=lh(fh),_h=ch(e=>{let{__scopeTooltip:t,delayDuration:n=ph,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=y.useRef(!0),s=y.useRef(!1),c=y.useRef(0);return y.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,K.jsx)(hh,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:y.useCallback(()=>{r<=0||(window.clearTimeout(c.current),o.current=!1)},[r]),onClose:y.useCallback(()=>{r<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:s,onPointerInTransitChange:y.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),vh=`Tooltip`,[yh,bh]=lh(vh),xh=ch(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=gh(vh,e.__scopeTooltip),l=dh(t),[u,d]=y.useState(null),[f,p]=y.useState(void 0),m=Or(),h=y.useRef(0),g=o??c.disableHoverableContent,_=s??c.delayDuration,v=y.useRef(!1),[b,x]=rn({prop:r,defaultProp:i??!1,onChange:ch(e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(mh))):c.onClose(),a?.(e)},`onChange`),caller:vh}),S=y.useMemo(()=>b?v.current?`delayed-open`:`instant-open`:`closed`,[b]),C=y.useCallback(()=>{window.clearTimeout(h.current),h.current=0,v.current=!1,x(!0)},[x]),w=y.useCallback(()=>{window.clearTimeout(h.current),h.current=0,x(!1)},[x]),T=y.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{v.current=!0,x(!0),h.current=0},_)},[_,x]);y.useEffect(()=>()=>{h.current&&=(window.clearTimeout(h.current),0)},[]);let E=f??m;return(0,K.jsx)(Za,{...l,children:(0,K.jsx)(yh,{scope:t,contentId:E,setContentId:p,open:b,stateAttribute:S,trigger:u,onTriggerChange:d,onTriggerEnter:y.useCallback(()=>{c.isOpenDelayedRef.current?T():C()},[c.isOpenDelayedRef,T,C]),onTriggerLeave:y.useCallback(()=>{g?w():(window.clearTimeout(h.current),h.current=0)},[w,g]),onOpen:C,onClose:w,disableHoverableContent:g,children:n})})},`Tooltip`),Sh=`TooltipTrigger`,Ch=y.forwardRef(ch(function(e,t){let{__scopeTooltip:n,"aria-describedby":r,...i}=e,a=bh(Sh,n),o=gh(Sh,n),s=dh(n),c=T(t,y.useRef(null),a.onTriggerChange),l=y.useRef(!1),u=y.useRef(!1),d=y.useCallback(()=>l.current=!1,[]);return y.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,K.jsx)($a,{asChild:!0,...s,children:(0,K.jsx)(Y.button,{"aria-describedby":a.open?zh(r,a.contentId):r,"data-state":a.stateAttribute,...i,ref:c,onPointerMove:J(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!o.isPointerInTransitRef.current&&(a.onTriggerEnter(),u.current=!0)}),onPointerLeave:J(e.onPointerLeave,()=>{a.onTriggerLeave(),u.current=!1}),onPointerDown:J(e.onPointerDown,()=>{a.open&&a.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:J(e.onFocus,()=>{l.current||a.onOpen()}),onBlur:J(e.onBlur,a.onClose),onClick:J(e.onClick,a.onClose)})})},`TooltipTrigger`)),wh=`TooltipPortal`,[Th,Eh]=lh(wh,{forceMount:void 0}),Dh=ch(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=bh(wh,t);return(0,K.jsx)(Th,{scope:t,forceMount:n,children:(0,K.jsx)(po,{present:n||a.open,children:(0,K.jsx)(co,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),Oh=`TooltipContent`,kh=y.forwardRef(ch(function(e,t){let n=Eh(Oh,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=bh(Oh,e.__scopeTooltip);return(0,K.jsx)(po,{present:r||o.open,children:o.disableHoverableContent?(0,K.jsx)(Mh,{side:i,...a,ref:t}):(0,K.jsx)(Ah,{side:i,...a,ref:t})})},`TooltipContent`)),Ah=y.forwardRef(ch(function(e,t){let n=bh(Oh,e.__scopeTooltip),r=gh(Oh,e.__scopeTooltip),i=y.useRef(null),a=T(t,i),[o,s]=y.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=y.useCallback(()=>{s(null),d(!1)},[d]),p=y.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Ph(r,Nh(r,n.getBoundingClientRect())),a=Fh(t.getBoundingClientRect()),o=Lh([...i,...a]);s(o),d(!0)},[d]);return y.useEffect(()=>()=>f(),[f]),y.useEffect(()=>{if(c&&u){let e=ch(e=>p(e,u),`handleTriggerLeave`),t=ch(e=>p(e,c),`handleContentLeave`);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),y.useEffect(()=>{if(o){let e=ch(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!Ih(n,o);r?f():i&&(f(),l())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,K.jsx)(Mh,{...e,ref:a})},`TooltipContentHoverable`)),jh=j(`TooltipContent`),Mh=y.forwardRef(ch(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":i,id:a,onEscapeKeyDown:o,onPointerDownOutside:s,...c}=e,l=bh(Oh,n),u=dh(n),{onClose:d}=l,[f,p]=y.useState(null),m=T(t,p);fr(f),y.useEffect(()=>(document.addEventListener(mh,d),()=>document.removeEventListener(mh,d)),[d]),y.useEffect(()=>{if(l.trigger){let e=ch(e=>{e.target instanceof Node&&e.target.contains(l.trigger)&&d()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[l.trigger,d]);let{setContentId:h}=l;return Jt(()=>(h(a),()=>{h(void 0)}),[a,h]),(0,K.jsx)(Un,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:d,children:(0,K.jsxs)(ro,{"data-state":l.stateAttribute,role:i?void 0:`tooltip`,id:i?void 0:l.contentId,...u,...c,ref:m,style:{...c.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,K.jsx)(jh,{children:r}),i?(0,K.jsx)(oh,{id:l.contentId,role:`tooltip`,children:i}):null]})})},`TooltipContentImpl`));function Nh(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}ch(Nh,`getExitSideFromRect`);function Ph(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}ch(Ph,`getPaddedExitPoints`);function Fh(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}ch(Fh,`getPointsFromRect`);function Ih(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}ch(Ih,`isPointInPolygon`);function Lh(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Rh(t)}ch(Lh,`getHull`);function Rh(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}ch(Rh,`getHullPresorted`);function zh(...e){let t=new Set;for(let n of e)if(typeof n==`string`)for(let e of String(n).trim().split(/\s+/))e&&t.add(e);return t.size>0?Array.from(t).join(` `):void 0}ch(zh,`concatAriaDescribedby`);var Bh=_h,Vh=xh,Hh=Ch,Uh=y.forwardRef(({className:e,sideOffset:t=4,...n},r)=>(0,K.jsx)(Dh,{children:(0,K.jsx)(kh,{ref:r,sideOffset:t,className:jt(`z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...n})}));Uh.displayName=kh.displayName;var Wh={MODEL:`gen_ai.request.model`,MAX_TOKENS:`gen_ai.request.max_tokens`,TEMPERATURE:`gen_ai.request.temperature`,TOP_P:`gen_ai.request.top_p`,SEED:`gen_ai.request.seed`,FREQUENCY_PENALTY:`gen_ai.request.frequency_penalty`,PRESENCE_PENALTY:`gen_ai.request.presence_penalty`,STOP_SEQUENCES:`gen_ai.request.stop_sequences`,FINISH_REASONS:`gen_ai.response.finish_reasons`,RESPONSE_ID:`gen_ai.response.id`,INPUT_TOKENS:`gen_ai.usage.input_tokens`,OUTPUT_TOKENS:`gen_ai.usage.output_tokens`,INPUT_MESSAGES:`gen_ai.input.messages`,OUTPUT_MESSAGES:`gen_ai.output.messages`,SYSTEM_INSTRUCTIONS:`gen_ai.system_instructions`,OUTPUT_TYPE:`gen_ai.output.type`,TOOL_CALL_ID:`gen_ai.tool.call.id`,TOOL_NAME:`gen_ai.tool.name`,TOOL_TYPE:`gen_ai.tool.type`,TOOL_DEFINITIONS:`gen_ai.tool.definitions`,TOOL_ARGUMENTS:`gen_ai.tool.call.arguments`,TOOL_RESULT:`gen_ai.tool.call.result`,AGENT_ID:`gen_ai.agent.id`,AGENT_NAME:`gen_ai.agent.name`,AGENT_DESCRIPTION:`gen_ai.agent.description`,CONVERSATION_ID:`gen_ai.conversation.id`,WORKFLOW_ID:`workflow.id`,WORKFLOW_NAME:`workflow.name`,EXECUTOR_ID:`executor.id`,EXECUTOR_TYPE:`executor.type`};function Gh(e){return e.type===`text`}function Kh(e){return e.type===`tool_call`||e.type===`function_call`}function qh(e){return e.type===`tool_result`||e.type===`function_result`||e.type===`tool_call_response`}function Jh(e){if(!e)return[];try{return JSON.parse(e)}catch{return[]}}gp();function Yh(e){let t={system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0};try{let n;if(typeof e==`string`)n=Jh(e);else if(Array.isArray(e))n=e;else return t;for(let e of n){if(!e||typeof e!=`object`)continue;let n=e.role,r=e.parts,i=0;if(Array.isArray(r)){for(let e of r)if(e&&typeof e==`object`){if(Gh(e)){let t=e.content||e.text||``;i+=t.length}else if(Kh(e)){let n=e.name||``,r=e.arguments||``;t.toolCalls+=n.length+r.length}else if(qh(e)){let n=e.result||e.response||``;t.toolResults+=n.length}}}n===`system`?t.system+=i:n===`user`?t.user+=i:n===`assistant`?t.assistant+=i:n===`tool`&&(t.toolResults+=i)}t.total=t.system+t.user+t.assistant+t.toolCalls+t.toolResults}catch{}return t}function Xh(e){let t=e.filter(e=>e.type===`response.trace.completed`),n=new Map;for(let e of t){if(!(`data`in e))continue;let t=e.data,r=t.response_id||`unknown`;n.has(r)||n.set(r,[]),n.get(r).push(t)}let r=[];for(let[e,t]of n){let n=0,i=0,a,o=Date.now()/1e3,s,c=0,l={system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0};for(let e of t){let t=e.attributes||{},r=t[Wh.INPUT_TOKENS],u=t[Wh.OUTPUT_TOKENS];r!==void 0&&(n+=Number(r)),u!==void 0&&(i+=Number(u)),t[Wh.MODEL]&&(a=String(t[Wh.MODEL])),e.start_time&&e.start_time0||i>0)&&r.push({response_id:e,timestamp:o,input_tokens:n,output_tokens:i,total_tokens:n+i,model:a,entity_id:s,duration_ms:c,composition:l})}return r.sort((e,t)=>e.timestamp-t.timestamp),r}function Zh(e){if(e.length===0)return{totalInput:0,totalOutput:0,totalTokens:0,avgInput:0,avgOutput:0,avgTotal:0,peakInput:0,peakOutput:0,peakTotal:0,turnCount:0};let t=e.reduce((e,t)=>e+t.input_tokens,0),n=e.reduce((e,t)=>e+t.output_tokens,0),r=t+n,i=Math.max(...e.map(e=>e.input_tokens)),a=Math.max(...e.map(e=>e.output_tokens)),o=Math.max(...e.map(e=>e.total_tokens));return{totalInput:t,totalOutput:n,totalTokens:r,avgInput:Math.round(t/e.length),avgOutput:Math.round(n/e.length),avgTotal:Math.round(r/e.length),peakInput:i,peakOutput:a,peakTotal:o,turnCount:e.length}}function Qh(e){return e.reduce((e,t)=>({system:e.system+t.composition.system,user:e.user+t.composition.user,assistant:e.assistant+t.composition.assistant,toolCalls:e.toolCalls+t.composition.toolCalls,toolResults:e.toolResults+t.composition.toolResults,total:e.total+t.composition.total}),{system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0})}function $h(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}var eg={input:`bg-blue-500 dark:bg-blue-600`,output:`bg-emerald-500 dark:bg-emerald-600`,system:`bg-purple-500 dark:bg-purple-600`,user:`bg-blue-500 dark:bg-blue-600`,assistant:`bg-emerald-500 dark:bg-emerald-600`,toolCalls:`bg-amber-500 dark:bg-amber-600`,toolResults:`bg-orange-500 dark:bg-orange-600`};function tg({segments:e,maxValue:t,height:n=20,renderLabel:r}){let i=e.reduce((e,t)=>e+t.value,0);if(i===0)return(0,K.jsx)(`div`,{className:`flex items-center gap-2 w-full`,children:(0,K.jsx)(`div`,{className:`rounded bg-muted/30 flex-1`,style:{height:`${n}px`}})});let a=t>0?i/t*100:100,o=e.filter(e=>e.value>0).map(e=>({...e,percent:Math.round(e.value/i*100)}));return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 w-full`,children:[(0,K.jsx)(`div`,{className:`relative rounded overflow-hidden bg-muted/30 flex-1`,style:{height:`${n}px`},children:(0,K.jsx)(Bh,{delayDuration:150,children:(0,K.jsx)(`div`,{className:`h-full flex transition-all duration-300`,style:{width:`${a}%`},children:o.map(e=>(0,K.jsxs)(Vh,{children:[(0,K.jsx)(Hh,{asChild:!0,children:(0,K.jsx)(`div`,{className:`h-full ${e.color} transition-all duration-150 hover:brightness-110 hover:scale-y-[1.15] origin-bottom cursor-default`,style:{width:`${e.value/i*100}%`}})}),(0,K.jsx)(Uh,{side:`top`,className:`text-xs`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2 h-2 rounded-sm ${e.color} flex-shrink-0`}),(0,K.jsx)(`span`,{className:`font-medium`,children:e.label}),(0,K.jsxs)(`span`,{className:`opacity-80`,children:[$h(e.value),` (`,e.percent,`%)`]})]})})]},e.key))})})}),r?.(i,e)]})}function ng(e,t){return[{key:`input`,value:e,color:eg.input,label:`Input`},{key:`output`,value:t,color:eg.output,label:`Output`}]}function rg(e){return[{key:`system`,value:e.system,color:eg.system,label:`System`},{key:`user`,value:e.user,color:eg.user,label:`User`},{key:`assistant`,value:e.assistant,color:eg.assistant,label:`Assistant`},{key:`toolCalls`,value:e.toolCalls,color:eg.toolCalls,label:`Tool Calls`},{key:`toolResults`,value:e.toolResults,color:eg.toolResults,label:`Tool Results`}]}function ig({composition:e,className:t=``}){let{system:n,user:r,assistant:i,toolCalls:a,toolResults:o,total:s}=e;if(s===0)return(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground ${t}`,children:`No composition data available`});let c=[{label:`System`,value:n,color:eg.system},{label:`User`,value:r,color:eg.user},{label:`Assistant`,value:i,color:eg.assistant},{label:`Tool Calls`,value:a,color:eg.toolCalls},{label:`Tool Results`,value:o,color:eg.toolResults}].filter(e=>e.value>0);return(0,K.jsx)(`div`,{className:`space-y-1.5 ${t}`,children:c.map(e=>{let t=Math.round(e.value/s*100);return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,K.jsx)(`div`,{className:`w-2 h-2 rounded-sm ${e.color}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground w-20`,children:e.label}),(0,K.jsx)(`div`,{className:`flex-1 h-3 bg-muted/30 rounded overflow-hidden`,children:(0,K.jsx)(`div`,{className:`h-full ${e.color} transition-all duration-300`,style:{width:`${t}%`}})}),(0,K.jsxs)(`span`,{className:`font-mono w-10 text-right text-muted-foreground`,children:[t,`%`]})]},e.label)})})}function ag({turn:e,index:t,maxValue:n,maxCompositionValue:r,cumulativeInput:i,cumulativeOutput:a,cumulativeComposition:o,showCumulative:s,viewMode:c}){let[l,u]=(0,y.useState)(!1),d=s?i:e.input_tokens,f=s?a:e.output_tokens,p=s?o:e.composition,m=new Date(e.timestamp*1e3).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`});return(0,K.jsxs)(`div`,{className:`border-b border-muted/50 last:border-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-3 py-2 px-2 hover:bg-muted/30 cursor-pointer transition-colors`,onClick:()=>u(!l),children:[(0,K.jsx)(`div`,{className:`w-6 h-6 rounded-full bg-muted flex items-center justify-center text-xs font-medium flex-shrink-0`,children:t+1}),(0,K.jsx)(`div`,{className:`flex-1 min-w-0`,children:c===`tokens`?(0,K.jsx)(tg,{segments:ng(d,f),maxValue:n,height:20,renderLabel:(e,t)=>(0,K.jsxs)(`div`,{className:`flex items-center gap-1 text-xs font-mono text-muted-foreground min-w-[80px] justify-end`,children:[(0,K.jsxs)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:[`↑`,$h(t[0]?.value||0)]}),(0,K.jsx)(`span`,{children:`/`}),(0,K.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:[`↓`,$h(t[1]?.value||0)]})]})}):(0,K.jsx)(tg,{segments:rg(p),maxValue:r,height:20,renderLabel:e=>(0,K.jsxs)(`div`,{className:`text-xs font-mono text-muted-foreground min-w-[50px] text-right`,children:[$h(Math.round(e/4)),`~`]})})}),(0,K.jsx)(`div`,{className:`text-muted-foreground flex-shrink-0`,children:l?(0,K.jsx)(su,{className:`h-4 w-4`}):(0,K.jsx)(du,{className:`h-4 w-4`})})]}),l&&(0,K.jsx)(`div`,{className:`pb-3`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-3 px-2`,children:[(0,K.jsx)(`div`,{className:`w-6 flex justify-center flex-shrink-0`,children:(0,K.jsx)(`div`,{className:`w-px h-full bg-muted`})}),(0,K.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground text-xs mt-1`,children:`└─`}),(0,K.jsxs)(`div`,{className:`flex-1 space-y-3`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,K.jsxs)(`div`,{children:[`Time: `,(0,K.jsx)(`span`,{className:`font-mono text-foreground`,children:m})]}),(0,K.jsxs)(`div`,{children:[`Duration: `,(0,K.jsxs)(`span`,{className:`font-mono text-foreground`,children:[e.duration_ms.toFixed(0),`ms`]})]}),e.model&&(0,K.jsxs)(`div`,{children:[`Model: `,(0,K.jsx)(`span`,{className:`font-mono text-foreground`,children:e.model})]}),e.entity_id&&(0,K.jsxs)(`div`,{children:[`Entity: `,(0,K.jsx)(`span`,{className:`font-mono text-foreground`,children:e.entity_id})]})]}),c===`tokens`&&(0,K.jsxs)(`div`,{className:`flex gap-4 text-xs`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`Input:`}),` `,(0,K.jsx)(`span`,{className:`font-mono`,children:e.input_tokens.toLocaleString()})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:`Output:`}),` `,(0,K.jsx)(`span`,{className:`font-mono`,children:e.output_tokens.toLocaleString()})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Total:`}),` `,(0,K.jsx)(`span`,{className:`font-mono`,children:e.total_tokens.toLocaleString()})]})]}),c===`composition`&&e.composition.total>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`text-xs text-muted-foreground mb-2 flex items-center gap-1`,children:[(0,K.jsx)(td,{className:`h-3 w-3`}),`Context Composition (estimated from ~`,$h(Math.round(e.composition.total/4)),` tokens)`]}),(0,K.jsx)(ig,{composition:e.composition})]})]})]})})]})})]})}function og({label:e,value:t,icon:n,color:r=`default`}){let i={default:`text-muted-foreground`,blue:`text-blue-600 dark:text-blue-400`,green:`text-emerald-600 dark:text-emerald-400`}[r];return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 p-2 bg-muted/30 rounded`,children:[(0,K.jsx)(n,{className:`h-4 w-4 ${i}`}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e}),(0,K.jsx)(`div`,{className:`font-mono text-sm font-medium`,children:t})]})]})}function sg({events:e}){let t=Q(e=>e.runtime),n=Q(e=>e.serverCapabilities.trace_retrieval),r=Q(e=>e.contextInspectorViewMode),i=Q(e=>e.setContextInspectorViewMode),a=Q(e=>e.contextInspectorCumulative),o=Q(e=>e.setContextInspectorCumulative),s=(0,y.useMemo)(()=>Xh(e),[e]),c=(0,y.useMemo)(()=>Zh(s),[s]),l=(0,y.useMemo)(()=>Qh(s),[s]),u=(0,y.useMemo)(()=>s.length===0?0:a?c.totalTokens:0,[s,a,c.totalTokens]),d=(0,y.useMemo)(()=>s.length===0?0:a?l.total:0,[s,a,l.total]),f=(0,y.useMemo)(()=>{let e=0,t=0,n={system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0};return s.map(r=>(e+=r.input_tokens,t+=r.output_tokens,n={system:n.system+r.composition.system,user:n.user+r.composition.user,assistant:n.assistant+r.composition.assistant,toolCalls:n.toolCalls+r.composition.toolCalls,toolResults:n.toolResults+r.composition.toolResults,total:n.total+r.composition.total},{input:e,output:t,composition:{...n}}))},[s]);return s.length===0?(0,K.jsxs)(`div`,{className:`flex flex-col items-center text-center p-6 pt-9`,children:[(0,K.jsx)(tu,{className:`h-8 w-8 text-muted-foreground mb-3`}),(0,K.jsx)(`div`,{className:`text-sm font-medium mb-1`,children:`No Data`}),(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground max-w-[200px]`,children:n?`Start a conversation to inspect OpenTelemetry context from the Aspire Dashboard.`:t===`dotnet`?`Trace retrieval is not available for this server.`:(0,K.jsxs)(K.Fragment,{children:[`Run`,` `,(0,K.jsx)(`span`,{className:`font-mono bg-accent/10 px-1 rounded`,children:`devui --instrumentation`}),` `,`and start a conversation.`]})})]}):(0,K.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`p-3 border-b flex-shrink-0 space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(tu,{className:`h-4 w-4`}),(0,K.jsx)(`span`,{className:`font-medium text-sm`,children:`Context Inspector`}),(0,K.jsxs)(Ft,{variant:`outline`,className:`text-xs`,children:[s.length,` turn`,s.length===1?``:`s`]})]}),(0,K.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground cursor-pointer`,children:[(0,K.jsx)(nh,{checked:a,onCheckedChange:e=>o(e===!0),className:`h-3.5 w-3.5`}),(0,K.jsx)(`span`,{children:`Cumulative`})]})]}),(0,K.jsxs)(`div`,{className:`flex items-center bg-muted rounded-md p-1`,children:[(0,K.jsx)(`button`,{onClick:()=>i(`tokens`),className:`flex-1 px-3 py-1.5 text-xs rounded transition-colors ${r===`tokens`?`bg-background shadow-sm font-medium`:`text-muted-foreground hover:text-foreground`}`,children:`Tokens`}),(0,K.jsx)(`button`,{onClick:()=>i(`composition`),className:`flex-1 px-3 py-1.5 text-xs rounded transition-colors ${r===`composition`?`bg-background shadow-sm font-medium`:`text-muted-foreground hover:text-foreground`}`,children:`Composition`})]}),(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:r===`tokens`?`Token usage per turn`:`Context breakdown by message type (chars)`})]}),(0,K.jsx)(mm,{className:`flex-1`,children:(0,K.jsxs)(`div`,{className:`p-3 space-y-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-4 text-xs px-1 flex-wrap`,children:[r===`tokens`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-3 h-3 rounded ${eg.input}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Input (↑)`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-3 h-3 rounded ${eg.output}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Output (↓)`})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.system}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`System`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.user}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`User`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.assistant}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Assistant`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.toolCalls}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Tools`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.toolResults}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Results`})]})]}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,K.jsx)(td,{className:`h-3 w-3`}),(0,K.jsx)(`span`,{children:`Click for details`})]})]}),(0,K.jsx)(`div`,{className:`border rounded-lg overflow-hidden`,children:s.map((e,t)=>(0,K.jsx)(ag,{turn:e,index:t,maxValue:u,maxCompositionValue:d,cumulativeInput:f[t]?.input||0,cumulativeOutput:f[t]?.output||0,cumulativeComposition:f[t]?.composition||e.composition,showCumulative:a,viewMode:r},e.response_id))}),(0,K.jsxs)(`div`,{className:`border rounded-lg overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`p-3 bg-muted/30 border-b`,children:(0,K.jsx)(`span`,{className:`text-xs font-medium`,children:`Session Summary`})}),(0,K.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,K.jsx)(og,{label:`Total Tokens`,value:$h(c.totalTokens),icon:ad}),(0,K.jsx)(og,{label:`Input`,value:$h(c.totalInput),icon:tu,color:`blue`}),(0,K.jsx)(og,{label:`Output`,value:$h(c.totalOutput),icon:tu,color:`green`})]}),s.length>1&&(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs pt-2 border-t border-muted/50`,children:[(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Avg per turn:`}),(0,K.jsx)(`span`,{className:`font-mono`,children:$h(c.avgTotal)})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Peak turn:`}),(0,K.jsx)(`span`,{className:`font-mono`,children:$h(c.peakTotal)})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Avg input:`}),(0,K.jsx)(`span`,{className:`font-mono text-blue-600 dark:text-blue-400`,children:$h(c.avgInput)})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Avg output:`}),(0,K.jsx)(`span`,{className:`font-mono text-emerald-600 dark:text-emerald-400`,children:$h(c.avgOutput)})]})]}),l.total>0&&(0,K.jsx)(`div`,{className:`pt-3 border-t border-muted/50`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground text-xs mt-0.5`,children:`└─`}),(0,K.jsxs)(`div`,{className:`flex-1`,children:[(0,K.jsxs)(`div`,{className:`text-xs text-muted-foreground mb-2 flex items-center gap-1`,children:[(0,K.jsx)(td,{className:`h-3 w-3`}),`Total Composition (all turns)`]}),(0,K.jsx)(ig,{composition:l})]})]})})]})]})]})})]})}gp();function cg(){return(0,K.jsx)(`div`,{className:`flex items-center gap-2 py-3 px-2`,children:(0,K.jsx)(`div`,{className:`flex-1 border-t border-border/50`})})}function lg(e){let t=[],n=!1;for(let r=0;r100&&(i.includes(` + `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&m(t);return}$f(i)&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return m(h),s===void 0?u?.init(i.getState()):u?.init(tp(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(tp(c.name));case`ROLLBACK`:return cp(e.state,t,e=>{if(s===void 0){m(e),u?.init(i.getState());return}m(e[s]),u?.init(tp(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return cp(e.state,t,e=>{if(s===void 0){m(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&m(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;m(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),h},sp=op,cp=(e,t,n)=>{let r;try{r=JSON.parse(e,t)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}r!==void 0&&n(r)},lp=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return lp(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return lp(t)(e)}}}},up=(e,t)=>(n,r,i)=>{let a={storage:Qf(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=0,c=new Set,l=new Set,u=a.storage;if(!u)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let d=()=>{let e=a.partialize({...r()});return u.setItem(a.name,{state:e,version:a.version})},f=i.setState;i.setState=(...e)=>(f(...e),d());let p=e((...e)=>(n(...e),d()),r,i);i.getInitialState=()=>p;let m,h=()=>{if(!u)return;let e=++s;o=!1,c.forEach(e=>e(r()??p));let t=a.onRehydrateStorage?.call(a,r()??p)||void 0;return lp(u.getItem.bind(u))(a.name).then(e=>{if(e){if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state]}return[!1,void 0]}).then(t=>{if(e!==s)return;let[i,o]=t;if(m=a.merge(o,r()??p),n(m,!0),i)return d()}).then(()=>{e===s&&(t?.(r(),void 0),m=r(),o=!0,l.forEach(e=>e(m)))}).catch(n=>{e===s&&t?.(void 0,n)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(u=e.storage)},clearStorage:()=>{++s,u?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>h(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(l.add(e),()=>{l.delete(e)})},a.skipHydration||h(),m||p},dp=up}));function pp(e){if(e.type!==`response.output_text.delta`||!(`delta`in e)||typeof e.delta!=`string`||e.delta.length<=hp)return e;let t=e.delta.length-hp;return{...e,delta:`${e.delta.slice(0,hp)}\n...[${t} chars omitted from debug view]`}}var mp,hp,Q,gp=o((()=>{Xf(),fp(),mp=1e3,hp=2048,Q=Jf()(sp(dp(e=>({agents:[],workflows:[],entities:[],selectedAgent:void 0,isLoadingEntities:!0,entityError:null,currentConversation:void 0,availableConversations:[],chatItems:[],isStreaming:!1,isSubmitting:!1,loadingConversations:!1,inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},pendingApprovals:[],currentSession:void 0,availableSessions:[],sessionCheckpoints:[],loadingSessions:!1,loadingCheckpoints:!1,showDebugPanel:!0,debugPanelMinimized:!1,debugPanelWidth:320,debugEvents:[],isResizing:!1,showToolCalls:!0,streamingEnabled:!0,debugPanelTab:`events`,debugTraceSubTab:`spans`,contextInspectorViewMode:`tokens`,contextInspectorCumulative:!1,showAboutModal:!1,showGallery:!1,showDeployModal:!1,showEntityNotFoundToast:!1,toasts:[],oaiMode:{enabled:!1,model:`gpt-4o-mini`},uiMode:`developer`,runtime:`python`,serverCapabilities:{instrumentation:!1,trace_retrieval:!1,openai_proxy:!1,deployment:!1},authRequired:!1,serverVersion:null,isDeploying:!1,deploymentLogs:[],lastDeployment:null,azureDeploymentEnabled:!1,setAgents:t=>e({agents:t}),setWorkflows:t=>e({workflows:t}),setEntities:t=>e({entities:t}),setSelectedAgent:t=>e({selectedAgent:t}),addAgent:t=>e(e=>({agents:[...e.agents,t]})),addWorkflow:t=>e(e=>({workflows:[...e.workflows,t]})),updateAgent:t=>e(e=>({agents:e.agents.map(e=>e.id===t.id?t:e),selectedAgent:e.selectedAgent?.id===t.id&&e.selectedAgent.type===`agent`?t:e.selectedAgent})),updateWorkflow:t=>e(e=>({workflows:e.workflows.map(e=>e.id===t.id?t:e),selectedAgent:e.selectedAgent?.id===t.id&&e.selectedAgent.type===`workflow`?t:e.selectedAgent})),removeEntity:t=>e(e=>({agents:e.agents.filter(e=>e.id!==t),workflows:e.workflows.filter(e=>e.id!==t),selectedAgent:e.selectedAgent?.id===t?void 0:e.selectedAgent})),setEntityError:t=>e({entityError:t}),setIsLoadingEntities:t=>e({isLoadingEntities:t}),setCurrentConversation:t=>e({currentConversation:t}),setAvailableConversations:t=>e({availableConversations:t}),setChatItems:t=>e({chatItems:t}),setIsStreaming:t=>e({isStreaming:t}),setIsSubmitting:t=>e({isSubmitting:t}),setLoadingConversations:t=>e({loadingConversations:t}),setInputValue:t=>e({inputValue:t}),setAttachments:t=>e({attachments:t}),updateConversationUsage:t=>e(e=>({conversationUsage:{total_tokens:e.conversationUsage.total_tokens+t,message_count:e.conversationUsage.message_count+1}})),setPendingApprovals:t=>e({pendingApprovals:t}),setCurrentSession:t=>e({currentSession:t}),setAvailableSessions:t=>e({availableSessions:t}),setSessionCheckpoints:t=>e({sessionCheckpoints:t}),setLoadingSessions:t=>e({loadingSessions:t}),setLoadingCheckpoints:t=>e({loadingCheckpoints:t}),addSession:t=>e(e=>({availableSessions:[t,...e.availableSessions]})),removeSession:t=>e(e=>({availableSessions:e.availableSessions.filter(e=>e.conversation_id!==t),currentSession:e.currentSession?.conversation_id===t?void 0:e.currentSession,sessionCheckpoints:e.currentSession?.conversation_id===t?[]:e.sessionCheckpoints})),setShowDebugPanel:t=>e({showDebugPanel:t}),setDebugPanelMinimized:t=>e({debugPanelMinimized:t}),setDebugPanelWidth:t=>e({debugPanelWidth:t}),setShowToolCalls:t=>e({showToolCalls:t}),setStreamingEnabled:t=>e({streamingEnabled:t}),addDebugEvent:t=>e(e=>{let n=pp(t),r=Math.floor(Date.now()/1e3),i=(e.debugEvents.length>0?e.debugEvents[e.debugEvents.length-1]:null)?._uiTimestamp??0,a=Math.max(r,i+1);return{debugEvents:[...e.debugEvents.length>=mp?e.debugEvents.slice(-999):e.debugEvents,{...n,_uiTimestamp:`created_at`in n&&n.created_at?n.created_at:a}]}}),clearDebugEvents:()=>e({debugEvents:[]}),setIsResizing:t=>e({isResizing:t}),setDebugPanelTab:t=>e({debugPanelTab:t}),setDebugTraceSubTab:t=>e({debugTraceSubTab:t}),setContextInspectorViewMode:t=>e({contextInspectorViewMode:t}),setContextInspectorCumulative:t=>e({contextInspectorCumulative:t}),setShowAboutModal:t=>e({showAboutModal:t}),setShowGallery:t=>e({showGallery:t}),setShowDeployModal:t=>e({showDeployModal:t}),setShowEntityNotFoundToast:t=>e({showEntityNotFoundToast:t}),addToast:t=>e(e=>({toasts:[...e.toasts,{id:`toast-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,type:t.type||`info`,duration:t.duration||4e3,...t}]})),removeToast:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)})),setOAIMode:t=>e(e=>t.enabled&&!e.oaiMode.enabled||!t.enabled&&e.oaiMode.enabled?(Object.keys(localStorage).forEach(e=>{e.startsWith(`devui_convs_`)&&localStorage.removeItem(e)}),{oaiMode:t,currentConversation:void 0,availableConversations:[],chatItems:[],inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},isStreaming:!1,isSubmitting:!1,pendingApprovals:[],debugEvents:[]}):{oaiMode:t}),toggleOAIMode:()=>e(e=>{let t=!e.oaiMode.enabled;return{oaiMode:{...e.oaiMode,enabled:t},currentConversation:void 0,availableConversations:[],chatItems:[],inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},isStreaming:!1,isSubmitting:!1,pendingApprovals:[],debugEvents:[]}}),setServerMeta:t=>e({uiMode:t.uiMode,runtime:t.runtime,serverCapabilities:t.capabilities,authRequired:t.authRequired,serverVersion:t.version||null}),startDeployment:()=>e({isDeploying:!0,deploymentLogs:[],lastDeployment:null}),addDeploymentLog:t=>e(e=>({deploymentLogs:[...e.deploymentLogs,t]})),setDeploymentResult:t=>e({isDeploying:!1,lastDeployment:t}),stopDeployment:()=>e({isDeploying:!1}),clearDeploymentState:()=>e({isDeploying:!1,deploymentLogs:[],lastDeployment:null}),setAzureDeploymentEnabled:t=>e({azureDeploymentEnabled:t}),selectEntity:t=>{e({selectedAgent:t,currentConversation:void 0,availableConversations:[],chatItems:[],inputValue:``,attachments:[],conversationUsage:{total_tokens:0,message_count:0},isStreaming:!1,isSubmitting:!1,pendingApprovals:[],currentSession:void 0,availableSessions:[],sessionCheckpoints:[],debugEvents:[]});let n=new URL(window.location.href);n.searchParams.set(`entity_id`,t.id),window.history.pushState({},``,n)}}),{name:`devui-storage`,partialize:e=>({showDebugPanel:e.showDebugPanel,debugPanelMinimized:e.debugPanelMinimized,debugPanelWidth:e.debugPanelWidth,showToolCalls:e.showToolCalls,streamingEnabled:e.streamingEnabled,oaiMode:e.oaiMode,azureDeploymentEnabled:e.azureDeploymentEnabled,debugPanelTab:e.debugPanelTab,debugTraceSubTab:e.debugTraceSubTab,contextInspectorViewMode:e.contextInspectorViewMode,contextInspectorCumulative:e.contextInspectorCumulative})}),{name:`DevUI Store`}))})),_p=c({useDevUIStore:()=>Q}),vp=o((()=>{gp()}));vp();function yp({agents:e,workflows:t,entities:n,selectedItem:r,onSelect:i,onBrowseGallery:a,isLoading:o=!1,onSettingsClick:s}){let{oaiMode:c,serverVersion:l}=Q();return(0,K.jsxs)(`header`,{className:`flex h-14 items-center gap-4 border-b px-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 font-semibold`,children:[(0,K.jsxs)(`svg`,{width:`24`,height:`24`,viewBox:`0 0 805 805`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,className:`flex-shrink-0`,children:[(0,K.jsx)(`path`,{d:`M402.488 119.713C439.197 119.713 468.955 149.472 468.955 186.18C468.955 192.086 471.708 197.849 476.915 200.635L546.702 237.977C555.862 242.879 566.95 240.96 576.092 236.023C585.476 230.955 596.218 228.078 607.632 228.078C644.341 228.078 674.098 257.836 674.099 294.545C674.099 316.95 663.013 336.765 646.028 348.806C637.861 354.595 631.412 363.24 631.412 373.251V430.818C631.412 440.83 637.861 449.475 646.028 455.264C663.013 467.305 674.099 487.121 674.099 509.526C674.099 546.235 644.341 575.994 607.632 575.994C598.598 575.994 589.985 574.191 582.133 570.926C573.644 567.397 563.91 566.393 555.804 570.731L469.581 616.867C469.193 617.074 468.955 617.479 468.955 617.919C468.955 654.628 439.197 684.386 402.488 684.386C365.779 684.386 336.021 654.628 336.021 617.919C336.021 616.802 335.423 615.765 334.439 615.238L249.895 570C241.61 565.567 231.646 566.713 223.034 570.472C214.898 574.024 205.914 575.994 196.47 575.994C159.761 575.994 130.002 546.235 130.002 509.526C130.002 486.66 141.549 466.49 159.13 454.531C167.604 448.766 174.349 439.975 174.349 429.726V372.538C174.349 362.289 167.604 353.498 159.13 347.734C141.549 335.774 130.002 315.604 130.002 292.738C130.002 256.029 159.761 226.271 196.47 226.271C208.223 226.271 219.263 229.322 228.843 234.674C238.065 239.827 249.351 241.894 258.666 236.91L328.655 199.459C333.448 196.895 336.021 191.616 336.021 186.18C336.021 149.471 365.779 119.713 402.488 119.713ZM475.716 394.444C471.337 396.787 468.955 401.586 468.955 406.552C468.955 429.68 457.142 450.048 439.221 461.954C430.571 467.7 423.653 476.574 423.653 486.959V537.511C423.653 547.896 430.746 556.851 439.379 562.622C449 569.053 461.434 572.052 471.637 566.592L527.264 536.826C536.887 531.677 541.164 520.44 541.164 509.526C541.164 485.968 553.42 465.272 571.904 453.468C580.846 447.757 588.054 438.749 588.054 428.139V371.427C588.054 363.494 582.671 356.676 575.716 352.862C569.342 349.366 561.663 348.454 555.253 351.884L475.716 394.444ZM247.992 349.841C241.997 346.633 234.806 347.465 228.873 350.785C222.524 354.337 217.706 360.639 217.706 367.915V429.162C217.706 439.537 224.611 448.404 233.248 454.152C251.144 466.062 262.937 486.417 262.937 509.526C262.937 519.654 267.026 529.991 275.955 534.769L334.852 566.284C344.582 571.49 356.362 568.81 365.528 562.667C373.735 557.166 380.296 548.643 380.296 538.764V486.305C380.296 476.067 373.564 467.282 365.103 461.516C347.548 449.552 336.021 429.398 336.021 406.552C336.021 400.967 333.389 395.536 328.465 392.902L247.992 349.841ZM270.019 280.008C265.421 282.469 262.936 287.522 262.937 292.738C262.937 293.308 262.929 293.876 262.915 294.443C262.615 306.354 266.961 318.871 277.466 324.492L334.017 354.751C344.13 360.163 356.442 357.269 366.027 350.969C376.495 344.088 389.024 340.085 402.488 340.085C416.203 340.085 428.947 344.239 439.532 351.357C449.163 357.834 461.63 360.861 471.864 355.385L526.625 326.083C537.106 320.474 541.458 307.999 541.182 296.115C541.17 295.593 541.164 295.069 541.164 294.545C541.164 288.551 538.376 282.696 533.091 279.868L463.562 242.664C454.384 237.753 443.274 239.688 434.123 244.65C424.716 249.75 413.941 252.647 402.488 252.647C390.83 252.647 379.873 249.646 370.348 244.373C361.148 239.281 349.917 237.256 340.646 242.217L270.019 280.008Z`,fill:`url(#paint0_linear_510_1294)`}),(0,K.jsx)(`defs`,{children:(0,K.jsxs)(`linearGradient`,{id:`paint0_linear_510_1294`,x1:`255.628`,y1:`-34.3245`,x2:`618.483`,y2:`632.032`,gradientUnits:`userSpaceOnUse`,children:[(0,K.jsx)(`stop`,{stopColor:`#D59FFF`}),(0,K.jsx)(`stop`,{offset:`1`,stopColor:`#8562C5`})]})})]}),`Dev UI`,l&&(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground ml-1`,children:[`v`,l]}),c.enabled&&(0,K.jsxs)(Ft,{variant:`secondary`,className:`gap-1 ml-2`,children:[(0,K.jsx)(gf,{className:`h-3 w-3`}),`OpenAI: `,c.model]})]}),!c.enabled&&(0,K.jsx)(Tf,{agents:e,workflows:t,entities:n,selectedItem:r,onSelect:i,onBrowseGallery:a,isLoading:o}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,K.jsx)(Bf,{}),(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:e=>{e.stopPropagation(),s?.()},children:(0,K.jsx)(qd,{className:`h-4 w-4`})})]})]})}var bp=Object.defineProperty,xp=(e,t)=>bp(e,`name`,{value:t,configurable:!0});function Sp(e,[t,n]){return Math.min(n,Math.max(t,e))}xp(Sp,`clamp`);var Cp=Object.defineProperty,wp=(e,t)=>Cp(e,`name`,{value:t,configurable:!0});function Tp(e,t){return y.useReducer((e,n)=>t[e][n]??e,e)}wp(Tp,`useStateMachine`);var Ep={Auto:`auto`,Always:`always`,Scroll:`scroll`,Hover:`hover`},Dp={Vertical:`vertical`,Horizontal:`horizontal`},Op={LTR:`ltr`,RTL:`rtl`},kp=`ScrollArea`,[Ap,jp]=Kt(kp),[Mp,Np]=Ap(kp),Pp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,type:r=Ep.Hover,dir:i,scrollHideDelay:a=600,...o}=e,[s,c]=y.useState(null),[l,u]=y.useState(null),[d,f]=y.useState(null),[p,m]=y.useState(null),[h,g]=y.useState(null),[_,v]=y.useState(0),[b,x]=y.useState(0),[S,C]=y.useState(!1),[w,E]=y.useState(!1),D=T(t,c),O=jn(i);return(0,K.jsx)(Mp,{scope:n,type:r,dir:O,scrollHideDelay:a,scrollArea:s,viewport:l,onViewportChange:u,content:d,onContentChange:f,scrollbarX:p,onScrollbarXChange:m,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:h,onScrollbarYChange:g,scrollbarYEnabled:w,onScrollbarYEnabledChange:E,onCornerWidthChange:v,onCornerHeightChange:x,children:(0,K.jsx)(Y.div,{dir:O,...o,ref:D,style:{position:`relative`,"--radix-scroll-area-corner-width":_+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})},`ScrollArea`)),Fp=`ScrollAreaViewport`,Ip=j(Fp),Lp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,children:r,nonce:i,disableImplicitContentElement:a,...o}=e,s=Np(Fp,n),c=T(t,y.useRef(null),s.onViewportChange),l=y.isValidElement(r);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Rp,{nonce:i}),(0,K.jsx)(Y.div,{"data-radix-scroll-area-viewport":``,...o,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:a?r:l?(0,K.jsx)(Ip,{child:r,children:e=>(0,K.jsx)(Bp,{__scopeScrollArea:n,children:e})}):(0,K.jsx)(Ip,{children:(0,K.jsx)(Bp,{__scopeScrollArea:n,children:r})})})]})},`ScrollAreaViewport`)),Rp=y.memo(wp(function({nonce:e}){return(0,K.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:e})},`ScrollAreaViewportStyle`),(e,t)=>e.nonce===t.nonce),zp=`ScrollAreaContent`,Bp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,children:r,...i}=e,a=T(t,Np(zp,n).onContentChange);return(0,K.jsx)(Y.div,{...i,ref:a,style:{minWidth:`100%`,display:`table`,...e.style},children:r})},`ScrollAreaContent`)),Vp=`ScrollAreaScrollbar`,Hp=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Np(Vp,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===Dp.Horizontal;return y.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===Ep.Hover?(0,K.jsx)(Up,{...r,ref:t,forceMount:n}):i.type===Ep.Scroll?(0,K.jsx)(Wp,{...r,ref:t,forceMount:n}):i.type===Ep.Auto?(0,K.jsx)(Gp,{...r,ref:t,forceMount:n}):i.type===Ep.Always?(0,K.jsx)(Kp,{...r,ref:t,"data-state":`visible`}):null},`ScrollAreaScrollbar`)),Up=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Np(Vp,e.__scopeScrollArea),[a,o]=y.useState(!1);return y.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=wp(()=>{window.clearTimeout(t),o(!0)},`handlePointerEnter`),r=wp(()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)},`handlePointerLeave`);return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,K.jsx)(po,{present:n||a,children:(0,K.jsx)(Gp,{"data-state":a?`visible`:`hidden`,...r,ref:t})})},`ScrollAreaScrollbarHover`)),Wp=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Np(Vp,e.__scopeScrollArea),a=e.orientation===Dp.Horizontal,o=fm(()=>c(`SCROLL_END`),100),[s,c]=Tp(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return y.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),y.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=wp(()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r},`handleScroll`);return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,K.jsx)(po,{present:n||s!==`hidden`,children:(0,K.jsx)(Kp,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:J(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:J(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})},`ScrollAreaScrollbarScroll`)),Gp=y.forwardRef(wp(function(e,t){let n=Np(Vp,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=y.useState(!1),s=e.orientation===Dp.Horizontal,c=fm(()=>{if(n.viewport){let e=n.viewport.offsetWidth0&&l<1,onThumbChange:wp(e=>a.current=e,`onThumbChange`),onThumbPointerUp:wp(()=>o.current=0,`onThumbPointerUp`),onThumbPointerDown:wp(e=>o.current=e,`onThumbPointerDown`)};function d(e,t){return sm(e,o.current,s,t)}return wp(d,`getScrollPosition`),n===Dp.Horizontal?(0,K.jsx)(qp,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=cm(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===Dp.Vertical?(0,K.jsx)(Jp,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=cm(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null},`ScrollAreaScrollbarVisible`)),qp=y.forwardRef(wp(function(e,t){let{sizes:n,onSizesChange:r,...i}=e,a=Np(Vp,e.__scopeScrollArea),[o,s]=y.useState(),c=y.useRef(null),l=T(t,c,a.onScrollbarXChange);return y.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,K.jsx)(Zp,{"data-orientation":`horizontal`,...i,ref:l,sizes:n,style:{bottom:0,left:a.dir===Op.RTL?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===Op.LTR?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":om(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),um(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:im(o.paddingLeft),paddingEnd:im(o.paddingRight)}})}})},`ScrollAreaScrollbarX`)),Jp=y.forwardRef(wp(function(e,t){let{sizes:n,onSizesChange:r,...i}=e,a=Np(Vp,e.__scopeScrollArea),[o,s]=y.useState(),c=y.useRef(null),l=T(t,c,a.onScrollbarYChange);return y.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,K.jsx)(Zp,{"data-orientation":`vertical`,...i,ref:l,sizes:n,style:{top:0,right:a.dir===Op.LTR?0:void 0,left:a.dir===Op.RTL?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":om(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),um(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:im(o.paddingTop),paddingEnd:im(o.paddingBottom)}})}})},`ScrollAreaScrollbarY`)),[Yp,Xp]=Ap(Vp),Zp=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:c,onDragScroll:l,onWheelScroll:u,onResize:d,...f}=e,p=Np(Vp,n),[m,h]=y.useState(null),g=T(t,h),_=y.useRef(null),v=y.useRef(``),b=p.viewport,x=r.content-r.viewport,S=Fn(u),C=Fn(c),w=fm(d,10);function E(e){if(_.current){let t=e.clientX-_.current.left,n=e.clientY-_.current.top;l({x:t,y:n})}}return wp(E,`handleDragScroll`),y.useEffect(()=>{let e=wp(e=>{let t=e.target;m?.contains(t)&&S(e,x)},`handleWheel`);return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[b,m,x,S]),y.useEffect(C,[r,C]),pm(m,w),pm(p.content,w),(0,K.jsx)(Yp,{scope:n,scrollbar:m,hasThumb:i,onThumbChange:Fn(a),onThumbPointerUp:Fn(o),onThumbPositionChange:C,onThumbPointerDown:Fn(s),children:(0,K.jsx)(Y.div,{...f,ref:g,style:{position:`absolute`,...f.style},onPointerDown:J(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=m.getBoundingClientRect(),v.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,p.viewport&&(p.viewport.style.scrollBehavior=`auto`),E(e))}),onPointerMove:J(e.onPointerMove,E),onPointerUp:J(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=v.current,p.viewport&&(p.viewport.style.scrollBehavior=``),_.current=null})})})},`ScrollAreaScrollbarImpl`)),Qp=`ScrollAreaThumb`,$p=y.forwardRef(wp(function(e,t){let{forceMount:n,...r}=e,i=Xp(Qp,e.__scopeScrollArea);return(0,K.jsx)(po,{present:n||i.hasThumb,children:(0,K.jsx)(em,{ref:t,...r})})},`ScrollAreaThumb`)),em=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,style:r,...i}=e,a=Np(Qp,n),o=Xp(Qp,n),{onThumbPositionChange:s}=o,c=T(t,o.onThumbChange),l=y.useRef(void 0),u=fm(()=>{l.current&&=(l.current(),void 0)},100);return y.useEffect(()=>{let e=a.viewport;if(e){let t=wp(()=>{if(u(),!l.current){let t=dm(e,s);l.current=t,s()}},`handleScroll`);return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,u,s]),(0,K.jsx)(Y.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:J(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:J(e.onPointerUp,o.onThumbPointerUp)})},`ScrollAreaThumbImpl`)),tm=`ScrollAreaCorner`,nm=y.forwardRef(wp(function(e,t){let n=Np(tm,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==Ep.Scroll&&r?(0,K.jsx)(rm,{...e,ref:t}):null},`ScrollAreaCorner`)),rm=y.forwardRef(wp(function(e,t){let{__scopeScrollArea:n,...r}=e,i=Np(tm,n),[a,o]=y.useState(0),[s,c]=y.useState(0),l=!!(a&&s),{onCornerWidthChange:u,onCornerHeightChange:d}=i;return pm(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),pm(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),y.useEffect(()=>()=>{u(0),d(0)},[u,d]),l?(0,K.jsx)(Y.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===Op.LTR?0:void 0,left:i.dir===Op.RTL?0:void 0,bottom:0,...e.style}}):null},`ScrollAreaCornerImpl`));function im(e){return e?parseInt(e,10):0}wp(im,`toInt`);function am(e,t){let n=e/t;return isNaN(n)?0:n}wp(am,`getThumbRatio`);function om(e){let t=am(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}wp(om,`getThumbSize`);function sm(e,t,n,r=Op.LTR){let i=om(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===Op.LTR?[0,u]:[u*-1,0];return lm([c,l],d)(e)}wp(sm,`getScrollPositionFromPointer`);function cm(e,t,n=Op.LTR){let r=om(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=Sp(e,n===Op.LTR?[0,o]:[o*-1,0]);return lm([0,o],[0,s])(c)}wp(cm,`getThumbOffsetFromScroll`);function lm(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}wp(lm,`linearScale`);function um(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)}return wp(i,`loop`),i(),()=>window.cancelAnimationFrame(r)},`addUnlinkedScrollListener`);function fm(e,t){let n=Fn(e),r=y.useRef(0);return y.useEffect(()=>()=>window.clearTimeout(r.current),[]),y.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}wp(fm,`useDebounceCallback`);function pm(e,t){let n=Fn(t);Jt(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}wp(pm,`useResizeObserver`);var mm=y.forwardRef(({className:e,children:t,...n},r)=>(0,K.jsxs)(Pp,{ref:r,className:jt(`relative overflow-hidden`,e),...n,children:[(0,K.jsx)(Lp,{className:`h-full w-full rounded-[inherit]`,children:t}),(0,K.jsx)(hm,{}),(0,K.jsx)(nm,{})]}));mm.displayName=Pp.displayName;var hm=y.forwardRef(({className:e,orientation:t=`vertical`,...n},r)=>(0,K.jsx)(Hp,{ref:r,orientation:t,className:jt(`flex touch-none select-none transition-colors`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent p-[1px]`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent p-[1px]`,e),...n,children:(0,K.jsx)($p,{className:`relative flex-1 rounded-full bg-border`})}));hm.displayName=Hp.displayName;var gm=Object.defineProperty,_m=(e,t)=>gm(e,`name`,{value:t,configurable:!0}),vm={Automatic:`automatic`,Manual:`manual`},ym=`Tabs`,[bm,xm]=Kt(ym,[Io]),Sm=Io(),[Cm,wm]=bm(ym),Tm=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:c=vm.Automatic,...l}=e,u=jn(s),[d,f]=rn({prop:r,onChange:i,defaultProp:a??``,caller:ym});return(0,K.jsx)(Cm,{scope:n,baseId:Or(),value:d,onValueChange:f,orientation:o,dir:u,activationMode:c,children:(0,K.jsx)(Y.div,{dir:u,"data-orientation":o,...l,ref:t})})},`Tabs`)),Em=`TabsList`,Dm=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,loop:r=!0,...i}=e,a=wm(Em,n),o=Sm(n);return(0,K.jsx)(Vo,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,K.jsx)(Y.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})},`TabsList`)),Om=`TabsTrigger`,km=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=wm(Om,n),s=Sm(n),c=Mm(o.baseId,r),l=Nm(o.baseId,r),u=r===o.value;return(0,K.jsx)(Wo,{asChild:!0,...s,focusable:!i,active:u,children:(0,K.jsx)(Y.button,{type:`button`,role:`tab`,"aria-selected":u,"aria-controls":l,"data-state":u?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:J(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?(e.currentTarget.focus(),o.onValueChange(r)):e.preventDefault()}),onKeyDown:J(e.onKeyDown,e=>{i||e.target!==e.currentTarget||[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:J(e.onFocus,()=>{let e=o.activationMode!==vm.Manual;!u&&!i&&e&&o.onValueChange(r)})})})},`TabsTrigger`)),Am=`TabsContent`,jm=y.forwardRef(_m(function(e,t){let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=wm(Am,n),c=Mm(s.baseId,r),l=Nm(s.baseId,r),u=r===s.value,d=y.useRef(u);return y.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,K.jsx)(po,{present:i||u,children:({present:n})=>(0,K.jsx)(Y.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:d.current?`0s`:void 0},children:n&&a})})},`TabsContent`));function Mm(e,t){return`${e}-trigger-${t}`}_m(Mm,`makeTriggerId`);function Nm(e,t){return`${e}-content-${t}`}_m(Nm,`makeContentId`);var Pm=Tm,Fm=y.forwardRef(({className:e,...t},n)=>(0,K.jsx)(Dm,{ref:n,className:jt(`inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground`,e),...t}));Fm.displayName=Dm.displayName;var Im=y.forwardRef(({className:e,...t},n)=>(0,K.jsx)(km,{ref:n,className:jt(`inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow`,e),...t}));Im.displayName=km.displayName;var Lm=y.forwardRef(({className:e,...t},n)=>(0,K.jsx)(jm,{ref:n,className:jt(`mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,e),...t}));Lm.displayName=jm.displayName;var Rm=Object.defineProperty,zm=(e,t)=>Rm(e,`name`,{value:t,configurable:!0}),Bm=`Checkbox`,[Vm,Hm]=Kt(Bm),[Um,Wm]=Vm(Bm);function Gm(e){let{__scopeCheckbox:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:l,value:u=`on`,internal_do_not_use_render:d}=e,[f,p]=rn({prop:n,defaultProp:i??!1,onChange:c,caller:Bm}),[m,h]=y.useState(null),[g,_]=y.useState(null),[v,b]=y.useState(null),x=!m||!!o||!!m.closest(`form`),S={checked:f,disabled:a,setChecked:p,control:m,setControl:h,name:s,form:o,value:u,userClick:v,onUserClick:b,required:l,defaultChecked:!eh(i)&&i,isFormControl:x,bubbleInput:g,setBubbleInput:_};return(0,K.jsx)(Um,{scope:t,...S,children:$m(d)?d(S):r})}zm(Gm,`CheckboxProvider`);var Km=`CheckboxTrigger`,qm=y.forwardRef(zm(function({__scopeCheckbox:e,onKeyDown:t,onClick:n,...r},i){let{control:a,value:o,disabled:s,checked:c,required:l,setControl:u,setChecked:d,onUserClick:f,isFormControl:p,bubbleInput:m}=Wm(Km,e),h=T(i,u),g=y.useRef(c);return y.useEffect(()=>{let e=a?.form;if(e){let t=zm(()=>d(g.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[a,d]),(0,K.jsx)(Y.button,{type:`button`,role:`checkbox`,"aria-checked":eh(c)?`mixed`:c,"aria-required":l,"data-state":th(c),"data-disabled":s?``:void 0,disabled:s,value:o,...r,ref:h,onKeyDown:J(t,e=>{e.key===`Enter`&&e.preventDefault()}),onClick:J(n,e=>{let t=e.isPropagationStopped();f({requestedChecked:eh(c)?!0:!c,hasConsumerStoppedPropagation:t}),d(e=>eh(e)?!0:!e),m&&p&&(t||e.stopPropagation())})})},`CheckboxTrigger`)),Jm=y.forwardRef(zm(function(e,t){let{__scopeCheckbox:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,K.jsx)(Gm,{__scopeCheckbox:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(qm,{...d,ref:t,__scopeCheckbox:n}),e&&(0,K.jsx)(Qm,{__scopeCheckbox:n})]})})},`Checkbox`)),Ym=`CheckboxIndicator`,Xm=y.forwardRef(zm(function(e,t){let{__scopeCheckbox:n,forceMount:r,...i}=e,a=Wm(Ym,n);return(0,K.jsx)(po,{present:r||eh(a.checked)||a.checked===!0,children:(0,K.jsx)(Y.span,{"data-state":th(a.checked),"data-disabled":a.disabled?``:void 0,...i,ref:t,style:{pointerEvents:`none`,...e.style}})})},`CheckboxIndicator`)),Zm=`CheckboxBubbleInput`,Qm=y.forwardRef(zm(function({__scopeCheckbox:e,onClick:t,...n},r){let{control:i,userClick:a,checked:o,defaultChecked:s,required:c,disabled:l,name:u,value:d,form:f,bubbleInput:p,setBubbleInput:m}=Wm(Zm,e),h=T(r,m),g=Va(i),_=y.useRef(!1),v=y.useRef(o),b=y.useRef(a),x=y.useRef(null);y.useEffect(()=>{let e=p;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set;if(!n)return;let r=v.current!==o;v.current=o;let i=a!==null&&a!==b.current;if(b.current=a,i)x.current=r?null:a,r&&(e.indeterminate=eh(o),n.call(e,!eh(o)&&o)),e.dispatchEvent(new Event(`click`,{bubbles:!a.hasConsumerStoppedPropagation}));else if(r){let t=x.current;x.current=null;let r=t?.requestedChecked===o;_.current=!0,e.indeterminate=eh(o),n.call(e,!eh(o)&&o),e.dispatchEvent(new Event(`click`,{bubbles:!(r&&t.hasConsumerStoppedPropagation)})),_.current=!1}},[p,o,a]);let S=y.useRef(!eh(o)&&o);return(0,K.jsx)(Y.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:s??S.current,required:c,disabled:l,name:u,value:d,form:f,...n,tabIndex:-1,ref:h,onClick:J(t,e=>{_.current&&e.stopPropagation()}),style:{...n.style,...g,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})},`CheckboxBubbleInput`));function $m(e){return typeof e==`function`}zm($m,`isFunction`);function eh(e){return e===`indeterminate`}zm(eh,`isIndeterminate`);function th(e){return eh(e)?`indeterminate`:e?`checked`:`unchecked`}zm(th,`getState`);function nh({className:e,...t}){return(0,K.jsx)(Jm,{"data-slot":`checkbox`,className:jt(`peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,K.jsx)(Xm,{"data-slot":`checkbox-indicator`,className:`flex items-center justify-center text-current transition-none`,children:(0,K.jsx)(ru,{className:`size-3.5`})})})}var rh=Object.defineProperty,ih=(e,t)=>rh(e,`name`,{value:t,configurable:!0}),ah=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),oh=y.forwardRef(ih(function(e,t){return(0,K.jsx)(Y.span,{...e,ref:t,style:{...ah,...e.style}})},`VisuallyHidden`)),sh=Object.defineProperty,ch=(e,t)=>sh(e,`name`,{value:t,configurable:!0}),[lh,uh]=Kt(`Tooltip`,[Ja]),dh=Ja(),fh=`TooltipProvider`,ph=700,mh=`tooltip.open`,[hh,gh]=lh(fh),_h=ch(e=>{let{__scopeTooltip:t,delayDuration:n=ph,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=y.useRef(!0),s=y.useRef(!1),c=y.useRef(0);return y.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,K.jsx)(hh,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:y.useCallback(()=>{r<=0||(window.clearTimeout(c.current),o.current=!1)},[r]),onClose:y.useCallback(()=>{r<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:s,onPointerInTransitChange:y.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),vh=`Tooltip`,[yh,bh]=lh(vh),xh=ch(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=gh(vh,e.__scopeTooltip),l=dh(t),[u,d]=y.useState(null),[f,p]=y.useState(void 0),m=Or(),h=y.useRef(0),g=o??c.disableHoverableContent,_=s??c.delayDuration,v=y.useRef(!1),[b,x]=rn({prop:r,defaultProp:i??!1,onChange:ch(e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(mh))):c.onClose(),a?.(e)},`onChange`),caller:vh}),S=y.useMemo(()=>b?v.current?`delayed-open`:`instant-open`:`closed`,[b]),C=y.useCallback(()=>{window.clearTimeout(h.current),h.current=0,v.current=!1,x(!0)},[x]),w=y.useCallback(()=>{window.clearTimeout(h.current),h.current=0,x(!1)},[x]),T=y.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{v.current=!0,x(!0),h.current=0},_)},[_,x]);y.useEffect(()=>()=>{h.current&&=(window.clearTimeout(h.current),0)},[]);let E=f??m;return(0,K.jsx)(Za,{...l,children:(0,K.jsx)(yh,{scope:t,contentId:E,setContentId:p,open:b,stateAttribute:S,trigger:u,onTriggerChange:d,onTriggerEnter:y.useCallback(()=>{c.isOpenDelayedRef.current?T():C()},[c.isOpenDelayedRef,T,C]),onTriggerLeave:y.useCallback(()=>{g?w():(window.clearTimeout(h.current),h.current=0)},[w,g]),onOpen:C,onClose:w,disableHoverableContent:g,children:n})})},`Tooltip`),Sh=`TooltipTrigger`,Ch=y.forwardRef(ch(function(e,t){let{__scopeTooltip:n,"aria-describedby":r,...i}=e,a=bh(Sh,n),o=gh(Sh,n),s=dh(n),c=T(t,y.useRef(null),a.onTriggerChange),l=y.useRef(!1),u=y.useRef(!1),d=y.useCallback(()=>l.current=!1,[]);return y.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,K.jsx)($a,{asChild:!0,...s,children:(0,K.jsx)(Y.button,{"aria-describedby":a.open?zh(r,a.contentId):r,"data-state":a.stateAttribute,...i,ref:c,onPointerMove:J(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!o.isPointerInTransitRef.current&&(a.onTriggerEnter(),u.current=!0)}),onPointerLeave:J(e.onPointerLeave,()=>{a.onTriggerLeave(),u.current=!1}),onPointerDown:J(e.onPointerDown,()=>{a.open&&a.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:J(e.onFocus,()=>{l.current||a.onOpen()}),onBlur:J(e.onBlur,a.onClose),onClick:J(e.onClick,a.onClose)})})},`TooltipTrigger`)),wh=`TooltipPortal`,[Th,Eh]=lh(wh,{forceMount:void 0}),Dh=ch(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=bh(wh,t);return(0,K.jsx)(Th,{scope:t,forceMount:n,children:(0,K.jsx)(po,{present:n||a.open,children:(0,K.jsx)(co,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),Oh=`TooltipContent`,kh=y.forwardRef(ch(function(e,t){let n=Eh(Oh,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=bh(Oh,e.__scopeTooltip);return(0,K.jsx)(po,{present:r||o.open,children:o.disableHoverableContent?(0,K.jsx)(Mh,{side:i,...a,ref:t}):(0,K.jsx)(Ah,{side:i,...a,ref:t})})},`TooltipContent`)),Ah=y.forwardRef(ch(function(e,t){let n=bh(Oh,e.__scopeTooltip),r=gh(Oh,e.__scopeTooltip),i=y.useRef(null),a=T(t,i),[o,s]=y.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=y.useCallback(()=>{s(null),d(!1)},[d]),p=y.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Ph(r,Nh(r,n.getBoundingClientRect())),a=Fh(t.getBoundingClientRect()),o=Lh([...i,...a]);s(o),d(!0)},[d]);return y.useEffect(()=>()=>f(),[f]),y.useEffect(()=>{if(c&&u){let e=ch(e=>p(e,u),`handleTriggerLeave`),t=ch(e=>p(e,c),`handleContentLeave`);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),y.useEffect(()=>{if(o){let e=ch(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!Ih(n,o);r?f():i&&(f(),l())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,K.jsx)(Mh,{...e,ref:a})},`TooltipContentHoverable`)),jh=j(`TooltipContent`),Mh=y.forwardRef(ch(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":i,id:a,onEscapeKeyDown:o,onPointerDownOutside:s,...c}=e,l=bh(Oh,n),u=dh(n),{onClose:d}=l,[f,p]=y.useState(null),m=T(t,p);fr(f),y.useEffect(()=>(document.addEventListener(mh,d),()=>document.removeEventListener(mh,d)),[d]),y.useEffect(()=>{if(l.trigger){let e=ch(e=>{e.target instanceof Node&&e.target.contains(l.trigger)&&d()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[l.trigger,d]);let{setContentId:h}=l;return Jt(()=>(h(a),()=>{h(void 0)}),[a,h]),(0,K.jsx)(Un,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:d,children:(0,K.jsxs)(ro,{"data-state":l.stateAttribute,role:i?void 0:`tooltip`,id:i?void 0:l.contentId,...u,...c,ref:m,style:{...c.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,K.jsx)(jh,{children:r}),i?(0,K.jsx)(oh,{id:l.contentId,role:`tooltip`,children:i}):null]})})},`TooltipContentImpl`));function Nh(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}ch(Nh,`getExitSideFromRect`);function Ph(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}ch(Ph,`getPaddedExitPoints`);function Fh(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}ch(Fh,`getPointsFromRect`);function Ih(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}ch(Ih,`isPointInPolygon`);function Lh(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Rh(t)}ch(Lh,`getHull`);function Rh(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}ch(Rh,`getHullPresorted`);function zh(...e){let t=new Set;for(let n of e)if(typeof n==`string`)for(let e of String(n).trim().split(/\s+/))e&&t.add(e);return t.size>0?Array.from(t).join(` `):void 0}ch(zh,`concatAriaDescribedby`);var Bh=_h,Vh=xh,Hh=Ch,Uh=y.forwardRef(({className:e,sideOffset:t=4,...n},r)=>(0,K.jsx)(Dh,{children:(0,K.jsx)(kh,{ref:r,sideOffset:t,className:jt(`z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...n})}));Uh.displayName=kh.displayName;var Wh={MODEL:`gen_ai.request.model`,MAX_TOKENS:`gen_ai.request.max_tokens`,TEMPERATURE:`gen_ai.request.temperature`,TOP_P:`gen_ai.request.top_p`,SEED:`gen_ai.request.seed`,FREQUENCY_PENALTY:`gen_ai.request.frequency_penalty`,PRESENCE_PENALTY:`gen_ai.request.presence_penalty`,STOP_SEQUENCES:`gen_ai.request.stop_sequences`,FINISH_REASONS:`gen_ai.response.finish_reasons`,RESPONSE_ID:`gen_ai.response.id`,INPUT_TOKENS:`gen_ai.usage.input_tokens`,OUTPUT_TOKENS:`gen_ai.usage.output_tokens`,INPUT_MESSAGES:`gen_ai.input.messages`,OUTPUT_MESSAGES:`gen_ai.output.messages`,SYSTEM_INSTRUCTIONS:`gen_ai.system_instructions`,OUTPUT_TYPE:`gen_ai.output.type`,TOOL_CALL_ID:`gen_ai.tool.call.id`,TOOL_NAME:`gen_ai.tool.name`,TOOL_TYPE:`gen_ai.tool.type`,TOOL_DEFINITIONS:`gen_ai.tool.definitions`,TOOL_ARGUMENTS:`gen_ai.tool.call.arguments`,TOOL_RESULT:`gen_ai.tool.call.result`,AGENT_ID:`gen_ai.agent.id`,AGENT_NAME:`gen_ai.agent.name`,AGENT_DESCRIPTION:`gen_ai.agent.description`,CONVERSATION_ID:`gen_ai.conversation.id`,WORKFLOW_ID:`workflow.id`,WORKFLOW_NAME:`workflow.name`,EXECUTOR_ID:`executor.id`,EXECUTOR_TYPE:`executor.type`};function Gh(e){return e.type===`text`}function Kh(e){return e.type===`tool_call`||e.type===`function_call`}function qh(e){return e.type===`tool_result`||e.type===`function_result`||e.type===`tool_call_response`}function Jh(e){if(!e)return[];try{return JSON.parse(e)}catch{return[]}}gp();function Yh(e){let t={system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0};try{let n;if(typeof e==`string`)n=Jh(e);else if(Array.isArray(e))n=e;else return t;for(let e of n){if(!e||typeof e!=`object`)continue;let n=e.role,r=e.parts,i=0;if(Array.isArray(r)){for(let e of r)if(e&&typeof e==`object`){if(Gh(e)){let t=e.content||e.text||``;i+=t.length}else if(Kh(e)){let n=e.name||``,r=e.arguments||``;t.toolCalls+=n.length+r.length}else if(qh(e)){let n=e.result||e.response||``;t.toolResults+=n.length}}}n===`system`?t.system+=i:n===`user`?t.user+=i:n===`assistant`?t.assistant+=i:n===`tool`&&(t.toolResults+=i)}t.total=t.system+t.user+t.assistant+t.toolCalls+t.toolResults}catch{}return t}function Xh(e){let t=e.filter(e=>e.type===`response.trace.completed`),n=new Map;for(let e of t){if(!(`data`in e))continue;let t=e.data,r=t.response_id||`unknown`;n.has(r)||n.set(r,[]),n.get(r).push(t)}let r=[];for(let[e,t]of n){let n=0,i=0,a,o=Date.now()/1e3,s,c=0,l={system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0};for(let e of t){let t=e.attributes||{},r=t[Wh.INPUT_TOKENS],u=t[Wh.OUTPUT_TOKENS];r!==void 0&&(n+=Number(r)),u!==void 0&&(i+=Number(u)),t[Wh.MODEL]&&(a=String(t[Wh.MODEL])),e.start_time&&e.start_time0||i>0)&&r.push({response_id:e,timestamp:o,input_tokens:n,output_tokens:i,total_tokens:n+i,model:a,entity_id:s,duration_ms:c,composition:l})}return r.sort((e,t)=>e.timestamp-t.timestamp),r}function Zh(e){if(e.length===0)return{totalInput:0,totalOutput:0,totalTokens:0,avgInput:0,avgOutput:0,avgTotal:0,peakInput:0,peakOutput:0,peakTotal:0,turnCount:0};let t=e.reduce((e,t)=>e+t.input_tokens,0),n=e.reduce((e,t)=>e+t.output_tokens,0),r=t+n,i=Math.max(...e.map(e=>e.input_tokens)),a=Math.max(...e.map(e=>e.output_tokens)),o=Math.max(...e.map(e=>e.total_tokens));return{totalInput:t,totalOutput:n,totalTokens:r,avgInput:Math.round(t/e.length),avgOutput:Math.round(n/e.length),avgTotal:Math.round(r/e.length),peakInput:i,peakOutput:a,peakTotal:o,turnCount:e.length}}function Qh(e){return e.reduce((e,t)=>({system:e.system+t.composition.system,user:e.user+t.composition.user,assistant:e.assistant+t.composition.assistant,toolCalls:e.toolCalls+t.composition.toolCalls,toolResults:e.toolResults+t.composition.toolResults,total:e.total+t.composition.total}),{system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0})}function $h(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}var eg={input:`bg-blue-500 dark:bg-blue-600`,output:`bg-emerald-500 dark:bg-emerald-600`,system:`bg-purple-500 dark:bg-purple-600`,user:`bg-blue-500 dark:bg-blue-600`,assistant:`bg-emerald-500 dark:bg-emerald-600`,toolCalls:`bg-amber-500 dark:bg-amber-600`,toolResults:`bg-orange-500 dark:bg-orange-600`};function tg({segments:e,maxValue:t,height:n=20,renderLabel:r}){let i=e.reduce((e,t)=>e+t.value,0);if(i===0)return(0,K.jsx)(`div`,{className:`flex items-center gap-2 w-full`,children:(0,K.jsx)(`div`,{className:`rounded bg-muted/30 flex-1`,style:{height:`${n}px`}})});let a=t>0?i/t*100:100,o=e.filter(e=>e.value>0).map(e=>({...e,percent:Math.round(e.value/i*100)}));return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 w-full`,children:[(0,K.jsx)(`div`,{className:`relative rounded overflow-hidden bg-muted/30 flex-1`,style:{height:`${n}px`},children:(0,K.jsx)(Bh,{delayDuration:150,children:(0,K.jsx)(`div`,{className:`h-full flex transition-all duration-300`,style:{width:`${a}%`},children:o.map(e=>(0,K.jsxs)(Vh,{children:[(0,K.jsx)(Hh,{asChild:!0,children:(0,K.jsx)(`div`,{className:`h-full ${e.color} transition-all duration-150 hover:brightness-110 hover:scale-y-[1.15] origin-bottom cursor-default`,style:{width:`${e.value/i*100}%`}})}),(0,K.jsx)(Uh,{side:`top`,className:`text-xs`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2 h-2 rounded-sm ${e.color} flex-shrink-0`}),(0,K.jsx)(`span`,{className:`font-medium`,children:e.label}),(0,K.jsxs)(`span`,{className:`opacity-80`,children:[$h(e.value),` (`,e.percent,`%)`]})]})})]},e.key))})})}),r?.(i,e)]})}function ng(e,t){return[{key:`input`,value:e,color:eg.input,label:`Input`},{key:`output`,value:t,color:eg.output,label:`Output`}]}function rg(e){return[{key:`system`,value:e.system,color:eg.system,label:`System`},{key:`user`,value:e.user,color:eg.user,label:`User`},{key:`assistant`,value:e.assistant,color:eg.assistant,label:`Assistant`},{key:`toolCalls`,value:e.toolCalls,color:eg.toolCalls,label:`Tool Calls`},{key:`toolResults`,value:e.toolResults,color:eg.toolResults,label:`Tool Results`}]}function ig({composition:e,className:t=``}){let{system:n,user:r,assistant:i,toolCalls:a,toolResults:o,total:s}=e;if(s===0)return(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground ${t}`,children:`No composition data available`});let c=[{label:`System`,value:n,color:eg.system},{label:`User`,value:r,color:eg.user},{label:`Assistant`,value:i,color:eg.assistant},{label:`Tool Calls`,value:a,color:eg.toolCalls},{label:`Tool Results`,value:o,color:eg.toolResults}].filter(e=>e.value>0);return(0,K.jsx)(`div`,{className:`space-y-1.5 ${t}`,children:c.map(e=>{let t=Math.round(e.value/s*100);return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,K.jsx)(`div`,{className:`w-2 h-2 rounded-sm ${e.color}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground w-20`,children:e.label}),(0,K.jsx)(`div`,{className:`flex-1 h-3 bg-muted/30 rounded overflow-hidden`,children:(0,K.jsx)(`div`,{className:`h-full ${e.color} transition-all duration-300`,style:{width:`${t}%`}})}),(0,K.jsxs)(`span`,{className:`font-mono w-10 text-right text-muted-foreground`,children:[t,`%`]})]},e.label)})})}function ag({turn:e,index:t,maxValue:n,maxCompositionValue:r,cumulativeInput:i,cumulativeOutput:a,cumulativeComposition:o,showCumulative:s,viewMode:c}){let[l,u]=(0,y.useState)(!1),d=s?i:e.input_tokens,f=s?a:e.output_tokens,p=s?o:e.composition,m=new Date(e.timestamp*1e3).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`});return(0,K.jsxs)(`div`,{className:`border-b border-muted/50 last:border-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-3 py-2 px-2 hover:bg-muted/30 cursor-pointer transition-colors`,onClick:()=>u(!l),children:[(0,K.jsx)(`div`,{className:`w-6 h-6 rounded-full bg-muted flex items-center justify-center text-xs font-medium flex-shrink-0`,children:t+1}),(0,K.jsx)(`div`,{className:`flex-1 min-w-0`,children:c===`tokens`?(0,K.jsx)(tg,{segments:ng(d,f),maxValue:n,height:20,renderLabel:(e,t)=>(0,K.jsxs)(`div`,{className:`flex items-center gap-1 text-xs font-mono text-muted-foreground min-w-[80px] justify-end`,children:[(0,K.jsxs)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:[`↑`,$h(t[0]?.value||0)]}),(0,K.jsx)(`span`,{children:`/`}),(0,K.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:[`↓`,$h(t[1]?.value||0)]})]})}):(0,K.jsx)(tg,{segments:rg(p),maxValue:r,height:20,renderLabel:e=>(0,K.jsxs)(`div`,{className:`text-xs font-mono text-muted-foreground min-w-[50px] text-right`,children:[$h(Math.round(e/4)),`~`]})})}),(0,K.jsx)(`div`,{className:`text-muted-foreground flex-shrink-0`,children:l?(0,K.jsx)(su,{className:`h-4 w-4`}):(0,K.jsx)(du,{className:`h-4 w-4`})})]}),l&&(0,K.jsx)(`div`,{className:`pb-3`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-3 px-2`,children:[(0,K.jsx)(`div`,{className:`w-6 flex justify-center flex-shrink-0`,children:(0,K.jsx)(`div`,{className:`w-px h-full bg-muted`})}),(0,K.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground text-xs mt-1`,children:`└─`}),(0,K.jsxs)(`div`,{className:`flex-1 space-y-3`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,K.jsxs)(`div`,{children:[`Time: `,(0,K.jsx)(`span`,{className:`font-mono text-foreground`,children:m})]}),(0,K.jsxs)(`div`,{children:[`Duration: `,(0,K.jsxs)(`span`,{className:`font-mono text-foreground`,children:[e.duration_ms.toFixed(0),`ms`]})]}),e.model&&(0,K.jsxs)(`div`,{children:[`Model: `,(0,K.jsx)(`span`,{className:`font-mono text-foreground`,children:e.model})]}),e.entity_id&&(0,K.jsxs)(`div`,{children:[`Entity: `,(0,K.jsx)(`span`,{className:`font-mono text-foreground`,children:e.entity_id})]})]}),c===`tokens`&&(0,K.jsxs)(`div`,{className:`flex gap-4 text-xs`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`Input:`}),` `,(0,K.jsx)(`span`,{className:`font-mono`,children:e.input_tokens.toLocaleString()})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:`Output:`}),` `,(0,K.jsx)(`span`,{className:`font-mono`,children:e.output_tokens.toLocaleString()})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Total:`}),` `,(0,K.jsx)(`span`,{className:`font-mono`,children:e.total_tokens.toLocaleString()})]})]}),c===`composition`&&e.composition.total>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`text-xs text-muted-foreground mb-2 flex items-center gap-1`,children:[(0,K.jsx)(td,{className:`h-3 w-3`}),`Context Composition (estimated from ~`,$h(Math.round(e.composition.total/4)),` tokens)`]}),(0,K.jsx)(ig,{composition:e.composition})]})]})]})})]})})]})}function og({label:e,value:t,icon:n,color:r=`default`}){let i={default:`text-muted-foreground`,blue:`text-blue-600 dark:text-blue-400`,green:`text-emerald-600 dark:text-emerald-400`}[r];return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 p-2 bg-muted/30 rounded`,children:[(0,K.jsx)(n,{className:`h-4 w-4 ${i}`}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e}),(0,K.jsx)(`div`,{className:`font-mono text-sm font-medium`,children:t})]})]})}function sg({events:e}){let t=Q(e=>e.runtime),n=Q(e=>e.serverCapabilities.trace_retrieval),r=Q(e=>e.contextInspectorViewMode),i=Q(e=>e.setContextInspectorViewMode),a=Q(e=>e.contextInspectorCumulative),o=Q(e=>e.setContextInspectorCumulative),s=(0,y.useMemo)(()=>Xh(e),[e]),c=(0,y.useMemo)(()=>Zh(s),[s]),l=(0,y.useMemo)(()=>Qh(s),[s]),u=(0,y.useMemo)(()=>s.length===0?0:a?c.totalTokens:0,[s,a,c.totalTokens]),d=(0,y.useMemo)(()=>s.length===0?0:a?l.total:0,[s,a,l.total]),f=(0,y.useMemo)(()=>{let e=0,t=0,n={system:0,user:0,assistant:0,toolCalls:0,toolResults:0,total:0};return s.map(r=>(e+=r.input_tokens,t+=r.output_tokens,n={system:n.system+r.composition.system,user:n.user+r.composition.user,assistant:n.assistant+r.composition.assistant,toolCalls:n.toolCalls+r.composition.toolCalls,toolResults:n.toolResults+r.composition.toolResults,total:n.total+r.composition.total},{input:e,output:t,composition:{...n}}))},[s]);return s.length===0?(0,K.jsxs)(`div`,{className:`flex flex-col items-center text-center p-6 pt-9`,children:[(0,K.jsx)(tu,{className:`h-8 w-8 text-muted-foreground mb-3`}),(0,K.jsx)(`div`,{className:`text-sm font-medium mb-1`,children:`No Data`}),(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground max-w-[200px]`,children:n?`Start a conversation to inspect OpenTelemetry context from the Aspire Dashboard.`:t===`dotnet`?`Trace retrieval is not available for this server.`:(0,K.jsxs)(K.Fragment,{children:[`Run`,` `,(0,K.jsx)(`span`,{className:`font-mono bg-accent/10 px-1 rounded`,children:`devui --instrumentation`}),` `,`and start a conversation.`]})})]}):(0,K.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`p-3 border-b flex-shrink-0 space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(tu,{className:`h-4 w-4`}),(0,K.jsx)(`span`,{className:`font-medium text-sm`,children:`Context Inspector`}),(0,K.jsxs)(Ft,{variant:`outline`,className:`text-xs`,children:[s.length,` turn`,s.length===1?``:`s`]})]}),(0,K.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground cursor-pointer`,children:[(0,K.jsx)(nh,{checked:a,onCheckedChange:e=>o(e===!0),className:`h-3.5 w-3.5`}),(0,K.jsx)(`span`,{children:`Cumulative`})]})]}),(0,K.jsxs)(`div`,{className:`flex items-center bg-muted rounded-md p-1`,children:[(0,K.jsx)(`button`,{onClick:()=>i(`tokens`),className:`flex-1 px-3 py-1.5 text-xs rounded transition-colors ${r===`tokens`?`bg-background shadow-sm font-medium`:`text-muted-foreground hover:text-foreground`}`,children:`Tokens`}),(0,K.jsx)(`button`,{onClick:()=>i(`composition`),className:`flex-1 px-3 py-1.5 text-xs rounded transition-colors ${r===`composition`?`bg-background shadow-sm font-medium`:`text-muted-foreground hover:text-foreground`}`,children:`Composition`})]}),(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:r===`tokens`?`Token usage per turn`:`Context breakdown by message type (chars)`})]}),(0,K.jsx)(mm,{className:`flex-1`,children:(0,K.jsxs)(`div`,{className:`p-3 space-y-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-4 text-xs px-1 flex-wrap`,children:[r===`tokens`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-3 h-3 rounded ${eg.input}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Input (↑)`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-3 h-3 rounded ${eg.output}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Output (↓)`})]})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.system}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`System`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.user}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`User`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.assistant}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Assistant`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.toolCalls}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Tools`})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-sm ${eg.toolResults}`}),(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Results`})]})]}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,K.jsx)(td,{className:`h-3 w-3`}),(0,K.jsx)(`span`,{children:`Click for details`})]})]}),(0,K.jsx)(`div`,{className:`border rounded-lg overflow-hidden`,children:s.map((e,t)=>(0,K.jsx)(ag,{turn:e,index:t,maxValue:u,maxCompositionValue:d,cumulativeInput:f[t]?.input||0,cumulativeOutput:f[t]?.output||0,cumulativeComposition:f[t]?.composition||e.composition,showCumulative:a,viewMode:r},e.response_id))}),(0,K.jsxs)(`div`,{className:`border rounded-lg overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`p-3 bg-muted/30 border-b`,children:(0,K.jsx)(`span`,{className:`text-xs font-medium`,children:`Session Summary`})}),(0,K.jsxs)(`div`,{className:`p-3 space-y-3`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,K.jsx)(og,{label:`Total Tokens`,value:$h(c.totalTokens),icon:ad}),(0,K.jsx)(og,{label:`Input`,value:$h(c.totalInput),icon:tu,color:`blue`}),(0,K.jsx)(og,{label:`Output`,value:$h(c.totalOutput),icon:tu,color:`green`})]}),s.length>1&&(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs pt-2 border-t border-muted/50`,children:[(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Avg per turn:`}),(0,K.jsx)(`span`,{className:`font-mono`,children:$h(c.avgTotal)})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Peak turn:`}),(0,K.jsx)(`span`,{className:`font-mono`,children:$h(c.peakTotal)})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Avg input:`}),(0,K.jsx)(`span`,{className:`font-mono text-blue-600 dark:text-blue-400`,children:$h(c.avgInput)})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Avg output:`}),(0,K.jsx)(`span`,{className:`font-mono text-emerald-600 dark:text-emerald-400`,children:$h(c.avgOutput)})]})]}),l.total>0&&(0,K.jsx)(`div`,{className:`pt-3 border-t border-muted/50`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground text-xs mt-0.5`,children:`└─`}),(0,K.jsxs)(`div`,{className:`flex-1`,children:[(0,K.jsxs)(`div`,{className:`text-xs text-muted-foreground mb-2 flex items-center gap-1`,children:[(0,K.jsx)(td,{className:`h-3 w-3`}),`Total Composition (all turns)`]}),(0,K.jsx)(ig,{composition:l})]})]})})]})]})]})})]})}gp();function cg(){return(0,K.jsx)(`div`,{className:`flex items-center gap-2 py-3 px-2`,children:(0,K.jsx)(`div`,{className:`flex-1 border-t border-border/50`})})}function lg(e){let t=[],n=!1;for(let r=0;r100&&(i.includes(` `)||i.trim().match(/[.!?]\s*$/))&&(t.push({type:`response.output_text.delta`,delta:i.trim()}),i=``);continue}a.type!==`response.usage.complete`&&t.push(a)}for(let[,e]of n)if(e.arguments.trim()&&e.arguments.trim().length>2){let n=r.get(e.callId)||e.name||`unknown`;t.push({type:`response.function_call.complete`,data:{name:n,arguments:e.arguments,call_id:e.callId}})}return i.trim()&&t.push({type:`response.output_text.delta`,delta:i.trim()}),t}function fg(e){switch(e.type){case`response.output_text.delta`:if(`delta`in e){let t=e.delta||``;return t.length>60?`${t.slice(0,60)}...`:t}return`Text output`;case`response.function_call.complete`:if(`data`in e&&e.data){let t=e.data,n=t.name||`unknown`;(!n||n===`unknown`)&&(n=`function_call`);let r=t.arguments?typeof t.arguments==`string`?t.arguments.slice(0,30):JSON.stringify(t.arguments).slice(0,30):``;return`Calling ${n}(${r}${r.length>=30?`...`:``})`}return`Function call`;case`response.function_call_arguments.delta`:return`delta`in e&&e.delta?`Function arg delta: ${e.delta.slice(0,30)}${e.delta.length>30?`...`:``}`:`Function arguments...`;case`response.function_result.complete`:{let t=e.output.slice(0,40);return`Function result: ${t}${t.length>=40?`...`:``}`}case`response.output_item.added`:{let t=e;return t.item.type===`function_call`?`Tool call: ${t.item.name}`:`Output item added`}case`response.workflow_event.completed`:return`data`in e&&e.data?`Executor: ${e.data.executor_id||`unknown`}`:`Workflow event`;case`response.trace.completed`:return`data`in e&&e.data?`Trace: ${e.data.operation_name||`unknown`}`:`Trace event`;case`response.completed`:if(`response`in e&&e.response&&`usage`in e.response){let t=e.response.usage;if(t)return`Response complete (${t.total_tokens} tokens)`}return`Response complete`;case`response.done`:return`Response complete`;case`error`:return`message`in e&&typeof e.message==`string`?e.message:`Error occurred`;default:return`${e.type}`}}function pg(e){switch(e){case`response.output_text.delta`:return _d;case`response.function_call.complete`:case`response.function_call.delta`:case`response.function_call_arguments.delta`:return ff;case`response.function_result.complete`:return yu;case`response.output_item.added`:return yu;case`response.workflow_event.completed`:return Ul;case`response.trace.completed`:return zd;case`response.completed`:return yu;case`response.done`:return yu;case`error`:return Cu;default:return hu}}function mg(e){switch(e){case`response.output_text.delta`:return`text-gray-600 dark:text-gray-400`;case`response.function_call.complete`:case`response.function_call.delta`:case`response.function_call_arguments.delta`:return`text-blue-600 dark:text-blue-400`;case`response.function_result.complete`:return`text-green-600 dark:text-green-400`;case`response.output_item.added`:return`text-green-600 dark:text-green-400`;case`response.workflow_event.completed`:return`text-purple-600 dark:text-purple-400`;case`response.trace.completed`:return`text-orange-600 dark:text-orange-400`;case`response.completed`:return`text-green-600 dark:text-green-400`;case`response.done`:return`text-green-600 dark:text-green-400`;case`error`:return`text-red-600 dark:text-red-400`;default:return`text-gray-600 dark:text-gray-400`}}function hg({event:e}){let[t,n]=(0,y.useState)(!1),r=e.type||`unknown`,i=pg(r),a=mg(r),o=`_uiTimestamp`in e&&typeof e._uiTimestamp==`number`?new Date(e._uiTimestamp*1e3).toLocaleTimeString():new Date().toLocaleTimeString(),s=fg(e),c=e.type===`response.function_call.complete`&&`data`in e&&e.data||e.type===`response.function_result.complete`||e.type===`response.output_item.added`&&ug(e)!==null||e.type===`response.workflow_event.completed`&&`data`in e&&e.data||e.type===`response.trace.completed`&&`data`in e&&e.data||e.type===`response.trace.completed`&&`data`in e&&e.data||e.type===`response.output_text.delta`&&`delta`in e&&e.delta&&e.delta.length>100||e.type===`response.completed`&&`response`in e&&e.response||e.type===`error`;return(0,K.jsxs)(`div`,{className:`border-l-2 border-muted pl-3 py-2 hover:bg-muted/50 transition-colors`,"data-devui-debug-event":r,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground mb-1`,children:[(0,K.jsx)(i,{className:`h-3 w-3 ${a}`}),(0,K.jsx)(`span`,{className:`font-mono`,children:o}),(0,K.jsx)(Ft,{variant:`outline`,className:`text-xs py-0`,children:e.type?e.type.replace(`response.`,``):`unknown`})]}),(0,K.jsxs)(`div`,{className:`text-sm`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 ${c?`cursor-pointer`:``}`,onClick:()=>c&&n(!t),children:[c&&(0,K.jsx)(`div`,{className:`text-muted-foreground`,children:t?(0,K.jsx)(su,{className:`h-3 w-3`}):(0,K.jsx)(du,{className:`h-3 w-3`})}),(0,K.jsx)(`div`,{className:`text-muted-foreground flex-1`,children:c&&s.length>80?`${s.slice(0,80)}...`:s})]}),t&&c&&(0,K.jsx)(`div`,{className:`mt-2 ml-5 p-3 bg-muted/30 rounded border`,children:(0,K.jsx)(gg,{event:e})})]})]})}function gg({event:e}){if(e.type===`error`){let t=e;return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Cu,{className:`h-4 w-4 text-red-500`}),(0,K.jsx)(`span`,{className:`font-semibold text-sm`,children:`Error Details`})]}),(0,K.jsxs)(`div`,{className:`text-xs`,children:[t.message&&(0,K.jsxs)(`div`,{className:`mb-2`,children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Message:`}),(0,K.jsx)(`div`,{className:`mt-1`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-destructive/10 border border-destructive/30 rounded p-2 text-destructive whitespace-pre-wrap break-all`,children:t.message})})]}),t.code&&(0,K.jsxs)(`div`,{className:`mb-2`,children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Code:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.code})]}),t.param&&(0,K.jsxs)(`div`,{className:`mb-2`,children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Parameter:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.param})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Raw Event:`}),(0,K.jsx)(`div`,{className:`mt-1`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 whitespace-pre-wrap break-all max-h-32 overflow-auto`,children:JSON.stringify(e,null,2)})})]})]})]})}switch(e.type){case`response.function_call.complete`:if(`data`in e&&e.data){let t=e.data;return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(ff,{className:`h-4 w-4 text-blue-500`}),(0,K.jsx)(`span`,{className:`font-semibold text-sm`,children:`Function Call`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 text-xs`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Function:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono bg-blue-100 dark:bg-blue-900 px-2 py-1 rounded`,children:t.name||`unknown`})]}),t.call_id&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Call ID:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.call_id})]}),t.arguments&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Arguments:`}),(0,K.jsx)(`div`,{className:`mt-1 max-h-32 overflow-auto`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 whitespace-pre-wrap max-w-full break-all`,children:typeof t.arguments==`string`?t.arguments:JSON.stringify(t.arguments,null,1)})})]})]})]})}break;case`response.function_result.complete`:{let t=e;return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(yu,{className:`h-4 w-4 text-green-500`}),(0,K.jsx)(`span`,{className:`font-semibold text-sm`,children:`Function Result`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 text-xs`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Call ID:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.call_id})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Status:`}),(0,K.jsx)(`span`,{className:`ml-2 px-2 py-1 rounded text-xs font-medium ${t.status===`completed`?`bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200`:`bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200`}`,children:t.status})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Output:`}),(0,K.jsx)(`div`,{className:`mt-1 max-h-32 overflow-auto`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 whitespace-pre-wrap max-w-full break-all`,children:t.output})})]})]})]})}case`response.output_item.added`:{let t=ug(e);if(t)return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(yu,{className:`h-4 w-4 text-green-500`}),(0,K.jsx)(`span`,{className:`font-semibold text-sm`,children:`Function Result`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 text-xs`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Call ID:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.call_id})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Status:`}),(0,K.jsx)(`span`,{className:`ml-2 px-2 py-1 rounded text-xs font-medium ${t.status===`completed`?`bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200`:`bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200`}`,children:t.status})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Output:`}),(0,K.jsx)(`div`,{className:`mt-1 max-h-32 overflow-auto`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 whitespace-pre-wrap max-w-full break-all`,children:t.output})})]})]})]});break}case`response.workflow_event.completed`:if(`data`in e&&e.data){let t=e.data;return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Ul,{className:`h-4 w-4 text-purple-500`}),(0,K.jsx)(`span`,{className:`font-semibold text-sm`,children:`Workflow Event`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 text-xs`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Event Type:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono bg-purple-100 dark:bg-purple-900 px-2 py-1 rounded`,children:t.event_type||`unknown`})]}),t.executor_id&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Executor:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono`,children:t.executor_id})]}),t.timestamp&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Timestamp:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.timestamp})]}),t.data&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Data:`}),(0,K.jsx)(`div`,{className:`mt-1 max-h-32 overflow-auto`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 whitespace-pre-wrap max-w-full break-all`,children:typeof t.data==`string`?t.data:JSON.stringify(t.data,null,1)})})]})]})]})}break;case`response.trace.completed`:if(`data`in e&&e.data){let t=e.data;return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(zd,{className:`h-4 w-4 text-orange-500`}),(0,K.jsx)(`span`,{className:`font-semibold text-sm`,children:`Trace Event`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 text-xs`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Operation:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono bg-orange-100 dark:bg-orange-900 px-2 py-1 rounded`,children:t.operation_name||`unknown`})]}),t.span_id&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Span ID:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.span_id})]}),t.trace_id&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Trace ID:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.trace_id})]}),t.duration_ms&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Duration:`}),(0,K.jsxs)(`span`,{className:`ml-2 font-mono text-xs`,children:[Number(t.duration_ms).toFixed(2),`ms`]})]}),t.status&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Status:`}),(0,K.jsx)(`span`,{className:`ml-2 px-2 py-1 rounded text-xs font-medium ${t.status===`StatusCode.UNSET`||t.status===`OK`?`bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200`:`bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200`}`,children:t.status||`unknown`})]}),t.entity_id&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Entity:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs`,children:t.entity_id})]}),t.attributes&&Object.keys(t.attributes).length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Attributes:`}),(0,K.jsx)(`div`,{className:`mt-1 max-h-32 overflow-auto`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 whitespace-pre-wrap break-all`,children:bg(t.attributes)})})]})]})]})}break;case`response.output_text.delta`:if(`delta`in e&&e.delta)return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(_d,{className:`h-4 w-4 text-gray-500`}),(0,K.jsx)(`span`,{className:`font-semibold text-sm`,children:`Text Output`})]}),(0,K.jsx)(`div`,{className:`max-h-32 overflow-auto`,children:(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 whitespace-pre-wrap max-w-full break-all`,children:e.delta})})]});break;case`response.completed`:if(`response`in e&&e.response){let t=e.response;return(0,K.jsx)(`div`,{className:`space-y-2`,children:(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-2 text-xs`,children:[t.usage&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{children:(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Usage:`})}),(0,K.jsxs)(`div`,{className:`ml-4 space-y-1`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Input tokens:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono`,children:t.usage.input_tokens})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Output tokens:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono`,children:t.usage.output_tokens})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Total tokens:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono bg-green-100 dark:bg-green-900 px-2 py-1 rounded`,children:t.usage.total_tokens})]})]})]}),t.id&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Response ID:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs break-all`,children:t.id})]}),t.model&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:`Model:`}),(0,K.jsx)(`span`,{className:`ml-2 font-mono text-xs break-all`,children:t.model})]})]})})}break;default:return(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:(0,K.jsx)(`pre`,{className:`bg-background border rounded p-2 overflow-auto max-h-32`,children:JSON.stringify(e,null,2)})})}return null}function _g({events:e,processedEvents:t,isStreaming:n}){let r=(0,y.useRef)(null),i=[...(0,y.useMemo)(()=>lg(t),[t])].reverse();return(0,K.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between p-3 border-b`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Ul,{className:`h-4 w-4`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Events`}),(0,K.jsxs)(Ft,{variant:`outline`,children:[t.length,e.length>t.length?` (${e.length} raw)`:``]})]}),n&&(0,K.jsxs)(`div`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[(0,K.jsx)(`div`,{className:`h-2 w-2 animate-pulse rounded-full bg-green-500 dark:bg-green-400`}),`Streaming`]})]}),(0,K.jsx)(mm,{ref:r,className:`flex-1`,children:(0,K.jsx)(`div`,{className:`p-3`,children:t.length===0?(0,K.jsx)(`div`,{className:`text-center text-muted-foreground text-sm py-8`,children:e.length===0?`No events yet. Start a conversation to see real-time events.`:`Processing events... Accumulated events will appear here.`}):(0,K.jsx)(`div`,{className:`space-y-2`,children:i.map((e,t)=>`type`in e&&e.type===`separator`?(0,K.jsx)(cg,{},e.id):(0,K.jsx)(hg,{event:e},`${e.type}-${t}`))})})})]})}function vg(e){let t=new Map;for(let n of e){if(!(`data`in n))continue;let e=n.data.response_id||`unknown`;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=[];for(let[e,r]of t){let t=new Map,i=[];for(let e of r){if(!(`data`in e))continue;let n=e.data,r=n.span_id||`span_${Math.random()}`;t.set(r,{event:e,data:n,children:[]})}for(let e of r){if(!(`data`in e))continue;let n=e.data,r=n.span_id||``,a=n.parent_span_id,o=t.get(r);o&&(a&&t.has(a)?t.get(a).children.push(o):i.push(o))}i.sort((e,t)=>(e.data.start_time||0)-(t.data.start_time||0));let a=e=>{e.children.sort((e,t)=>(e.data.start_time||0)-(t.data.start_time||0)),e.children.forEach(a)};i.forEach(a);let o=r[0],s=o&&`data`in o?o.data:null,c=Math.min(...r.map(e=>(`data`in e?e.data:null)?.start_time||Date.now()/1e3)),l=r.reduce((e,t)=>e+((`data`in t?t.data:null)?.duration_ms||0),0);n.push({response_id:e,timestamp:c,traces:i,totalDuration:l,entity_id:s?.entity_id})}return n.sort((e,t)=>t.timestamp-e.timestamp),n}function yg(e){if(typeof e==`string`){let t=e.trim();if(t.startsWith(`[`)||t.startsWith(`{`))try{return yg(JSON.parse(e))}catch{return e}return e}if(Array.isArray(e))return e.map(yg);if(typeof e==`object`&&e){let t={};for(let[n,r]of Object.entries(e))t[n]=yg(r);return t}return e}function bg(e){try{let t=yg(e);return JSON.stringify(t,null,2)}catch{return JSON.stringify(e,null,2)}}function xg(e){return e.includes(`invoke_agent`)||e.includes(`Agent`)?`bg-purple-100 dark:bg-purple-900 text-purple-800 dark:text-purple-200`:e.includes(`chat`)||e.includes(`Chat`)?`bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200`:e.includes(`tool`)||e.includes(`execute`)?`bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200`:`bg-orange-100 dark:bg-orange-900 text-orange-800 dark:text-orange-200`}function Sg({node:e,depth:t=0}){let[n,r]=(0,y.useState)(t<2),[i,a]=(0,y.useState)(!1),{data:o}=e,s=o.operation_name||`Unknown`,c=o.duration_ms?`${Number(o.duration_ms).toFixed(1)}ms`:``,l=e.children.length>0,u=o.attributes?.[`gen_ai.usage.input_tokens`],d=o.attributes?.[`gen_ai.usage.output_tokens`],f=u!==void 0||d!==void 0;return(0,K.jsxs)(`div`,{className:`relative`,children:[t>0&&(0,K.jsx)(`div`,{className:`absolute left-0 top-0 bottom-0 border-l-2 border-muted`,style:{marginLeft:`${(t-1)*16+8}px`}}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 py-1.5 hover:bg-muted/50 rounded transition-colors`,style:{paddingLeft:`${t*16}px`},children:[(0,K.jsx)(`button`,{onClick:()=>l?r(!n):a(!i),className:`w-4 h-4 flex items-center justify-center text-muted-foreground hover:text-foreground`,children:l?n?(0,K.jsx)(su,{className:`h-3 w-3`}):(0,K.jsx)(du,{className:`h-3 w-3`}):i?(0,K.jsx)(su,{className:`h-3 w-3`}):(0,K.jsx)(du,{className:`h-3 w-3`})}),(0,K.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded font-medium ${xg(s)}`,children:s.replace(`Agent.`,``).replace(`invoke_agent `,``)}),c&&(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:c}),f&&(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:[u!==void 0&&(0,K.jsxs)(`span`,{children:[`↑`,String(u)]}),u!==void 0&&d!==void 0&&(0,K.jsx)(`span`,{className:`mx-0.5`,children:`/`}),d!==void 0&&(0,K.jsxs)(`span`,{children:[`↓`,String(d)]})]})]}),i&&!l&&(0,K.jsx)(`div`,{className:`ml-4 mt-1 mb-2 p-2 bg-muted/30 rounded border text-xs`,style:{marginLeft:`${t*16+20}px`},children:(0,K.jsxs)(`div`,{className:`space-y-1`,children:[o.span_id&&(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground w-20`,children:`Span ID:`}),(0,K.jsx)(`span`,{className:`font-mono text-xs break-all`,children:o.span_id})]}),o.trace_id&&(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground w-20`,children:`Trace ID:`}),(0,K.jsx)(`span`,{className:`font-mono text-xs break-all`,children:o.trace_id})]}),o.status&&(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground w-20`,children:`Status:`}),(0,K.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-xs ${o.status===`StatusCode.UNSET`||o.status===`OK`?`bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200`:`bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200`}`,children:o.status})]}),o.attributes&&Object.keys(o.attributes).length>0&&(0,K.jsxs)(`div`,{className:`mt-2`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground block mb-1`,children:`Attributes:`}),(0,K.jsx)(`pre`,{className:`text-xs bg-background border rounded p-2 overflow-auto max-h-32 whitespace-pre-wrap break-all`,children:bg(o.attributes)})]})]})}),l&&n&&(0,K.jsx)(`div`,{children:e.children.map((e,n)=>(0,K.jsx)(Sg,{node:e,depth:t+1},e.data.span_id||n))})]})}function Cg({group:e}){let[t,n]=(0,y.useState)(!0),r=new Date(e.timestamp*1e3).toLocaleTimeString(),i=e.totalDuration>0?`${e.totalDuration.toFixed(0)}ms`:``,a=e.traces.reduce((e,t)=>{let n=e=>1+e.children.reduce((e,t)=>e+n(t),0);return e+n(t)},0);return(0,K.jsxs)(`div`,{className:`border rounded-lg overflow-hidden`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 p-2 bg-muted/50 cursor-pointer hover:bg-muted/70 transition-colors`,onClick:()=>n(!t),children:[(0,K.jsx)(`div`,{className:`text-muted-foreground`,children:t?(0,K.jsx)(su,{className:`h-4 w-4`}):(0,K.jsx)(du,{className:`h-4 w-4`})}),(0,K.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:r}),e.entity_id&&(0,K.jsx)(Ft,{variant:`outline`,className:`text-xs py-0`,children:e.entity_id.replace(`agent_`,``).replace(`workflow_`,``)}),(0,K.jsx)(`div`,{className:`flex-1`}),i&&(0,K.jsx)(Ft,{variant:`secondary`,className:`text-xs py-0`,children:i}),(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[a,` span`,a===1?``:`s`]})]}),t&&(0,K.jsx)(`div`,{className:`p-2 border-t`,children:e.traces.map((e,t)=>(0,K.jsx)(Sg,{node:e,depth:0},e.data.span_id||t))})]})}function wg({events:e}){let t=Q(e=>e.debugTraceSubTab),n=Q(e=>e.setDebugTraceSubTab),r=Q(e=>e.runtime),i=Q(e=>e.serverCapabilities.trace_retrieval),a=e.filter(e=>e.type===`response.trace.completed`),o=vg(a);return(0,K.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 p-3 border-b`,children:[(0,K.jsx)(zd,{className:`h-4 w-4`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Traces`}),(0,K.jsx)(Ft,{variant:`outline`,children:a.length}),(0,K.jsx)(`div`,{className:`flex-1`}),(0,K.jsxs)(`div`,{className:`flex items-center bg-muted rounded-md p-1 min-w-0`,children:[(0,K.jsx)(`button`,{onClick:()=>n(`spans`),className:`px-3 py-1.5 text-xs rounded transition-colors truncate ${t===`spans`?`bg-background shadow-sm font-medium`:`text-muted-foreground hover:text-foreground`}`,children:`OTel Spans`}),(0,K.jsxs)(`button`,{onClick:()=>n(`context`),className:`px-3 py-1.5 text-xs rounded transition-colors flex items-center gap-1.5 min-w-0 ${t===`context`?`bg-background shadow-sm font-medium`:`text-muted-foreground hover:text-foreground`}`,children:[(0,K.jsx)(tu,{className:`h-3.5 w-3.5 flex-shrink-0`}),(0,K.jsx)(`span`,{className:`truncate`,children:`Context Inspector`})]})]})]}),t===`spans`?(0,K.jsxs)(`div`,{className:`flex-1 flex flex-col min-h-0`,children:[a.length>0&&(0,K.jsx)(`div`,{className:`p-3 border-b flex-shrink-0`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(zd,{className:`h-4 w-4`}),(0,K.jsx)(`span`,{className:`font-medium text-sm`,children:`OTel Spans`}),(0,K.jsxs)(Ft,{variant:`outline`,className:`text-xs`,children:[o.length,` turn`,o.length===1?``:`s`]})]})}),a.length===0?(0,K.jsxs)(`div`,{className:`flex flex-col items-center text-center p-6 pt-9`,children:[(0,K.jsx)(tu,{className:`h-8 w-8 text-muted-foreground mb-3`}),(0,K.jsx)(`div`,{className:`text-sm font-medium mb-1`,children:`No Data`}),(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground max-w-[200px]`,children:i?`Start a conversation to view OpenTelemetry spans from the Aspire Dashboard.`:r===`dotnet`?`Trace retrieval is not available for this server.`:(0,K.jsxs)(K.Fragment,{children:[`Run`,` `,(0,K.jsx)(`span`,{className:`font-mono bg-accent/10 px-1 rounded`,children:`devui --instrumentation`}),` `,`and start a conversation.`]})})]}):(0,K.jsx)(mm,{className:`flex-1`,children:(0,K.jsx)(`div`,{className:`p-3`,children:(0,K.jsx)(`div`,{className:`space-y-3`,children:o.map(e=>(0,K.jsx)(Cg,{group:e},e.response_id))})})})]}):(0,K.jsx)(sg,{events:e})]})}function Tg({events:e,processedEvents:t}){let n=[],r=t.filter(e=>e.type===`response.function_call.complete`),i=e.filter(e=>ug(e)!==null),a=new Map;i.forEach(e=>{let t=ug(e);t&&a.set(t.call_id,e)}),r.forEach(e=>{if(n.push(e),`data`in e&&e.data&&e.data.call_id){let t=String(e.data.call_id),r=a.get(t);r&&(n.push(r),a.delete(t))}}),a.forEach(e=>{n.push(e)});let o=[...lg(n)].reverse();return(0,K.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 p-3 border-b`,children:[(0,K.jsx)(ff,{className:`h-4 w-4`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Tools`}),(0,K.jsx)(Ft,{variant:`outline`,children:n.length})]}),(0,K.jsx)(mm,{className:`flex-1`,children:(0,K.jsx)(`div`,{className:`p-3`,children:n.length===0?(0,K.jsx)(`div`,{className:`text-center text-muted-foreground text-sm py-8`,children:`No tool executions yet. Tool calls will appear here during conversations.`}):(0,K.jsx)(`div`,{className:`space-y-3`,children:o.map((e,t)=>`type`in e&&e.type===`separator`?(0,K.jsx)(cg,{},e.id):(0,K.jsx)(Eg,{event:e},t))})})})]})}function Eg({event:e}){let t=`_uiTimestamp`in e&&typeof e._uiTimestamp==`number`?new Date(e._uiTimestamp*1e3).toLocaleTimeString():new Date().toLocaleTimeString(),n=e.type===`response.function_call.complete`,r=ug(e),i=r!==null;if(!n&&!i)return null;let a=n&&`data`in e?e.data:null;return(0,K.jsxs)(`div`,{className:`border rounded p-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(gf,{className:`h-4 w-4 text-yellow-600 dark:text-yellow-400`}),(0,K.jsx)(`span`,{className:`font-medium text-sm`,children:n?`Tool Call`:`Tool Result`}),n&&a&&a.name!==void 0&&(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,String(a.name),`)`]})]}),(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:t})]}),n&&a&&(0,K.jsxs)(`div`,{className:`p-2 bg-blue-50 dark:bg-blue-950/50 border border-blue-200 dark:border-blue-800 rounded`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,K.jsx)(ff,{className:`h-3 w-3 text-blue-600 dark:text-blue-400`}),(0,K.jsx)(`span`,{className:`text-xs font-mono bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 px-2 py-1 rounded`,children:`CALL`}),(0,K.jsx)(`span`,{className:`font-medium text-sm`,children:String(a.name||`unknown`)})]}),a.arguments!==void 0&&(0,K.jsxs)(`div`,{className:`text-xs`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground mb-1 block`,children:`Arguments:`}),(0,K.jsx)(`pre`,{className:`p-2 bg-background border rounded text-xs overflow-auto max-h-32 max-w-full break-all whitespace-pre-wrap`,children:typeof a.arguments==`string`?a.arguments:JSON.stringify(a.arguments,null,1)})]})]}),i&&r&&(0,K.jsxs)(`div`,{className:`p-2 bg-green-50 dark:bg-green-950/50 border border-green-200 dark:border-green-800 rounded`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,K.jsx)(yu,{className:`h-3 w-3 text-green-600 dark:text-green-400`}),(0,K.jsx)(`span`,{className:`text-xs font-mono bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 px-2 py-1 rounded`,children:`RESULT`}),r.status!==`completed`&&(0,K.jsx)(`span`,{className:`ml-auto px-2 py-1 rounded text-xs font-medium bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200`,children:r.status})]}),(0,K.jsxs)(`div`,{className:`text-xs space-y-1`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Call ID:`}),(0,K.jsx)(`span`,{className:`font-mono text-xs break-all`,children:r.call_id})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`text-muted-foreground block mb-1`,children:`Output:`}),(0,K.jsx)(`pre`,{className:`p-2 bg-background border rounded text-xs overflow-auto max-h-32 break-all whitespace-pre-wrap`,children:r.output})]})]})]})]})}function Dg({events:e,isStreaming:t=!1,onMinimize:n}){let r=Q(e=>e.debugPanelTab),i=Q(e=>e.setDebugPanelTab),a=(0,y.useMemo)(()=>dg(e),[e]),o=(0,y.useMemo)(()=>({eventsCount:a.length,tracesCount:e.filter(e=>e.type===`response.trace.completed`).length,toolsCount:a.filter(e=>e.type===`response.function_call.complete`).length+e.filter(e=>ug(e)!==null).length}),[e,a]);return(0,K.jsx)(`div`,{className:`flex-1 border-l flex flex-col min-h-0`,children:(0,K.jsxs)(Pm,{value:r,onValueChange:e=>i(e),className:`flex-1 flex flex-col min-h-0`,children:[(0,K.jsxs)(`div`,{className:`px-3 pt-3 flex items-center gap-2 flex-shrink-0`,children:[(0,K.jsxs)(Fm,{className:`flex-1`,children:[(0,K.jsxs)(Im,{value:`events`,className:`flex-1 gap-1.5`,children:[`Events`,o.eventsCount>0&&(0,K.jsx)(`span`,{className:`text-[10px] bg-muted-foreground/20 text-muted-foreground px-1.5 py-0.5 rounded-full min-w-[1.25rem] text-center`,children:o.eventsCount})]}),(0,K.jsxs)(Im,{value:`traces`,className:`flex-1 gap-1.5`,children:[`Traces`,o.tracesCount>0&&(0,K.jsx)(`span`,{className:`text-[10px] bg-muted-foreground/20 text-muted-foreground px-1.5 py-0.5 rounded-full min-w-[1.25rem] text-center`,children:o.tracesCount})]}),(0,K.jsxs)(Im,{value:`tools`,className:`flex-1 gap-1.5`,children:[`Tools`,o.toolsCount>0&&(0,K.jsx)(`span`,{className:`text-[10px] bg-muted-foreground/20 text-muted-foreground px-1.5 py-0.5 rounded-full min-w-[1.25rem] text-center`,children:o.toolsCount})]})]}),n&&(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:n,className:`h-8 w-8 p-0 flex-shrink-0`,title:`Minimize debug panel`,children:(0,K.jsx)(du,{className:`h-4 w-4`})})]}),(0,K.jsx)(Lm,{value:`events`,className:`flex-1 mt-0 overflow-hidden`,children:(0,K.jsx)(_g,{events:e,processedEvents:a,isStreaming:t})}),(0,K.jsx)(Lm,{value:`traces`,className:`flex-1 mt-0 overflow-hidden`,children:(0,K.jsx)(wg,{events:e})}),(0,K.jsx)(Lm,{value:`tools`,className:`flex-1 mt-0 overflow-hidden`,children:(0,K.jsx)(Tg,{events:e,processedEvents:a})})]})})}function Og({open:e,onOpenChange:t,children:n}){return e?(0,K.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[(0,K.jsx)(`div`,{className:`absolute inset-0 bg-black/50`,onClick:()=>{t(!1)}}),(0,K.jsx)(`div`,{className:`relative z-10`,onClick:e=>{e.stopPropagation()},onMouseDown:e=>{e.stopPropagation()},onMouseUp:e=>e.stopPropagation(),children:n})]}):null}function kg({children:e,className:t=``}){let n=t.includes(`w-[`)||t.includes(`w-full`)||t.includes(`max-w-`)?``:`max-w-lg w-full`;return(0,K.jsx)(`div`,{className:`relative bg-background border rounded-lg shadow-lg max-h-[90vh] overflow-hidden ${n} ${t}`,children:e})}function Ag({children:e,className:t=``}){return(0,K.jsx)(`div`,{className:`space-y-2 ${t}`,children:e})}function jg({children:e,className:t=``}){return(0,K.jsx)(`h2`,{className:`text-lg font-semibold ${t}`,children:e})}function Mg({children:e,className:t=``}){return(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground ${t}`,children:e})}function Ng({onClose:e}){return(0,K.jsx)(q,{variant:`ghost`,size:`sm`,onClick:e,className:`absolute top-4 right-4 h-8 w-8 p-0 rounded-sm opacity-70 hover:opacity-100`,children:(0,K.jsx)(mf,{className:`h-4 w-4`})})}function Pg({children:e}){return(0,K.jsx)(`div`,{className:`flex justify-end gap-2 p-4 border-t bg-muted/50`,children:e})}function Fg({className:e,type:t,...n}){return(0,K.jsx)(`input`,{type:t,"data-slot":`input`,className:jt(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,e),...n})}var Ig=Object.defineProperty,Lg=y.forwardRef(((e,t)=>Ig(e,`name`,{value:t,configurable:!0}))(function(e,t){return(0,K.jsx)(Y.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}})},`Label`));function Rg({className:e,...t}){return(0,K.jsx)(Lg,{"data-slot":`label`,className:jt(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}var zg=Object.defineProperty,Bg=(e,t)=>zg(e,`name`,{value:t,configurable:!0}),Vg=`Switch`,[Hg,Ug]=Kt(Vg),[Wg,Gg]=Hg(Vg);function Kg(e){let{__scopeSwitch:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:l,value:u=`on`,internal_do_not_use_render:d}=e,[f,p]=rn({prop:n,defaultProp:i??!1,onChange:c,caller:Vg}),[m,h]=y.useState(null),[g,_]=y.useState(null),[v,b]=y.useState(null),x={checked:f,setChecked:p,disabled:a,control:m,setControl:h,name:s,form:o,value:u,userClick:v,onUserClick:b,required:l,defaultChecked:i,isFormControl:!m||!!o||!!m.closest(`form`),bubbleInput:g,setBubbleInput:_};return(0,K.jsx)(Wg,{scope:t,...x,children:e_(d)?d(x):r})}Bg(Kg,`SwitchProvider`);var qg=`SwitchTrigger`,Jg=y.forwardRef(Bg(function({__scopeSwitch:e,onClick:t,...n},r){let{control:i,form:a,value:o,disabled:s,checked:c,required:l,setControl:u,setChecked:d,onUserClick:f,isFormControl:p,bubbleInput:m}=Gg(qg,e),h=T(r,u),g=y.useRef(c);return y.useEffect(()=>{let e=a?i?.ownerDocument.getElementById(a):i?.form;if(e instanceof HTMLFormElement){let t=Bg(()=>d(g.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[i,a,d]),(0,K.jsx)(Y.button,{type:`button`,role:`switch`,"aria-checked":c,"aria-required":l,"data-state":t_(c),"data-disabled":s?``:void 0,disabled:s,value:o,...n,ref:h,onClick:J(t,e=>{let t=e.isPropagationStopped();f({requestedChecked:!c,hasConsumerStoppedPropagation:t}),d(e=>!e),m&&p&&(t||e.stopPropagation())})})},`SwitchTrigger`)),Yg=y.forwardRef(Bg(function(e,t){let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,K.jsx)(Kg,{__scopeSwitch:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Jg,{...d,ref:t,__scopeSwitch:n}),e&&(0,K.jsx)($g,{__scopeSwitch:n})]})})},`Switch`)),Xg=`SwitchThumb`,Zg=y.forwardRef(Bg(function(e,t){let{__scopeSwitch:n,...r}=e,i=Gg(Xg,n);return(0,K.jsx)(Y.span,{"data-state":t_(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})},`SwitchThumb`)),Qg=`SwitchBubbleInput`,$g=y.forwardRef(Bg(function({__scopeSwitch:e,onClick:t,...n},r){let{control:i,userClick:a,checked:o,defaultChecked:s,required:c,disabled:l,name:u,value:d,form:f,bubbleInput:p,setBubbleInput:m}=Gg(Qg,e),h=T(r,m),g=Va(i),_=y.useRef(!1),v=y.useRef(o),b=y.useRef(a),x=y.useRef(null);y.useEffect(()=>{let e=p;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set;if(!n)return;let r=v.current!==o;v.current=o;let i=a!==null&&a!==b.current;if(b.current=a,i)x.current=r?null:a,r&&n.call(e,o),e.dispatchEvent(new Event(`click`,{bubbles:!a.hasConsumerStoppedPropagation}));else if(r){let t=x.current;x.current=null;let r=t?.requestedChecked===o;_.current=!0,n.call(e,o),e.dispatchEvent(new Event(`click`,{bubbles:!(r&&t.hasConsumerStoppedPropagation)})),_.current=!1}},[p,o,a]);let S=y.useRef(o);return(0,K.jsx)(Y.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:s??S.current,required:c,disabled:l,name:u,value:d,form:f,...n,tabIndex:-1,ref:h,onClick:J(t,e=>{_.current&&e.stopPropagation()}),style:{...n.style,...g,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})},`SwitchBubbleInput`));function e_(e){return typeof e==`function`}Bg(e_,`isFunction`);function t_(e){return e?`checked`:`unchecked`}Bg(t_,`getState`);var n_=y.forwardRef(({className:e,...t},n)=>(0,K.jsx)(Yg,{className:jt(`peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input`,e),...t,ref:n,children:(0,K.jsx)(Zg,{className:jt(`pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0`)})}));n_.displayName=Yg.displayName,vp();var r_=[`gpt-4.1`,`gpt-4.1-mini`,`o1`,`o1-mini`,`o3-mini`];function i_({open:e,onOpenChange:t,onBackendUrlChange:n}){let[r,i]=(0,y.useState)(`general`),{oaiMode:a,setOAIMode:o,azureDeploymentEnabled:s,setAzureDeploymentEnabled:c,authRequired:l,serverCapabilities:u,serverVersion:d,runtime:f,uiMode:p,streamingEnabled:m,setStreamingEnabled:h}=Q(),[g,_]=(0,y.useState)(()=>localStorage.getItem(`devui_backend_url`)||``),[v,b]=(0,y.useState)(g),[x,S]=(0,y.useState)(!!localStorage.getItem(`devui_auth_token`)),[C,w]=(0,y.useState)(``),T=()=>{try{new URL(v),localStorage.setItem(`devui_backend_url`,v),_(v),n?.(v),t(!1),window.location.reload()}catch{alert(`Please enter a valid URL (e.g., http://localhost:8080)`)}},E=()=>{localStorage.removeItem(`devui_backend_url`),b(``),_(``),n?.(``),window.location.reload()},D=()=>{C.trim()&&(localStorage.setItem(`devui_auth_token`,C.trim()),S(!0),w(``),window.location.reload())},O=()=>{localStorage.removeItem(`devui_auth_token`),S(!1),w(``),window.location.reload()},k=v!==g,A=!localStorage.getItem(`devui_backend_url`);return(0,K.jsx)(Og,{open:e,onOpenChange:t,children:(0,K.jsxs)(kg,{className:`w-[600px] max-w-[90vw] flex flex-col max-h-[85vh]`,children:[(0,K.jsx)(Ag,{className:`p-6 pb-2 flex-shrink-0`,children:(0,K.jsx)(jg,{children:`Settings`})}),(0,K.jsx)(Ng,{onClose:()=>t(!1)}),(0,K.jsxs)(`div`,{className:`flex border-b px-6 flex-shrink-0`,children:[(0,K.jsxs)(`button`,{onClick:()=>i(`general`),className:`px-4 py-2 text-sm font-medium transition-colors relative ${r===`general`?`text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:[`General`,r===`general`&&(0,K.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-0.5 bg-primary`})]}),u.openai_proxy&&(0,K.jsxs)(`button`,{onClick:()=>i(`proxy`),className:`px-4 py-2 text-sm font-medium transition-colors relative ${r===`proxy`?`text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:[`OpenAI Proxy`,r===`proxy`&&(0,K.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-0.5 bg-primary`})]}),(0,K.jsxs)(`button`,{onClick:()=>i(`about`),className:`px-4 py-2 text-sm font-medium transition-colors relative ${r===`about`?`text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:[`About`,r===`about`&&(0,K.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-0.5 bg-primary`})]})]}),(0,K.jsxs)(`div`,{className:`px-6 pb-6 overflow-y-auto flex-1 min-h-[400px]`,children:[r===`general`&&(0,K.jsxs)(`div`,{className:`space-y-6 pt-4`,children:[(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(Rg,{htmlFor:`backend-url`,className:`text-sm font-medium`,children:`Backend URL`}),!A&&(0,K.jsxs)(q,{variant:`ghost`,size:`sm`,onClick:E,className:`h-7 text-xs`,title:`Reset to default`,children:[(0,K.jsx)(Ld,{className:`h-3 w-3 mr-1`}),`Reset`]})]}),(0,K.jsx)(Fg,{id:`backend-url`,type:`url`,value:v,onChange:e=>b(e.target.value),placeholder:`http://localhost:8080`,className:`font-mono text-sm`}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Default: `,(0,K.jsx)(`span`,{className:`font-mono`,children:``})]}),(0,K.jsx)(`div`,{className:`flex gap-2 pt-2 min-h-[36px]`,children:k&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(q,{onClick:T,size:`sm`,className:`flex-1`,children:`Apply & Reload`}),(0,K.jsx)(q,{onClick:()=>b(g),variant:`outline`,size:`sm`,className:`flex-1`,children:`Cancel`})]})})]}),(l||x)&&(0,K.jsxs)(`div`,{className:`space-y-3 border-t pt-6`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(Rg,{className:`text-sm font-medium`,children:`Authentication Token`}),!l&&x&&(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`(Not required by current backend)`})]}),x?(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Fg,{type:`password`,value:`••••••••••••••••••••`,disabled:!0,className:`font-mono text-sm flex-1`}),(0,K.jsx)(q,{variant:`destructive`,size:`sm`,onClick:O,className:`flex-shrink-0`,children:`Clear`})]}),(0,K.jsx)(`p`,{className:`text-xs text-green-600 dark:text-green-400`,children:`✓ Token configured and stored locally`})]}):(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsx)(Fg,{type:`password`,value:C,onChange:e=>w(e.target.value),placeholder:`Enter bearer token`,className:`font-mono text-sm`,onKeyDown:e=>{e.key===`Enter`&&C.trim()&&D()}}),(0,K.jsx)(q,{onClick:D,size:`sm`,disabled:!C.trim(),className:`w-full`,children:`Save & Reload`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:l?`Required by backend (started with --auth flag)`:`Not required by current backend`})]})]}),u.deployment&&(0,K.jsxs)(`div`,{className:`space-y-3 border-t pt-6`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,K.jsx)(Rg,{className:`text-sm font-medium`,children:`Azure Deployment`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Enable one-click deployment to Azure Container Apps`})]}),(0,K.jsx)(n_,{checked:s,onCheckedChange:c})]}),(0,K.jsxs)(`details`,{className:`group`,children:[(0,K.jsxs)(`summary`,{className:`cursor-pointer text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1`,children:[(0,K.jsx)(du,{className:`h-3 w-3 transition-transform group-open:rotate-90`}),`Learn more about Azure deployment`]}),(0,K.jsxs)(`div`,{className:`mt-3 space-y-3 pl-4`,children:[(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:`When enabled, agents that support deployment will show a "Deploy to Azure" button. This allows you to deploy your agent to Azure Container Apps directly from DevUI.`}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`When enabled:`}),(0,K.jsxs)(`ul`,{className:`text-xs text-muted-foreground space-y-0.5 list-disc list-inside`,children:[(0,K.jsx)(`li`,{children:`Shows "Deploy to Azure" for supported agents`}),(0,K.jsx)(`li`,{children:`Requires Azure CLI and proper authentication`}),(0,K.jsx)(`li`,{children:`Backend must have deployment capabilities enabled`})]})]}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`When disabled:`}),(0,K.jsxs)(`ul`,{className:`text-xs text-muted-foreground space-y-0.5 list-disc list-inside`,children:[(0,K.jsx)(`li`,{children:`Shows "Deployment Guide" for all agents`}),(0,K.jsx)(`li`,{children:`Provides Docker templates and manual deployment instructions`}),(0,K.jsx)(`li`,{children:`No backend deployment capabilities required`})]})]})]})]})]}),(0,K.jsx)(`div`,{className:`space-y-3 border-t pt-6`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,K.jsx)(Rg,{className:`text-sm font-medium`,children:`Show Tool Calls`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Display function/tool calls and results in chat messages`})]}),(0,K.jsx)(n_,{checked:Q.getState().showToolCalls,onCheckedChange:e=>Q.getState().setShowToolCalls(e)})]})}),(0,K.jsxs)(`div`,{className:`space-y-3 border-t pt-6`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,K.jsx)(Rg,{className:`text-sm font-medium`,children:`Streaming Mode`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Stream responses token-by-token as they're generated`})]}),(0,K.jsx)(n_,{checked:m,onCheckedChange:h})]}),!m&&(0,K.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-amber-600 dark:text-amber-400 bg-amber-500/10 p-3 rounded`,children:[(0,K.jsx)(td,{className:`h-3.5 w-3.5 flex-shrink-0 mt-0.5`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-medium`,children:`Non-streaming mode limitations:`}),(0,K.jsxs)(`ul`,{className:`mt-1 space-y-0.5 list-disc list-inside text-amber-600/80 dark:text-amber-400/80`,children:[(0,K.jsx)(`li`,{children:`Tool calls won't display in real-time`}),(0,K.jsx)(`li`,{children:`No typing indicator during generation`}),(0,K.jsx)(`li`,{children:`Response appears all at once when complete`})]})]})]})]})]}),r===`proxy`&&u.openai_proxy&&(0,K.jsxs)(`div`,{className:`space-y-6 pt-4`,children:[(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,K.jsx)(Rg,{className:`text-base font-medium`,children:`OpenAI Proxy Mode`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Route requests through DevUI backend to OpenAI API`})]}),(0,K.jsx)(n_,{checked:a.enabled,onCheckedChange:e=>o({...a,enabled:e})})]}),!a.enabled&&(0,K.jsx)(`div`,{className:`bordder border-muted bg-muted/30 rounded-lg p-4 space-y-3`,children:(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(td,{className:`h-4 w-4 flex-shrink-0 mt-0.5 text-blue-600 dark:text-blue-400`}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(`p`,{className:`text-sm font-medium`,children:`About OpenAI Proxy Mode`}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:[`When enabled, your chat requests are sent to your DevUI backend`,` `,(0,K.jsxs)(`span`,{className:`font-mono font-semibold`,children:[`(`,g,`)`]}),`, which then forwards them to OpenAI's API. This keeps your`,` `,(0,K.jsx)(`span`,{className:`font-mono font-semibold`,children:`OPENAI_API_KEY`}),` `,`secure on the server instead of exposing it in the browser.`]}),(0,K.jsxs)(`div`,{className:`space-y-1.5 pt-1`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Requirements:`}),(0,K.jsxs)(`ul`,{className:`text-xs text-muted-foreground space-y-0.5 list-disc list-inside`,children:[(0,K.jsxs)(`li`,{children:[`Backend must have`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`OPENAI_API_KEY`}),` `,`configured`]}),(0,K.jsx)(`li`,{children:`Backend must support OpenAI Responses API proxying (DevUI does)`})]})]}),(0,K.jsxs)(`div`,{className:`space-y-1.5 pt-1`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Why use this?`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Quickly test and compare OpenAI models directly through the DevUI interface without creating custom agents or exposing API keys in the browser.`})]})]})]})}),a.enabled&&(0,K.jsxs)(`div`,{className:`space-y-4 pl-4 border-l-2 border-muted`,children:[(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(Rg,{className:`text-sm font-medium`,children:`Model`}),(0,K.jsx)(Fg,{type:`text`,value:a.model,onChange:e=>o({...a,model:e.target.value}),placeholder:`gpt-4.1-mini`,className:`font-mono text-sm`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Enter any OpenAI model ID (e.g., gpt-4.1, o1, o3-mini)`})]}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(Rg,{className:`text-xs text-muted-foreground`,children:`Common presets`}),(0,K.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:r_.map(e=>(0,K.jsx)(q,{variant:a.model===e?`default`:`outline`,size:`sm`,onClick:()=>o({...a,model:e}),className:`text-xs h-7`,children:e},e))})]}),(0,K.jsxs)(`details`,{className:`group`,children:[(0,K.jsxs)(`summary`,{className:`cursor-pointer text-sm font-medium text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1`,children:[(0,K.jsx)(du,{className:`h-3 w-3 transition-transform group-open:rotate-90`}),`Advanced Parameters (optional)`]}),(0,K.jsxs)(`div`,{className:`space-y-3 mt-3 pl-4`,children:[(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(Rg,{className:`text-xs`,children:`Temperature`}),(0,K.jsx)(Fg,{type:`number`,step:`0.1`,min:`0`,max:`2`,value:a.temperature??``,onChange:e=>o({...a,temperature:e.target.value?parseFloat(e.target.value):void 0}),placeholder:`1.0 (default)`,className:`text-sm`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Controls randomness (0-2)`})]}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(Rg,{className:`text-xs`,children:`Max Output Tokens`}),(0,K.jsx)(Fg,{type:`number`,min:`1`,value:a.max_output_tokens??``,onChange:e=>o({...a,max_output_tokens:e.target.value?parseInt(e.target.value):void 0}),placeholder:`Auto`,className:`text-sm`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Maximum tokens in response`})]}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(Rg,{className:`text-xs`,children:`Top P`}),(0,K.jsx)(Fg,{type:`number`,step:`0.1`,min:`0`,max:`1`,value:a.top_p??``,onChange:e=>o({...a,top_p:e.target.value?parseFloat(e.target.value):void 0}),placeholder:`1.0 (default)`,className:`text-sm`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Nucleus sampling (0-1)`})]}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(Rg,{className:`text-xs`,children:`Reasoning Effort (o-series models)`}),(0,K.jsxs)(`select`,{value:a.reasoning_effort??``,onChange:e=>o({...a,reasoning_effort:e.target.value?e.target.value:void 0}),className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,children:[(0,K.jsx)(`option`,{value:``,children:`Auto (default)`}),(0,K.jsx)(`option`,{value:`minimal`,children:`Minimal`}),(0,K.jsx)(`option`,{value:`low`,children:`Low`}),(0,K.jsx)(`option`,{value:`medium`,children:`Medium`}),(0,K.jsx)(`option`,{value:`high`,children:`High`})]}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Constrains reasoning effort (faster/cheaper vs thorough)`})]})]})]})]})]}),a.enabled&&(0,K.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-muted-foreground bg-muted/50 p-3 rounded`,children:[(0,K.jsx)(td,{className:`h-3.5 w-3.5 flex-shrink-0 mt-0.5`}),(0,K.jsx)(`div`,{className:`space-y-1`,children:(0,K.jsxs)(`p`,{children:[`Requests route through`,` `,(0,K.jsx)(`span`,{className:`font-mono font-semibold`,children:g}),` `,`to OpenAI API. Server must have`,` `,(0,K.jsx)(`span`,{className:`font-mono font-semibold`,children:`OPENAI_API_KEY`}),` `,`configured.`]})})]})]}),r===`about`&&(0,K.jsxs)(`div`,{className:`space-y-4 pt-4`,children:[(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`DevUI is a sample app for getting started with Agent Framework.`}),(0,K.jsxs)(`div`,{className:`space-y-2 text-sm`,children:[(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Version:`}),(0,K.jsx)(`span`,{className:`font-mono`,children:d||`Unknown`})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Runtime:`}),(0,K.jsx)(`span`,{className:`font-mono capitalize`,children:f||`Unknown`})]}),(0,K.jsxs)(`div`,{className:`flex justify-between`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`UI Mode:`}),(0,K.jsx)(`span`,{className:`font-mono capitalize`,children:p||`Unknown`})]})]}),(u||l!==void 0)&&(0,K.jsxs)(`div`,{className:`space-y-2 pt-2`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:`Capabilities`}),(0,K.jsxs)(`div`,{className:`space-y-1 text-sm`,children:[u?.instrumentation!==void 0&&(0,K.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Instrumentation:`}),(0,K.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded-full ${u.instrumentation?`bg-green-500/10 text-green-600 dark:text-green-400`:`bg-muted text-muted-foreground`}`,children:u.instrumentation?`Enabled`:`Disabled`})]}),u?.openai_proxy!==void 0&&(0,K.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`OpenAI Proxy:`}),(0,K.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded-full ${u.openai_proxy?`bg-green-500/10 text-green-600 dark:text-green-400`:`bg-muted text-muted-foreground`}`,children:u.openai_proxy?`Available`:`Not Configured`})]}),u?.deployment!==void 0&&(0,K.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Deployment:`}),(0,K.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded-full ${u.deployment?`bg-green-500/10 text-green-600 dark:text-green-400`:`bg-muted text-muted-foreground`}`,children:u.deployment?`Available`:`Disabled`})]}),l!==void 0&&(0,K.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`Authentication:`}),(0,K.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded-full ${l?`bg-blue-500/10 text-blue-600 dark:text-blue-400`:`bg-muted text-muted-foreground`}`,children:l?`Required`:`Not Required`})]})]})]}),(0,K.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,K.jsxs)(q,{variant:`outline`,size:`sm`,onClick:()=>window.open(`https://github.com/microsoft/agent-framework`,`_blank`),className:`text-xs`,children:[(0,K.jsx)(Vu,{className:`h-3 w-3 mr-1`}),`Learn More about Agent Framework`]})})]})]})]})})}function a_(e,t){if(t.type!==`response.output_text.delta`&&t.type!==`response.refusal.delta`||!(`delta`in t)||typeof t.delta!=`string`||t.delta.length===0)return e;let n=t.type===`response.refusal.delta`?`refusal`:`text`,r=e.map(e=>({...e})),i=r.find(e=>e.itemId===t.item_id&&e.contentIndex===(t.content_index??0)&&e.type===n);return i?i.text+=t.delta:r.push({itemId:t.item_id,contentIndex:t.content_index??0,type:n,text:t.delta}),r}var o_=`devui_streaming_state_`,s_=864e5,c_=16384;function l_(e){return`${o_}${e}`}function u_(e){if(e.accumulatedParts?.length){let t=[],n=c_;for(let r of[...e.accumulatedParts].reverse()){if(n<=0)break;let e=r.text.slice(-n);t.unshift({...r,text:e}),n-=e.length}let r=t.map(e=>e.text).join(``);return{...e,accumulatedParts:t,accumulatedText:r,accumulatedTextIsPreview:e.accumulatedTextIsPreview||r.lengthe+t.text.length,0)}}return e.accumulatedText===void 0||e.accumulatedText.length<=c_?e:{...e,accumulatedText:e.accumulatedText.slice(-16384),accumulatedTextIsPreview:!0}}function d_(e){let t=l_(e),n=localStorage.getItem(t);if(!n)return null;let r=JSON.parse(n);return Date.now()-r.timestamp>s_?(g_(e),null):u_(r)}function f_({conversationId:e,responseId:t,lastMessageId:n,lastSequenceNumber:r=-1,accumulatedText:i,accumulatedTextIsPreview:a=!1,accumulatedTextType:o,accumulatedParts:s}){return u_({conversationId:e,responseId:t,lastMessageId:n,lastSequenceNumber:r,timestamp:Date.now(),completed:!1,accumulatedText:i,accumulatedTextIsPreview:a,accumulatedTextType:o,accumulatedParts:s})}function p_(e,t,n,r){let i=`sequence_number`in t?t.sequence_number:void 0,a={...e,responseId:n,lastMessageId:r,timestamp:Date.now(),completed:t.type===`response.completed`||t.type===`response.failed`};if(i!==void 0&&(a.lastSequenceNumber=i),(t.type===`response.output_text.delta`||t.type===`response.refusal.delta`)&&`delta`in t&&typeof t.delta==`string`&&t.delta.length>0){let n=t.type===`response.refusal.delta`?`refusal`:`text`,r=a_(e.accumulatedParts?e.accumulatedParts.map(e=>({...e})):e.accumulatedText?[{itemId:e.lastMessageId,contentIndex:0,type:e.accumulatedTextType??`text`,text:e.accumulatedText}]:[],t);a.accumulatedParts=r,a.accumulatedText=r.map(e=>e.text).join(``),a.accumulatedTextIsPreview=e.accumulatedTextIsPreview,a.accumulatedTextType=n}return u_(a)}function m_(e){try{let t=l_(e.conversationId),n=JSON.stringify(u_(e));localStorage.setItem(t,n)}catch(t){console.error(`Failed to save streaming state:`,t);try{__();let t=l_(e.conversationId),n=JSON.stringify(u_(e));localStorage.setItem(t,n)}catch{console.error(`Failed to save streaming state even after cleanup`)}}}function h_(e){try{let t=d_(e);return!t||t.completed?null:t}catch(e){return console.error(`Failed to load streaming state:`,e),null}}function g_(e){try{let t=l_(e);localStorage.removeItem(t)}catch(e){console.error(`Failed to clear streaming state:`,e)}}function __(){try{let e=Object.keys(localStorage),t=Date.now();for(let n of e)if(n.startsWith(o_))try{let e=localStorage.getItem(n);if(e){let r=JSON.parse(e);(t-r.timestamp>s_||r.completed)&&localStorage.removeItem(n)}}catch{localStorage.removeItem(n)}}catch(e){console.error(`Failed to clear expired streaming states:`,e)}}function v_(){__()}function y_(){let[e,t]=(0,y.useState)(!1),n=(0,y.useRef)(null);return{isCancelling:e,createAbortSignal:(0,y.useCallback)(()=>(n.current=new AbortController,t(!1),n.current.signal),[]),handleCancel:(0,y.useCallback)(()=>{n.current&&=(t(!0),n.current.abort(),null)},[]),resetCancelling:(0,y.useCallback)(()=>{t(!1)},[]),cleanup:(0,y.useCallback)(()=>{n.current&&=(n.current.abort(),null)},[])}}function b_(e){return e instanceof DOMException&&e.name===`AbortError`}function x_(e={}){let{onDrop:t,disabled:n=!1}=e,[r,i]=(0,y.useState)(!1),[a,o]=(0,y.useState)([]),s=(0,y.useRef)(0),c=(0,y.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!n&&(s.current++,e.dataTransfer.items&&e.dataTransfer.items.length>0&&i(!0))},[n]),l=(0,y.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!n&&(s.current--,s.current===0&&i(!1))},[n]),u=(0,y.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),d=(0,y.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),i(!1),s.current=0,n)return;let r=Array.from(e.dataTransfer.files);r.length>0&&(o(r),t?.(r))},[n,t]);return{isDragOver:r,droppedFiles:a,clearDroppedFiles:(0,y.useCallback)(()=>{o([])},[]),dragHandlers:{onDragEnter:c,onDragLeave:l,onDragOver:u,onDrop:d}}}var S_=`modulepreload`,C_=function(e,t){return new URL(e,t).href},w_={},T_=function(e){return e.pathname.endsWith(`.css`)},E_=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},D_=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=C_(t,n);let r=s(t),i=T_(r);return E_(w_,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:S_,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},O_=``,k_=1e3,A_=10,j_=250,M_=12,N_=500,P_=6e3;function F_(){return localStorage.getItem(`devui_backend_url`)||O_}function I_(e,t){return t?t.aborted?Promise.reject(new DOMException(`Request aborted`,`AbortError`)):new Promise((n,r)=>{let i=setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(new DOMException(`Request aborted`,`AbortError`))};t.addEventListener(`abort`,a,{once:!0})}):new Promise(t=>setTimeout(t,e))}function L_(e){if(e.type===`response.trace.completed`&&`data`in e&&typeof e.data==`object`&&e.data!==null)return e.data}var R_=new class{baseUrl;authToken=null;constructor(e){this.baseUrl=e||F_(),this.authToken=localStorage.getItem(`devui_auth_token`)}setBaseUrl(e){this.baseUrl=e}getBaseUrl(){return this.baseUrl}setAuthToken(e){this.authToken=e,e?localStorage.setItem(`devui_auth_token`,e):localStorage.removeItem(`devui_auth_token`)}getAuthToken(){return this.authToken}clearAuthToken(){this.setAuthToken(null)}async request(e,t={}){let n=`${this.baseUrl}${e}`,r={"Content-Type":`application/json`,...t.headers};this.authToken&&(r.Authorization=`Bearer ${this.authToken}`);let i=await fetch(n,{...t,headers:r});if(!i.ok){if(i.status===401)throw this.clearAuthToken(),Error(`UNAUTHORIZED`);let e=`API request failed: ${i.status} ${i.statusText}`;try{let t=await i.json();t.detail?typeof t.detail==`string`?e=t.detail:typeof t.detail==`object`&&t.detail.error?.message&&(e=t.detail.error.message):t.error?.message&&(e=t.error.message)}catch{}throw Error(e)}return i.json()}async getTraceEvents(e,t,n){if(!t)return[];if(n?.aborted)throw new DOMException(`Request aborted`,`AbortError`);let r={};this.authToken&&(r.Authorization=`Bearer ${this.authToken}`);let i=new Map,a=new AbortController,o=()=>a.abort();n?.addEventListener(`abort`,o,{once:!0});let s=setTimeout(o,P_);try{for(let t=0;t0)for(let t of e.data){let e=L_(t)?.span_id;e&&i.set(e,t)}}else if(t.status===401)return this.clearAuthToken(),[];else if(t.status!==404&&t.status!==503)break}catch(e){if(b_(e)||a.signal.aborted)throw e}t<11&&await I_(N_,a.signal)}}catch(e){if(n?.aborted||!a.signal.aborted)throw e}finally{clearTimeout(s),n?.removeEventListener(`abort`,o)}return Array.from(i.values())}async getHealth(){return this.request(`/health`)}async getMeta(){return this.request(`/meta`)}async getEntities(){let e=(await this.request(`/v1/entities`)).entities.map(e=>{if(e.type===`agent`)return{id:e.id,name:e.name,description:e.description,type:`agent`,source:e.source||`directory`,tools:(e.tools||[]).map(e=>typeof e==`string`?e:JSON.stringify(e)),has_env:!!(e.required_env_vars&&e.required_env_vars.length>0),module_path:typeof e.metadata?.module_path==`string`?e.metadata.module_path:void 0,required_env_vars:e.required_env_vars,metadata:e.metadata,deployment_supported:e.deployment_supported,deployment_reason:e.deployment_reason,instructions:e.instructions,model_id:e.model_id,chat_client_type:e.chat_client_type,context_provider:e.context_provider,middleware:e.middleware};{let t=e.executors||e.tools||[],n=e.start_executor_id||``;if(!n&&t.length>0){let e=t[0];typeof e==`string`&&(n=e)}return{id:e.id,name:e.name,description:e.description,type:`workflow`,source:e.source||`directory`,executors:t.map(e=>typeof e==`string`?e:JSON.stringify(e)),has_env:!!(e.required_env_vars&&e.required_env_vars.length>0),module_path:typeof e.metadata?.module_path==`string`?e.metadata.module_path:void 0,required_env_vars:e.required_env_vars,metadata:e.metadata,deployment_supported:e.deployment_supported,deployment_reason:e.deployment_reason,input_schema:e.input_schema||{type:`string`},input_type_name:e.input_type_name||`Input`,start_executor_id:n,tools:[]}}});return{entities:e,agents:e.filter(e=>e.type===`agent`),workflows:e.filter(e=>e.type===`workflow`)}}async getAgents(){let{agents:e}=await this.getEntities();return e}async getWorkflows(){let{workflows:e}=await this.getEntities();return e}async getAgentInfo(e){return this.request(`/v1/entities/${e}/info?type=agent`)}async getWorkflowInfo(e){return this.request(`/v1/entities/${e}/info?type=workflow`)}async reloadEntity(e){return this.request(`/v1/entities/${e}/reload`,{method:`POST`})}async createConversation(e){let{oaiMode:t}=await D_(()=>Promise.resolve().then(()=>(vp(),_p)).then(e=>({oaiMode:e.useDevUIStore.getState().oaiMode})),void 0,import.meta.url),n={};t.enabled&&(n[`X-Proxy-Backend`]=`openai`);let r=await this.request(`/v1/conversations`,{method:`POST`,headers:n,body:JSON.stringify({metadata:e})});return{id:r.id,object:`conversation`,created_at:r.created_at,metadata:r.metadata}}async listConversations(e){let t=e?`/v1/conversations?agent_id=${encodeURIComponent(e)}`:`/v1/conversations`,n=await this.request(t);return{data:n.data.map(e=>({id:e.id,object:`conversation`,created_at:e.created_at,metadata:e.metadata})),has_more:n.has_more}}async getConversation(e){let t=await this.request(`/v1/conversations/${e}`);return{id:t.id,object:`conversation`,created_at:t.created_at,metadata:t.metadata}}async deleteConversation(e){try{return await this.request(`/v1/conversations/${e}`,{method:`DELETE`}),g_(e),!0}catch{return!1}}async listConversationItems(e,t){let n=new URLSearchParams;t?.limit&&n.set(`limit`,t.limit.toString()),t?.after&&n.set(`after`,t.after),t?.order&&n.set(`order`,t.order);let r=n.toString(),i=`/v1/conversations/${e}/items${r?`?${r}`:``}`;return this.request(i)}async getConversationItem(e,t){let n=`/v1/conversations/${e}/items/${t}`;return this.request(n)}async deleteConversationItem(e,t){let n=await fetch(`${this.baseUrl}/v1/conversations/${e}/items/${t}`,{method:`DELETE`});if(!n.ok)throw Error(`Failed to delete item: ${n.statusText}`)}async*streamOpenAIResponse(e,t,n,r){let{oaiMode:i}=await D_(()=>Promise.resolve().then(()=>(vp(),_p)).then(e=>({oaiMode:e.useDevUIStore.getState().oaiMode})),void 0,import.meta.url);i.enabled&&(e.model=i.model,i.temperature!==void 0&&(e.temperature=i.temperature),i.max_output_tokens!==void 0&&(e.max_output_tokens=i.max_output_tokens),i.top_p!==void 0&&(e.top_p=i.top_p),i.instructions!==void 0&&(e.instructions=i.instructions),i.reasoning_effort!==void 0&&(e.reasoning={effort:i.reasoning_effort}));let a=-1,o=0,s=!1,c=r,l,u=0,d=t?h_(t):null,f=d?{...d}:null,p=(e=!1)=>{if(!t||!f)return;let n=Date.now();!e&&n-u{if(!t||!c)return;f=p_(f??f_({conversationId:t,responseId:c,lastMessageId:l,lastSequenceNumber:a,accumulatedText:d?.accumulatedText,accumulatedTextIsPreview:d?.accumulatedTextIsPreview,accumulatedTextType:d?.accumulatedTextType,accumulatedParts:d?.accumulatedParts}),e,c,l);let n=(e.type===`response.output_text.delta`||e.type===`response.refusal.delta`)&&`delta`in e&&typeof e.delta==`string`&&e.delta.length>0;p(!n)};for(d&&(r||(c=d.responseId),a=d.lastSequenceNumber,l=d.lastMessageId,s=d.lastSequenceNumber>=0||!!d.accumulatedText);o<=A_;)try{let r;if(c){let e=new URLSearchParams;e.set(`stream`,`true`),a>=0&&e.set(`starting_after`,a.toString());let t=`${this.baseUrl}/v1/responses/${c}?${e.toString()}`,i={Accept:`text/event-stream`};this.authToken&&(i.Authorization=`Bearer ${this.authToken}`),r=await fetch(t,{method:`GET`,headers:i,signal:n})}else{let t=`${this.baseUrl}/v1/responses`,a={"Content-Type":`application/json`,Accept:`text/event-stream`};i.enabled&&(a[`X-Proxy-Backend`]=`openai`),this.authToken&&(a.Authorization=`Bearer ${this.authToken}`),r=await fetch(t,{method:`POST`,headers:a,body:JSON.stringify(e),signal:n})}if(!r.ok){if(r.status===401)throw this.clearAuthToken(),Error(`UNAUTHORIZED`);if(r.status>=400&&r.status<500){let e=`Client error ${r.status}`;try{let t=await r.json();t.error&&t.error.message?e=t.error.message:t.detail&&(e=t.detail)}catch{}throw Error(`CLIENT_ERROR: ${e}`)}let e=`Request failed with status ${r.status}`;try{let t=await r.json();t.error&&t.error.message?e=t.error.message:t.detail&&(e=t.detail)}catch{}throw Error(e)}let o=r.body?.getReader();if(!o)throw Error(`Response body is not readable`);let p=new TextDecoder,h=``;try{for(;;){if(n?.aborted)throw new DOMException(`Request aborted`,`AbortError`);let{done:e,value:r}=await o.read();if(e){t&&(g_(t),f=null);return}let i=p.decode(r,{stream:!0});h+=i;let g=h.split(` `);h=g.pop()||``;for(let e of g)if(e.startsWith(`data: `)){let n=e.slice(6);if(n===`[DONE]`){t&&(g_(t),f=null);return}try{let e=JSON.parse(n);if(`response`in e&&e.response&&typeof e.response==`object`&&`id`in e.response){let t=e.response.id;(!c||c!==t)&&(c=t)}else if(`id`in e&&typeof e.id==`string`&&e.id.startsWith(`resp_`)){let t=e.id;(!c||c!==t)&&(c=t)}`item_id`in e&&e.item_id&&(l=e.item_id);let r=`sequence_number`in e?e.sequence_number:void 0;if(r!==void 0){if(s&&r<=1&&a>1)t&&g_(t),d=null,f=null,u=0,yield{type:`error`,message:`Connection lost - previous response failed. Starting new response.`},a=r,s=!0,m(e),yield e;else if(r<=a)continue;else a=r,s=!0,m(e),yield e}else s=!0,m(e),yield e}catch(e){console.error(`Failed to parse OpenAI SSE event:`,e)}}}}finally{o.releaseLock()}}catch(e){let r=e instanceof Error?e.message:String(e);if(b_(e))throw t&&(g_(t),f=null),e;if(r===`UNAUTHORIZED`||r.startsWith(`CLIENT_ERROR:`))throw e;if(o++,o>A_)throw Error(`Connection failed after ${A_} retry attempts: ${r}`);await I_(Math.min(k_*2**(o-1),3e4),n)}}async*streamAgentExecutionOpenAI(e,t,n,r){let i={metadata:{entity_id:e},input:t.input,stream:!0,conversation:t.conversation_id};return yield*this.streamAgentExecutionOpenAIDirect(e,i,t.conversation_id,n,r)}async*streamAgentExecutionOpenAIDirect(e,t,n,r,i){yield*this.streamOpenAIResponse(t,n,r,i)}async*streamWorkflowExecutionOpenAI(e,t,n){let r={metadata:{entity_id:e},input:JSON.stringify(t.input_data||{}),stream:!0,conversation:t.conversation_id,extra_body:t.checkpoint_id?{entity_id:e,checkpoint_id:t.checkpoint_id}:void 0};yield*this.streamOpenAIResponse(r,t.conversation_id,n)}async runAgentSync(e,t){let{oaiMode:n}=await D_(()=>Promise.resolve().then(()=>(vp(),_p)).then(e=>({oaiMode:e.useDevUIStore.getState().oaiMode})),void 0,import.meta.url),r={metadata:{entity_id:e},input:t.input,stream:!1,conversation:t.conversation_id};n.enabled&&(r.model=n.model,n.temperature!==void 0&&(r.temperature=n.temperature),n.max_output_tokens!==void 0&&(r.max_output_tokens=n.max_output_tokens));let i={};return n.enabled&&(i[`X-Proxy-Backend`]=`openai`),this.request(`/v1/responses`,{method:`POST`,headers:i,body:JSON.stringify(r)})}async runWorkflowSync(e,t){let n={metadata:{entity_id:e},input:JSON.stringify(t.input_data||{}),stream:!1,conversation:t.conversation_id,extra_body:t.checkpoint_id?{entity_id:e,checkpoint_id:t.checkpoint_id}:void 0};return this.request(`/v1/responses`,{method:`POST`,body:JSON.stringify(n)})}clearStreamingState(e){g_(e)}async*streamDeployment(e){let t=await fetch(`${this.baseUrl}/v1/deployments`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...e,stream:!0})});if(!t.ok)throw Error(`Deployment failed: ${t.statusText}`);let n=t.body?.getReader();if(!n)throw Error(`No response body`);let r=new TextDecoder,i=``;try{for(;;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0});let a=i.split(` diff --git a/python/packages/devui/frontend/package-lock.json b/python/packages/devui/frontend/package-lock.json index c1ecfd8e86e..744b9149469 100644 --- a/python/packages/devui/frontend/package-lock.json +++ b/python/packages/devui/frontend/package-lock.json @@ -28,7 +28,7 @@ "react-dom": "^19.3.1", "tailwind-merge": "^3.7.0", "tailwindcss": "^4.3.3", - "zustand": "^5.0.15" + "zustand": "^5.0.16" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -36,13 +36,13 @@ "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "@vitejs/plugin-react": "^6.1.2", - "eslint": "^10.12.0", + "eslint": "^10.13.0", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-react-refresh": "^0.5.7", "globals": "^17.13.0", "happy-dom": "^21.0.4", "tw-animate-css": "^1.4.0", - "typescript": "~5.9.3", + "typescript": "5.9.3", "typescript-eslint": "^8.71.2", "vite": "^8.3.4" } @@ -78,7 +78,6 @@ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", @@ -333,8 +332,8 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha1-DNcv6FUOPC6uFWqWpN3c0cisWAA=", "dev": true, "license": "Apache-2.0", "engines": { @@ -2074,7 +2073,6 @@ "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~8.9.0" } @@ -2085,7 +2083,6 @@ "integrity": "sha1-Ozzo2MFif7XM1NrdV+9EXFoVO3c=", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -2096,7 +2093,6 @@ "integrity": "sha1-kClKkmbv2SilJm8hENYNXbpQFdI=", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.3.0" } @@ -2118,93 +2114,6 @@ "@types/node": "*" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.71.2", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.2.tgz", - "integrity": "sha512-K72/pvT7qpm8q3k8G5u93NCSN1RcLxX5h7Gw0bQpbMXviBHeY6Nx1WEwmk9wP+eKTSQ8ecxvcgt/ZX/rB938xQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/type-utils": "8.71.2", - "@typescript-eslint/utils": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.71.2", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.12", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ignore/-/ignore-7.0.12.tgz", - "integrity": "sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.71.2", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/parser/-/parser-8.71.2.tgz", - "integrity": "sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.71.2", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/project-service/-/project-service-8.71.2.tgz", - "integrity": "sha512-Pd68GsLVh5ZXlcEccFPdhSOvtHZ/2WU0XsA8zmXOS3F158lVlcTLhfQ6qvtL1RzbMie0Kp8xtbVwAg4nejKPHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.71.2", - "@typescript-eslint/types": "^8.71.2", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.71.2", "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-8.71.2.tgz", @@ -2223,48 +2132,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.71.2", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz", - "integrity": "sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.71.2", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/type-utils/-/type-utils-8.71.2.tgz", - "integrity": "sha512-cC8UaalCViJkb3rH/xLIvidEwoFRtMZMUqDjjJMGEKaTFwYRHYBcoczlEGHuvkHEO8svRDrgZ0yQgOArFmwang==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2", - "@typescript-eslint/utils": "8.71.2", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, "node_modules/@typescript-eslint/types": { "version": "8.71.2", "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/types/-/types-8.71.2.tgz", @@ -2279,71 +2146,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.71.2", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.2.tgz", - "integrity": "sha512-DgNOEsl4pdYzwSL+N/Cl33tX1Hlw3FvId73LnKXfq7jnrF2viOEn7X+P7RBkkSWCVm92gnWd28GIC5vJuLREeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.71.2", - "@typescript-eslint/tsconfig-utils": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/visitor-keys": "8.71.2", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/semver/-/semver-7.8.5.tgz", - "integrity": "sha1-ObZGA33VDBT7RR5+TKxY7YuGP2k=", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.71.2", - "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/utils/-/utils-8.71.2.tgz", - "integrity": "sha512-RyKa1G1M9rKHDhrk+HJtiF1MvLD5Ux2JW3TSkzw+02pRALdpJb+QzG1Y5em+LvCgzGwgg8H7mBRFKljNz7ImPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.71.2", - "@typescript-eslint/types": "8.71.2", - "@typescript-eslint/typescript-estree": "8.71.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "8.71.2", "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.2.tgz", @@ -2419,8 +2221,8 @@ }, "node_modules/@xyflow/react/node_modules/zustand": { "version": "4.5.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", - "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha1-fWuyAmoUJBXdi+iJHXhw5tvmX1U=", "license": "MIT", "dependencies": { "use-sync-external-store": "^1.2.2" @@ -2468,7 +2270,6 @@ "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2571,7 +2372,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", @@ -2747,7 +2547,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -2893,12 +2692,11 @@ } }, "node_modules/eslint": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.12.0.tgz", - "integrity": "sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA==", + "version": "10.13.0", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint/-/eslint-10.13.0.tgz", + "integrity": "sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg==", "dev": true, "license": "MIT", - "peer": true, "workspaces": [ "packages/*" ], @@ -3003,8 +2801,8 @@ }, "node_modules/eslint-visitor-keys": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha1-njyUiWl4JNLUzjqK0SYo+R6fWb4=", "dev": true, "license": "Apache-2.0", "engines": { @@ -3278,15 +3076,15 @@ }, "node_modules/hookified": { "version": "1.15.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", - "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha1-sfr+qlSJzcKcuFVGqPg37U/7vLY=", "dev": true, "license": "MIT" }, "node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha1-PNQOcp82Q/2HywTlC/DrcivFlvU=", "dev": true, "license": "MIT", "engines": { @@ -3395,7 +3193,6 @@ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -3416,8 +3213,8 @@ }, "node_modules/lightningcss": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha1-uFqulkhtyxv0mnyFcSISc/Tx5Kk=", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -3445,8 +3242,8 @@ }, "node_modules/lightningcss-android-arm64": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha1-8DOIURbf79nG9UeHUj41FLYeGWg=", "cpu": [ "arm64" ], @@ -3465,8 +3262,8 @@ }, "node_modules/lightningcss-darwin-arm64": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha1-ULcYcbAcgZlYS2SeKSVH+up6+bU=", "cpu": [ "arm64" ], @@ -3485,8 +3282,8 @@ }, "node_modules/lightningcss-darwin-x64": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha1-NfPpczLRMLnKGB4RtWje1q68bV4=", "cpu": [ "x64" ], @@ -3505,8 +3302,8 @@ }, "node_modules/lightningcss-freebsd-x64": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha1-l3enZHK2Ttb/lDQq1kx7r9eUpXU=", "cpu": [ "x64" ], @@ -3525,8 +3322,8 @@ }, "node_modules/lightningcss-linux-arm-gnueabihf": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha1-E65lLhq3O5E117faFy9mbEEK1T0=", "cpu": [ "arm" ], @@ -3545,8 +3342,8 @@ }, "node_modules/lightningcss-linux-arm64-gnu": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha1-QXhYeVqUWS9oASOhsfnaig4e8zU=", "cpu": [ "arm64" ], @@ -3565,8 +3362,8 @@ }, "node_modules/lightningcss-linux-arm64-musl": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha1-a+NmkugQtxgECAL9gJYjz/5zITM=", "cpu": [ "arm64" ], @@ -3585,8 +3382,8 @@ }, "node_modules/lightningcss-linux-x64-gnu": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha1-C3gDr06yHP043Tn+Kru1PH3QkfY=", "cpu": [ "x64" ], @@ -3605,8 +3402,8 @@ }, "node_modules/lightningcss-linux-x64-musl": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha1-iNyLqGXd3bGsXvBLDxYYBEGMFjs=", "cpu": [ "x64" ], @@ -3625,8 +3422,8 @@ }, "node_modules/lightningcss-win32-arm64-msvc": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha1-TzC6P6XpJfW3n5RejMDRdsOxqzg=", "cpu": [ "arm64" ], @@ -3645,8 +3442,8 @@ }, "node_modules/lightningcss-win32-x64-msvc": { "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha1-FBqlYFZFBkkokCu0rwRfp9n0Igo=", "cpu": [ "x64" ], @@ -3862,7 +3659,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -3933,8 +3729,8 @@ }, "node_modules/qified/node_modules/hookified": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz", - "integrity": "sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/hookified/-/hookified-2.2.0.tgz", + "integrity": "sha1-HQJKwWaJc91bzEqWq5zNt2Oe+NQ=", "dev": true, "license": "MIT" }, @@ -3943,7 +3739,6 @@ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/react/-/react-19.3.1.tgz", "integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -3953,7 +3748,6 @@ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/react-dom/-/react-dom-19.3.1.tgz", "integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.28.0" }, @@ -4071,8 +3865,8 @@ }, "node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/semver/-/semver-6.3.1.tgz", + "integrity": "sha1-VW0u+GiRRuRtzqS/3QlfNDTf/LQ=", "dev": true, "license": "ISC", "bin": { @@ -4171,8 +3965,8 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha1-YS7+TtI11Wfoq6Xypfq3AoCt6D8=", "license": "0BSD" }, "node_modules/tw-animate-css": { @@ -4200,11 +3994,10 @@ }, "node_modules/typescript": { "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha1-W09Z4VMQqxeiFvXWz1PuR27eZw8=", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4237,6 +4030,199 @@ "typescript": ">=4.8.4 <6.1.0" } }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.71.2", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.2.tgz", + "integrity": "sha512-K72/pvT7qpm8q3k8G5u93NCSN1RcLxX5h7Gw0bQpbMXviBHeY6Nx1WEwmk9wP+eKTSQ8ecxvcgt/ZX/rB938xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/type-utils": "8.71.2", + "@typescript-eslint/utils": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.71.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "8.71.2", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/type-utils/-/type-utils-8.71.2.tgz", + "integrity": "sha512-cC8UaalCViJkb3rH/xLIvidEwoFRtMZMUqDjjJMGEKaTFwYRHYBcoczlEGHuvkHEO8svRDrgZ0yQgOArFmwang==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/utils": "8.71.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.71.2", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/parser/-/parser-8.71.2.tgz", + "integrity": "sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.71.2", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.2.tgz", + "integrity": "sha512-DgNOEsl4pdYzwSL+N/Cl33tX1Hlw3FvId73LnKXfq7jnrF2viOEn7X+P7RBkkSWCVm92gnWd28GIC5vJuLREeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.71.2", + "@typescript-eslint/tsconfig-utils": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/visitor-keys": "8.71.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/project-service": { + "version": "8.71.2", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/project-service/-/project-service-8.71.2.tgz", + "integrity": "sha512-Pd68GsLVh5ZXlcEccFPdhSOvtHZ/2WU0XsA8zmXOS3F158lVlcTLhfQ6qvtL1RzbMie0Kp8xtbVwAg4nejKPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.71.2", + "@typescript-eslint/types": "^8.71.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.71.2", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz", + "integrity": "sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.71.2", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/utils/-/utils-8.71.2.tgz", + "integrity": "sha512-RyKa1G1M9rKHDhrk+HJtiF1MvLD5Ux2JW3TSkzw+02pRALdpJb+QzG1Y5em+LvCgzGwgg8H7mBRFKljNz7ImPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.71.2", + "@typescript-eslint/types": "8.71.2", + "@typescript-eslint/typescript-estree": "8.71.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/typescript-eslint/node_modules/ignore": { + "version": "7.0.13", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ignore/-/ignore-7.0.13.tgz", + "integrity": "sha512-2E8Q6rh+1RRSq/YdaGsNfXsEZy9FVqv6BSSrkmZJP7BnaoPnRfKL+YaofPvP+5rzdk144qSm6i4+hvPgUcbV4Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/typescript-eslint/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/semver/-/semver-7.8.5.tgz", + "integrity": "sha1-ObZGA33VDBT7RR5+TKxY7YuGP2k=", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/undici-types": { "version": "8.9.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", @@ -4342,7 +4328,6 @@ "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/vite/-/vite-8.3.4.tgz", "integrity": "sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==", "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", @@ -4417,8 +4402,8 @@ }, "node_modules/vite/node_modules/lightningcss": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", - "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha1-wIhn1xp5OFxuGQIU/XL+8+X5Xws=", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -4446,8 +4431,8 @@ }, "node_modules/vite/node_modules/lightningcss-android-arm64": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", - "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha1-mmhB+IrlD8g1ApA4krQa9BvCuQc=", "cpu": [ "arm64" ], @@ -4466,8 +4451,8 @@ }, "node_modules/vite/node_modules/lightningcss-darwin-arm64": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", - "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha1-wPLDHAv9GfpN0/GOlXofGhUgl9Y=", "cpu": [ "arm64" ], @@ -4486,8 +4471,8 @@ }, "node_modules/vite/node_modules/lightningcss-darwin-x64": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", - "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha1-ywcFllrLU4xmg5Sc5pJfs833w2E=", "cpu": [ "x64" ], @@ -4506,8 +4491,8 @@ }, "node_modules/vite/node_modules/lightningcss-freebsd-x64": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", - "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha1-djU4gosmurJoDa2vzITueLDrUCs=", "cpu": [ "x64" ], @@ -4526,8 +4511,8 @@ }, "node_modules/vite/node_modules/lightningcss-linux-arm-gnueabihf": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", - "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha1-aGLjF2ozGu297B7TUrTX0N0HhN4=", "cpu": [ "arm" ], @@ -4546,8 +4531,8 @@ }, "node_modules/vite/node_modules/lightningcss-linux-arm64-gnu": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", - "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha1-xqOi7RUUHa9r3CYokw+OOb30c6o=", "cpu": [ "arm64" ], @@ -4566,8 +4551,8 @@ }, "node_modules/vite/node_modules/lightningcss-linux-arm64-musl": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", - "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha1-f6EzSXH8goRfmCffbvigsgkUusY=", "cpu": [ "arm64" ], @@ -4586,8 +4571,8 @@ }, "node_modules/vite/node_modules/lightningcss-linux-x64-gnu": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", - "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha1-i5J4YuqMK7xoMaRlCSRLUNmTblU=", "cpu": [ "x64" ], @@ -4606,8 +4591,8 @@ }, "node_modules/vite/node_modules/lightningcss-linux-x64-musl": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", - "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha1-DFJbsHff2UQEwFnP5C2teX6Wrq8=", "cpu": [ "x64" ], @@ -4626,8 +4611,8 @@ }, "node_modules/vite/node_modules/lightningcss-win32-arm64-msvc": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", - "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha1-hQ7hED2smJz6tQ46wi0aaeOU5j0=", "cpu": [ "arm64" ], @@ -4646,8 +4631,8 @@ }, "node_modules/vite/node_modules/lightningcss-win32-x64-msvc": { "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", - "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha1-40OuFS7tNgncbhGUnRo785oclG8=", "cpu": [ "x64" ], @@ -4748,7 +4733,6 @@ "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -4767,9 +4751,9 @@ } }, "node_modules/zustand": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.15.tgz", - "integrity": "sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A==", + "version": "5.0.16", + "resolved": "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/zustand/-/zustand-5.0.16.tgz", + "integrity": "sha512-Uv7e327ihlCfayfja3hDc0M64Upev1LWBKpRobdK4NyovDDPeeX4imWXc/wzC1yc6fkYPoAY/ncKVPAs2jrtQw==", "license": "MIT", "engines": { "node": ">=12.20.0" diff --git a/python/packages/devui/frontend/package.json b/python/packages/devui/frontend/package.json index 2283872045d..b06bf521bb2 100644 --- a/python/packages/devui/frontend/package.json +++ b/python/packages/devui/frontend/package.json @@ -32,7 +32,7 @@ "react-dom": "^19.3.1", "tailwind-merge": "^3.7.0", "tailwindcss": "^4.3.3", - "zustand": "^5.0.15" + "zustand": "^5.0.16" }, "devDependencies": { "@eslint/js": "^10.0.1", @@ -40,13 +40,13 @@ "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "@vitejs/plugin-react": "^6.1.2", - "eslint": "^10.12.0", + "eslint": "^10.13.0", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-react-refresh": "^0.5.7", "globals": "^17.13.0", "happy-dom": "^21.0.4", "tw-animate-css": "^1.4.0", - "typescript": "~5.9.3", + "typescript": "5.9.3", "typescript-eslint": "^8.71.2", "vite": "^8.3.4" }, diff --git a/python/packages/devui/frontend/yarn.lock b/python/packages/devui/frontend/yarn.lock index d85c639a721..866f671854e 100644 --- a/python/packages/devui/frontend/yarn.lock +++ b/python/packages/devui/frontend/yarn.lock @@ -16,7 +16,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz" integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== -"@babel/core@^7.24.4": +"@babel/core@^7.0.0", "@babel/core@^7.24.4": version "7.29.7" resolved "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz" integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== @@ -159,28 +159,6 @@ hashery "^1.5.1" keyv "^5.6.0" -"@emnapi/core@^1.11.1": - version "1.11.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/core/-/core-1.11.3.tgz#5e95348a42cd1e06f0b9aa380cd74091daa4d520" - integrity sha1-XpU0ikLNHgbwuao4DNdAkdqk1SA= - dependencies: - "@emnapi/wasi-threads" "1.2.3" - tslib "^2.4.0" - -"@emnapi/runtime@^1.11.1": - version "1.11.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/runtime/-/runtime-1.11.3.tgz#84257ae3b0531eb2aec1ffa23d70700da007ba95" - integrity sha1-hCV647BTHrKuwf+iPXBwDaAHupU= - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.2.3", "@emnapi/wasi-threads@^1.2.2": - version "1.2.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz#c9bf72fd4be5b928aee894820e8d814ed73916e9" - integrity sha1-yb9y/UvluSiu6JSCDo2BTtc5Fuk= - dependencies: - tslib "^2.4.0" - "@eslint-community/eslint-utils@^4.8.0", "@eslint-community/eslint-utils@^4.9.1": version "4.10.1" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz" @@ -339,13 +317,6 @@ resolved "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz" integrity sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA== -"@napi-rs/wasm-runtime@^1.1.4": - version "1.2.5" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.5.tgz#8c728c07e2543d80e55ccb34158c4ae9d6bd13e8" - integrity sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA== - dependencies: - "@tybys/wasm-util" "^0.10.3" - "@oxc-project/types@=0.152.0": version "0.152.0" resolved "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz" @@ -588,7 +559,7 @@ dependencies: "@radix-ui/react-primitive" "2.2.0" -"@radix-ui/react-slot@1.5.0", "@radix-ui/react-slot@^1.5.0": +"@radix-ui/react-slot@^1.5.0", "@radix-ui/react-slot@1.5.0": version "1.5.0" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@radix-ui/react-slot/-/react-slot-1.5.0.tgz" integrity sha512-tyYd9ddPXAysAbdbD9eYxgwpCSv6f3PncqVSNKQFSR5lcJVLz3cb/pANDoYrLiHBpXv7skortyUgGUWsYuPPFQ== @@ -700,81 +671,11 @@ resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@radix-ui/rect/-/rect-1.1.3.tgz" integrity sha1-Wlj7rj3u+3+M/m6jFCh9aZ62lKk= -"@rolldown/binding-android-arm-eabi@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz#efba4353480c76804606f106c9ac01f0ddfa7d13" - integrity sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A== - -"@rolldown/binding-android-arm64@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz#6255422c39c2b45ee44b0286df902b9481f76ecb" - integrity sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg== - "@rolldown/binding-darwin-arm64@1.2.12": version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz#2d7d153d657f5ee4d44abb752ae7d64cac049ca5" + resolved "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz" integrity sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w== -"@rolldown/binding-darwin-x64@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz#7ddc83ecef05fb28f1174e5be3eb4ae5307faedf" - integrity sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA== - -"@rolldown/binding-freebsd-x64@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz#9e68e57cc3a1c5ea363129234fd5dcc8537606dd" - integrity sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ== - -"@rolldown/binding-linux-arm-gnueabihf@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz#335b4f2cbf8c8a2d1016f79feeb0187c578f5f7a" - integrity sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g== - -"@rolldown/binding-linux-arm64-gnu@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz#759fc27992583653f87dc447b4be02b4ddd0d1b4" - integrity sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw== - -"@rolldown/binding-linux-arm64-musl@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz#e1f3094429a874cb76e2c7735759d333ad8f6791" - integrity sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw== - -"@rolldown/binding-linux-ppc64-gnu@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz#0ca361ac97774403dd5fe5976a363eb9c2139dc5" - integrity sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ== - -"@rolldown/binding-linux-s390x-gnu@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz#e40fb19c56e99197aec91ecb02756ebd378a347c" - integrity sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw== - -"@rolldown/binding-linux-x64-gnu@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz#215aeb601d0daaf5d28582c1f2e967c775a6c70a" - integrity sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw== - -"@rolldown/binding-linux-x64-musl@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz#90905cdd1ab12242d72de38b7ec9aa826a9ee17c" - integrity sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g== - -"@rolldown/binding-openharmony-arm64@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz#e6868debd9202c476786f0995ca8250f3f647972" - integrity sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA== - -"@rolldown/binding-win32-arm64-msvc@1.2.12": - version "1.2.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz#a335ae382cbf3b282c3a6fe620fe4f4a0e25dfda" - integrity sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew== - -"@rolldown/binding-win32-x64-msvc@1.2.12": - version "1.2.12" - resolved "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz" - integrity sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ== - "@rolldown/pluginutils@^1.0.0", "@rolldown/pluginutils@^1.0.1": version "1.0.1" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz" @@ -793,72 +694,10 @@ source-map-js "^1.2.1" tailwindcss "4.3.3" -"@tailwindcss/oxide-android-arm64@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz#848f93034155daf7892185028dfb18143bfc7d07" - integrity sha1-hI+TA0FV2veJIYUCjfsYFDv8fQc= - "@tailwindcss/oxide-darwin-arm64@4.3.3": version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz#5c779e32c1c361beb75136fd8e2c627fcb9a5b28" - integrity sha1-XHeeMsHDYb63UTb9jixif8uaWyg= - -"@tailwindcss/oxide-darwin-x64@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz#ba292ff52fa3264139f7fe7874719ce0a4666875" - integrity sha1-uikv9S+jJkE59/54dHGc4KRmaHU= - -"@tailwindcss/oxide-freebsd-x64@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz#07e589487b9a636235a4ade48cefc1f9eeeec57f" - integrity sha1-B+WJSHuaY2I1pK3kjO/B+e7uxX8= - -"@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz#0c8abc228d9e19e0065ddb707eba52e21855b3ff" - integrity sha1-DIq8Io2eGeAGXdtwfrpS4hhVs/8= - -"@tailwindcss/oxide-linux-arm64-gnu@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz#5067dc7afd15d2b97adc77a91177dc4bec8d1b8b" - integrity sha1-UGfcev0V0rl63HepEXfcS+yNG4s= - -"@tailwindcss/oxide-linux-arm64-musl@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz#29ae5f279be2ce64db368711985b6ad8e4562e57" - integrity sha1-Ka5fJ5vizmTbNocRmFtq2ORWLlc= - -"@tailwindcss/oxide-linux-x64-gnu@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz#7d693b40f69875744b499481359b227fd3ac3a3c" - integrity sha1-fWk7QPaYdXRLSZSBNZsif9OsOjw= - -"@tailwindcss/oxide-linux-x64-musl@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz#6a55d664f47c5ff9ad3f46bf05fe07d410b8cfd8" - integrity sha1-alXWZPR8X/mtP0a/Bf4H1BC4z9g= - -"@tailwindcss/oxide-wasm32-wasi@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz#408a9bc620e68f1aaf0dfea33da7bd3b65f9e2ef" - integrity sha1-QIqbxiDmjxqvDf6jPae9O2X54u8= - dependencies: - "@emnapi/core" "^1.11.1" - "@emnapi/runtime" "^1.11.1" - "@emnapi/wasi-threads" "^1.2.2" - "@napi-rs/wasm-runtime" "^1.1.4" - "@tybys/wasm-util" "^0.10.2" - tslib "^2.8.1" - -"@tailwindcss/oxide-win32-arm64-msvc@4.3.3": - version "4.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz#3d582b00180fa4680e0b6c90be69fa5f4a209092" - integrity sha1-PVgrABgPpGgOC2yQvmn6X0ogkJI= - -"@tailwindcss/oxide-win32-x64-msvc@4.3.3": - version "4.3.3" - resolved "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz" - integrity sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw== + resolved "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz" + integrity sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw== "@tailwindcss/oxide@4.3.3": version "4.3.3" @@ -887,13 +726,6 @@ "@tailwindcss/oxide" "4.3.3" tailwindcss "4.3.3" -"@tybys/wasm-util@^0.10.2", "@tybys/wasm-util@^0.10.3": - version "0.10.4" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tybys/wasm-util/-/wasm-util-0.10.4.tgz#3e85ecb266f9d1722250e89bc69528615720b154" - integrity sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A== - dependencies: - tslib "^2.4.0" - "@types/d3-color@*": version "3.1.3" resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz" @@ -948,19 +780,19 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/node@*", "@types/node@>=20.0.0", "@types/node@^26.6.5": +"@types/node@*", "@types/node@^20.19.0 || >=22.12.0", "@types/node@^26.6.5", "@types/node@>=20.0.0": version "26.6.5" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@types/node/-/node-26.6.5.tgz" integrity sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg== dependencies: undici-types "~8.9.0" -"@types/react-dom@^19.3.0": +"@types/react-dom@*", "@types/react-dom@^19.3.0", "@types/react-dom@>=17": version "19.3.0" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@types/react-dom/-/react-dom-19.3.0.tgz" integrity sha1-kClKkmbv2SilJm8hENYNXbpQFdI= -"@types/react@^19.3.0": +"@types/react@*", "@types/react@^19.3.0", "@types/react@>=16.8", "@types/react@>=17", "@types/react@>=18.0.0": version "19.3.0" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@types/react/-/react-19.3.0.tgz" integrity sha1-Ozzo2MFif7XM1NrdV+9EXFoVO3c= @@ -969,12 +801,12 @@ "@types/whatwg-mimetype@^3.0.2": version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz#e5e06dcd3e92d4e622ef0129637707d66c28d6a4" + resolved "https://registry.npmjs.org/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz" integrity sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA== "@types/ws@^8.18.1": version "8.18.2" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.2.tgz#25d6321b30ef0fddf6cc7052b4eef9ce4e412b6e" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.2.tgz" integrity sha512-67MQl+fpWKVTT1NYdnmo3U4sc/xPo/zQBncVnI74qmQa0z/b+1g6iYqNmGCPbxO+zz2aklb08a0oHfegiVd0/w== dependencies: "@types/node" "*" @@ -993,7 +825,7 @@ natural-compare "^1.4.0" ts-api-utils "^2.5.0" -"@typescript-eslint/parser@8.71.2": +"@typescript-eslint/parser@^8.71.2", "@typescript-eslint/parser@8.71.2": version "8.71.2" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/parser/-/parser-8.71.2.tgz" integrity sha512-aTtmZjp/x3gsGHkDs04/1I8kNogBJkpQaeGaN0PfiG43NzDEmW2n+OP5im9wfsvyX0yP1UZWBrAGtDBfH9jEVw== @@ -1021,7 +853,7 @@ "@typescript-eslint/types" "8.71.2" "@typescript-eslint/visitor-keys" "8.71.2" -"@typescript-eslint/tsconfig-utils@8.71.2", "@typescript-eslint/tsconfig-utils@^8.71.2": +"@typescript-eslint/tsconfig-utils@^8.71.2", "@typescript-eslint/tsconfig-utils@8.71.2": version "8.71.2" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.2.tgz" integrity sha512-jz49TAWokm/7yWD9/o837nYax9DyALxIPOImdImvVzo6canBCZYzin8zJyqNR5k1j9K1DE0bVvr0XYB+99uAdg== @@ -1037,7 +869,7 @@ debug "^4.4.3" ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.71.2", "@typescript-eslint/types@^8.71.2": +"@typescript-eslint/types@^8.71.2", "@typescript-eslint/types@8.71.2": version "8.71.2" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@typescript-eslint/types/-/types-8.71.2.tgz" integrity sha512-y5Ukl3oVp7e/VGxqIoEXoeb/Roj71PAJ4WG/N/RGj+eeDvKRLM15kGr9MijLbN0i03S52zxu31Z98E5gWChJKw== @@ -1111,12 +943,12 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.16.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.16.0: version "8.19.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz" integrity sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw== -ajv@6.14.0, ajv@^6.14.0: +ajv@6.14.0: version "6.14.0" resolved "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz" integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== @@ -1150,7 +982,7 @@ brace-expansion@^5.0.8: dependencies: balanced-match "^4.0.2" -browserslist@^4.24.0: +browserslist@^4.24.0, "browserslist@>= 4.21.0": version "4.28.8" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz" integrity sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA== @@ -1163,7 +995,7 @@ browserslist@^4.24.0: buffer-image-size@^0.6.4: version "0.6.4" - resolved "https://registry.yarnpkg.com/buffer-image-size/-/buffer-image-size-0.6.4.tgz#357e8173e951ced3b5a2785c695993aa29dbcac4" + resolved "https://registry.npmjs.org/buffer-image-size/-/buffer-image-size-0.6.4.tgz" integrity sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ== dependencies: "@types/node" "*" @@ -1230,7 +1062,7 @@ csstype@^3.2.2: resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -"d3-drag@2 - 3", d3-drag@^3.0.0: +d3-drag@^3.0.0, "d3-drag@2 - 3": version "3.0.0" resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== @@ -1243,14 +1075,14 @@ csstype@^3.2.2: resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== -"d3-interpolate@1 - 3", d3-interpolate@^3.0.1: +d3-interpolate@^3.0.1, "d3-interpolate@1 - 3": version "3.0.1" resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== dependencies: d3-color "1 - 3" -"d3-selection@2 - 3", d3-selection@3, d3-selection@^3.0.0: +d3-selection@^3.0.0, "d3-selection@2 - 3", d3-selection@3: version "3.0.0" resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== @@ -1319,7 +1151,7 @@ enhanced-resolve@^5.24.1: entities@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.1.tgz#26e8a88889db63417dcb9a1e79a3f1bc92b5976b" + resolved "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz" integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA== escalade@^3.2.0: @@ -1360,18 +1192,18 @@ eslint-scope@^9.1.2: eslint-visitor-keys@^3.4.3: version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha1-DNcv6FUOPC6uFWqWpN3c0cisWAA= eslint-visitor-keys@^5.0.0, eslint-visitor-keys@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz" - integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz" + integrity sha1-njyUiWl4JNLUzjqK0SYo+R6fWb4= -eslint@^10.12.0: - version "10.12.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-10.12.0.tgz" - integrity sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA== +eslint@^10.0.0, eslint@^10.13.0, "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0 || ^10.0.0", "eslint@^9 || ^10": + version "10.13.0" + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint/-/eslint-10.13.0.tgz" + integrity sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg== dependencies: "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.2" @@ -1488,8 +1320,8 @@ flatted@^3.4.2: fsevents@~2.3.3: version "2.3.3" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha1-ysZAd4XQNnWipeGlMFxpezR9kNY= + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -1520,7 +1352,7 @@ graceful-fs@^4.2.4: happy-dom@^21.0.4: version "21.0.4" - resolved "https://registry.yarnpkg.com/happy-dom/-/happy-dom-21.0.4.tgz#3b9e4b23a6ef5f94f6db242857a99742dd14f943" + resolved "https://registry.npmjs.org/happy-dom/-/happy-dom-21.0.4.tgz" integrity sha512-tFm+GaLBgo6o0awHnvHaNoraVo27qJ+2tZEtZ+cIa08hXbeitrxAJajLI05hsUy/2/YTKcUjQYzHe5mCcraLBw== dependencies: "@types/node" ">=20.0.0" @@ -1552,23 +1384,23 @@ hermes-parser@^0.25.1: hookified@^1.15.0, hookified@^1.15.1: version "1.15.1" - resolved "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz" - integrity sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/hookified/-/hookified-1.15.1.tgz" + integrity sha1-sfr+qlSJzcKcuFVGqPg37U/7vLY= hookified@^2.1.1: version "2.2.0" - resolved "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz" - integrity sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/hookified/-/hookified-2.2.0.tgz" + integrity sha1-HQJKwWaJc91bzEqWq5zNt2Oe+NQ= ignore@^5.2.0: version "5.3.2" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ignore/-/ignore-5.3.2.tgz" + integrity sha1-PNQOcp82Q/2HywTlC/DrcivFlvU= ignore@^7.0.5: - version "7.0.12" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ignore/-/ignore-7.0.12.tgz" - integrity sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg== + version "7.0.13" + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ignore/-/ignore-7.0.13.tgz" + integrity sha512-2E8Q6rh+1RRSq/YdaGsNfXsEZy9FVqv6BSSrkmZJP7BnaoPnRfKL+YaofPvP+5rzdk144qSm6i4+hvPgUcbV4Q== imurmurhash@^0.1.4: version "0.1.4" @@ -1592,7 +1424,7 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -jiti@^2.7.0: +jiti@*, jiti@^2.7.0, jiti@>=1.21.0: version "2.7.0" resolved "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz" integrity sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ== @@ -1637,120 +1469,39 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lightningcss-android-arm64@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz#f033885116dfefd9c6f54787523e3514b61e1968" - integrity sha1-8DOIURbf79nG9UeHUj41FLYeGWg= - -lightningcss-android-arm64@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz#9a6841f88ae50fc83502903892b41af41bc2b907" - integrity sha1-mmhB+IrlD8g1ApA4krQa9BvCuQc= - lightningcss-darwin-arm64@1.32.0: version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz#50b71871b01c8199584b649e292547faea7af9b5" + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz" integrity sha1-ULcYcbAcgZlYS2SeKSVH+up6+bU= lightningcss-darwin-arm64@1.33.0: version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz#c0f2c31c0bfd19fa4dd3f18e957a1f1a152097d6" + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz" integrity sha1-wPLDHAv9GfpN0/GOlXofGhUgl9Y= -lightningcss-darwin-x64@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz#35f3e97332d130b9ca181e11b568ded6aebc6d5e" - integrity sha1-NfPpczLRMLnKGB4RtWje1q68bV4= - -lightningcss-darwin-x64@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz#cb0705965acb538c6683949ce6925fb3cdf7c361" - integrity sha1-ywcFllrLU4xmg5Sc5pJfs833w2E= - -lightningcss-freebsd-x64@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz#9777a76472b64ed6ff94342ad64c7bafd794a575" - integrity sha1-l3enZHK2Ttb/lDQq1kx7r9eUpXU= - -lightningcss-freebsd-x64@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz#763538828b26bab2680dadafcc84ee78b0eb502b" - integrity sha1-djU4gosmurJoDa2vzITueLDrUCs= - -lightningcss-linux-arm-gnueabihf@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz#13ae652e1ab73b9135d7b7da172f666c410ad53d" - integrity sha1-E65lLhq3O5E117faFy9mbEEK1T0= - -lightningcss-linux-arm-gnueabihf@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz#6862e3176a331aedbdec1ed352b4d7d0dd0784de" - integrity sha1-aGLjF2ozGu297B7TUrTX0N0HhN4= - -lightningcss-linux-arm64-gnu@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz#417858795a94592f680123a1b1f9da8a0e1ef335" - integrity sha1-QXhYeVqUWS9oASOhsfnaig4e8zU= - -lightningcss-linux-arm64-gnu@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz#c6a3a2ed15141daf6bdc2628930f8e39bdf473aa" - integrity sha1-xqOi7RUUHa9r3CYokw+OOb30c6o= - -lightningcss-linux-arm64-musl@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz#6be36692e810b718040802fd809623cffe732133" - integrity sha1-a+NmkugQtxgECAL9gJYjz/5zITM= - -lightningcss-linux-arm64-musl@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz#7fa1334971fc82845f9827df6ef8a0b20914bac6" - integrity sha1-f6EzSXH8goRfmCffbvigsgkUusY= - -lightningcss-linux-x64-gnu@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz#0b7803af4eb21cfd38dd39fe2abbb53c7dd091f6" - integrity sha1-C3gDr06yHP043Tn+Kru1PH3QkfY= - -lightningcss-linux-x64-gnu@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz#8b927862ea8c2bbc6831a46509244b50d9936e55" - integrity sha1-i5J4YuqMK7xoMaRlCSRLUNmTblU= - -lightningcss-linux-x64-musl@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz#88dc8ba865ddddb1ac5ef04b0f161804418c163b" - integrity sha1-iNyLqGXd3bGsXvBLDxYYBEGMFjs= - -lightningcss-linux-x64-musl@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz#0c525bb077dfd94404c059cfe42dad797e96aeaf" - integrity sha1-DFJbsHff2UQEwFnP5C2teX6Wrq8= - -lightningcss-win32-arm64-msvc@1.32.0: - version "1.32.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz#4f30ba3fa5e925f5b79f945e8cc0d176c3b1ab38" - integrity sha1-TzC6P6XpJfW3n5RejMDRdsOxqzg= - -lightningcss-win32-arm64-msvc@1.33.0: - version "1.33.0" - resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz#850ee1103dac989cfab50e3ac22d1a69e394e63d" - integrity sha1-hQ7hED2smJz6tQ46wi0aaeOU5j0= - -lightningcss-win32-x64-msvc@1.32.0: - version "1.32.0" - resolved "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz" - integrity sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q== - -lightningcss-win32-x64-msvc@1.33.0: +lightningcss@^1.33.0: version "1.33.0" - resolved "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz" - integrity sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss/-/lightningcss-1.33.0.tgz" + integrity sha1-wIhn1xp5OFxuGQIU/XL+8+X5Xws= + dependencies: + detect-libc "^2.0.3" + optionalDependencies: + lightningcss-android-arm64 "1.33.0" + lightningcss-darwin-arm64 "1.33.0" + lightningcss-darwin-x64 "1.33.0" + lightningcss-freebsd-x64 "1.33.0" + lightningcss-linux-arm-gnueabihf "1.33.0" + lightningcss-linux-arm64-gnu "1.33.0" + lightningcss-linux-arm64-musl "1.33.0" + lightningcss-linux-x64-gnu "1.33.0" + lightningcss-linux-x64-musl "1.33.0" + lightningcss-win32-arm64-msvc "1.33.0" + lightningcss-win32-x64-msvc "1.33.0" lightningcss@1.32.0: version "1.32.0" - resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz" - integrity sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lightningcss/-/lightningcss-1.32.0.tgz" + integrity sha1-uFqulkhtyxv0mnyFcSISc/Tx5Kk= dependencies: detect-libc "^2.0.3" optionalDependencies: @@ -1766,25 +1517,6 @@ lightningcss@1.32.0: lightningcss-win32-arm64-msvc "1.32.0" lightningcss-win32-x64-msvc "1.32.0" -lightningcss@^1.33.0: - version "1.33.0" - resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz" - integrity sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA== - dependencies: - detect-libc "^2.0.3" - optionalDependencies: - lightningcss-android-arm64 "1.33.0" - lightningcss-darwin-arm64 "1.33.0" - lightningcss-darwin-x64 "1.33.0" - lightningcss-freebsd-x64 "1.33.0" - lightningcss-linux-arm-gnueabihf "1.33.0" - lightningcss-linux-arm64-gnu "1.33.0" - lightningcss-linux-arm64-musl "1.33.0" - lightningcss-linux-x64-gnu "1.33.0" - lightningcss-linux-x64-musl "1.33.0" - lightningcss-win32-arm64-msvc "1.33.0" - lightningcss-win32-x64-msvc "1.33.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" @@ -1823,7 +1555,7 @@ ms@^2.1.3: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nanoid@3.3.18, nanoid@^3.3.20: +nanoid@3.3.18: version "3.3.18" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/nanoid/-/nanoid-3.3.18.tgz" integrity sha1-9mot4Rmf/eD88hyKXxMQaxwIGRM= @@ -1884,7 +1616,7 @@ picocolors@^1.1.1: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^4.0.4, picomatch@^4.0.7: +"picomatch@^3 || ^4", picomatch@^4.0.4, picomatch@^4.0.7: version "4.0.7" resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz" integrity sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA== @@ -1915,7 +1647,7 @@ qified@^0.10.1: dependencies: hookified "^2.1.1" -react-dom@^19.3.1: +"react-dom@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", react-dom@^19.3.1, react-dom@>=16.8.0, react-dom@>=17: version "19.3.1" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/react-dom/-/react-dom-19.3.1.tgz" integrity sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ== @@ -1949,7 +1681,7 @@ react-style-singleton@^2.2.2, react-style-singleton@^2.2.3: get-nonce "^1.0.0" tslib "^2.0.0" -react@^19.3.1: +"react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", react@^19.3.1, react@>=16.8, react@>=16.8.0, react@>=17, react@>=18.0.0: version "19.3.1" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/react/-/react-19.3.1.tgz" integrity sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw== @@ -1985,8 +1717,8 @@ scheduler@^0.28.0: semver@^6.3.1: version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/semver/-/semver-6.3.1.tgz" + integrity sha1-VW0u+GiRRuRtzqS/3QlfNDTf/LQ= semver@^7.7.3: version "7.8.5" @@ -2015,7 +1747,7 @@ tailwind-merge@^3.7.0: resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.7.0.tgz" integrity sha512-XPPUyAc+cvspz3lHTcR/QgPfW2A0lv/xQNIjX3HGhLR+Nq2lHaLq5MtTesHn8GUr3W3DguT2KT5x3NVgRtYwmA== -tailwindcss@4.3.3, tailwindcss@^4.3.3: +tailwindcss@^4.3.3, tailwindcss@4.3.3: version "4.3.3" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz" integrity sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ== @@ -2038,10 +1770,10 @@ ts-api-utils@^2.5.0: resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ts-api-utils/-/ts-api-utils-2.5.0.tgz" integrity sha1-Ss1KFV4ic0mQpe0f6el/ETvLN8E= -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.8.1: +tslib@^2.0.0, tslib@^2.1.0: version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/tslib/-/tslib-2.8.1.tgz" + integrity sha1-YS7+TtI11Wfoq6Xypfq3AoCt6D8= tw-animate-css@^1.4.0: version "1.4.0" @@ -2065,10 +1797,10 @@ typescript-eslint@^8.71.2: "@typescript-eslint/typescript-estree" "8.71.2" "@typescript-eslint/utils" "8.71.2" -typescript@~5.9.3: +typescript@>=4.8.4, "typescript@>=4.8.4 <6.1.0", typescript@5.9.3: version "5.9.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" - integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/typescript/-/typescript-5.9.3.tgz" + integrity sha1-W09Z4VMQqxeiFvXWz1PuR27eZw8= undici-types@~8.9.0: version "8.9.0" @@ -2105,12 +1837,12 @@ use-sidecar@^1.1.3: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@^1.2.2: +use-sync-external-store@^1.2.2, use-sync-external-store@>=1.2.0: version "1.5.0" resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz" integrity sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A== -vite@^8.3.4: +"vite@^5.2.0 || ^6 || ^7 || ^8", vite@^8.0.0, vite@^8.3.4: version "8.3.4" resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/vite/-/vite-8.3.4.tgz" integrity sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ== @@ -2125,7 +1857,7 @@ vite@^8.3.4: whatwg-mimetype@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== which@^2.0.1: @@ -2142,7 +1874,7 @@ word-wrap@^1.2.5: ws@^8.21.0: version "8.22.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.22.0.tgz#40f16e1d7588ac0575041be5c49b8eb261c28e73" + resolved "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz" integrity sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg== yallist@^3.0.2: @@ -2167,12 +1899,12 @@ yocto-queue@^0.1.0: zustand@^4.4.0: version "4.5.7" - resolved "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz" - integrity sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw== + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/zustand/-/zustand-4.5.7.tgz" + integrity sha1-fWuyAmoUJBXdi+iJHXhw5tvmX1U= dependencies: use-sync-external-store "^1.2.2" -zustand@^5.0.15: - version "5.0.15" - resolved "https://registry.npmjs.org/zustand/-/zustand-5.0.15.tgz" - integrity sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A== +zustand@^5.0.16: + version "5.0.16" + resolved "https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/zustand/-/zustand-5.0.16.tgz" + integrity sha512-Uv7e327ihlCfayfja3hDc0M64Upev1LWBKpRobdK4NyovDDPeeX4imWXc/wzC1yc6fkYPoAY/ncKVPAs2jrtQw== diff --git a/python/packages/devui/pyproject.toml b/python/packages/devui/pyproject.toml index bc6f0997bfb..aaf0d50a9ab 100644 --- a/python/packages/devui/pyproject.toml +++ b/python/packages/devui/pyproject.toml @@ -4,7 +4,7 @@ description = "Debug UI for Microsoft Agent Framework with OpenAI-compatible API authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://github.com/microsoft/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/duckdb/pyproject.toml b/python/packages/duckdb/pyproject.toml index 23d5a6f9fb7..f179458664b 100644 --- a/python/packages/duckdb/pyproject.toml +++ b/python/packages/duckdb/pyproject.toml @@ -4,7 +4,7 @@ description = "DuckDB vector stores for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261022" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/foundry/agent_framework_foundry/_chat_client.py b/python/packages/foundry/agent_framework_foundry/_chat_client.py index 4000b789e45..5299212e654 100644 --- a/python/packages/foundry/agent_framework_foundry/_chat_client.py +++ b/python/packages/foundry/agent_framework_foundry/_chat_client.py @@ -978,15 +978,16 @@ def get_computer_tool() -> Any: Older supported SDK releases can still import this client; calling this factory on those releases raises ``ImportError`` with upgrade guidance. """ - try: - from azure.ai.projects.models import ComputerTool - except ImportError as exc: + from azure.ai.projects import models + + computer_tool_cls = getattr(models, "ComputerTool", None) + if computer_tool_cls is None: raise ImportError( "FoundryChatClient.get_computer_tool() requires ComputerTool from azure-ai-projects>=2.3.0. " "Upgrade azure-ai-projects to >=2.3.0 to use this tool." - ) from exc + ) - return ComputerTool() + return computer_tool_cls() @staticmethod @experimental(feature_id=ExperimentalFeature.FOUNDRY_PREVIEW_TOOLS) diff --git a/python/packages/foundry/pyproject.toml b/python/packages/foundry/pyproject.toml index ebd77d0e73f..b1e3da50c51 100644 --- a/python/packages/foundry/pyproject.toml +++ b/python/packages/foundry/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Foundry integrations for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.15.0" +version = "1.16.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,14 +23,19 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", - "agent-framework-openai>=1.17.0,<2", + "agent-framework-core>=1.24.0,<2", + "agent-framework-openai>=1.18.0,<2", "aiohttp>=3.9,<4", "azure-ai-inference>=1.0.0b9,<1.0.0b10", "azure-ai-projects>=2.2.0,<2.8.0", "httpx>=0.28,<1", ] +[dependency-groups] +test = [ + "agent-framework-ag-ui>=1.7.1,<2", +] + [tool.uv] prerelease = "if-necessary" environments = [ diff --git a/python/packages/foundry/tests/foundry/test_foundry_chat_client.py b/python/packages/foundry/tests/foundry/test_foundry_chat_client.py index f955a117510..0a5defda458 100644 --- a/python/packages/foundry/tests/foundry/test_foundry_chat_client.py +++ b/python/packages/foundry/tests/foundry/test_foundry_chat_client.py @@ -3,7 +3,6 @@ from __future__ import annotations import asyncio -import builtins import inspect import json import os @@ -1733,12 +1732,12 @@ def test_get_computer_use_tool() -> None: def test_get_computer_tool_uses_non_preview_sdk_model() -> None: - from azure.ai.projects.models import ComputerTool + computer_tool_cls = _skip_if_sdk_class_missing("ComputerTool") tool = FoundryChatClient.get_computer_tool() - assert isinstance(tool, ComputerTool) + assert isinstance(tool, computer_tool_cls) assert tool.type == "computer" - assert isinstance(RawFoundryChatClient.get_computer_tool(), ComputerTool) + assert isinstance(RawFoundryChatClient.get_computer_tool(), computer_tool_cls) def test_foundry_computer_result_without_screenshot_is_rejected() -> None: @@ -1751,27 +1750,14 @@ def test_foundry_computer_result_without_screenshot_is_rejected() -> None: client._prepare_content_for_openai("tool", result) -def test_get_computer_tool_fails_only_when_invoked_with_older_sdk() -> None: - original_import = builtins.__import__ +def test_get_computer_tool_fails_only_when_invoked_with_older_sdk(monkeypatch: pytest.MonkeyPatch) -> None: + from azure.ai.projects import models - def missing_computer_tool( - name: str, - globals: dict[str, Any] | None = None, - locals: dict[str, Any] | None = None, - fromlist: tuple[str, ...] = (), - level: int = 0, - ) -> Any: - if name == "azure.ai.projects.models" and "ComputerTool" in fromlist: - raise ImportError("cannot import name 'ComputerTool' from azure.ai.projects.models") - return original_import(name, globals, locals, fromlist, level) + monkeypatch.delattr(models, "ComputerTool", raising=False) - with ( - patch.object(builtins, "__import__", side_effect=missing_computer_tool), - pytest.raises(ImportError, match=r"ComputerTool from azure-ai-projects>=2\.3\.0") as exc_info, - ): + with pytest.raises(ImportError, match=r"ComputerTool from azure-ai-projects>=2\.3\.0") as exc_info: FoundryChatClient.get_computer_tool() assert "Upgrade azure-ai-projects to >=2.3.0 to use this tool." in str(exc_info.value) - assert isinstance(exc_info.value.__cause__, ImportError) @pytest.mark.filterwarnings("ignore::FutureWarning") diff --git a/python/packages/foundry_hosting/pyproject.toml b/python/packages/foundry_hosting/pyproject.toml index ecb1aa57f98..c53e29ab185 100644 --- a/python/packages/foundry_hosting/pyproject.toml +++ b/python/packages/foundry_hosting/pyproject.toml @@ -4,7 +4,7 @@ description = "Foundry Hosting integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,13 +23,20 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.23.0,<2", + "agent-framework-core>=1.24.0,<2", "azure-ai-agentserver-core>=2.1.0,<3", "azure-ai-agentserver-responses>=2.2.0b1,<3", "azure-ai-agentserver-invocations>=1.1.0,<2", "httpx>=0.28,<1", "httpx2>=2.0.0,<3", "mcp>=2.2.0,<3", + "tenacity>=9.1.4,<9.2.0", +] + +[dependency-groups] +test = [ + "agent-framework-ag-ui>=1.7.1,<2", + "agent-framework-foundry>=1.16.0,<2", ] [tool.uv] diff --git a/python/packages/foundry_hosting/tests/test_invocations_int.py b/python/packages/foundry_hosting/tests/test_invocations_int.py index ba6f6126a44..ff65b8720e8 100644 --- a/python/packages/foundry_hosting/tests/test_invocations_int.py +++ b/python/packages/foundry_hosting/tests/test_invocations_int.py @@ -25,7 +25,7 @@ import httpx import pytest from agent_framework import Agent, InMemoryHistoryProvider, tool -from agent_framework.foundry import FoundryChatClient +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions from azure.identity import AzureCliCredential from agent_framework_foundry_hosting import InvocationsHostServer @@ -51,11 +51,11 @@ def server() -> InvocationsHostServer: """Create an InvocationsHostServer backed by a real Foundry agent.""" client = FoundryChatClient(credential=AzureCliCredential()) # pyrefly: ignore[bad-argument-type] - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, # ty: ignore[invalid-argument-type] instructions="You are a concise assistant. Keep answers very short (one or two sentences).", context_providers=[InMemoryHistoryProvider()], - default_options={"store": False}, # pyrefly: ignore[bad-argument-type] + default_options={"store": False}, ) return InvocationsHostServer(agent) @@ -72,11 +72,11 @@ def server_with_tools() -> InvocationsHostServer: """Create an InvocationsHostServer whose agent has a tool.""" client = FoundryChatClient(credential=AzureCliCredential()) # pyrefly: ignore[bad-argument-type] - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, # ty: ignore[invalid-argument-type] instructions="You are a concise assistant. Use the provided tools when appropriate. Keep answers very short.", tools=[get_weather], - default_options={"store": False}, # pyrefly: ignore[bad-argument-type] + default_options={"store": False}, ) return InvocationsHostServer(agent) diff --git a/python/packages/foundry_hosting/tests/test_responses.py b/python/packages/foundry_hosting/tests/test_responses.py index d9adc227038..9d8b6b0c5b3 100644 --- a/python/packages/foundry_hosting/tests/test_responses.py +++ b/python/packages/foundry_hosting/tests/test_responses.py @@ -37,6 +37,7 @@ Annotation, BaseChatClient, ChatMiddlewareLayer, + ChatOptions, ChatResponse, ChatResponseUpdate, ComputerSafetyCheck, @@ -1484,9 +1485,9 @@ def test_init_rejects_default_service_continuation_for_agent_server_history(self ResponsesHostServer(agent) def test_init_allows_default_conversation_id_for_agent_history(self) -> None: - agent = Agent( + agent = Agent[ChatOptions]( client=_ServiceStorageRecordingClient(), - default_options={"conversation_id": "service-thread"}, # pyrefly: ignore[bad-argument-type] + default_options={"conversation_id": "service-thread"}, ) ResponsesHostServer(agent, history_source="agent") @@ -1503,9 +1504,9 @@ def test_init_requires_storage_capability_for_agent_server_history(self) -> None ResponsesHostServer(agent) def test_failed_init_does_not_mutate_agent(self) -> None: - agent = Agent( + agent = Agent[ChatOptions]( client=_RecordingHistoryClient(), - default_options={"store": True}, # pyrefly: ignore[bad-argument-type] + default_options={"store": True}, ) with pytest.raises(RuntimeError, match="resilient_background"): @@ -1772,10 +1773,10 @@ async def test_responses_history_is_not_duplicated_by_default_local_history(self async def test_agent_server_history_disables_service_storage(self) -> None: client = _ServiceStorageRecordingClient() - agent = Agent( + agent = Agent[ChatOptions]( client=client, name="Service Storage Agent", - default_options={"store": True}, # pyrefly: ignore[bad-argument-type] + default_options={"store": True}, ) store = SessionStore() server = _make_server(agent, session_store=store) @@ -1797,10 +1798,10 @@ async def test_agent_server_history_disables_service_storage(self) -> None: async def test_host_history_rejects_storing_default_without_mutating_it(self) -> None: client = _RecordingHistoryClient() - agent = Agent( + agent = Agent[ChatOptions]( client=client, name="Non-Storing Agent", - default_options={"store": True}, # pyrefly: ignore[bad-argument-type] + default_options={"store": True}, ) with pytest.raises(RuntimeError, match="Remove that developer-owned default"): _make_server(agent, session_store=SessionStore()) @@ -1809,9 +1810,9 @@ async def test_host_history_rejects_storing_default_without_mutating_it(self) -> async def test_host_history_preserves_non_storing_client_default(self) -> None: client = _RecordingHistoryClient() - agent = Agent( + agent = Agent[ChatOptions]( client=client, - default_options={"store": False}, # pyrefly: ignore[bad-argument-type] + default_options={"store": False}, ) server = _make_server(agent) response = await _post(server) @@ -3556,11 +3557,11 @@ async def updates() -> AsyncIterator[AgentResponseUpdate]: async def test_agent_history_uses_in_memory_history_from_session_store(self) -> None: client = _RecordingHistoryClient() history = InMemoryHistoryProvider() - agent = Agent( + agent = Agent[ChatOptions]( client=client, name="Agent Managed In-Memory History", context_providers=[history], - default_options={"store": False}, # pyrefly: ignore[bad-argument-type] + default_options={"store": False}, ) store = SessionStore() server = _make_server(agent, session_store=store, history_source="agent") diff --git a/python/packages/foundry_hosting/tests/test_responses_int.py b/python/packages/foundry_hosting/tests/test_responses_int.py index d34ebf581c5..785476dd988 100644 --- a/python/packages/foundry_hosting/tests/test_responses_int.py +++ b/python/packages/foundry_hosting/tests/test_responses_int.py @@ -44,7 +44,7 @@ handler, tool, ) -from agent_framework.foundry import FoundryChatClient +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions from azure.ai.agentserver.responses import InMemoryResponseProvider, ResponsesServerOptions from azure.identity import AzureCliCredential from openai import AsyncOpenAI, DefaultAsyncHttpxClient @@ -92,10 +92,10 @@ async def get_weather(location: Annotated[str, "The city name"]) -> str: def history_server(request: pytest.FixtureRequest) -> ResponsesHostServer: """Create a real Foundry server for each model-history source.""" client = FoundryChatClient(credential=AzureCliCredential()) # pyrefly: ignore[bad-argument-type] - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, # ty: ignore[invalid-argument-type] instructions="You are a concise assistant. Keep answers very short (one or two sentences).", - default_options={"store": True}, # pyrefly: ignore[bad-argument-type] + default_options={"store": True}, ) return ResponsesHostServer( agent, @@ -108,11 +108,11 @@ def history_server(request: pytest.FixtureRequest) -> ResponsesHostServer: def history_server_with_tools(request: pytest.FixtureRequest) -> ResponsesHostServer: """Create a real Foundry tool-calling server for each model-history source.""" client = FoundryChatClient(credential=AzureCliCredential()) # pyrefly: ignore[bad-argument-type] - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, # ty: ignore[invalid-argument-type] instructions="You are a concise assistant. Use the provided tools when appropriate. Keep answers very short.", tools=[get_weather], - default_options={"store": True}, # pyrefly: ignore[bad-argument-type] + default_options={"store": True}, ) return ResponsesHostServer( agent, @@ -753,14 +753,14 @@ async def foundry_responses_boundary(request: Any) -> Any: allowed_tools=["microsoft_docs_search"], approval_mode="never_require", ) - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, # ty: ignore[invalid-argument-type] instructions=( "Always use the Microsoft Learn MCP tool to answer documentation questions. " "Keep the final answer to one short sentence." ), tools=[learn_mcp], - default_options={ # type: ignore[arg-type] # pyrefly: ignore[bad-argument-type] + default_options={ "store": False, "reasoning": {"effort": "low", "summary": "auto"}, "include": ["reasoning.encrypted_content"], diff --git a/python/packages/foundry_local/pyproject.toml b/python/packages/foundry_local/pyproject.toml index e2fe0c51748..2f4ca14484d 100644 --- a/python/packages/foundry_local/pyproject.toml +++ b/python/packages/foundry_local/pyproject.toml @@ -4,7 +4,7 @@ description = "Foundry Local integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,8 +23,8 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.13.0,<2", - "agent-framework-openai>=1.6.0,<2", + "agent-framework-core>=1.24.0,<2", + "agent-framework-openai>=1.18.0,<2", "foundry-local-sdk>=0.5.1,<0.5.2", ] diff --git a/python/packages/gemini/pyproject.toml b/python/packages/gemini/pyproject.toml index 879dc001584..d73874d85dc 100644 --- a/python/packages/gemini/pyproject.toml +++ b/python/packages/gemini/pyproject.toml @@ -4,7 +4,7 @@ description = "Google Gemini integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.24.0,<2", "google-genai>=2.25.0,<3.0.0", ] diff --git a/python/packages/github_copilot/pyproject.toml b/python/packages/github_copilot/pyproject.toml index caa0cb7706e..f4b9d77cb17 100644 --- a/python/packages/github_copilot/pyproject.toml +++ b/python/packages/github_copilot/pyproject.toml @@ -4,7 +4,7 @@ description = "GitHub Copilot integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.11" -version = "2.1.0" +version = "2.1.1" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/hosting-a2a/pyproject.toml b/python/packages/hosting-a2a/pyproject.toml index 69b535e9d9d..b3677ab1a7c 100644 --- a/python/packages/hosting-a2a/pyproject.toml +++ b/python/packages/hosting-a2a/pyproject.toml @@ -4,7 +4,7 @@ description = "A2A conversion helpers for app-owned Agent Framework hosting." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -25,7 +25,7 @@ classifiers = [ dependencies = [ "a2a-sdk>=1.0.0,<2", "agent-framework-core>=1.22.0,<2", - "agent-framework-hosting==1.0.0a261015", + "agent-framework-hosting==1.0.0a261030", ] [tool.uv] diff --git a/python/packages/hosting-mcp/pyproject.toml b/python/packages/hosting-mcp/pyproject.toml index aa1d108830e..f8112f8082d 100644 --- a/python/packages/hosting-mcp/pyproject.toml +++ b/python/packages/hosting-mcp/pyproject.toml @@ -4,7 +4,7 @@ description = "Agent and workflow MCP tool adapters for app-owned hosting." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261022" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.19.0,<2", - "agent-framework-hosting==1.0.0a261015", + "agent-framework-hosting==1.0.0a261030", "mcp>=2.2.0,<3", "pydantic>=2,<3", ] diff --git a/python/packages/hosting-responses/pyproject.toml b/python/packages/hosting-responses/pyproject.toml index f985b82cd1f..03daf41d8d9 100644 --- a/python/packages/hosting-responses/pyproject.toml +++ b/python/packages/hosting-responses/pyproject.toml @@ -4,7 +4,7 @@ description = "OpenAI Responses-shaped helpers for agent-framework-hosting." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261022" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.22.0,<2", - "agent-framework-hosting==1.0.0a261015", + "agent-framework-hosting==1.0.0a261030", "openai>=1.99.0,<4", ] diff --git a/python/packages/hosting-telegram/pyproject.toml b/python/packages/hosting-telegram/pyproject.toml index 193da69fb02..399fe1312f3 100644 --- a/python/packages/hosting-telegram/pyproject.toml +++ b/python/packages/hosting-telegram/pyproject.toml @@ -4,7 +4,7 @@ description = "Telegram Bot API-shaped helpers for agent-framework-hosting." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.13.0,<2", - "agent-framework-hosting==1.0.0a261015", + "agent-framework-hosting==1.0.0a261030", ] [tool.uv] diff --git a/python/packages/hosting/pyproject.toml b/python/packages/hosting/pyproject.toml index 37a231196ff..b966484e384 100644 --- a/python/packages/hosting/pyproject.toml +++ b/python/packages/hosting/pyproject.toml @@ -4,7 +4,7 @@ description = "Execution-state helpers for app-owned Agent Framework hosting rou authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/hyperlight/pyproject.toml b/python/packages/hyperlight/pyproject.toml index 20b919430a8..260b6415437 100644 --- a/python/packages/hyperlight/pyproject.toml +++ b/python/packages/hyperlight/pyproject.toml @@ -4,7 +4,7 @@ description = "Hyperlight CodeAct integrations for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/lab/uv.lock b/python/packages/lab/uv.lock index 3e9d82d93dd..00f42513551 100644 --- a/python/packages/lab/uv.lock +++ b/python/packages/lab/uv.lock @@ -2768,24 +2768,23 @@ wheels = [ [[package]] name = "huggingface-hub" -version = "2.2.0" +version = "1.33.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "filelock" }, { name = "fsspec" }, - { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'ARM64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, - { name = "httpx2", version = "2.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "httpx2", version = "2.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "httpx" }, { name = "packaging" }, { name = "pyyaml" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/12/47/6858d63643e66fb4f6585c3cfd4029c0b2bc1ae21688cee9b3335f20a10d/huggingface_hub-2.2.0.tar.gz", hash = "sha256:5d1b47537394e4215cb858aa12fd493d0f7ef7f58990f5dcd24bc173107b2871", size = 1041026, upload-time = "2026-10-08T15:30:59.971Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/2a/484d112c0d8fc5f665d7b65137ac9cdb2953c982391598c3597968a12ee7/huggingface_hub-1.33.0.tar.gz", hash = "sha256:367be21a201db9523eddf8aeac7048f2602c1b308691c97640d5e72ed188007e", size = 1043548, upload-time = "2026-09-24T09:49:29.971Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/b0/0f7b430fd100b3a3b037fdbb314878200241082e607b3383c63d91a13a72/huggingface_hub-2.2.0-py3-none-any.whl", hash = "sha256:1667f145dc56dc210d60966069397df9ecfca9607a5d43db88b308c89dae56b3", size = 839884, upload-time = "2026-10-08T15:30:57.914Z" }, + { url = "https://files.pythonhosted.org/packages/fc/16/963096d224b80909432dc16561a615fd33d2d13beef3ce4c63fa25e40867/huggingface_hub-1.33.0-py3-none-any.whl", hash = "sha256:04e434b06e100eddbce9a6e817d72693a7884b10a79bd67ab48080d5c07eb899", size = 846435, upload-time = "2026-09-24T09:49:28.059Z" }, ] [[package]] @@ -3399,34 +3398,40 @@ wheels = [ [[package]] name = "litellm" -version = "1.103.7" +version = "1.106.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, + { name = "async-timeout", marker = "python_full_version < '3.11'" }, { name = "boto3" }, { name = "click" }, { name = "fastuuid" }, + { name = "filelock" }, { name = "httpx", extra = ["http2"] }, + { name = "huggingface-hub" }, { name = "importlib-metadata" }, { name = "jinja2" }, { name = "jsonschema" }, { name = "openai" }, + { name = "packaging" }, { name = "pydantic" }, { name = "pydantic-settings", version = "2.15.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "pydantic-settings", version = "2.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "python-dotenv" }, + { name = "pyyaml" }, { name = "tiktoken" }, { name = "tokenizers" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7e/d8/c41f2f98321a46222bf6230ff9427f75acea0f85f6255e87afa7d479de0c/litellm-1.103.7.tar.gz", hash = "sha256:42caa25a8e601e3fe327b4447966e5268d09274c19ac05ef24e86163d821e3f5", size = 18995147, upload-time = "2026-10-21T09:36:09.647Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4b/0f42182e4a3f957e8b5d8bdc2522779092da973bef7a3492c8e6a3409764/litellm-1.106.2.tar.gz", hash = "sha256:9f0e770cb007c8c6e78917ad7b5c4f059f7bdc4a3606f854831780ea53fd9e2d", size = 21431422, upload-time = "2026-10-21T10:44:51.337Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/13/a90933c355c6ec0f677c5cc12d28d3e684e9547f9669874ee4f83139c47e/litellm-1.103.7-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:75cce8d8081f056f70e6df7233babd7691f7a892411fed2af057b2fc19002a2c", size = 27806450, upload-time = "2026-10-21T09:35:44.838Z" }, - { url = "https://files.pythonhosted.org/packages/68/8e/e1e408699d39ee9f39ffa054b48ada1140b5af180936a555afb0d4927a72/litellm-1.103.7-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:49ef58786989ae621e5d67fa54d0ab85de44f00f8c9b85fb548d3c3e6127b0b8", size = 27269162, upload-time = "2026-10-21T09:35:48.962Z" }, - { url = "https://files.pythonhosted.org/packages/bb/81/0954bf10131cdbd9cd89783c208f384582099de9ea5444316ba1e96281d0/litellm-1.103.7-cp310-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6d4bd664d45a8dd3acff46f5b8aba5fded1c31968b1047f76e30ce4c81d9274e", size = 27576672, upload-time = "2026-10-21T09:35:52.306Z" }, - { url = "https://files.pythonhosted.org/packages/fd/ea/2c3a787d2d9a92aa1eda8447c6b7bd89633351f2018ca3afdc6630289ae9/litellm-1.103.7-cp310-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4a86631887d5a03a63f911066d4eb4cedbe37da3c746f65d9375b8ec505dcb54", size = 28121861, upload-time = "2026-10-21T09:35:55.425Z" }, - { url = "https://files.pythonhosted.org/packages/08/29/20140f59fb45844bcf32ed6a682a5a618327c58f51bb56903e8e742445bb/litellm-1.103.7-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:176244e87c85a19c4d02ae645fb4ee7f29b1e97e480a4e126dccdb295849f2a7", size = 27659297, upload-time = "2026-10-21T09:35:58.815Z" }, - { url = "https://files.pythonhosted.org/packages/a3/dd/ef53749d8454b1dcb61742dfcb30636d26c8e6129fd45fc14f5b17986239/litellm-1.103.7-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:58146feccf874638f547f892daf64a2e17c42c704069e2c55f7baa6427876da6", size = 28238662, upload-time = "2026-10-21T09:36:02.58Z" }, - { url = "https://files.pythonhosted.org/packages/04/48/3a4a5b380018cd54276f6aef809d72d51ee47a96f3f961886a08b12f1494/litellm-1.103.7-cp310-abi3-win_amd64.whl", hash = "sha256:1ff7e90c72663f79981e79e02a069643ec3f195516d7eaa81f0339f807430cec", size = 28183383, upload-time = "2026-10-21T09:36:06.256Z" }, + { url = "https://files.pythonhosted.org/packages/0f/47/1038af80d9831972fae8712a890c30252f51c514c092d83e0f1330bb1fa1/litellm-1.106.2-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bf6f13445bb59d8d02131bbc1fb57161d1ae629bec65dc66f9add4c09fb6994a", size = 36283395, upload-time = "2026-10-21T10:44:22.902Z" }, + { url = "https://files.pythonhosted.org/packages/51/fc/15e44b2a222dfda71e0aff107fccfb49b06a4695fae0eb6867aff84f7e1d/litellm-1.106.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:cc778d01ed65a8dd57d5211d581ec237e06df239a09c3d573ace33e0feea76c9", size = 35263059, upload-time = "2026-10-21T10:44:32.664Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a8/f21d7fd8f7ffa6ebacefbedfb6268430e2b55ce9b2f33a36ac0295ccd500/litellm-1.106.2-cp310-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:34bfdc26c2c075726eda59ec0675e2a8a67b6e59a03980def7ef7651b849141a", size = 35827639, upload-time = "2026-10-21T10:44:35.553Z" }, + { url = "https://files.pythonhosted.org/packages/6b/30/4a38c22181ef7169b6c044b8294f2e5b06236aeeccfbe57c2f0e85a51bfe/litellm-1.106.2-cp310-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb1a2a1e55a4a8350ae2167525dc0d06f59b078cd685fb3e0f5419f02da5420e", size = 36789555, upload-time = "2026-10-21T10:44:38.879Z" }, + { url = "https://files.pythonhosted.org/packages/a0/76/e7ca210ad574f5321c162f2b27f8674c260e0857323a9991c4d3765ce8f1/litellm-1.106.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ce18971e2bb2aa58ef8efae1cd12da1248e1c2e5ae3cf5903bfb9d563bb34d9d", size = 35914468, upload-time = "2026-10-21T10:44:42.268Z" }, + { url = "https://files.pythonhosted.org/packages/22/03/95518dfb58e29c45ab40a7bc3d1d76509d09011172c380145fc9e900a214/litellm-1.106.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:32e567ee53c812e36f79158ec280c8850973f84a9e5fdef50d31ca09306d148c", size = 36901860, upload-time = "2026-10-21T10:44:45.807Z" }, + { url = "https://files.pythonhosted.org/packages/48/7a/a17de89184b5365980c3eb7d58176ae5a7e34538e56b942c833ff7f523b9/litellm-1.106.2-cp310-abi3-win_amd64.whl", hash = "sha256:836ab19110504ad7ba71d8ce73af6b9d1cf1dc6ffda2b49ebc1a51e348f754bc", size = 37619702, upload-time = "2026-10-21T10:44:48.564Z" }, ] [package.optional-dependencies] @@ -3471,20 +3476,24 @@ proxy = [ [[package]] name = "litellm-enterprise" -version = "0.1.69.post2" +version = "0.1.76.post1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/69/2b/f669115d877f9515f7ad45cda44749b894f6be1ba3c3873ba7c6fb31ca94/litellm_enterprise-0.1.69.post2.tar.gz", hash = "sha256:cf3193ac8938b93580f399969b88ac79193a7afc258a069116aa6d1777ab7466", size = 92095, upload-time = "2026-10-21T09:19:07.252Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/41/2eca85291eea88f767d2acfcaba7620c59493a421c25ab43b73d4d57e526/litellm_enterprise-0.1.76.post1.tar.gz", hash = "sha256:f767a911b2f0de1fa8e5e6cee0f69a26261542faf2a8c2b5f5acd17431c7fd2a", size = 99789, upload-time = "2026-10-21T10:09:27.647Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/8c/ab2fd1e2987bdc91bd5ab7c920926b1f11023e3216ed1470894226456e43/litellm_enterprise-0.1.69.post2-py3-none-any.whl", hash = "sha256:667cf700193078a7684541d3484df59a63f888e9d4c247eb542dd47441719e8d", size = 160505, upload-time = "2026-10-21T09:19:05.841Z" }, + { url = "https://files.pythonhosted.org/packages/7e/85/fc5c714eb6cfdaee7cfdc249cebe3bede7703818ce9cc72ae3d5e7d7bfcb/litellm_enterprise-0.1.76.post1-py3-none-any.whl", hash = "sha256:eee9bfe5c885dc533ac650fd08f915216e92697549475c321c37776985b4d791", size = 168907, upload-time = "2026-10-21T10:09:26.273Z" }, ] [[package]] name = "litellm-proxy-extras" -version = "0.4.100.post1" +version = "0.4.108" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/bd/8b4a06490e729ebb21a1a73fc1aafe1967865e61820ded2bdc5aeb1f6902/litellm_proxy_extras-0.4.100.post1.tar.gz", hash = "sha256:2d0641b9805578610e2d5e62f9ba8852cb9bc46e780e2ca795aad62f982b1a51", size = 68240, upload-time = "2026-10-03T23:11:30.7Z" } +dependencies = [ + { name = "psycopg" }, + { name = "psycopg-binary" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/34/a44d096d22ef957f51e9adcd0855783d29eb13e55b3ea7a7a4ad5e6a3330/litellm_proxy_extras-0.4.108.tar.gz", hash = "sha256:16d5d3758d714558e97d6c5520e9054a7a4f0fc94dc16f050c3c60423bb1106c", size = 87330, upload-time = "2026-10-09T19:02:22.416Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/01/8b123fa6de3d0c856b4de3205d3fccc3afe01f5f32f0153d53f46be322a5/litellm_proxy_extras-0.4.100.post1-py3-none-any.whl", hash = "sha256:a0facbb596aff9a422fd65be77e14d07105361f9a51b187e8975c7013b254e5a", size = 178411, upload-time = "2026-10-03T23:11:29.366Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c1/b6186b328f5f3d301e3266dc9e8235cb3a2745ae6fd467a4f54eddf80c31/litellm_proxy_extras-0.4.108-py3-none-any.whl", hash = "sha256:e0e62cebf6ac3789236319f46a326e80904951baac28c8b58dadcf088643d3e7", size = 215906, upload-time = "2026-10-09T19:02:20.995Z" }, ] [[package]] @@ -5446,6 +5455,92 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, ] +[[package]] +name = "psycopg" +version = "3.3.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/26/3ea4ca5eaea1c0debcdf7ee7c1613fbe721dc27a03c461c0817ffd8a0601/psycopg-3.3.6.tar.gz", hash = "sha256:c081f2250df751a943036e42db6df4571c66cd0aabe8291a7a506512b12007d2", size = 168171, upload-time = "2026-09-18T13:22:55.152Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/de/748bd7609c71cae5d737f0ba9192f19329f70180ecda8fff3cac02c5abe3/psycopg-3.3.6-py3-none-any.whl", hash = "sha256:a1db9f7148b06a28606767efaca51fa6f9398c5c0a3810519be69d7000bdb631", size = 215490, upload-time = "2026-09-18T13:15:29.374Z" }, +] + +[[package]] +name = "psycopg-binary" +version = "3.3.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/92/00350a66de0af05e41d01aa3134e3970045e816afed3f99d58ec1abe15b2/psycopg_binary-3.3.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7beb3e41c9a1e509f3ed85263386588cbe3e975aa67be21f79f44fd35ffaeefc", size = 4728682, upload-time = "2026-09-18T13:15:36.605Z" }, + { url = "https://files.pythonhosted.org/packages/91/fc/afa9c7fd316a469af7ede6ebb020eac482f5d827fae57d5310c9bc0c41ae/psycopg_binary-3.3.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa73160077345ec21b3f51e8e24b3de2e99586217e497629326eb9b2ea88c52e", size = 4777111, upload-time = "2026-09-18T13:15:46.566Z" }, + { url = "https://files.pythonhosted.org/packages/f2/44/7c1e015f1bc56b36ff1369f09e852b2d83ccefd5a669a42633a916cdedc4/psycopg_binary-3.3.6-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f87dbdc42e78ee0f7ea180c03f8c78e80a949e373066629bd90fefff10552dff", size = 5592755, upload-time = "2026-09-18T13:15:52.886Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ae/314a251ca918cdac380bce1b87839ade9355382ea749e6ef3ba75ba0c09f/psycopg_binary-3.3.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a9348c5b43a3bb5ef8c2e89d5237c9c87eeafb01d338c84a7aebbc5cd0313299", size = 5267949, upload-time = "2026-09-18T13:16:00.53Z" }, + { url = "https://files.pythonhosted.org/packages/b6/9f/3bb0cfe9bb0f31ca57cf486ddc8c9ac51251aed8181bf88ff870b2623105/psycopg_binary-3.3.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a52991594ac4db888c7d39bccef331797e30cb31a95cae02cf2607f83a42dc2", size = 6862403, upload-time = "2026-09-18T13:16:10.385Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d6/7032c10309c3155e9b24300fdcc9a1afa539cfd20ce52fdef74a46f10161/psycopg_binary-3.3.6-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5ea8beeb5541780b4b50b462eeacbc4f594ce3b911dc20c81c75f267876f71d2", size = 5107271, upload-time = "2026-09-18T13:16:16.843Z" }, + { url = "https://files.pythonhosted.org/packages/61/cc/79add2cf92684cf1a81da134b32caa662c25c72d0cc905d181ef4455f834/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:198a48e68cc99ccac03ba95ac857e73aa66f3bf6be77019fafb0832a05f7ad03", size = 4627984, upload-time = "2026-09-18T13:16:23.889Z" }, + { url = "https://files.pythonhosted.org/packages/c9/48/6dfb14f9350c14af6a2edb3c31262051b8cd94e2186e4b831e46dbbe8cd9/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fa34eb47969297471db7b7f193622c7e3ee839ec05abd05f1fe104d5b1b1dcf4", size = 4322054, upload-time = "2026-09-18T13:16:29.33Z" }, + { url = "https://files.pythonhosted.org/packages/29/35/2982338716a91cbb4dfc866be015be4457ee8106a445aabf3d1fb6a270e0/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:b979a42815410432420275412633960807178b1ce26591a16ce06e78a5bd4bb2", size = 4048471, upload-time = "2026-09-18T13:16:34.119Z" }, + { url = "https://files.pythonhosted.org/packages/24/e1/171b1db1542c5f76a678b7ee0a7800bebc9735a0a03417c76cf948bfd63c/psycopg_binary-3.3.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:889e42acec10450185e0cdfb396f375e2c1a8d7737c114830a7fde4654f59e30", size = 4353931, upload-time = "2026-09-18T13:16:38.692Z" }, + { url = "https://files.pythonhosted.org/packages/08/89/4424e62a944eef40bd9326ada4ae23802b28eab6502af91e84ef7bba74fb/psycopg_binary-3.3.6-cp310-cp310-win_amd64.whl", hash = "sha256:cbd5f73073ed19c378d4c35499db1e3e703a5b1a324e521204065967bfaa7a18", size = 3674362, upload-time = "2026-09-18T13:16:44.454Z" }, + { url = "https://files.pythonhosted.org/packages/70/86/b71166048974d49c6d136b2ed1c0e5bec0b974d8c4de5cbce7e86a9e412a/psycopg_binary-3.3.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:be4f9b3c9338ac5dd217c5847e21521b396c8117f78dc420d495a5c49bbef874", size = 4728002, upload-time = "2026-09-18T13:16:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/1d/1e06c0de7ed5aed898acb87544eac6ef0bc7d752a67ec6e5d6b835e9b40c/psycopg_binary-3.3.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f0535693ce476a722b718b002d5d2c27d47e71ca945276ac194409c98e74c492", size = 4775403, upload-time = "2026-09-18T13:16:58.939Z" }, + { url = "https://files.pythonhosted.org/packages/84/02/2ffcbc43f8e4bbc38e5286a22013bcac01898d13cd38325f60dd5428a8af/psycopg_binary-3.3.6-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3c9e663b2e800e3218994cf948c11bcc2844e6491b34aa80d089baf6531827bf", size = 5594145, upload-time = "2026-09-18T13:17:08.515Z" }, + { url = "https://files.pythonhosted.org/packages/e1/25/031dae2c7d2e7e77dcf5b1962c1e0684fa548d7af0ff6707b6b5e6054ca7/psycopg_binary-3.3.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a2e44a342d2aee40508e28a563d8961c39d9bbd8cae36d8578f0a3c6658aab0f", size = 5267985, upload-time = "2026-09-18T13:17:16.24Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/94c89ada3c003a4d858178f3bba49a35e0297ef2aad659b80eb5e380e690/psycopg_binary-3.3.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f598f19fa9a91540b5cee17932ffd227b7b53a481605bcc4573c0eafa647300", size = 6860986, upload-time = "2026-09-18T13:17:23.348Z" }, + { url = "https://files.pythonhosted.org/packages/9d/a0/81bf499d095adee8413bd19822a6872fbfa21663ec78014a68d83a8db83c/psycopg_binary-3.3.6-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6ff05561e4a067d35507dc5c90f1deb2ec1c9703ac5cccc1bc26e08a197f9c5a", size = 5106702, upload-time = "2026-09-18T13:17:28.847Z" }, + { url = "https://files.pythonhosted.org/packages/00/75/99d56da64c27bd985fd82c6ecbf7976b724ac638fdd1654ef995323a1a26/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:566dd827f17728efdf7d88a5b066f815170f6fdad13967ae952842d90e6aaa9f", size = 4627090, upload-time = "2026-09-18T13:17:36.668Z" }, + { url = "https://files.pythonhosted.org/packages/3e/0c/0222171d11233332c6a24b1cef1578215f0ffddf3642eb8dd8c4448ad69f/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9b2f11794e017ce340934e35de46181c46ef71ec75ea3d85dd75cd836761c01e", size = 4320353, upload-time = "2026-09-18T13:17:42.526Z" }, + { url = "https://files.pythonhosted.org/packages/62/6f/e1cc2a28dd1228c67c969ba6fd37cd8726b312e2ff51380f847ddb38ccde/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:910ace140e3e7b7596898d083f37a8fe90c5c40684252ad4e682364b2cd3deba", size = 4047253, upload-time = "2026-09-18T13:17:47.068Z" }, + { url = "https://files.pythonhosted.org/packages/d8/fd/38b64790ce7a515b1dbd2bab3d119637a858aeb22c380cf4859bc4ce0e42/psycopg_binary-3.3.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37e517c146b185f9c0c6e8d0a0ebbdeeeb67896af28466e032bc810d0c7dc7a7", size = 4353208, upload-time = "2026-09-18T13:17:52.41Z" }, + { url = "https://files.pythonhosted.org/packages/f7/dc/45386530ceb2a8c789a226de9b9b34eca8fccf1feba2e4ef68a6aca50c56/psycopg_binary-3.3.6-cp311-cp311-win_amd64.whl", hash = "sha256:c7f92daa0d2a1c76f07264abddf8cbabd30152a2f09c3270e50f0c7efdf5dcac", size = 3675638, upload-time = "2026-09-18T13:17:58.112Z" }, + { url = "https://files.pythonhosted.org/packages/e6/01/2cdd1824e58b4467ee0b9498664cd28c42d8794db6b1e35b6bcb834f0044/psycopg_binary-3.3.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3f84dab25e0385692ee13274c68678377e0b1a70ab9d14e56264cbf61f60c62d", size = 4707086, upload-time = "2026-09-18T13:18:05.138Z" }, + { url = "https://files.pythonhosted.org/packages/f6/76/de9948ac06895261c84d5b9fbe283d8f3c5bc9f070691b8d9eaa1b51e322/psycopg_binary-3.3.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:612382ac3ed13651c7fa44b5fee9fbf7baaa2ddbc6f500391672682c5f1df9e0", size = 4769607, upload-time = "2026-09-18T13:18:12.83Z" }, + { url = "https://files.pythonhosted.org/packages/76/a9/72436c9915ee4905964689e7f0e182ce7767cc0a0390b3ce703be8177625/psycopg_binary-3.3.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:366db6e97e66b37211475f20c4c1324a2dc0dd825e46d4e87f9d599304d276f9", size = 5554134, upload-time = "2026-09-18T13:18:21.175Z" }, + { url = "https://files.pythonhosted.org/packages/0a/42/948bb3d2617795093512613fd96ba380e922992c7908fbc073858147d196/psycopg_binary-3.3.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1679a1cb93fbe5a6d1fd58d82cbddcc6fcb8c61446ba7cae6eb2a7b19bc585de", size = 5235723, upload-time = "2026-09-18T13:18:27.071Z" }, + { url = "https://files.pythonhosted.org/packages/99/47/93e823ff1b0088400703410939c9bda3e63ed9c850b3ee088e8769f4c10b/psycopg_binary-3.3.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:37d40450659401600e6d043ff586c89a71a69f33cbb8bcdba6cdb2569beecdbe", size = 6833587, upload-time = "2026-09-18T13:18:33.794Z" }, + { url = "https://files.pythonhosted.org/packages/5e/2d/ecc69c847795aa704041a9f5667a6b0938a088cf1853636d762a6938e493/psycopg_binary-3.3.6-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a5165300324efd5a772c48a88ab3a928513ab3979fca76553e62ee815f7b2b9c", size = 5070013, upload-time = "2026-09-18T13:18:39.628Z" }, + { url = "https://files.pythonhosted.org/packages/92/36/6126f0dac21713dcae91404f2a76da18598a6252339a8c669c46370d43b2/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d636338c8f21b0df2f84657b00bc34f9313f826ef93f1155bc743607e4a0c5eb", size = 4597367, upload-time = "2026-09-18T13:18:45.023Z" }, + { url = "https://files.pythonhosted.org/packages/4d/29/7ecfc04243b46c89ffd49924e9c5634ea904ef96c7d0f37e4073623584c1/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a4ee3bdd5468a725f2a4d9aab8a74b6d0279f768c8b5d3aeb102c5307ff3d59c", size = 4275419, upload-time = "2026-09-18T13:18:49.299Z" }, + { url = "https://files.pythonhosted.org/packages/6e/90/2f46d2e0de79706ac170df0a3637fe63c4498fc04f131f6049520b78b806/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:289aadd6a00e151203c081f708348ec89f1e483c9b510ef4ac3981f847f01f79", size = 4007358, upload-time = "2026-09-18T13:18:53.944Z" }, + { url = "https://files.pythonhosted.org/packages/03/48/6744e91291b751a8cf12d63d719977974bb94c84ceba913e7ddb2e478e51/psycopg_binary-3.3.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f21d057f3e5f5491067e5b292498073b73847d48799b099803fef100775fcc52", size = 4320156, upload-time = "2026-09-18T13:18:59.258Z" }, + { url = "https://files.pythonhosted.org/packages/1a/9b/94ff7fce53a64d5b286e2ec454e0a025cf3d6e6b4a9189bef16aa5de98b2/psycopg_binary-3.3.6-cp312-cp312-win_amd64.whl", hash = "sha256:e23a66a763fbe83fcc210bc77c27e5a5ea380ebf091c06f34d8561b695e5a40f", size = 3658864, upload-time = "2026-09-18T13:19:06.503Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c3/c072584b69ad44a747b448cfc9766fecb8aae56e372a017e2ef668790057/psycopg_binary-3.3.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ad8f35e67cc16d1fad1fa8c88972dc9b3a3141ea67897399904edab96a301b6", size = 4712284, upload-time = "2026-09-18T13:19:13.451Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b9/4283b785339e8e2318d03048994b093d650ea6289fabaa806b765dc0d449/psycopg_binary-3.3.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:373704aea331d3f3e3402c125a1543f5875e2986ebb54f97d1647942161f803f", size = 4772031, upload-time = "2026-09-18T13:19:18.524Z" }, + { url = "https://files.pythonhosted.org/packages/6f/72/7a1321d359246769fff1affffbd0132785a28f7f63c18524c15a502398f4/psycopg_binary-3.3.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:b82491019b884d62318b5f30706c3d7e6d4e5a6cb7eabcb3edc0c1b0fdaceae9", size = 5556392, upload-time = "2026-09-18T13:19:24.418Z" }, + { url = "https://files.pythonhosted.org/packages/de/b0/c6f8a0585a5dacbea74e130bcfc66629390e8f5bbc79d2a8e806e8952150/psycopg_binary-3.3.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cec5ea900390897d0b46130f60bc2883bf19c314f9044235217c8be88b0ef269", size = 5237855, upload-time = "2026-09-18T13:19:31.257Z" }, + { url = "https://files.pythonhosted.org/packages/e2/fc/c3a7a8bbef7e945ec584ac61d460a612363ea398511cd0e220242b1d69f1/psycopg_binary-3.3.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98c02090d88f2ebc0ec1e8da538f77d225ce0fffecf372aa39262e62a1b054ef", size = 6833856, upload-time = "2026-09-18T13:19:43.622Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f2/8e80b921db728ebb68fc105bd7c4277f908210ad755bd6481d5ea7add740/psycopg_binary-3.3.6-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ee2c4728c691245e24501fcd7a97b5b381236b9985bc445bba88cdce7d1b5784", size = 5070730, upload-time = "2026-09-18T13:19:49.968Z" }, + { url = "https://files.pythonhosted.org/packages/54/6a/5b313e0c5348244f0e973aff3258bf86766656256d5ece8d541a53e35b4a/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f19cc87343eaa55255e76b31259a570072ac95d6ae82c92dd34b97691f5e49dc", size = 4598089, upload-time = "2026-09-18T13:19:56.426Z" }, + { url = "https://files.pythonhosted.org/packages/32/e9/db7f76ec24bf6699e92bf604e5c4bae10664a681a8999ef42aa0faf0f2c6/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdccb3a0e184b03e9baa673b15a809cf36c339c85dbda0ebc25a698846dfbee8", size = 4278481, upload-time = "2026-09-18T13:20:04.681Z" }, + { url = "https://files.pythonhosted.org/packages/61/83/72c67013656f4d6b547caabffb193e91d57e63f90eefdcc6d045c400e97d/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:9892188bb15e5803beb51afe8a25add6b56be391a53058e8bca03b74e1e6bf22", size = 4009229, upload-time = "2026-09-18T13:20:11.905Z" }, + { url = "https://files.pythonhosted.org/packages/82/35/5e4500df2c999eb0faed8b184e6958b834172128274f06167a5deef4c19c/psycopg_binary-3.3.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3af90f92769d8cc10f94515ee7a0aef36ea85ca733a0ce22858f6e0953f41138", size = 4321467, upload-time = "2026-09-18T13:20:17.949Z" }, + { url = "https://files.pythonhosted.org/packages/55/7f/e350e1cf498ba2565c3f87b12f429d2012eb86b76c2b3845a19ee5fbb4d6/psycopg_binary-3.3.6-cp313-cp313-win_amd64.whl", hash = "sha256:0ebfad5d131de9f892ae9e70cc7616207768b6714b66a52d4612b8ceaf78b372", size = 3658179, upload-time = "2026-09-18T13:20:22.691Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b9/60711317c284a442511644ea7185b56ebe627606d6741e732cd16108c47b/psycopg_binary-3.3.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:b3f75dee0f9afafabe4edc52c4842f1e1878ed2069bd05b22d6fe961e97e4dba", size = 4720512, upload-time = "2026-09-18T13:20:29.278Z" }, + { url = "https://files.pythonhosted.org/packages/63/da/28befc84454cbc6374550de7746f591f8fe1b6165c1fce249652cc8291c4/psycopg_binary-3.3.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5927b7ba63153cd8e9862987290a2b783a5c590daf2a4ef981700cc3569166d4", size = 4782318, upload-time = "2026-09-18T13:20:35.401Z" }, + { url = "https://files.pythonhosted.org/packages/a4/8a/0d21c2c833cdc0d4244c77e858e0ed37fa2abec2623be4fd686f617109ce/psycopg_binary-3.3.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:0bf08b749cc144f33b44a91b78e3f71c60eb07963746a0df5a100b36ce3d7475", size = 5567460, upload-time = "2026-09-18T13:20:41.902Z" }, + { url = "https://files.pythonhosted.org/packages/49/6d/7692d0d4e656b6cc9868d8acc2e3b42f17a0db4a625400a6d093cb0533a1/psycopg_binary-3.3.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:31cd942c23f613276b81a6e6598cefa12960058b0f46e1e874b540c793f6aca5", size = 5246902, upload-time = "2026-09-18T13:20:47.661Z" }, + { url = "https://files.pythonhosted.org/packages/d4/c1/b8a1f18fb1b7558a17f57f7cb3fc8bc93189feea2958925950b3acb15743/psycopg_binary-3.3.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4690cf67738f0e0e49a32aeec99bf0e4595cc2b4f1af984a4345394b1dcff91a", size = 6847192, upload-time = "2026-09-18T13:20:56.874Z" }, + { url = "https://files.pythonhosted.org/packages/a5/76/404f33519167c65cca88ec4998776f1dbebccc301ee977f0e62c47fb0826/psycopg_binary-3.3.6-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ad1c785e784cfd87e8436c6b7702f2d321fc39601bbaf29bc63a41a867091638", size = 5079573, upload-time = "2026-09-18T13:21:04.155Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d9/79e8fbc8f37262a415f3550f0bcc5f98037442bf3d12ef6cbae2056655ae/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:79a2a1c3449f6c3409427078ed1cec10de79f3023cb5f2504f0597d350ad46c7", size = 4613633, upload-time = "2026-09-18T13:21:10.664Z" }, + { url = "https://files.pythonhosted.org/packages/d4/47/96225db74be7d2ce04b3a58678b53cda610225055edf5faa775c9f501d8b/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:86147cb5d140341c3363fb5bacce31f8d5543902a46699d3c536b101bbceaf9e", size = 4293375, upload-time = "2026-09-18T13:21:16.027Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d2/18e9c779a5efd565250329adaf529ecc2b8b2ed5be5cb0f6ccee208cbfd9/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:7308c93cf0b19bbaf8e6ff0a6ad50d3c442385739245fe15a8d593bf841734a6", size = 4019883, upload-time = "2026-09-18T13:21:21.587Z" }, + { url = "https://files.pythonhosted.org/packages/ef/28/0cc654afc6c2cda982767f5679d3646b30b1ec86545bdaa9402202d6776c/psycopg_binary-3.3.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:05a83ac9fd52b9bca7cb5ab04b3691163170bd16f53defa27216ea3aa07ee781", size = 4332607, upload-time = "2026-09-18T13:21:27.63Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3e/0a753a74fbd7aef120f286c016e09d3cc3f1daf7688f4a145d27281260b2/psycopg_binary-3.3.6-cp314-cp314-win_amd64.whl", hash = "sha256:1fbd30e537dab22cafdf080608f10148fe2a5f3a61294ddb5113caac8a623840", size = 3755671, upload-time = "2026-09-18T13:21:33.855Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b1/a372b9c02aea50148e71c9853e19efca8fa5ae2010a8e27243b9b8f790c0/psycopg_binary-3.3.6-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:bf8c8481d026b85dd70c5fa7dde85b2333aed0b32a2602bcd38a900cbd78a49c", size = 4719571, upload-time = "2026-09-18T13:21:41.437Z" }, + { url = "https://files.pythonhosted.org/packages/65/7c/811e3828c6b82e2f10c6c9cdd963cfc66f3e024026e5a69ac18530bad984/psycopg_binary-3.3.6-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:b599defe9190b17e9907c8b4d114c181e702c87efcd1b8a0ad40971cdcc4634a", size = 4781230, upload-time = "2026-09-18T13:21:49.516Z" }, + { url = "https://files.pythonhosted.org/packages/3e/15/9a784eed813ea9e97c294af3ead63d02b7b203502c66380336c50065e441/psycopg_binary-3.3.6-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:b8ece331509f7a975b90501f41e83ad905e4141753fedf3f2711b2bc70a8efbc", size = 5566111, upload-time = "2026-09-18T13:21:58.089Z" }, + { url = "https://files.pythonhosted.org/packages/68/16/47194e002007c27337b11e49bf459c4b19727463f9aff2e1a90917bcc806/psycopg_binary-3.3.6-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c61617eaae0112ca154da87ffb99b73af2c74067acac28dfb9a4455b019dff2e", size = 5249963, upload-time = "2026-09-18T13:22:06.695Z" }, + { url = "https://files.pythonhosted.org/packages/53/84/5dcf9f310b11f0675cd860c6b2c70f58ce61798a3ee3f6f962b53fa358ca/psycopg_binary-3.3.6-cp315-cp315-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6d19cb4999d03231e8730a5f66c8f5068bc3b532677eb39dab0f600bff3e312", size = 6847925, upload-time = "2026-09-18T13:22:13.088Z" }, + { url = "https://files.pythonhosted.org/packages/f3/06/1957a06dc22963c418c27b284929579de84f29c37ad1abe6dc6ee9e8cf25/psycopg_binary-3.3.6-cp315-cp315-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8cbb54454dbf1bbf2ff08dd7693e8d94ac94b1a20f70f4b3b813d52ecb5cbc1", size = 5087720, upload-time = "2026-09-18T13:22:17.959Z" }, + { url = "https://files.pythonhosted.org/packages/21/43/ac07d042bae99b57bf123bb473632f29af544008094da0ffd285ab8011e2/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:dc75da5a20951049f7b773145f998f69d181adad9c58a0ff36e0cf1d73c10e10", size = 4613412, upload-time = "2026-09-18T13:22:26.719Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b1/019156fbeafcefb4cccc9d109de4699493bceb8313c7545c8349e089dfbc/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_ppc64le.whl", hash = "sha256:955e3dd94da361e052d2e49acf591017158dc8f8ed2c8a42c2e3943403c39dc2", size = 4292618, upload-time = "2026-09-18T13:22:33.042Z" }, + { url = "https://files.pythonhosted.org/packages/5d/0f/62113dc6b1df65983a1f2fc816c04b1edfa22f2ae9d4abee74ed267f4a96/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:c7753871eb57e6a5f4646f6168590c6653073dea5e9e720b201c8875332df4c8", size = 4027121, upload-time = "2026-09-18T13:22:38.334Z" }, + { url = "https://files.pythonhosted.org/packages/5d/d5/cf0cbd1ea5a7d8167fe2c6953efde19101f7b193bd61a23e6d622ad6854c/psycopg_binary-3.3.6-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:303732e798fe6729f8e12021b9c96107df8e95ecec4dd487c67b98ec2a59435e", size = 4336388, upload-time = "2026-09-18T13:22:45.576Z" }, + { url = "https://files.pythonhosted.org/packages/98/33/e2a5b36edf8aa422f6fa4b894756eb33dc93b36df5f65121280bb8b929c4/psycopg_binary-3.3.6-cp315-cp315-win_amd64.whl", hash = "sha256:2f122603f36050937982abf9668d8bc4769a79f7c93a65013b1c49f1cab7b56b", size = 3756154, upload-time = "2026-09-18T13:22:51.283Z" }, +] + [[package]] name = "pyarrow" version = "25.0.1" diff --git a/python/packages/mem0/pyproject.toml b/python/packages/mem0/pyproject.toml index 0394f829a92..a006f0ade58 100644 --- a/python/packages/mem0/pyproject.toml +++ b/python/packages/mem0/pyproject.toml @@ -4,7 +4,7 @@ description = "Mem0 integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/mistral/pyproject.toml b/python/packages/mistral/pyproject.toml index 28812c9e258..d669588c781 100644 --- a/python/packages/mistral/pyproject.toml +++ b/python/packages/mistral/pyproject.toml @@ -4,7 +4,7 @@ description = "Mistral AI integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://learn.microsoft.com/en-us/agent-framework/" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,7 +24,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.24.0,<2", "mistralai>=2.9.2,<3", ] diff --git a/python/packages/mongodb/README.md b/python/packages/mongodb/README.md index 676685a9e99..259af096b30 100644 --- a/python/packages/mongodb/README.md +++ b/python/packages/mongodb/README.md @@ -14,7 +14,7 @@ pip install agent-framework-mongodb --pre Supports Python 3.11–3.15. Python 3.10 installation remains permitted, but compatibility is not guaranteed. -Requires PyMongo 4.13.2+ and a MongoDB deployment with +Requires PyMongo 4.15+ and a MongoDB deployment with [MongoDB Vector Search](https://www.mongodb.com/docs/vector-search/). Search-index creation requires the corresponding database permissions. diff --git a/python/packages/mongodb/pyproject.toml b/python/packages/mongodb/pyproject.toml index 1ad2e8e88c6..b78f9bb3182 100644 --- a/python/packages/mongodb/pyproject.toml +++ b/python/packages/mongodb/pyproject.toml @@ -4,7 +4,7 @@ description = "MongoDB vector stores for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.19.0,<2", - "pymongo>=4.13.2,<5", + "pymongo>=4.15,<5", ] [tool.pytest.ini_options] diff --git a/python/packages/monty/pyproject.toml b/python/packages/monty/pyproject.toml index 4bd5a17db75..46c5d6eca05 100644 --- a/python/packages/monty/pyproject.toml +++ b/python/packages/monty/pyproject.toml @@ -4,7 +4,7 @@ description = "Monty CodeAct integrations for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/nvidia/pyproject.toml b/python/packages/nvidia/pyproject.toml index cc791be3b09..447c84faed7 100644 --- a/python/packages/nvidia/pyproject.toml +++ b/python/packages/nvidia/pyproject.toml @@ -4,7 +4,7 @@ description = "NVIDIA Integrations for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a260929" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,9 +24,14 @@ classifiers = [ dependencies = [ "agent-framework-core>=1.19.0,<2", # input_type and truncate need RawOpenAIEmbeddingClient._prepare_extra_request_options. - # Published 1.17.0 and earlier lack it, so the package refuses to import with them. Raise this - # floor to the first release that adds it. - "agent-framework-openai>=1.17.0,<2", + # OpenAI 1.18.0 is the first release with this hook. + "agent-framework-openai>=1.18.0,<2", +] + +[dependency-groups] +test = [ + "httpx>=0.28,<1", + "httpx2>=2.0.0,<3", ] [tool.ruff] @@ -67,5 +72,5 @@ help = "Run tests against the NVIDIA service using NVIDIA_API_KEY." cmd = 'pytest -m integration tests' [build-system] -requires = ["flit-core>=3.11,<4.0"] +requires = ["flit-core>=3.11,<5.0"] build-backend = "flit_core.buildapi" diff --git a/python/packages/nvidia/tests/nvidia/test_nvidia_embedding_client.py b/python/packages/nvidia/tests/nvidia/test_nvidia_embedding_client.py index a4e4e1b1dbd..e0bf6ffd09b 100644 --- a/python/packages/nvidia/tests/nvidia/test_nvidia_embedding_client.py +++ b/python/packages/nvidia/tests/nvidia/test_nvidia_embedding_client.py @@ -5,14 +5,16 @@ import math import os from dataclasses import dataclass +from importlib import import_module from typing import Annotated, Any, cast +import httpx import httpx2 import pytest from agent_framework import InMemoryCollection, VectorStoreField, create_vector_search_tool, vectorstoremodel from agent_framework._settings import SecretString from agent_framework_openai._embedding_client import RawOpenAIEmbeddingClient # pyright: ignore[reportPrivateUsage] -from openai import AsyncOpenAI +from openai import AsyncOpenAI, DefaultAsyncHttpxClient from agent_framework_nvidia import NvidiaEmbeddingClient, RawNvidiaEmbeddingClient from agent_framework_nvidia._embedding_client import ( # pyright: ignore[reportPrivateUsage] @@ -23,6 +25,8 @@ ) from agent_framework_nvidia._feature_usage import FeatureIndex # pyright: ignore[reportPrivateUsage] +_OPENAI_HTTPX = import_module(DefaultAsyncHttpxClient.__mro__[1].__module__.partition(".")[0]) + # region: helpers @@ -54,13 +58,13 @@ class MockNvidia: def __init__(self, payload: dict[str, Any]) -> None: self._payload = payload - self.requests: list[httpx2.Request] = [] + self.requests: list[httpx.Request | httpx2.Request] = [] self.bodies: list[dict[str, Any]] = [] - def handler(self, request: httpx2.Request) -> httpx2.Response: + def handler(self, request: httpx.Request | httpx2.Request) -> httpx.Response | httpx2.Response: self.requests.append(request) self.bodies.append(json.loads(request.content)) - return httpx2.Response(200, json=self._payload) + return _OPENAI_HTTPX.Response(200, json=self._payload) def make_mock_client(model: str = "test-model") -> tuple[NvidiaEmbeddingClient, MockNvidia]: @@ -68,7 +72,7 @@ def make_mock_client(model: str = "test-model") -> tuple[NvidiaEmbeddingClient, async_client = AsyncOpenAI( api_key="test-key", base_url=DEFAULT_BASE_URL, - http_client=httpx2.AsyncClient(transport=httpx2.MockTransport(server.handler)), + http_client=DefaultAsyncHttpxClient(transport=_OPENAI_HTTPX.MockTransport(server.handler)), ) return NvidiaEmbeddingClient(model=model, async_client=async_client), server @@ -233,7 +237,7 @@ async def test_raw_client_sends_nvidia_options_without_telemetry() -> None: async_client = AsyncOpenAI( api_key="test-key", base_url=DEFAULT_BASE_URL, - http_client=httpx2.AsyncClient(transport=httpx2.MockTransport(server.handler)), + http_client=DefaultAsyncHttpxClient(transport=_OPENAI_HTTPX.MockTransport(server.handler)), ) client = RawNvidiaEmbeddingClient(model="test-model", async_client=async_client) @@ -335,26 +339,26 @@ def __init__(self, fail_request: int | None = None) -> None: self._fail_request = fail_request self._next = 0 - def handler(self, request: httpx2.Request) -> httpx2.Response: + def handler(self, request: httpx.Request | httpx2.Request) -> httpx.Response | httpx2.Response: body = json.loads(request.content) self.bodies.append(body) self.batch_sizes.append(len(body["input"])) if len(self.batch_sizes) == self._fail_request: - return httpx2.Response( + return _OPENAI_HTTPX.Response( 400, json={"object": "error", "message": "rejected", "type": "invalid_request_error"} ) vectors = [[float(self._next + i), 0.0, 0.0] for i in range(len(body["input"]))] self._next += len(vectors) payload = make_embeddings_payload(vectors) payload["usage"] = {"prompt_tokens": len(vectors), "total_tokens": len(vectors)} - return httpx2.Response(200, json=payload) + return _OPENAI_HTTPX.Response(200, json=payload) def make_batching_client(server: BatchingNvidia) -> NvidiaEmbeddingClient: async_client = AsyncOpenAI( api_key="test-key", base_url=DEFAULT_BASE_URL, - http_client=httpx2.AsyncClient(transport=httpx2.MockTransport(server.handler)), + http_client=DefaultAsyncHttpxClient(transport=_OPENAI_HTTPX.MockTransport(server.handler)), ) return NvidiaEmbeddingClient(model="test-model", async_client=async_client) diff --git a/python/packages/ollama/pyproject.toml b/python/packages/ollama/pyproject.toml index ad7614cb92b..31a977ebe2a 100644 --- a/python/packages/ollama/pyproject.toml +++ b/python/packages/ollama/pyproject.toml @@ -4,7 +4,7 @@ description = "Ollama integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://learn.microsoft.com/en-us/agent-framework/" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -24,10 +24,15 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.24.0,<2", "ollama>=0.5.3,<0.5.4", ] +[dependency-groups] +test = [ + "openai>=2.25.0,<4", +] + [tool.uv] prerelease = "if-necessary" environments = [ diff --git a/python/packages/openai/pyproject.toml b/python/packages/openai/pyproject.toml index 8afa5f3a872..8fd4e949301 100644 --- a/python/packages/openai/pyproject.toml +++ b/python/packages/openai/pyproject.toml @@ -4,7 +4,7 @@ description = "OpenAI integrations for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.17.0" +version = "1.18.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,10 +23,15 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core>=1.22.0,<2", + "agent-framework-core>=1.24.0,<2", "openai>=2.25.0,<4", ] +[dependency-groups] +test = [ + "agent-framework-ag-ui>=1.7.1,<2", +] + [tool.uv] prerelease = "if-necessary" environments = [ diff --git a/python/packages/openai/tests/openai/test_openai_embedding_client.py b/python/packages/openai/tests/openai/test_openai_embedding_client.py index b9c8913a503..cf2cb071a0d 100644 --- a/python/packages/openai/tests/openai/test_openai_embedding_client.py +++ b/python/packages/openai/tests/openai/test_openai_embedding_client.py @@ -11,8 +11,7 @@ import pytest from agent_framework import SecretString, SupportsGetEmbeddings from agent_framework._telemetry import get_feature_token -from agent_framework.exceptions import SettingNotFoundError -from agent_framework.exceptions import IntegrationInvalidResponseException +from agent_framework.exceptions import IntegrationInvalidResponseException, SettingNotFoundError from openai.types import CreateEmbeddingResponse from openai.types import Embedding as OpenAIEmbedding from openai.types.create_embedding_response import Usage diff --git a/python/packages/oracle/README.md b/python/packages/oracle/README.md index 184ed5cc726..bad226ba7ad 100644 --- a/python/packages/oracle/README.md +++ b/python/packages/oracle/README.md @@ -15,7 +15,7 @@ Supports Python 3.11–3.15. Python 3.10 installation remains permitted, but compatibility is not guaranteed. Requires Oracle AI Database 26ai with `COMPATIBLE` set to -**23.4.0 or higher**, `python-oracledb` 2.2.x or 3.x, and permission to +**23.4.0 or higher**, `python-oracledb` 3.x, and permission to create/drop tables in the connected user's schema. The connector uses the driver's async Thin-mode API; it does not initialize the Thick client or provision a database. @@ -185,5 +185,5 @@ deletes only that table. ## Documentation - [Oracle AI Vector Search requirements](https://docs.oracle.com/en/database/oracle/oracle-database/26/vecse/overview-ai-vector-search.html) -- [python-oracledb 2.2 vector types](https://python-oracledb.readthedocs.io/en/v2.2.0/user_guide/vector_data_type.html) +- [python-oracledb 3.0 vector types](https://python-oracledb.readthedocs.io/en/v3.0.0/user_guide/vector_data_type.html) - [Microsoft Agent Framework](https://learn.microsoft.com/agent-framework/) diff --git a/python/packages/oracle/agent_framework_oracle/_vector_store.py b/python/packages/oracle/agent_framework_oracle/_vector_store.py index 6f7196e6c97..049684c0638 100644 --- a/python/packages/oracle/agent_framework_oracle/_vector_store.py +++ b/python/packages/oracle/agent_framework_oracle/_vector_store.py @@ -321,7 +321,7 @@ async def _get_client(self) -> OracleClient: for name, value in (("user", self._user), ("password", self._password), ("dsn", self._dsn)) if value is not None } - pool_parameters = { + pool_parameters: dict[str, Any] = { "min": 0, "max": 4, **{ diff --git a/python/packages/oracle/pyproject.toml b/python/packages/oracle/pyproject.toml index 1492131767c..1e47fde56fb 100644 --- a/python/packages/oracle/pyproject.toml +++ b/python/packages/oracle/pyproject.toml @@ -4,7 +4,7 @@ description = "Oracle AI Database native vector stores for Microsoft Agent Frame authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ ] dependencies = [ "agent-framework-core>=1.19.0,<2", - "oracledb>=2.2.0,<4", + "oracledb>=3.0.0,<4", ] [tool.ruff] diff --git a/python/packages/orchestrations/pyproject.toml b/python/packages/orchestrations/pyproject.toml index 0cbd36a98a0..11d0fc303e6 100644 --- a/python/packages/orchestrations/pyproject.toml +++ b/python/packages/orchestrations/pyproject.toml @@ -4,7 +4,7 @@ description = "Orchestration patterns for Microsoft Agent Framework. Includes Se authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.4.0" +version = "1.4.1" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/postgres/pyproject.toml b/python/packages/postgres/pyproject.toml index c6ba69d8232..b5992625082 100644 --- a/python/packages/postgres/pyproject.toml +++ b/python/packages/postgres/pyproject.toml @@ -4,7 +4,7 @@ description = "PostgreSQL and pgvector integration for Microsoft Agent Framework authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/purview/pyproject.toml b/python/packages/purview/pyproject.toml index 43714d823ac..ec740efcbac 100644 --- a/python/packages/purview/pyproject.toml +++ b/python/packages/purview/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Purview (Graph dataSecurityAndGovernance) integration f authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261015" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://github.com/microsoft/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/qdrant/pyproject.toml b/python/packages/qdrant/pyproject.toml index 7efc862bc3d..dd490a1ea1e 100644 --- a/python/packages/qdrant/pyproject.toml +++ b/python/packages/qdrant/pyproject.toml @@ -4,7 +4,7 @@ description = "Qdrant vector stores for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/redis/pyproject.toml b/python/packages/redis/pyproject.toml index 2ca5dfcf4da..ea7ffef6af9 100644 --- a/python/packages/redis/pyproject.toml +++ b/python/packages/redis/pyproject.toml @@ -4,7 +4,7 @@ description = "Redis integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10,<3.15" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/sql-server/pyproject.toml b/python/packages/sql-server/pyproject.toml index 0a0afa6ffc5..d76b184f81c 100644 --- a/python/packages/sql-server/pyproject.toml +++ b/python/packages/sql-server/pyproject.toml @@ -4,7 +4,7 @@ description = "SQL Server native vector integration for Microsoft Agent Framewor authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/tools/pyproject.toml b/python/packages/tools/pyproject.toml index 80e4a3ef603..b5b2c67fbb2 100644 --- a/python/packages/tools/pyproject.toml +++ b/python/packages/tools/pyproject.toml @@ -4,7 +4,7 @@ description = "Built-in tools for the Microsoft Agent Framework (local shell, an authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0b261022" +version = "1.0.0b261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/packages/typesafe/pyproject.toml b/python/packages/typesafe/pyproject.toml index ed658a9c754..fef76bdf02c 100644 --- a/python/packages/typesafe/pyproject.toml +++ b/python/packages/typesafe/pyproject.toml @@ -4,7 +4,7 @@ description = "TypeSafe AI integration for Microsoft Agent Framework." authors = [{ name = "Microsoft", email = "af-support@microsoft.com" }] readme = "README.md" requires-python = ">=3.10" -version = "1.0.0a261015" +version = "1.0.0a261030" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" diff --git a/python/pyproject.toml b/python/pyproject.toml index ec07eb8d5af..b652284e477 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ description = "Microsoft Agent Framework for building AI Agents with Python. Thi authors = [{ name = "Microsoft", email = "af-support@microsoft.com"}] readme = "README.md" requires-python = ">=3.10" -version = "1.23.0" +version = "1.24.0" license-files = ["LICENSE"] urls.homepage = "https://aka.ms/agent-framework" urls.source = "https://github.com/microsoft/agent-framework/tree/main/python" @@ -23,7 +23,7 @@ classifiers = [ "Typing :: Typed", ] dependencies = [ - "agent-framework-core[all]==1.23.0", + "agent-framework-core[all]==1.24.0", ] [dependency-groups] diff --git a/python/samples/02-agents/chat_client/require_per_service_call_history_persistence.py b/python/samples/02-agents/chat_client/require_per_service_call_history_persistence.py index f3a9a9ddde3..aefe6e275a8 100644 --- a/python/samples/02-agents/chat_client/require_per_service_call_history_persistence.py +++ b/python/samples/02-agents/chat_client/require_per_service_call_history_persistence.py @@ -14,7 +14,7 @@ Message, MiddlewareTermination, ) -from agent_framework.foundry import FoundryChatClient +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions from azure.identity import AzureCliCredential from dotenv import load_dotenv from pydantic import Field @@ -95,7 +95,7 @@ async def main() -> None: query = "What is the weather in Seattle, and should I bring sunglasses?" # 2. Create and run the agent without per-service-call persistence. - agent_without_persistence = Agent( + agent_without_persistence = Agent[FoundryChatOptions]( client=client, instructions=( "You are a weather assistant. Call lookup_weather exactly once before answering " @@ -124,7 +124,7 @@ async def main() -> None: print() # 3. Create and run the agent with per-service-call persistence enabled. - agent_with_persistence = Agent( + agent_with_persistence = Agent[FoundryChatOptions]( client=client, instructions=( "You are a weather assistant. Call lookup_weather exactly once before answering " diff --git a/python/samples/02-agents/compaction/agent_triggered_compaction.py b/python/samples/02-agents/compaction/agent_triggered_compaction.py index 6c3c79d0836..c70ab5dc9ca 100644 --- a/python/samples/02-agents/compaction/agent_triggered_compaction.py +++ b/python/samples/02-agents/compaction/agent_triggered_compaction.py @@ -16,7 +16,7 @@ UnloadSkillsCompactionStrategy, included_messages, ) -from agent_framework.foundry import FoundryChatClient +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions from azure.identity import AzureCliCredential from dotenv import load_dotenv @@ -112,7 +112,7 @@ async def main() -> None: # 3. The trigger tool is registered explicitly. SkillsProvider contributes # load_skill, while disabling approval keeps this sample automatic. - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, name="PlanningAgent", instructions=dedent("""\ diff --git a/python/samples/02-agents/compaction/agent_triggered_compaction_basic.py b/python/samples/02-agents/compaction/agent_triggered_compaction_basic.py index 8b7eaecc439..4f8192ce3c1 100644 --- a/python/samples/02-agents/compaction/agent_triggered_compaction_basic.py +++ b/python/samples/02-agents/compaction/agent_triggered_compaction_basic.py @@ -13,7 +13,7 @@ included_messages, tool, ) -from agent_framework.foundry import FoundryChatClient +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions from azure.identity import AzureCliCredential from dotenv import load_dotenv @@ -96,7 +96,7 @@ async def main() -> None: # 3. Register both the ordinary context-producing tool and the explicit # compaction trigger tool. - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, name="ResearchAgent", instructions=( diff --git a/python/samples/02-agents/context_providers/azure_ai_foundry_memory.py b/python/samples/02-agents/context_providers/azure_ai_foundry_memory.py index fbbeb20b14e..9209f24b210 100644 --- a/python/samples/02-agents/context_providers/azure_ai_foundry_memory.py +++ b/python/samples/02-agents/context_providers/azure_ai_foundry_memory.py @@ -4,7 +4,7 @@ from datetime import datetime, timezone from agent_framework import Agent, InMemoryHistoryProvider -from agent_framework.foundry import FoundryChatClient, FoundryMemoryProvider +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions, FoundryMemoryProvider from azure.ai.projects.aio import AIProjectClient from azure.ai.projects.models import ( MemoryStoreDefaultDefinition, @@ -87,7 +87,7 @@ async def main() -> None: ) # Create an agent with the memory context provider - async with Agent( + async with Agent[FoundryChatOptions]( name="MemoryAgent", client=client, instructions="""You are a helpful assistant that remembers past conversations. diff --git a/python/samples/02-agents/providers/anthropic/anthropic_advanced.py b/python/samples/02-agents/providers/anthropic/anthropic_advanced.py index e6d3aec0022..8db6d01015b 100644 --- a/python/samples/02-agents/providers/anthropic/anthropic_advanced.py +++ b/python/samples/02-agents/providers/anthropic/anthropic_advanced.py @@ -3,7 +3,7 @@ import os from agent_framework import Agent -from agent_framework.anthropic import AnthropicClient +from agent_framework.anthropic import AnthropicChatOptions, AnthropicClient from dotenv import load_dotenv # Load environment variables from .env file @@ -40,7 +40,7 @@ async def main() -> None: # Create web search tool configuration using instance method web_search_tool = client.get_web_search_tool() - agent = Agent( + agent = Agent[AnthropicChatOptions]( client=client, name="DocsAgent", instructions="You are a helpful agent for both Microsoft docs questions and general questions.", diff --git a/python/samples/02-agents/providers/anthropic/anthropic_foundry.py b/python/samples/02-agents/providers/anthropic/anthropic_foundry.py index 8807059362a..2a2ba1bd7d3 100644 --- a/python/samples/02-agents/providers/anthropic/anthropic_foundry.py +++ b/python/samples/02-agents/providers/anthropic/anthropic_foundry.py @@ -2,6 +2,7 @@ import asyncio from agent_framework import Agent +from agent_framework.anthropic import AnthropicChatOptions from agent_framework.foundry import AnthropicFoundryClient from dotenv import load_dotenv @@ -44,7 +45,7 @@ async def main() -> None: # Create web search tool configuration using instance method web_search_tool = client.get_web_search_tool() - agent = Agent( + agent = Agent[AnthropicChatOptions]( client=client, name="DocsAgent", instructions="You are a helpful agent for both Microsoft docs questions and general questions.", diff --git a/python/samples/02-agents/providers/anthropic/anthropic_skills.py b/python/samples/02-agents/providers/anthropic/anthropic_skills.py index 653762c0db0..79a7f8eedc2 100644 --- a/python/samples/02-agents/providers/anthropic/anthropic_skills.py +++ b/python/samples/02-agents/providers/anthropic/anthropic_skills.py @@ -40,7 +40,7 @@ async def main() -> None: # Create an agent with the pptx skill enabled # Skills also need the code interpreter tool to function - agent = Agent( + agent = Agent[AnthropicChatOptions]( client=client, name="DocsAgent", instructions="You are a helpful agent for creating powerpoint presentations.", diff --git a/python/samples/02-agents/providers/openai/client_reasoning.py b/python/samples/02-agents/providers/openai/client_reasoning.py index 7f55f3ee3de..57c00284817 100644 --- a/python/samples/02-agents/providers/openai/client_reasoning.py +++ b/python/samples/02-agents/providers/openai/client_reasoning.py @@ -24,7 +24,7 @@ """ -agent = Agent( +agent = Agent[OpenAIChatOptions]( client=OpenAIChatClient[OpenAIChatOptions](model="gpt-5"), name="MathHelper", instructions="You are a personal math tutor. When asked a math question, " diff --git a/python/samples/02-agents/providers/openai/client_verbosity.py b/python/samples/02-agents/providers/openai/client_verbosity.py index b3796001449..c6482bf118c 100644 --- a/python/samples/02-agents/providers/openai/client_verbosity.py +++ b/python/samples/02-agents/providers/openai/client_verbosity.py @@ -29,7 +29,7 @@ async def run_with_verbosity(level: Verbosity) -> None: """Run the same prompt with a different verbosity setting and print the output length.""" - agent = Agent( + agent = Agent[OpenAIChatOptions]( client=OpenAIChatClient[OpenAIChatOptions](model="gpt-5"), name=f"Explainer-{level}", instructions="You are a friendly science explainer.", @@ -45,7 +45,7 @@ async def run_with_verbosity(level: Verbosity) -> None: async def run_per_call_override() -> None: """Show that verbosity can be overridden per ``run`` call.""" - agent = Agent( + agent = Agent[OpenAIChatOptions]( client=OpenAIChatClient[OpenAIChatOptions](model="gpt-5"), name="Explainer-default", instructions="You are a friendly science explainer.", diff --git a/python/samples/02-agents/typed_options.py b/python/samples/02-agents/typed_options.py index 23f07948aba..b8be11d5109 100644 --- a/python/samples/02-agents/typed_options.py +++ b/python/samples/02-agents/typed_options.py @@ -3,7 +3,7 @@ import asyncio from agent_framework import Agent, Message -from agent_framework.anthropic import AnthropicClient +from agent_framework.anthropic import AnthropicChatOptions, AnthropicClient from agent_framework.openai import OpenAIChatClient, OpenAIChatOptions from dotenv import load_dotenv @@ -63,7 +63,7 @@ async def demo_anthropic_agent() -> None: client = AnthropicClient(model="claude-sonnet-4-5-20250929") # Create a typed agent for Anthropic - IDE knows Anthropic-specific options! - agent = Agent( + agent = Agent[AnthropicChatOptions]( client=client, name="claude-assistant", instructions="You are a helpful assistant powered by Claude. Be concise.", diff --git a/python/samples/04-hosting/container/hyperlight_codeact/main.py b/python/samples/04-hosting/container/hyperlight_codeact/main.py index 3decf0336e0..55bd3a9d448 100644 --- a/python/samples/04-hosting/container/hyperlight_codeact/main.py +++ b/python/samples/04-hosting/container/hyperlight_codeact/main.py @@ -5,7 +5,7 @@ from typing import Annotated, Any, Literal from agent_framework import Agent, tool -from agent_framework.foundry import FoundryChatClient, ResponsesHostServer +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions, ResponsesHostServer from agent_framework.hyperlight import HyperlightCodeActProvider from azure.identity import DefaultAzureCredential from dotenv import load_dotenv @@ -72,7 +72,7 @@ def main(): # 3. Build the agent. History is managed by the hosting infrastructure, so # request the model not to persist server-side conversation state. - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, instructions="You are a helpful assistant. Keep your answers brief.", context_providers=[codeact], diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/main.py b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/main.py index 457eb7c1c8d..b81f703f1b0 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/main.py +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/basic/main.py @@ -6,7 +6,7 @@ from typing import Any from agent_framework import Agent, InMemoryHistoryProvider -from agent_framework.foundry import FoundryChatClient +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions from agent_framework_foundry_hosting import InvocationRun, InvocationsHostServer from azure.identity import DefaultAzureCredential from dotenv import load_dotenv @@ -46,7 +46,7 @@ def main() -> None: credential=DefaultAzureCredential(), ) - agent = Agent( + agent = Agent[FoundryChatOptions]( client=client, instructions="You are a friendly assistant. Keep your answers brief.", context_providers=[InMemoryHistoryProvider()], diff --git a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/main.py b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/main.py index b72879adc16..4250a47ea68 100644 --- a/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/main.py +++ b/python/samples/04-hosting/foundry-hosted-agents/invocations/break_glass/main.py @@ -5,7 +5,7 @@ from collections.abc import AsyncGenerator from agent_framework import Agent, AgentSession -from agent_framework.foundry import FoundryChatClient +from agent_framework.foundry import FoundryChatClient, FoundryChatOptions from azure.ai.agentserver.core import get_request_context from azure.ai.agentserver.invocations import InvocationAgentServerHost from azure.identity import DefaultAzureCredential @@ -28,7 +28,7 @@ credential=DefaultAzureCredential(), ) -agent = Agent( +agent = Agent[FoundryChatOptions]( client=client, instructions="You are a friendly assistant. Keep your answers brief.", # History will be managed by the hosting infrastructure, thus there diff --git a/python/samples/README.md b/python/samples/README.md index 69466dcca50..b9ee5271e2b 100644 --- a/python/samples/README.md +++ b/python/samples/README.md @@ -54,6 +54,11 @@ pip install agent-framework-foundry Install only the specific Agent Framework distributions required by the sample you want to run. Individual sample READMEs and PEP 723 metadata list any additional packages. +An explicit provider option type, such as +`Agent[FoundryChatOptions](client=client, default_options={"store": False})`, +keeps provider-specific options type checked without relying on type-checker inference. +See [typed options](./02-agents/typed_options.py) for OpenAI and Anthropic examples. + ### Environment Variables Environment setup varies by sample. The [getting-started samples](./01-get-started/README.md#prerequisites) pass diff --git a/python/tooling/requirements-api-compatibility.txt b/python/tooling/requirements-api-compatibility.txt index f94b830c84d..0d6c4f9e18c 100644 --- a/python/tooling/requirements-api-compatibility.txt +++ b/python/tooling/requirements-api-compatibility.txt @@ -1 +1 @@ -griffe==2.4.0 +griffe==2.4.1 diff --git a/python/tooling/requirements-typing.txt b/python/tooling/requirements-typing.txt index f583897d068..cef3b690bdd 100644 --- a/python/tooling/requirements-typing.txt +++ b/python/tooling/requirements-typing.txt @@ -1,5 +1,5 @@ mypy==2.4.0 -pyrefly==1.3.2 +pyrefly==1.4.0 pyright==1.1.414 ty==0.0.90 zuban==0.10.1 diff --git a/python/uv.lock b/python/uv.lock index f646fbe53ba..efb4a289025 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -117,7 +117,7 @@ wheels = [ [[package]] name = "agent-framework" -version = "1.23.0" +version = "1.24.0" source = { virtual = "." } dependencies = [ { name = "agent-framework-core", extra = ["all"] }, @@ -177,7 +177,7 @@ tool-runtime = [ [[package]] name = "agent-framework-a2a" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/a2a" } dependencies = [ { name = "a2a-sdk" }, @@ -200,7 +200,7 @@ test = [{ name = "agent-framework-orchestrations", editable = "packages/orchestr [[package]] name = "agent-framework-ag-ui" -version = "1.7.0" +version = "1.7.1" source = { editable = "packages/ag-ui" } dependencies = [ { name = "ag-ui-protocol" }, @@ -242,7 +242,7 @@ test = [{ name = "agent-framework-orchestrations", editable = "packages/orchestr [[package]] name = "agent-framework-anthropic" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/anthropic" } dependencies = [ { name = "agent-framework-core" }, @@ -269,7 +269,7 @@ dev = [ [[package]] name = "agent-framework-azure-ai-search" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/azure-ai-search" } dependencies = [ { name = "agent-framework-core" }, @@ -286,7 +286,7 @@ requires-dist = [ [[package]] name = "agent-framework-azure-contentunderstanding" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/azure-contentunderstanding" } dependencies = [ { name = "agent-framework-core" }, @@ -307,7 +307,7 @@ requires-dist = [ [[package]] name = "agent-framework-azure-cosmos" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/azure-cosmos" } dependencies = [ { name = "agent-framework-core" }, @@ -355,7 +355,7 @@ dev = [ [[package]] name = "agent-framework-azure-documentdb" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/azure-documentdb" } dependencies = [ { name = "agent-framework-core" }, @@ -365,7 +365,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "pymongo", specifier = ">=4.13,<5" }, + { name = "pymongo", specifier = ">=4.15,<5" }, ] [[package]] @@ -385,7 +385,7 @@ wheels = [ [[package]] name = "agent-framework-bedrock" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/bedrock" } dependencies = [ { name = "agent-framework-core" }, @@ -402,7 +402,7 @@ requires-dist = [ [[package]] name = "agent-framework-chatkit" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/chatkit" } dependencies = [ { name = "agent-framework-core" }, @@ -417,7 +417,7 @@ requires-dist = [ [[package]] name = "agent-framework-claude" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/claude" } dependencies = [ { name = "agent-framework-core" }, @@ -427,12 +427,12 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "claude-agent-sdk", specifier = ">=0.1.46,<0.3" }, + { name = "claude-agent-sdk", specifier = ">=0.2.140,<0.3" }, ] [[package]] name = "agent-framework-copilotstudio" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/copilotstudio" } dependencies = [ { name = "agent-framework-core" }, @@ -451,7 +451,7 @@ requires-dist = [ [[package]] name = "agent-framework-core" -version = "1.23.0" +version = "1.24.0" source = { editable = "packages/core" } dependencies = [ { name = "msgspec" }, @@ -505,6 +505,13 @@ dev = [ { name = "opentelemetry-exporter-otlp" }, { name = "types-pyyaml" }, ] +test = [ + { name = "agent-framework-azurefunctions" }, + { name = "agent-framework-durabletask" }, + { name = "httpx" }, + { name = "openai" }, + { name = "tenacity" }, +] [package.metadata] requires-dist = [ @@ -556,10 +563,17 @@ dev = [ { name = "opentelemetry-exporter-otlp", specifier = ">=1.39.0,<2" }, { name = "types-pyyaml", specifier = ">=6.0,<7.0" }, ] +test = [ + { name = "agent-framework-azurefunctions", specifier = ">=1.0.0b260922,<2" }, + { name = "agent-framework-durabletask", specifier = ">=1.0.0b260922,<2" }, + { name = "httpx", specifier = ">=0.28,<1" }, + { name = "openai", specifier = ">=2.25.0,<4" }, + { name = "tenacity", specifier = ">=9.1.4,<9.2.0" }, +] [[package]] name = "agent-framework-declarative" -version = "1.4.0" +version = "1.4.1" source = { editable = "packages/declarative" } dependencies = [ { name = "agent-framework-core" }, @@ -573,6 +587,9 @@ dependencies = [ dev = [ { name = "types-pyyaml" }, ] +test = [ + { name = "tenacity" }, +] [package.metadata] requires-dist = [ @@ -585,10 +602,11 @@ requires-dist = [ [package.metadata.requires-dev] dev = [{ name = "types-pyyaml", specifier = "==6.0.12.20260906" }] +test = [{ name = "tenacity", specifier = ">=9.1.4,<9.2.0" }] [[package]] name = "agent-framework-devui" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/devui" } dependencies = [ { name = "agent-framework-core" }, @@ -626,7 +644,7 @@ provides-extras = ["dev", "all"] [[package]] name = "agent-framework-duckdb" -version = "1.0.0a261022" +version = "1.0.0a261030" source = { editable = "packages/duckdb" } dependencies = [ { name = "agent-framework-core" }, @@ -659,7 +677,7 @@ wheels = [ [[package]] name = "agent-framework-foundry" -version = "1.15.0" +version = "1.16.0" source = { editable = "packages/foundry" } dependencies = [ { name = "agent-framework-core" }, @@ -670,6 +688,11 @@ dependencies = [ { name = "httpx" }, ] +[package.dev-dependencies] +test = [ + { name = "agent-framework-ag-ui" }, +] + [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, @@ -680,9 +703,12 @@ requires-dist = [ { name = "httpx", specifier = ">=0.28,<1" }, ] +[package.metadata.requires-dev] +test = [{ name = "agent-framework-ag-ui", editable = "packages/ag-ui" }] + [[package]] name = "agent-framework-foundry-hosting" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/foundry_hosting" } dependencies = [ { name = "agent-framework-core" }, @@ -692,6 +718,13 @@ dependencies = [ { name = "httpx" }, { name = "httpx2" }, { name = "mcp" }, + { name = "tenacity" }, +] + +[package.dev-dependencies] +test = [ + { name = "agent-framework-ag-ui" }, + { name = "agent-framework-foundry" }, ] [package.metadata] @@ -703,11 +736,18 @@ requires-dist = [ { name = "httpx", specifier = ">=0.28,<1" }, { name = "httpx2", specifier = ">=2.0.0,<3" }, { name = "mcp", specifier = ">=2.2.0,<3" }, + { name = "tenacity", specifier = ">=9.1.4,<9.2.0" }, +] + +[package.metadata.requires-dev] +test = [ + { name = "agent-framework-ag-ui", editable = "packages/ag-ui" }, + { name = "agent-framework-foundry", editable = "packages/foundry" }, ] [[package]] name = "agent-framework-foundry-local" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/foundry_local" } dependencies = [ { name = "agent-framework-core" }, @@ -724,7 +764,7 @@ requires-dist = [ [[package]] name = "agent-framework-gemini" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/gemini" } dependencies = [ { name = "agent-framework-core" }, @@ -739,7 +779,7 @@ requires-dist = [ [[package]] name = "agent-framework-github-copilot" -version = "2.1.0" +version = "2.1.1" source = { editable = "packages/github_copilot" } dependencies = [ { name = "agent-framework-core" }, @@ -754,7 +794,7 @@ requires-dist = [ [[package]] name = "agent-framework-hosting" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/hosting" } dependencies = [ { name = "agent-framework-core" }, @@ -765,7 +805,7 @@ requires-dist = [{ name = "agent-framework-core", editable = "packages/core" }] [[package]] name = "agent-framework-hosting-a2a" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/hosting-a2a" } dependencies = [ { name = "a2a-sdk" }, @@ -782,7 +822,7 @@ requires-dist = [ [[package]] name = "agent-framework-hosting-mcp" -version = "1.0.0a261022" +version = "1.0.0a261030" source = { editable = "packages/hosting-mcp" } dependencies = [ { name = "agent-framework-core" }, @@ -801,7 +841,7 @@ requires-dist = [ [[package]] name = "agent-framework-hosting-responses" -version = "1.0.0a261022" +version = "1.0.0a261030" source = { editable = "packages/hosting-responses" } dependencies = [ { name = "agent-framework-core" }, @@ -830,7 +870,7 @@ test = [ [[package]] name = "agent-framework-hosting-telegram" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/hosting-telegram" } dependencies = [ { name = "agent-framework-core" }, @@ -845,7 +885,7 @@ requires-dist = [ [[package]] name = "agent-framework-hyperlight" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/hyperlight" } dependencies = [ { name = "agent-framework-core" }, @@ -864,7 +904,7 @@ requires-dist = [ [[package]] name = "agent-framework-mem0" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/mem0" } dependencies = [ { name = "agent-framework-core" }, @@ -879,7 +919,7 @@ requires-dist = [ [[package]] name = "agent-framework-mistral" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/mistral" } dependencies = [ { name = "agent-framework-core" }, @@ -894,7 +934,7 @@ requires-dist = [ [[package]] name = "agent-framework-mongodb" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/mongodb" } dependencies = [ { name = "agent-framework-core" }, @@ -904,12 +944,12 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "pymongo", specifier = ">=4.13.2,<5" }, + { name = "pymongo", specifier = ">=4.15,<5" }, ] [[package]] name = "agent-framework-monty" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/monty" } dependencies = [ { name = "agent-framework-core" }, @@ -924,11 +964,17 @@ requires-dist = [ [[package]] name = "agent-framework-nvidia" -version = "1.0.0a260929" +version = "1.0.0a261030" source = { editable = "packages/nvidia" } dependencies = [ - { name = "agent-framework-core", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, - { name = "agent-framework-openai", marker = "sys_platform == 'darwin' or sys_platform == 'linux' or sys_platform == 'win32'" }, + { name = "agent-framework-core" }, + { name = "agent-framework-openai" }, +] + +[package.dev-dependencies] +test = [ + { name = "httpx" }, + { name = "httpx2" }, ] [package.metadata] @@ -937,39 +983,61 @@ requires-dist = [ { name = "agent-framework-openai", editable = "packages/openai" }, ] +[package.metadata.requires-dev] +test = [ + { name = "httpx", specifier = ">=0.28,<1" }, + { name = "httpx2", specifier = ">=2.0.0,<3" }, +] + [[package]] name = "agent-framework-ollama" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/ollama" } dependencies = [ { name = "agent-framework-core" }, { name = "ollama" }, ] +[package.dev-dependencies] +test = [ + { name = "openai" }, +] + [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, { name = "ollama", specifier = ">=0.5.3,<0.5.4" }, ] +[package.metadata.requires-dev] +test = [{ name = "openai", specifier = ">=2.25.0,<4" }] + [[package]] name = "agent-framework-openai" -version = "1.17.0" +version = "1.18.0" source = { editable = "packages/openai" } dependencies = [ { name = "agent-framework-core" }, { name = "openai" }, ] +[package.dev-dependencies] +test = [ + { name = "agent-framework-ag-ui" }, +] + [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, { name = "openai", specifier = ">=2.25.0,<4" }, ] +[package.metadata.requires-dev] +test = [{ name = "agent-framework-ag-ui", editable = "packages/ag-ui" }] + [[package]] name = "agent-framework-oracle" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/oracle" } dependencies = [ { name = "agent-framework-core" }, @@ -979,12 +1047,12 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "agent-framework-core", editable = "packages/core" }, - { name = "oracledb", specifier = ">=2.2.0,<4" }, + { name = "oracledb", specifier = ">=3.0.0,<4" }, ] [[package]] name = "agent-framework-orchestrations" -version = "1.4.0" +version = "1.4.1" source = { editable = "packages/orchestrations" } dependencies = [ { name = "agent-framework-core" }, @@ -995,7 +1063,7 @@ requires-dist = [{ name = "agent-framework-core", editable = "packages/core" }] [[package]] name = "agent-framework-postgres" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/postgres" } dependencies = [ { name = "agent-framework-core" }, @@ -1013,7 +1081,7 @@ requires-dist = [ [[package]] name = "agent-framework-purview" -version = "1.0.0b261015" +version = "1.0.0b261030" source = { editable = "packages/purview" } dependencies = [ { name = "agent-framework-core" }, @@ -1030,7 +1098,7 @@ requires-dist = [ [[package]] name = "agent-framework-qdrant" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/qdrant" } dependencies = [ { name = "agent-framework-core" }, @@ -1045,7 +1113,7 @@ requires-dist = [ [[package]] name = "agent-framework-redis" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/redis" } dependencies = [ { name = "agent-framework-core" }, @@ -1065,7 +1133,7 @@ requires-dist = [ [[package]] name = "agent-framework-sql-server" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/sql-server" } dependencies = [ { name = "agent-framework-core" }, @@ -1080,7 +1148,7 @@ requires-dist = [ [[package]] name = "agent-framework-tools" -version = "1.0.0b261022" +version = "1.0.0b261030" source = { editable = "packages/tools" } dependencies = [ { name = "agent-framework-core" }, @@ -1095,7 +1163,7 @@ requires-dist = [ [[package]] name = "agent-framework-typesafe" -version = "1.0.0a261015" +version = "1.0.0a261030" source = { editable = "packages/typesafe" } dependencies = [ { name = "agent-framework-core" },