loom-kernel 2.15.0__tar.gz → 2.15.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/CHANGELOG.md +13 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/PKG-INFO +6 -6
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/pyproject.toml +5 -5
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_errors.py +17 -4
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_limits.py +49 -23
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/provider.py +11 -15
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/.gitignore +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/LICENSE +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/README.md +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/_concurrency.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/_filters.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/_paths.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/_roles.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/_startup.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/_transport.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/_usecase.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/a2a/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/a2a/_binding.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/a2a/_handlers.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/a2a/_rpc.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/a2a/card.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/a2a/events.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/a2a/server.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/abc.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/bootstrap.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/_compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/_fingerprint.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/_plan.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_capabilities.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_conversation.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_feedable.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_hook.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_instructions.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_limits.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_model_role.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_output.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/compiler/phases/_state.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/declarative/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/declarative/_envelope.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/declarative/_schema.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/declarative/_v1.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/declarative/schemas/agent-spec-v1.schema.json +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/describe.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_a2a.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_capabilities.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_engine.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_escape.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_events.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_guards.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_history.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_instructions.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_mcp.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_models.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_native.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_output.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_returns.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_schemas.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/_spec.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/extras/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/extras/a2a.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/extras/handlebars.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/extras/mcp.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/extras/skills.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/_shared.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/anthropic.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/bedrock.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/gateway.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/openai.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/typesafe.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/etl/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/etl/_batch.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/etl/_columns.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/etl/_frames.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/etl/_ledger.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/etl/_runner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/etl/_validation.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/fastapi/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/fastapi/endpoints.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/fastapi/response.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/fastapi/streaming.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/inference.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/pricing.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/remote_auth.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_bounded.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_chain.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_conversation.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_grants.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_handle.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_health.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_hooks.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_lifecycle.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_limits.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/runtime/_mcp.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/validate/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/validate/__main__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/celery/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/celery/auto.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/celery/bootstrap.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/celery/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/celery/constants.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/celery/runner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/celery/service.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/cli/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/cli/app.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/cli/schema.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/async_bridge.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/authz/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/authz/_decide.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/authz/_grants.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/authz/_roles.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/authz/_scope.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/authz/elevation.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/authz/product.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/backend/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/backend/core_model.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/backend/protocol.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/backend/scoped_ddl.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/backend/sqlalchemy.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/bootstrap/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/bootstrap/bootstrap.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/bootstrap/kernel.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/_batching.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/_single_flight.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/abc/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/abc/backend.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/abc/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/abc/dependency.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/calls.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/codec.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/decorators.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/dependency.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/gateway.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/keys.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/memory.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/repository.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/result_codec.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/serializer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/cache/wiring.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/command/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/command/adapter.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/command/base.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/command/field.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/command/introspection.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/_boto3.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/_includes.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/_resolver_utils.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/binder.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/configurable.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/context.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/keys.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/loader.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/model.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/observability.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/resolver.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/secrets.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/config/ssm.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/contracts/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/contracts/manifest.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/di/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/di/container.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/di/scope.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/discovery/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/discovery/_utils.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/discovery/base.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/discovery/interfaces.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/discovery/manifest.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/discovery/modules.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/compilable.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/events.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/executor.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/metrics.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/plan.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/engine/post_commit.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/errors/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/errors/codes.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/errors/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/expr/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/expr/eval.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/expr/nodes.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/expr/refs.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/identity/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/identity/context.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/identity/identity.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/identity/issuer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/identity/wire.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/introspection/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/introspection/base.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/introspection/describe.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/job/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/job/callback.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/job/context.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/job/handle.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/job/job.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/job/service.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/locator.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/logger/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/logger/abc.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/logger/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/logger/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/logger/structlogger.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/_loom_type.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/base.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/convert.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/enums.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/field.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/introspection.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/partition.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/privilege.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/projection.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/relation.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/scoped.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/struct.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/timestamped.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/types.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/model/types_postgres.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/event.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/observer/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/observer/noop.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/observer/otel.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/observer/structlog.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/otel_ids.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/protocol.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/runtime.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/span.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/observability/topology.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/persistence/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/persistence/abc.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/persistence/none.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/persistence/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/plugins/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/plugins/entrypoints.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/plugins/optional.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/projection/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/projection/loaders.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/projection/runtime.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/cursor.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/query.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/query_compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/repo_for.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/repository.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/abc/session_scope.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/dynamodb/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/dynamodb/backend.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/dynamodb/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/dynamodb/repository.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/dynamodb/uow.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/backend.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/ids.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/query_compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/repository.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/uow.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mongo/values.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/mutation.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/registration.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/backend.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/integrity.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/loaders.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/migrations/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/migrations/env_template.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/migrations/hook.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/migrations/operations.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/migrations/runners.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/mixins.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/model.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/profile_loader.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/projection.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/cursor.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/filters.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/ordering.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/paths.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/query_compiler/subquery.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/repository.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/bootstrap.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/elevate.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/guard/0001.sql +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/guard/0002.sql +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/guard/preflight.sql +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/guard_manifest.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/integrity.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/partitions.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/provider.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/schema.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/sources.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/rls/verify.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/session_manager.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/session_settings.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/transactional.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/repository/sqlalchemy/uow.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/response/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/response/base.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/routing/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/routing/ref.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/routing/resolver.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/runner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/schema/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/schema/schema_mode.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/schema_names.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/abc/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/abc/contracts.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/abc/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/caller_bound.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/clickhouse/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/clickhouse/_client.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/clickhouse/executor.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/clickhouse/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/roles.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/sql/service.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/symbols.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/tracing/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/tracing/context.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/transaction.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/transport/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/transport/adapter.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/uow/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/uow/abc.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/uow/context.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/_predicates.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/agent_markers.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/compute.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/constants.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/factory.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/field_ref.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/invoker.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/keys.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/markers.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/mcp_markers.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/rule.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/core/use_case/use_case.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_format_registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_historify/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_historify/_common.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_historify/_log.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_historify/_ops.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_historify/_snapshot.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_historify/_transform.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_merge.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_path_template.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_predicate.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_schema_aligner/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_schema_aligner/_aligner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_schema_aligner/_policy.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/_write_policy.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_dtype.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_file_writer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_historify.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_predicate.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_reader.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_schema.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_schema_aligner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_streaming.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/_writer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/polars/provider.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/_dtype.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/_historify.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/_reader.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/_schema.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/_schema_aligner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/_writer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/backends/spark/provider.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/_backends/_polars.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/_backends/_spark.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/_cleaners.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/_options.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/_paths.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/_scope.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/checkpoint/_store.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_binding.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_plan.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_validators.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_validators_agents.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_validators_config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_validators_plan.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/compiler/_validators_step.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/_format.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/_read_options.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/_utils.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/_with_agent.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/_write_options.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/expr/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/expr/_params.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/expr/_predicate.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/expr/_predicate_dialect.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/expr/_refs.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/source/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/source/_from.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/source/_from_clickhouse.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/source/_from_config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/source/_from_dynamodb.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/source/_from_mongo.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/source/_specs.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_client.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_file.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_history/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_history/_builder.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_history/_enums.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_history/_errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_history/_report.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_history/_spec.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_into.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_schema_mode.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_table.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/declarative/target/_temp.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/executor/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/executor/_agents.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/executor/_dispatcher.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/executor/_executor.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/_registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_clickhouse.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_dynamodb.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_dynamodb_items.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_dynamodb_predicate.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_mongo.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_mongo_batch.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_mongo_bson.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_mongo_predicate.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/sources/_serialization.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/targets/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/io/targets/_clickhouse.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/_config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/_observer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/_records.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/sinks/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/sinks/_protocol.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/sinks/_table.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/lineage/sinks/_writer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/_builder.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/_ops.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/_protocol.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/_runner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/_step.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/backends/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/maintenance/backends/_delta_rs.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_generics.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_params.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_pipeline.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_process.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_sql.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_step.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_step_client.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/pipeline/_step_sql.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/_agents.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/_providers.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/_wiring.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/config_loader.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/core.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runner/filtering.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runtime/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runtime/_config_values.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/runtime/contracts.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/schema/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/schema/_contract.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/schema/_schema.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/storage/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/storage/_config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/storage/_file_locator.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/storage/_locator.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/storage/routing.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/testing/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/testing/_result.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/testing/_runners.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/testing/_scenario.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/testing/_stubs.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/etl/testing/spark.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/_async.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/_config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/_ctx.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/_flow_yaml.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/_meta.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/_placeholders.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/_summary.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/deploy/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/deploy/_discovery.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/deploy/_schedule.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/deploy/_yaml_etls.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/deploy/entrypoint.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_assemble.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_backfill.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_backfill_body.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_body.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_common.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_factory.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_hooks.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_maintenance.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_params.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_run_name.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_runtime.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_signature.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/flow/_stages.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/manifest/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/manifest/_model.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/manifest/_s3.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/manifest/_store.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/notify/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/notify/_event.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/notify/_factory.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/notify/_port.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/notify/_slack.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/observer/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/observer/_flow.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/observer/_logging_bridge.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/observer/_manifest.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prefect/observer/_task_run.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prometheus/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prometheus/_instruments.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prometheus/adapter.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prometheus/kafka.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prometheus/lifecycle.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/prometheus/middleware.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/py.typed +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/_body.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/adapter.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/auth/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/auth/abc.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/auth/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/auth/jwt.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/auth/middleware.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/autocrud.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/constants.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/cors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/_errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/_exclusions.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/app.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/auto.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/health.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/openapi.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/response.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/router_runtime.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/fastapi/sql.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/middleware.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/model.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/rest/rest_adapter.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_adapter.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_batch_spans.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_commit_tracker.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_dlq.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_error_boundary.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_operators.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_resource_manager.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_runtime_io.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/_sink_registry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/_shared.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/boundary.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/dispatcher.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/routing.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/scopes.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/shapes.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/steps.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/handlers/storage.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/bytewax/runner.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/compiler/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/compiler/_bindings.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/compiler/_compiler.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/compiler/_errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/compiler/_plan.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/compiler/phases/build_plan.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/compiler/phases/validate.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/core/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/core/_errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/core/_exceptions.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/core/_message.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/core/_tracing.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/core/_typing.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/graph/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/graph/_flow.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/_codec.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/_config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/_errors.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/_key_resolver.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/_message.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/_record.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/_wire.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/client/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/client/_consumer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/client/_producer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/client/_protocol.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/client/_retry.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/message/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/message/_consumer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/message/_producer.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/kafka/message/_protocol.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/mongo/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/mongo/_bytewax_source.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/mongo/_config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/mongo/_event.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/mongo/_normalize.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_boundary.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_branches.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_broadcast.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_capabilities.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_decompose.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_expand_routes.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_expr_eval.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_fork.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_helpers.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_mongo.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_protocols.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_router.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_shape.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_sink.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_step.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_table/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_table/common.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_table/config.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/_with.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/nodes/refs.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/streaming/testing.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/testing/__init__.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/testing/agents.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/testing/golden.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/testing/http_harness.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/testing/in_memory.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/testing/repository_harness.py +0 -0
- {loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/testing/runner.py +0 -0
|
@@ -430,6 +430,19 @@
|
|
|
430
430
|
|
|
431
431
|
### ai
|
|
432
432
|
|
|
433
|
+
- **ai:** a configured `ai.prices` rate prices runs again with pydantic-ai
|
|
434
|
+
2.54. That release records a response's usage before the
|
|
435
|
+
`after_model_request` hook loom priced it in, so every run reported
|
|
436
|
+
`AgentUsage.cost=None`: `policies.max_usd` stopped binding, a reported cost
|
|
437
|
+
was summed instead of replaced, and the ETL budget ledger kept each run's
|
|
438
|
+
whole reservation. The price is now applied by a model wrapper as the model
|
|
439
|
+
returns each response, in both run modes, before any engine release records
|
|
440
|
+
it. The lock moves to pydantic-ai-slim 2.54.0, which sends `tool_choice:
|
|
441
|
+
auto` for a `tool` output with adaptive thinking, so Anthropic models reason
|
|
442
|
+
again (2.47 forced the tool). `UsageExtractionFailedWarning`, new in 2.52, is
|
|
443
|
+
classified `COST_NOT_MEASURABLE` like its siblings. Every `ai-*` extra now
|
|
444
|
+
declares `pydantic-ai-slim>=2.45`, the oldest release loom imports and passes
|
|
445
|
+
its agent suites with, and CI runs those suites against that floor.
|
|
433
446
|
- **ai:** an MCP session that dies after it opened no longer fails every later
|
|
434
447
|
call until the worker restarts. The worker holds one session per server for
|
|
435
448
|
its whole life, and that holder kept the dead client from ever being
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: loom-kernel
|
|
3
|
-
Version: 2.15.
|
|
3
|
+
Version: 2.15.1
|
|
4
4
|
Summary: Loom Python project
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -22,17 +22,17 @@ Provides-Extra: ai-a2a
|
|
|
22
22
|
Requires-Dist: a2a-sdk<2,>=1.1; extra == 'ai-a2a'
|
|
23
23
|
Requires-Dist: fasta2a<1,>=0.6; extra == 'ai-a2a'
|
|
24
24
|
Provides-Extra: ai-anthropic
|
|
25
|
-
Requires-Dist: pydantic-ai-slim[anthropic]<3,>=2; extra == 'ai-anthropic'
|
|
25
|
+
Requires-Dist: pydantic-ai-slim[anthropic]<3,>=2.45; extra == 'ai-anthropic'
|
|
26
26
|
Provides-Extra: ai-bedrock
|
|
27
|
-
Requires-Dist: pydantic-ai-slim[bedrock]<3,>=2; extra == 'ai-bedrock'
|
|
27
|
+
Requires-Dist: pydantic-ai-slim[bedrock]<3,>=2.45; extra == 'ai-bedrock'
|
|
28
28
|
Provides-Extra: ai-harness
|
|
29
29
|
Requires-Dist: pydantic-ai-harness[skills]<1,>=0.28; extra == 'ai-harness'
|
|
30
30
|
Provides-Extra: ai-openai
|
|
31
|
-
Requires-Dist: pydantic-ai-slim[openai]<3,>=2; extra == 'ai-openai'
|
|
31
|
+
Requires-Dist: pydantic-ai-slim[openai]<3,>=2.45; extra == 'ai-openai'
|
|
32
32
|
Provides-Extra: ai-pydantic
|
|
33
|
-
Requires-Dist: pydantic-ai-slim<3,>=2; extra == 'ai-pydantic'
|
|
33
|
+
Requires-Dist: pydantic-ai-slim<3,>=2.45; extra == 'ai-pydantic'
|
|
34
34
|
Provides-Extra: ai-templates
|
|
35
|
-
Requires-Dist: pydantic-ai-slim[spec]<3,>=2; extra == 'ai-templates'
|
|
35
|
+
Requires-Dist: pydantic-ai-slim[spec]<3,>=2.45; extra == 'ai-templates'
|
|
36
36
|
Provides-Extra: ai-typesafe
|
|
37
37
|
Requires-Dist: pydantic-ai-slim[typesafe]<3,>=2.45; extra == 'ai-typesafe'
|
|
38
38
|
Provides-Extra: cache
|
|
@@ -124,16 +124,16 @@ streaming = [
|
|
|
124
124
|
"opentelemetry-exporter-otlp-proto-grpc>=1.27,<2.0",
|
|
125
125
|
]
|
|
126
126
|
ai-pydantic = [
|
|
127
|
-
"pydantic-ai-slim>=2,<3",
|
|
127
|
+
"pydantic-ai-slim>=2.45,<3",
|
|
128
128
|
]
|
|
129
129
|
ai-bedrock = [
|
|
130
|
-
"pydantic-ai-slim[bedrock]>=2,<3",
|
|
130
|
+
"pydantic-ai-slim[bedrock]>=2.45,<3",
|
|
131
131
|
]
|
|
132
132
|
ai-openai = [
|
|
133
|
-
"pydantic-ai-slim[openai]>=2,<3",
|
|
133
|
+
"pydantic-ai-slim[openai]>=2.45,<3",
|
|
134
134
|
]
|
|
135
135
|
ai-anthropic = [
|
|
136
|
-
"pydantic-ai-slim[anthropic]>=2,<3",
|
|
136
|
+
"pydantic-ai-slim[anthropic]>=2.45,<3",
|
|
137
137
|
]
|
|
138
138
|
# TypeSafe's Jev: a decision model that fills a typed output from a state, no
|
|
139
139
|
# text. Its model class first shipped in pydantic-ai 2.45.
|
|
@@ -144,7 +144,7 @@ ai-typesafe = [
|
|
|
144
144
|
# the engine compiles a Handlebars template and renders it per request. An
|
|
145
145
|
# artefact whose instructions are literal never reaches the import.
|
|
146
146
|
ai-templates = [
|
|
147
|
-
"pydantic-ai-slim[spec]>=2,<3",
|
|
147
|
+
"pydantic-ai-slim[spec]>=2.45,<3",
|
|
148
148
|
]
|
|
149
149
|
ai-a2a = [
|
|
150
150
|
"fasta2a>=0.6,<1",
|
|
@@ -16,6 +16,7 @@ from __future__ import annotations
|
|
|
16
16
|
from collections.abc import Mapping
|
|
17
17
|
from types import MappingProxyType
|
|
18
18
|
|
|
19
|
+
from pydantic_ai import exceptions as pydantic_ai_exceptions
|
|
19
20
|
from pydantic_ai.exceptions import (
|
|
20
21
|
CostCalculationFailedWarning,
|
|
21
22
|
CostNotFoundWarning,
|
|
@@ -27,6 +28,19 @@ from pydantic_ai.exceptions import (
|
|
|
27
28
|
|
|
28
29
|
from loom.ai.errors import AgentRunError, AgentRunErrorCode
|
|
29
30
|
|
|
31
|
+
_UNMEASURED_SPEND_WARNINGS: tuple[type[Warning], ...] = tuple(
|
|
32
|
+
warning
|
|
33
|
+
for warning in (
|
|
34
|
+
CostNotFoundWarning,
|
|
35
|
+
CostCalculationFailedWarning,
|
|
36
|
+
getattr(pydantic_ai_exceptions, "UsageExtractionFailedWarning", None),
|
|
37
|
+
)
|
|
38
|
+
if warning is not None
|
|
39
|
+
)
|
|
40
|
+
"""pydantic-ai's bare ``Warning`` subclasses, all of them a spend the run could
|
|
41
|
+
not measure. ``UsageExtractionFailedWarning`` first ships in a pydantic-ai
|
|
42
|
+
release newer than the supported floor, so it is mapped only where it exists."""
|
|
43
|
+
|
|
30
44
|
_STATUS_CODES: Mapping[int, AgentRunErrorCode] = MappingProxyType(
|
|
31
45
|
{
|
|
32
46
|
401: AgentRunErrorCode.UNAUTHORIZED,
|
|
@@ -49,13 +63,12 @@ _EXCEPTION_CODES: Mapping[type[Exception], AgentRunErrorCode] = MappingProxyType
|
|
|
49
63
|
UnexpectedModelBehavior: AgentRunErrorCode.OUTPUT_SCHEMA_VIOLATION,
|
|
50
64
|
ModelAPIError: AgentRunErrorCode.PROVIDER_UNAVAILABLE,
|
|
51
65
|
TimeoutError: AgentRunErrorCode.RUN_TIMEOUT,
|
|
52
|
-
#
|
|
66
|
+
# They subclass ``Warning``, not ``UserWarning``; see "Spend caps" in
|
|
53
67
|
# docs/ai/artifacts.md for why that makes this mapping load-bearing
|
|
54
68
|
# under ``-W error``. ``test_pydantic_ai_errors.py`` walks every
|
|
55
69
|
# ``pydantic_ai._warnings`` subclass of ``Warning`` that is not a
|
|
56
|
-
# ``UserWarning`` and fails the day a
|
|
57
|
-
|
|
58
|
-
CostCalculationFailedWarning: AgentRunErrorCode.COST_NOT_MEASURABLE,
|
|
70
|
+
# ``UserWarning`` and fails the day a new one is left unmapped.
|
|
71
|
+
**dict.fromkeys(_UNMEASURED_SPEND_WARNINGS, AgentRunErrorCode.COST_NOT_MEASURABLE),
|
|
59
72
|
}
|
|
60
73
|
)
|
|
61
74
|
|
|
@@ -15,20 +15,24 @@ model's cost can be permanently unpriceable.
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import logging
|
|
18
|
-
from
|
|
18
|
+
from collections.abc import AsyncIterator
|
|
19
|
+
from contextlib import asynccontextmanager
|
|
20
|
+
from dataclasses import replace
|
|
21
|
+
from decimal import Decimal
|
|
19
22
|
from typing import Any
|
|
20
23
|
|
|
21
24
|
from genai_prices import calc_price
|
|
22
25
|
from pydantic_ai import RunContext
|
|
23
|
-
from pydantic_ai.
|
|
24
|
-
from pydantic_ai.
|
|
25
|
-
from pydantic_ai.models import
|
|
26
|
-
from pydantic_ai.
|
|
26
|
+
from pydantic_ai.messages import ModelMessage, ModelResponse
|
|
27
|
+
from pydantic_ai.models import Model, ModelRequestParameters, StreamedResponse
|
|
28
|
+
from pydantic_ai.models.wrapper import WrapperModel
|
|
29
|
+
from pydantic_ai.settings import ModelSettings
|
|
30
|
+
from pydantic_ai.usage import RequestUsage, RunUsage, UsageLimits
|
|
27
31
|
|
|
28
32
|
from loom.ai.declarative import PolicySpec
|
|
29
33
|
from loom.ai.pricing import ModelPrice
|
|
30
34
|
|
|
31
|
-
__all__ = ["
|
|
35
|
+
__all__ = ["PricedModel", "is_priceable", "usage_limits", "warn_if_model_not_priceable"]
|
|
32
36
|
|
|
33
37
|
_logger = logging.getLogger(__name__)
|
|
34
38
|
|
|
@@ -59,36 +63,58 @@ def usage_limits(policies: PolicySpec) -> UsageLimits:
|
|
|
59
63
|
)
|
|
60
64
|
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"""Price every model response with the deployment's own rates.
|
|
66
|
+
class PricedModel(WrapperModel):
|
|
67
|
+
"""Model whose every response is priced with the deployment's own rates.
|
|
65
68
|
|
|
66
|
-
The cost is set
|
|
67
|
-
engine's
|
|
68
|
-
|
|
69
|
+
The cost is set on the response the wrapped model returns, before the
|
|
70
|
+
engine records it in the run's usage, so the engine's ``cost_limit`` and
|
|
71
|
+
loom's ``on_unpriced_spend`` both read it, whatever the engine version
|
|
72
|
+
does after the response leaves the model. It replaces any cost the model
|
|
73
|
+
reported and whatever genai-prices would have computed.
|
|
69
74
|
|
|
70
75
|
Args:
|
|
71
|
-
|
|
76
|
+
wrapped: Model built for the plan's binding.
|
|
77
|
+
price: Rates of that model.
|
|
72
78
|
"""
|
|
73
79
|
|
|
74
|
-
price: ModelPrice
|
|
80
|
+
def __init__(self, wrapped: Model, price: ModelPrice) -> None:
|
|
81
|
+
super().__init__(wrapped)
|
|
82
|
+
self.price = price
|
|
75
83
|
|
|
76
|
-
async def
|
|
84
|
+
async def request(
|
|
77
85
|
self,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
response: ModelResponse,
|
|
86
|
+
messages: list[ModelMessage],
|
|
87
|
+
model_settings: ModelSettings | None,
|
|
88
|
+
model_request_parameters: ModelRequestParameters,
|
|
82
89
|
) -> ModelResponse:
|
|
83
|
-
"""Return
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
"""Return the wrapped model's response with its usage priced at :attr:`price`."""
|
|
91
|
+
response = await super().request(messages, model_settings, model_request_parameters)
|
|
92
|
+
return replace(response, usage=replace(response.usage, cost=self._cost(response.usage)))
|
|
93
|
+
|
|
94
|
+
@asynccontextmanager
|
|
95
|
+
async def request_stream(
|
|
96
|
+
self,
|
|
97
|
+
messages: list[ModelMessage],
|
|
98
|
+
model_settings: ModelSettings | None,
|
|
99
|
+
model_request_parameters: ModelRequestParameters,
|
|
100
|
+
run_context: RunContext[Any] | None = None,
|
|
101
|
+
) -> AsyncIterator[StreamedResponse]:
|
|
102
|
+
"""Yield the wrapped model's stream, its usage priced at :attr:`price` once it closes."""
|
|
103
|
+
async with super().request_stream(
|
|
104
|
+
messages, model_settings, model_request_parameters, run_context
|
|
105
|
+
) as stream:
|
|
106
|
+
try:
|
|
107
|
+
yield stream
|
|
108
|
+
finally:
|
|
109
|
+
stream.usage.cost = self._cost(stream.usage)
|
|
110
|
+
|
|
111
|
+
def _cost(self, usage: RequestUsage) -> Decimal:
|
|
112
|
+
return self.price.cost(
|
|
86
113
|
input_tokens=usage.input_tokens,
|
|
87
114
|
output_tokens=usage.output_tokens,
|
|
88
115
|
cache_read_tokens=usage.cache_read_tokens,
|
|
89
116
|
cache_write_tokens=usage.cache_write_tokens,
|
|
90
117
|
)
|
|
91
|
-
return replace(response, usage=replace(usage, cost=cost))
|
|
92
118
|
|
|
93
119
|
|
|
94
120
|
def is_priceable(model_name: str, provider_name: str | None) -> bool:
|
|
@@ -19,7 +19,6 @@ from __future__ import annotations
|
|
|
19
19
|
from typing import TYPE_CHECKING, Any, ClassVar
|
|
20
20
|
|
|
21
21
|
from pydantic_ai import Agent, ModelRetry
|
|
22
|
-
from pydantic_ai.capabilities import AbstractCapability
|
|
23
22
|
from pydantic_ai.models import Model
|
|
24
23
|
|
|
25
24
|
from loom.ai.abc import AgentEngine, DepsFactory, OutputCheck
|
|
@@ -36,7 +35,7 @@ from loom.ai.engines.pydantic_ai._instructions import (
|
|
|
36
35
|
ensure_templating_available,
|
|
37
36
|
)
|
|
38
37
|
from loom.ai.engines.pydantic_ai._limits import (
|
|
39
|
-
|
|
38
|
+
PricedModel,
|
|
40
39
|
is_priceable,
|
|
41
40
|
usage_limits,
|
|
42
41
|
warn_if_model_not_priceable,
|
|
@@ -164,13 +163,9 @@ class PydanticAIEngineProvider:
|
|
|
164
163
|
if not isinstance(plan, AgentPlan):
|
|
165
164
|
raise TypeError(f"expected an AgentPlan, got {type(plan).__name__}")
|
|
166
165
|
ensure_templating_available(plan)
|
|
167
|
-
model = self._resolve_model(plan.inference)
|
|
168
|
-
if plan.price is None:
|
|
169
|
-
warn_if_model_not_priceable(
|
|
170
|
-
model.model_name, _provider_name(model), plan.policies, f"agent '{plan.name}'"
|
|
171
|
-
)
|
|
166
|
+
model = _with_price(self._resolve_model(plan.inference), plan)
|
|
172
167
|
toolsets = build_toolsets(plan, container, mcp=self._mcp)
|
|
173
|
-
capabilities =
|
|
168
|
+
capabilities = build_capabilities(plan, container)
|
|
174
169
|
if not plan.inference.streaming and any(
|
|
175
170
|
capability.has_wrap_run_event_stream for capability in capabilities
|
|
176
171
|
):
|
|
@@ -270,13 +265,14 @@ def _provider_name(model: Model) -> str | None:
|
|
|
270
265
|
return model.provider.name if model.provider is not None else None
|
|
271
266
|
|
|
272
267
|
|
|
273
|
-
def _with_price(
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
268
|
+
def _with_price(model: Model, plan: AgentPlan) -> Model:
|
|
269
|
+
"""Price *model* with the plan's configured rates, or warn when it may stay unpriced."""
|
|
270
|
+
if plan.price is not None:
|
|
271
|
+
return PricedModel(model, plan.price)
|
|
272
|
+
warn_if_model_not_priceable(
|
|
273
|
+
model.model_name, _provider_name(model), plan.policies, f"agent '{plan.name}'"
|
|
274
|
+
)
|
|
275
|
+
return model
|
|
280
276
|
|
|
281
277
|
|
|
282
278
|
def _register_output_check(agent: Agent[Any, Any], loom_type: LoomType, check: OutputCheck) -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/declarative/schemas/agent-spec-v1.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/extras/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/extras/handlebars.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/__init__.py
RENAMED
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/_shared.py
RENAMED
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/anthropic.py
RENAMED
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/bedrock.py
RENAMED
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/gateway.py
RENAMED
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/openai.py
RENAMED
|
File without changes
|
{loom_kernel-2.15.0 → loom_kernel-2.15.1}/src/loom/ai/engines/pydantic_ai/providers/typesafe.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|