mainsequence-metatable 0.1.23.dev38__tar.gz → 0.1.24__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.
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/analyze-with-sql/SKILL.md +2 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/discover-tables/SKILL.md +1 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/ms_tau_sdk/PINNED_FROM.txt +2 -2
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/ms_tau_sdk/tau_a2a_runtime_adapter/SKILL.md +16 -6
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/ms_tau_sdk/tau_local_development/SKILL.md +4 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/ms_tau_sdk/tau_project_customization/SKILL.md +84 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/ms_tau_sdk/tau_repository_integration/SKILL.md +18 -0
- mainsequence_metatable-0.1.24/.agents/skills/ms_tau_sdk/tau_security_and_access/SKILL.md +244 -0
- mainsequence_metatable-0.1.24/.mainsequence/workflows/metatables-api.yaml +85 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/PKG-INFO +3 -3
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/agent/0019-metatables-analyst-agent.md +38 -16
- mainsequence_metatable-0.1.24/docs/adr/agent/0020-analyst-reads-as-its-requester.md +77 -0
- mainsequence_metatable-0.1.24/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md +50 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/index.md +3 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/installation-and-connection.md +5 -5
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/contributing/releasing.md +3 -3
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/contributing/testing.md +1 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/operations/hosted-runtime.md +7 -2
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/security/ownership-and-sharing.md +7 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/mkdocs.yml +2 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/pyproject.toml +3 -3
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/check_boundaries.py +1 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/check_docs.py +2 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/PKG-INFO +3 -3
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/SOURCES.txt +6 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/requires.txt +2 -2
- mainsequence_metatable-0.1.24/src/metatables/analysis.py +411 -0
- mainsequence_metatable-0.1.24/src/metatables/analyst/__init__.py +31 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/auth/boundary.py +24 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/main.py +4 -0
- mainsequence_metatable-0.1.24/src/metatables/api/app/mcp.py +114 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/runtime.py +5 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/models.py +1 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/runtime_contract.py +2 -2
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/sdk_compat.py +2 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/analyst/test_agent_surface.py +39 -10
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/analyst/test_api_search.py +7 -6
- mainsequence_metatable-0.1.24/tests/analyst/test_mcp.py +50 -0
- mainsequence_metatable-0.1.24/tests/analyst/test_tools.py +160 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_platform_fact_cache.py +1 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_request_identity.py +33 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/documentation/test_project_checks.py +18 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_sdk_local_startup.py +1 -1
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/uv.lock +17 -10
- mainsequence_metatable-0.1.23.dev38/.mainsequence/workflows/metatables-api.yaml +0 -40
- mainsequence_metatable-0.1.23.dev38/src/metatables/analyst/__init__.py +0 -12
- mainsequence_metatable-0.1.23.dev38/src/metatables/analyst/tools.py +0 -272
- mainsequence_metatable-0.1.23.dev38/tests/analyst/test_tools.py +0 -155
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-migrations/SKILL.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-table-discovery/SKILL.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/LICENSE +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/MANIFEST.in +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/alembic.ini +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/api/metatables/main.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/compose.database-tests.yml +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0002-application-administration-and-table-ownership.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0004-approved-application-migrations.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0006-historical-run-graphs.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0009-shared-credential-store.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0013-application-owned-migrations.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0016-impact-preflight.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0017-hosted-request-identity.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0018-search-document-pipeline.svg +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/api/0018-table-search.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/api/authentication-and-errors.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/api/data-sources.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/api/openapi.json +2 -2
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/api/overview.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/api/reference.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/api/tables-and-migrations.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/api/time-index-and-updates.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/assets/branding/metatables.svg +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/assets/diagrams/local-client-experience.svg +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/bounded-transfers.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/build-an-updater.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/define-and-migrate-tables.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/deploy-application-migrations.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/local-storage.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/query-and-mutate.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/quickstart.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/read-existing-time-index-tables.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/register-existing-tables.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/tutorial.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/client/upgrade-legacy-app.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/concepts/architecture.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/concepts/data-sources.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/concepts/identity-and-scope.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/concepts/permissions-namespaces-labels.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/concepts/runs-and-execution-graphs.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/concepts/time-index-tables-and-updates.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/contributing/architecture-and-boundaries.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/contributing/database-backends.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/contributing/documentation.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/__main__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/query.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/scripts/setup_metatables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/__main__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/index.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/operations/catalog-migrations.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/operations/configuration.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/operations/local-runtime.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/operations/recovery-and-observability.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/operations/run-history.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/operations/run-logs.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/reference/capabilities.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/reference/cli.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/reference/python.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/security/index.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/docs/security/permissions.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/build_reference.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/check_client_api_coverage.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/check_distribution_sources.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/check_examples_debug.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/check_project.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/dev_release_version.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/test_databases.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/scripts/test_postgresql.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/setup.cfg +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/_admin_source.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/_build.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/_skill_bundle.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/auth/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/auth/local_actor.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/bootstrap.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/configuration.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/credential_admin.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/development.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/development_client.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/error_logging.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/platform_cache.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/column_search.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/contract_validation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/data_sources.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/managed_finalize.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/migration_connection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/namespaces.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/run_logs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/runtime_context.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/schema_graph.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/security.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_cascade.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_crud.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_delete.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_filter.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_import.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_introspection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_patch.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_registration.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_response.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_search.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_search_document.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_sql.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/time_index_delete.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/time_index_reads.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/time_index_stats.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/timescale_policies.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_batch.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_constants.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_crud.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_details.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_graph.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_registration.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_runs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_statistics.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/runtime_control.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/runtime_database.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/source_passwords.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/app/transfer.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/access.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/catalog.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/catalog_types.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/contracts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/hosted.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/hosted_access.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/migration_connection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/native.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/operations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/pages.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/registry.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/relation_tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/relational.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/streaming.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/timescale.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/relation_import.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/values.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/index_statistics.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/label_rules.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/permission_rules.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/update_constants.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/credential_store.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/platform_principals.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/run_logs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/source_validation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0010_cascade_targets.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0011_table_search.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/create_table.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/import_relations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/introspect_table.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/read_time_index.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/register_catalog.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/cascade.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/catalog.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/database.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/grants.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/impact.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/labels.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/locking.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/models.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/projections.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/table_queries.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/table_response.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/update_graph.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/updates.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/documents.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/embeddings.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/index.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/ranking.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/text.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/worker.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/metatables/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/metatables/configuration.yaml +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/api/metatables/main.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/admin_install.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/app.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/filters.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/local.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/migrations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/project.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/cli/skills.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/compiled_sql/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/compiled_sql/mssql.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/compiled_sql/v1.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/dtype_codec.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/endpoint.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/bounded_reader.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/mssql.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/mysql.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/postgresql.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/register.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/external_table.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/__main__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/query.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/quickstart.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/reader.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/scripts/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/scripts/setup_metatables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/__main__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/data/README.md +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/frames.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/operations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/updaters.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/examples/updater.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/future_registry.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/hashing.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/instrumentation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/local_connection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/local_files.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/log_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/alembic.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/connection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/env.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/provider.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/registry.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/runner.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/scaffold.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/sqlite.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/templates/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/templates/env.py.mako +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/templates/script.py.mako +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/migrations/tls.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/pydantic_metadata.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/run_logging.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/runtime.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/runtime_context.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/schema_names.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/sqlalchemy_contracts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/storage_layout_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/time_index_table_refs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/transfer.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/transfer_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/transport.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/update_configuration_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/configuration.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/dependencies.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/managers.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/namespacing.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/runner.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/updaters.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/updaters/utils.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/src/metatables/upload.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_bootstrap_failure_cause.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_data_source_identity.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_development_client.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_hosted_environment_target.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_local_mode.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_bootstrap.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_database.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_scaffold.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_selection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_storage_binding.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/auth/test_source_passwords.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/catalog/test_catalog_foundation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/catalog/test_contract_projection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/catalog/test_database_config.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/catalog/test_index_statistics.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/catalog/test_migration.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/conftest.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/capabilities.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/client_signatures.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/database_operations.json +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/test_bounded_transfer.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/test_compiler_runtime_source.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/test_relation_batching.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/test_relation_import.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/test_runtime_contract_compat.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/test_storage_layouts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/contracts/test_table_contracts.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/Dockerfile +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/Dockerfile.dockerignore +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/conftest.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/provider/__init__.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/provider/env.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_api_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_application_migration.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_bootstrap_recovery.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_catalog_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_credential_catalog.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_physical_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_relation_import.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_runtime_bootstrap.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_sql_security.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_backend/test_update_client.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_operations/test_physical_operations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_operations/test_postgresql_operations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/database_operations/test_runtime_and_temporal.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_admin_installation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_api_endpoint.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_application_owned_migrations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_catalog_outage.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_api_contract.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_api_coverage.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_migration_scaffold.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_migration_tls.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_package.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_signatures.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_value_behaviors.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_data_source_registry.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_local_actor_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_local_cli_workflow.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_local_client_selection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_managed_finalize_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_namespaces_admin_http.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_public_imports.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_remaining_client_routes.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_run_graphs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_run_logs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_runtime_upgrade.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_sqlite_runtime.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_delete_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_filter_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_introspection_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_patch_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_search_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_search_document_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_search_scale.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_stats_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_update_pipeline.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_updates_http.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_time_index_delete_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_time_index_reads_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_timescale_policies_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_batch_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_registration_client_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/examples/test_documented_examples.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/examples/test_postgresql_examples.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/examples/test_setup_launch.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/examples/test_tutorial.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_credential_store.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_data_source_rules.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_local_data_sources.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_local_run_logs.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_connection.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_sql.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_tables.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_source_validation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/integrations/test_sqlite_operations.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/labels/test_labels.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/operations/test_create_table_operation.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/operations/test_create_table_postgres.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/operations/test_physical_operation_journal.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/operations/test_register_catalog.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/operations/test_search_documents.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/operations/test_timescale_policies.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/packaging/test_client_skills.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/packaging/test_dev_release_version.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/packaging/test_distribution_sources.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/packaging/test_editable_build.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/packaging/test_installed_distribution.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_governed_sql_scope.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_local_actor_membership.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_migration_boundary.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_namespace_grants.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_security_api.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_table_body_filter.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_table_grants.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_table_queries.py +0 -0
- {mainsequence_metatable-0.1.23.dev38 → mainsequence_metatable-0.1.24}/tests/permissions/test_workload_principals.py +0 -0
|
@@ -19,4 +19,5 @@ Input: a data question. Output: the answer, the SQL that ran and the tables it r
|
|
|
19
19
|
Report what the data shows, what you infer and what remains unresolved, and say when
|
|
20
20
|
results were truncated. End with the SQL and the tables it read.
|
|
21
21
|
|
|
22
|
-
Side effects: none. The database enforces the
|
|
22
|
+
Side effects: none. The database enforces the grants of the person you are answering and
|
|
23
|
+
refuses writes.
|
|
@@ -21,4 +21,4 @@ Answer with each table's identifier, namespace, uid and physical name, the colum
|
|
|
21
21
|
matter, and the join keys between them. When candidates compete, say which you would use
|
|
22
22
|
and why. When nothing fits, say so.
|
|
23
23
|
|
|
24
|
-
Side effects: none; every tool reads
|
|
24
|
+
Side effects: none; every tool reads with the access of the person you are answering.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
schema=1
|
|
2
2
|
library_name=ms-tau-sdk
|
|
3
3
|
namespace=ms_tau_sdk
|
|
4
|
-
pinned_version=
|
|
4
|
+
pinned_version=2.0.7
|
|
5
5
|
skills_path=src/ms_tau_sdk/agent_skills
|
|
6
|
-
skills=tau_a2a_runtime_adapter,tau_local_development,tau_project_customization,tau_repository_integration
|
|
6
|
+
skills=tau_a2a_runtime_adapter,tau_local_development,tau_project_customization,tau_repository_integration,tau_security_and_access
|
|
7
7
|
command=ms-tau skills sync --path .
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tau-a2a-runtime-adapter
|
|
3
|
-
description: Implement and diagnose the TAU host side of Main Sequence A2A without duplicating the
|
|
3
|
+
description: Implement and diagnose the TAU host side of Main Sequence A2A without duplicating the platform-owned protocol, authorization, discovery, and task-lifecycle contract.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# TAU A2A Runtime Adapter
|
|
@@ -11,7 +11,7 @@ idempotency, and retry semantics.
|
|
|
11
11
|
|
|
12
12
|
## Ownership boundary
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
The platform owns:
|
|
15
15
|
|
|
16
16
|
- canonical `a2a.*` MCP schemas and platform discovery;
|
|
17
17
|
- AgentSession and AgentTask lifecycle;
|
|
@@ -23,8 +23,18 @@ The SDK owns:
|
|
|
23
23
|
|
|
24
24
|
- projecting the authenticated Main Sequence MCP catalog into a TAU session;
|
|
25
25
|
- preserving each tool's canonical name and metadata through host normalization;
|
|
26
|
-
- privately attaching
|
|
27
|
-
`mainsequence.ai/
|
|
26
|
+
- privately attaching, to every hosted Main Sequence MCP call, the turn's caller-session proof under
|
|
27
|
+
`mainsequence.ai/caller-session-proof/v1`, and, while the turn serves a person, the same proof as
|
|
28
|
+
that person's delegation under `mainsequence.ai/delegation/v1`. No tool metadata decides it;
|
|
29
|
+
- verifying the platform's signed caller or platform assertion on every inbound request of a
|
|
30
|
+
hosted runtime, and admitting a request to a session or its Tasks only for the session's owner,
|
|
31
|
+
an Organization admin, or the workload User of the Agent that delegated to that child session,
|
|
32
|
+
which the platform's own records establish, never the `X-Caller-*` headers;
|
|
33
|
+
- presenting the verified caller assertion of the request that starts a chat or A2A Message turn
|
|
34
|
+
only when it marks that turn active, so that the platform can record the turn's requester;
|
|
35
|
+
taking the person the turn serves only from the platform's answer to the turn start; and giving
|
|
36
|
+
extension tools that person and calls for the work through `current_requester()` and
|
|
37
|
+
`platform_client()` without exposing the assertion, the lease proof, or any token;
|
|
28
38
|
- translating inbound A2A requests into the shared TAU runtime; and
|
|
29
39
|
- translating runtime events and results into validated A2A responses.
|
|
30
40
|
|
|
@@ -40,7 +50,7 @@ log, persist, or reuse the proof as general authorization.
|
|
|
40
50
|
|
|
41
51
|
## Send Work To Another Agent
|
|
42
52
|
|
|
43
|
-
For a deployed Agent, use the projected `a2a.send_message` MCP operation.
|
|
53
|
+
For a deployed Agent, use the projected `a2a.send_message` MCP operation. The platform creates or
|
|
44
54
|
resolves the target `AgentSession`, waits for its runtime to become ready, and dispatches the
|
|
45
55
|
message. For asynchronous work, use the returned Task handle with `a2a.wait_task`.
|
|
46
56
|
|
|
@@ -97,4 +107,4 @@ responder Message; never send the removed ad hoc status-detail shape. Status eve
|
|
|
97
107
|
Message and consumers reload the Task snapshot.
|
|
98
108
|
|
|
99
109
|
Change this SDK only for catalog projection, proof attachment, runtime execution, or transport
|
|
100
|
-
translation defects. Platform contract changes
|
|
110
|
+
translation defects. Platform contract changes are made in the platform, not in this SDK.
|
|
@@ -35,6 +35,10 @@ The SDK looks for the CLI in `MAINSEQUENCE_CLI`, then beside the Python interpre
|
|
|
35
35
|
CLI. Do not add token lines to `.env`. A pair found there still works, but it is deprecated and
|
|
36
36
|
startup logs a warning. `mainsequence refresh-token` run in that directory removes the lines.
|
|
37
37
|
|
|
38
|
+
Do not set `APP_NAME`, `FASTAPI_PUBLIC_BASE_URL`, `MAINSEQUENCE_CALLER_AUTH_MODE=assertion`, or the
|
|
39
|
+
`MAINSEQUENCE_CALLER_ASSERTION_*` variables. The platform sets them when it hosts a runtime, and
|
|
40
|
+
local mode refuses to start with them.
|
|
41
|
+
|
|
38
42
|
Set `MAINSEQUENCE_ENDPOINT` only for a non-default platform endpoint. The CLI session must be for
|
|
39
43
|
the same endpoint. Local mode binds to `127.0.0.1:8787` by default. Treat an explicit public bind
|
|
40
44
|
as privileged exposure: each accepted request can use the authenticated user's live Main Sequence
|
|
@@ -87,7 +87,7 @@ Extensions may change effective agent capabilities, but they must not replace or
|
|
|
87
87
|
|
|
88
88
|
- Main Sequence runtime or user authentication;
|
|
89
89
|
- provider-control evidence and credential hydration;
|
|
90
|
-
- caller identity and active-session proof;
|
|
90
|
+
- caller identity, the turn's requester, and active-session proof;
|
|
91
91
|
- persistence ordering, leases, cancellation, or task settlement;
|
|
92
92
|
- secret redaction and payload limits; or
|
|
93
93
|
- HTTP, SSE, Responses, and A2A wire validation.
|
|
@@ -95,6 +95,89 @@ Extensions may change effective agent capabilities, but they must not replace or
|
|
|
95
95
|
When Main Sequence MCP is enabled, use its canonical operations for live platform state. Project
|
|
96
96
|
tools do not grant new platform permissions merely because they run inside TAU.
|
|
97
97
|
|
|
98
|
+
## Acting for the person a turn serves
|
|
99
|
+
|
|
100
|
+
An Agent that an Organization admin enabled for it can call the platform and other platform
|
|
101
|
+
applications with the ordinary permissions of the person whose request a turn is serving: the
|
|
102
|
+
requester. The platform keeps that authority and finds the person in its own records; the runtime
|
|
103
|
+
only proves which of its sessions it is working on. Extension tools use two SDK functions and
|
|
104
|
+
nothing else:
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
import json
|
|
108
|
+
|
|
109
|
+
from tau_agent.messages import TextContent
|
|
110
|
+
from tau_agent.tools import AgentToolResult
|
|
111
|
+
|
|
112
|
+
from ms_tau_sdk import platform_client
|
|
113
|
+
|
|
114
|
+
ANALYST_DATA_RELEASE_UID = "..." # the release of the application to ask
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
async def revenue_by_region(tool_call_id, arguments, signal=None, on_update=None):
|
|
118
|
+
# This tool answers each person with their own data, so it needs a person.
|
|
119
|
+
try:
|
|
120
|
+
answer = await platform_client(delegation="required").call_release(
|
|
121
|
+
ANALYST_DATA_RELEASE_UID,
|
|
122
|
+
"POST",
|
|
123
|
+
"/query",
|
|
124
|
+
json={"question": "revenue by region"},
|
|
125
|
+
)
|
|
126
|
+
except PermissionError:
|
|
127
|
+
return AgentToolResult(content=[TextContent(text="Ask me from your own conversation.")])
|
|
128
|
+
return AgentToolResult(content=[TextContent(text=json.dumps(answer.json()["rows"]))])
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
- `current_requester()` returns the person the turn serves, with `uid` and `team_uids`, or
|
|
132
|
+
`None`. The platform names that person when the turn starts, whoever called; it is `None` when
|
|
133
|
+
the platform names nobody, in local mode, and in code outside a turn. Only it names the
|
|
134
|
+
requester: never take a person's UID from tool arguments, the prompt, history, or a header.
|
|
135
|
+
- `platform_client()` returns a client. `await client.request("GET", "/api/v1/...")` calls a
|
|
136
|
+
platform API path, and `await client.call_release(release_uid, method, path, ...)` calls another
|
|
137
|
+
platform application. Both return an `httpx.Response`.
|
|
138
|
+
- By default (`delegation="auto"`) a call carries the person's delegation while the turn serves a
|
|
139
|
+
person, and is the Agent's own otherwise; the operation or application decides what it may do.
|
|
140
|
+
`delegation="none"` never carries it. `delegation="required"` raises a `PermissionError` before
|
|
141
|
+
sending when the turn serves nobody; use it in a tool that only makes sense for a person.
|
|
142
|
+
- A call the platform refuses because the person's access ended (`code`
|
|
143
|
+
`requester_binding_invalid` or `runtime_lease_*`) raises a `PermissionError`: the turn is over,
|
|
144
|
+
the access was removed, more than 24 hours passed, or the Agent is not enabled. Catch it, say in
|
|
145
|
+
plain words that the request cannot be served, and never retry it as the Agent.
|
|
146
|
+
|
|
147
|
+
Rules for tools that act for the requester:
|
|
148
|
+
|
|
149
|
+
- Never handle proofs or tokens. The SDK attaches the session, the lease proof, and the
|
|
150
|
+
credentials itself. A tool never reads, logs, stores, or forwards them, passes a path rather than
|
|
151
|
+
a URL, and never sets `Authorization` or an `X-MainSequence-*` header.
|
|
152
|
+
- A delegated call uses the person's ordinary permissions, including administrative ones; any other
|
|
153
|
+
call uses the Agent's own. Each operation decides what it needs. Never infer write permission
|
|
154
|
+
from view access.
|
|
155
|
+
- This needs the platform's matching change, deployed in the same cutover; check the deployed
|
|
156
|
+
platform and the installed SDK before depending on it.
|
|
157
|
+
- Return to the model only business results, such as rows, numbers, and names. Never return the
|
|
158
|
+
response object, its headers, a token, a proof, or a raw error body.
|
|
159
|
+
- Keep nothing for another turn or another person. The delegation ends with the turn, and a task
|
|
160
|
+
the tool leaves running acts only as the Agent afterwards.
|
|
161
|
+
- What a tool reads for a person belongs to that person's conversation. Do not write it to shared
|
|
162
|
+
stores, other Agents, or external systems.
|
|
163
|
+
|
|
164
|
+
People who use such an Agent are told:
|
|
165
|
+
|
|
166
|
+
> **This Agent works with your identity.** It can read, create, change, run,
|
|
167
|
+
> share or delete only what your permissions allow through supported operations,
|
|
168
|
+
> only while serving your request, and for at most 24 hours after you ask. It
|
|
169
|
+
> uses your ordinary permissions, including administrative permissions, and
|
|
170
|
+
> access is checked on every call. Your Organization's administrator approved it
|
|
171
|
+
> to work this way.
|
|
172
|
+
|
|
173
|
+
The statement describes delegated calls. The Agent's own grants and trusted extension code remain
|
|
174
|
+
separate authority. Prompt injection can cause unintended changes, sharing, or deletion within the
|
|
175
|
+
person's permissions, and completed writes can outlast the delegation. Only Organization admins
|
|
176
|
+
enable this authority.
|
|
177
|
+
|
|
178
|
+
For a complete example, a tool that uses a person's Secret without exposing it, and how sharing
|
|
179
|
+
decides what a delegated call can reach, use `tau_security_and_access`.
|
|
180
|
+
|
|
98
181
|
## Validation
|
|
99
182
|
|
|
100
183
|
Verify each project-owned capability through its observable interface and focused tests. Check
|
|
@@ -44,6 +44,20 @@ Both paths construct the same application. The project owns the dependency lock,
|
|
|
44
44
|
deployable artifact, system packages, and any surrounding ASGI composition. There is no separate
|
|
45
45
|
TAU image, overlay, or SDK-owned deployment.
|
|
46
46
|
|
|
47
|
+
`create_app()` installs the runtime's request identity. When Main Sequence hosts the runtime, the
|
|
48
|
+
application admits only requests that carry the platform's signed assertion, lets only a session's
|
|
49
|
+
owner, an Organization admin, or the Agent that delegated to it address that session, and declares
|
|
50
|
+
all this in `app.state.mainsequence_request_identity`. The platform launcher serves an application
|
|
51
|
+
only with that declaration, read from the object it serves. Therefore:
|
|
52
|
+
|
|
53
|
+
- export the object `create_app()` returns as the module's `app`. An application that mounts it
|
|
54
|
+
inside another one declares nothing, and the launcher refuses it;
|
|
55
|
+
- do not add middleware or routes that take the caller from `X-User-UID` or other gateway headers,
|
|
56
|
+
and do not install a second request-identity integration; and
|
|
57
|
+
- do not set `APP_NAME`, `FASTAPI_PUBLIC_BASE_URL`, or the `MAINSEQUENCE_CALLER_*` variables in the
|
|
58
|
+
repository. The platform sets them when it hosts the runtime, and local mode refuses to start
|
|
59
|
+
with them.
|
|
60
|
+
|
|
47
61
|
## Job-hosted batch execution
|
|
48
62
|
|
|
49
63
|
ADR 0015 accepts a Python batch entry point, but it is **not implemented in this SDK version**.
|
|
@@ -106,7 +120,11 @@ When an ASGI shim exists, also import it without starting a second application i
|
|
|
106
120
|
|
|
107
121
|
```bash
|
|
108
122
|
uv run python -c "from api.tau.main import app; print(type(app).__name__)"
|
|
123
|
+
uv run python -c "from api.tau.main import app; print(app.state.mainsequence_request_identity)"
|
|
109
124
|
```
|
|
110
125
|
|
|
126
|
+
The second command prints `{'installed': True, 'mode': 'local', 'public_ingress': ()}` outside
|
|
127
|
+
hosting.
|
|
128
|
+
|
|
111
129
|
Do not require the `mainsequence` Python distribution in the TAU dependency graph. Authentication
|
|
112
130
|
and Main Sequence transport are implemented directly by `ms-tau-sdk`.
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tau-security-and-access
|
|
3
|
+
description: Build and review project tools that call the platform or other applications for the person a turn serves, including tools that use a person's Secret without exposing it, and explain how delegation and sharing decide what those tools can reach.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TAU Security and Access
|
|
7
|
+
|
|
8
|
+
Use this skill when a project tool under `.tau/extensions/` calls the platform or another
|
|
9
|
+
platform application, uses a Secret, or must answer each person with their own data. Extension
|
|
10
|
+
mechanics are in `tau_project_customization`. The full model, with the administrator setup, is in
|
|
11
|
+
the SDK's Security and access guide (`docs/reference/security-model.md`). Sharing itself is in
|
|
12
|
+
`.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`.
|
|
13
|
+
|
|
14
|
+
## Who a call acts as
|
|
15
|
+
|
|
16
|
+
Every call a tool makes through `platform_client()` follows one rule:
|
|
17
|
+
|
|
18
|
+
| The call carries | Permissions used |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| No delegation | The caller's own: the Agent's workload grants, or in local mode your own login. |
|
|
21
|
+
| A valid delegation | The person the turn serves, with their ordinary permissions, including administrative ones. |
|
|
22
|
+
| A delegation that ended or is invalid | None. The call is refused with a `PermissionError` and is never retried as the Agent. |
|
|
23
|
+
|
|
24
|
+
- The platform names the person when the turn starts, and `current_requester()` returns them. It
|
|
25
|
+
returns `None` when the Agent is not enabled to act for people (only an Organization admin can
|
|
26
|
+
enable it, with `acts_for_requester`), for work no person asked for, in local mode and outside a
|
|
27
|
+
turn.
|
|
28
|
+
- The operation or application that receives the call decides what it may do. No list says which
|
|
29
|
+
operations accept a delegation. Read access never implies edit, run, share or delete.
|
|
30
|
+
- The call stays the Agent's call, made for the person. It is not impersonation: the platform
|
|
31
|
+
checks it on every call, only while the turn or Task serving the person runs, for at most 24
|
|
32
|
+
hours after their request, and only in the Agent's Environment.
|
|
33
|
+
|
|
34
|
+
## Choose the delegation for each tool
|
|
35
|
+
|
|
36
|
+
| The tool | `delegation` |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Answers each person with their own data, or uses their credentials | `"required"` |
|
|
39
|
+
| Works for anyone, for the person when the turn serves one | `"auto"` (the default) |
|
|
40
|
+
| Uses only the Agent's own resources, the same for everyone | `"none"` |
|
|
41
|
+
|
|
42
|
+
With `"required"`, a turn that serves nobody raises a `PermissionError` before anything is sent.
|
|
43
|
+
With `"auto"`, the same tool reaches different things for different people, and the Agent's own
|
|
44
|
+
grants when nobody is served: make sure both are what you intend. Local turns serve nobody, so a
|
|
45
|
+
`"required"` tool refuses in local mode; test it with fakes (see [Testing](#testing)).
|
|
46
|
+
|
|
47
|
+
## Example: a tool that uses a person's own Secret
|
|
48
|
+
|
|
49
|
+
A person stores an API key for an outside data provider, and the Agent uses it for them without
|
|
50
|
+
ever seeing it:
|
|
51
|
+
|
|
52
|
+
1. The person creates the Secret themselves. The Agent never asks for the value or accepts it.
|
|
53
|
+
2. The tool that calls the provider reads the Secret as the person, inside that same call.
|
|
54
|
+
3. The tool uses the value and returns only the result.
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
"""Quotes from an outside provider, with each person's own API key."""
|
|
58
|
+
|
|
59
|
+
import json
|
|
60
|
+
|
|
61
|
+
import httpx
|
|
62
|
+
from tau_agent.messages import TextContent
|
|
63
|
+
from tau_agent.tools import AgentTool, AgentToolResult
|
|
64
|
+
|
|
65
|
+
from ms_tau_sdk import current_requester, platform_client
|
|
66
|
+
|
|
67
|
+
PROVIDER_URL = "https://quotes.example.test/v1/latest"
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _text(message):
|
|
71
|
+
return AgentToolResult(content=[TextContent(text=message)])
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _secret_name():
|
|
75
|
+
# The name comes from the person the platform named, never from the model.
|
|
76
|
+
person = current_requester()
|
|
77
|
+
return None if person is None else f"QUOTES_API_KEY__{person.uid}"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
async def _secret_uid(client, name):
|
|
81
|
+
# Listing returns names and UIDs, never values. Names are unique in the Agent's Environment.
|
|
82
|
+
answer = await client.request("GET", "/api/v1/secrets/", params={"name": name})
|
|
83
|
+
if answer.status_code != 200:
|
|
84
|
+
return None
|
|
85
|
+
found = answer.json()["results"]
|
|
86
|
+
return found[0]["uid"] if found else None
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
async def connect_quotes(tool_call_id, arguments, signal=None, on_update=None):
|
|
90
|
+
name = _secret_name()
|
|
91
|
+
if name is None:
|
|
92
|
+
return _text("I can set up your key only while answering your own request.")
|
|
93
|
+
try:
|
|
94
|
+
uid = await _secret_uid(platform_client(delegation="required"), name)
|
|
95
|
+
except PermissionError:
|
|
96
|
+
return _text("Your access for this request ended. Please ask again.")
|
|
97
|
+
if uid is not None:
|
|
98
|
+
return _text(f"Your key is stored as the Secret {name}.")
|
|
99
|
+
return _text(
|
|
100
|
+
f"Create a Secret named {name} with your API key, in the Environment this Agent runs in: "
|
|
101
|
+
f"on the Secrets page in Command Center, or with `mainsequence secrets create {name}`, "
|
|
102
|
+
"which asks for the value without showing it. Never paste the key into this chat."
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
async def latest_quote(tool_call_id, arguments, signal=None, on_update=None):
|
|
107
|
+
name = _secret_name()
|
|
108
|
+
if name is None:
|
|
109
|
+
return _text("I can use your key only while answering your own request.")
|
|
110
|
+
client = platform_client(delegation="required")
|
|
111
|
+
try:
|
|
112
|
+
uid = await _secret_uid(client, name)
|
|
113
|
+
if uid is None:
|
|
114
|
+
return _text(f"First create the Secret {name}. Ask me how.")
|
|
115
|
+
secret = await client.request("GET", f"/api/v1/secrets/{uid}/")
|
|
116
|
+
except PermissionError:
|
|
117
|
+
return _text("Your access for this request ended. Please ask again.")
|
|
118
|
+
if secret.status_code != 200:
|
|
119
|
+
return _text("I could not read your key.")
|
|
120
|
+
try:
|
|
121
|
+
async with httpx.AsyncClient(timeout=10.0) as http:
|
|
122
|
+
quote = await http.get(
|
|
123
|
+
PROVIDER_URL,
|
|
124
|
+
params={"symbol": arguments["symbol"]},
|
|
125
|
+
headers={"Authorization": f"Bearer {secret.json()['value']}"},
|
|
126
|
+
)
|
|
127
|
+
except httpx.HTTPError:
|
|
128
|
+
# The error can carry the request with its headers: never show it.
|
|
129
|
+
return _text("The quotes provider did not answer.")
|
|
130
|
+
if quote.status_code != 200:
|
|
131
|
+
return _text(f"The quotes provider answered {quote.status_code}.")
|
|
132
|
+
data = quote.json()
|
|
133
|
+
return _text(json.dumps({"symbol": data["symbol"], "price": data["price"]}))
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def setup(tau):
|
|
137
|
+
tau.register_tool(
|
|
138
|
+
AgentTool(
|
|
139
|
+
name="connect_quotes",
|
|
140
|
+
label="Connect Quotes",
|
|
141
|
+
description="Check or explain how to store your quotes API key as your own Secret.",
|
|
142
|
+
parameters={"type": "object", "properties": {}, "additionalProperties": False},
|
|
143
|
+
execute_fn=connect_quotes,
|
|
144
|
+
)
|
|
145
|
+
)
|
|
146
|
+
tau.register_tool(
|
|
147
|
+
AgentTool(
|
|
148
|
+
name="latest_quote",
|
|
149
|
+
label="Latest Quote",
|
|
150
|
+
description="Get the latest quote for a symbol with your own quotes API key.",
|
|
151
|
+
parameters={
|
|
152
|
+
"type": "object",
|
|
153
|
+
"properties": {"symbol": {"type": "string"}},
|
|
154
|
+
"required": ["symbol"],
|
|
155
|
+
"additionalProperties": False,
|
|
156
|
+
},
|
|
157
|
+
execute_fn=latest_quote,
|
|
158
|
+
)
|
|
159
|
+
)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
What makes it safe:
|
|
163
|
+
|
|
164
|
+
- No tool takes a Secret value or a Secret name from the model. The name is built from
|
|
165
|
+
`current_requester().uid`, so prompt injection cannot point the tool at another Secret.
|
|
166
|
+
- `delegation="required"` reads the Secret as the person. The platform returns it only if the
|
|
167
|
+
person can view it; the name is a lookup key, not the protection.
|
|
168
|
+
- The value exists only inside one call. It never goes into the result, `details`, a log, an
|
|
169
|
+
exception message, a file or a cache for the next turn. It travels in a header, never in a URL,
|
|
170
|
+
because URLs reach logs. Errors from the outside call are caught, and the provider's raw body is
|
|
171
|
+
never returned.
|
|
172
|
+
- There is no tool that returns a Secret value, and no tool that calls any platform path the model
|
|
173
|
+
chooses. With the delegation, such a tool would let the model read every Secret the person can.
|
|
174
|
+
- The Agent's own workload holds no grant on these Secrets, so a call without the person reaches
|
|
175
|
+
none of them.
|
|
176
|
+
|
|
177
|
+
## Sharing decides what a delegated call can reach
|
|
178
|
+
|
|
179
|
+
A delegated read returns anything the person can view in the Agent's Environment: what they
|
|
180
|
+
created and what others shared with them, directly or through a team. This holds for Secrets and
|
|
181
|
+
every other object. The platform enforces sharing; which of those objects a tool uses is part of
|
|
182
|
+
the tool's design. For Secrets, the naming convention states that design:
|
|
183
|
+
|
|
184
|
+
- **A personal credential:** a name tied to the person, such as `QUOTES_API_KEY__<person uid>`.
|
|
185
|
+
The person decides whether to share it.
|
|
186
|
+
- **A team credential:** a name the team agrees on, shared with the team for view. The tool reads
|
|
187
|
+
it for any member.
|
|
188
|
+
- **Someone else's Secret shared with the person:** valid whenever the tool is meant to use it.
|
|
189
|
+
|
|
190
|
+
Whoever can edit a Secret decides its value, so the tool uses whatever value they set. Granting or
|
|
191
|
+
accepting edit on a Secret means trusting that person with what the tool does with it. That is a
|
|
192
|
+
decision people make through sharing, not one the platform makes for them.
|
|
193
|
+
|
|
194
|
+
How sharing works:
|
|
195
|
+
|
|
196
|
+
- The creator of a Secret can always view and edit it, and cannot be removed from it. People who
|
|
197
|
+
can edit a Secret can share it, for view or for edit, with people and teams.
|
|
198
|
+
- Most people can share only within the teams they belong to; Organization admins can share
|
|
199
|
+
across their Organization.
|
|
200
|
+
- `GET /api/v1/secrets/<uid>/can-view/` and `can-edit/` list the people and teams with access. A
|
|
201
|
+
tool can use them when its design needs to, for example to refuse a team key where it expects a
|
|
202
|
+
personal one. That is a choice of the tool, not a platform rule.
|
|
203
|
+
|
|
204
|
+
## What never reaches the model
|
|
205
|
+
|
|
206
|
+
Tool results, their `details`, and errors can reach the model provider and the session history.
|
|
207
|
+
Never return a Secret value, a token, a proof, an assertion, a response object, its headers or a
|
|
208
|
+
raw error body. Return business results: rows, numbers, names, and plain messages. The SDK already
|
|
209
|
+
keeps its own credentials out of that path and never lets a tool set `Authorization` or an
|
|
210
|
+
`X-MainSequence-*` header.
|
|
211
|
+
|
|
212
|
+
## Limits
|
|
213
|
+
|
|
214
|
+
- This works in the Agent's own project tools. An application that receives a delegated call
|
|
215
|
+
learns the person with `User.get_requester()`, but it cannot call the platform as that person.
|
|
216
|
+
- The delegation ends with the turn. A task the tool leaves running acts as the Agent afterwards,
|
|
217
|
+
and nothing read for one person may be kept for another turn or another person.
|
|
218
|
+
- When the person's access ends (the turn is over, the access was removed, 24 hours passed, or
|
|
219
|
+
the Agent is not enabled), calls raise a `PermissionError` whose `code` is
|
|
220
|
+
`requester_binding_invalid` or starts with `runtime_lease_`. Say in plain words that the request
|
|
221
|
+
cannot be served, and never retry it as the Agent.
|
|
222
|
+
- Every other answer, such as `403` or `404` for an object the person cannot see, is returned as
|
|
223
|
+
it is: check the status before using the body.
|
|
224
|
+
|
|
225
|
+
## Testing
|
|
226
|
+
|
|
227
|
+
Patch the extension module's `current_requester` and `platform_client` with fakes, and test:
|
|
228
|
+
|
|
229
|
+
- with a person and the Secret: the result holds only business fields, and the value appears in no
|
|
230
|
+
result text, `details`, log record or exception;
|
|
231
|
+
- with a person and no Secret: the tool explains how to create it and sends no provider call;
|
|
232
|
+
- with nobody: the tool refuses and sends nothing;
|
|
233
|
+
- a `PermissionError` from the client: a plain message, and no second call;
|
|
234
|
+
- a failing or erroring provider: a plain message without the provider's body or the request.
|
|
235
|
+
|
|
236
|
+
## Review checklist
|
|
237
|
+
|
|
238
|
+
- Each tool has a deliberate `delegation`: `"required"` for a person's own data or credentials.
|
|
239
|
+
- No person's UID, Secret name or Secret value comes from tool arguments, the prompt or history.
|
|
240
|
+
- No tool returns a credential or calls a platform path the model chooses.
|
|
241
|
+
- Secret values stay inside one call, in headers, never in results, logs, errors, URLs or caches.
|
|
242
|
+
- The naming convention says whose Secrets the tool uses, and the people sharing them know it.
|
|
243
|
+
- A refused delegated call is reported, never retried as the Agent.
|
|
244
|
+
- The Agent's workload holds no grants it does not need, and none on people's Secrets.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
api_version: "2.3.0"
|
|
2
|
+
name: metatables-api
|
|
3
|
+
resources:
|
|
4
|
+
- key: metatables
|
|
5
|
+
kind: fastapi
|
|
6
|
+
spec:
|
|
7
|
+
source_path: api/metatables/main.py
|
|
8
|
+
automatic_deployment: true
|
|
9
|
+
automatic_redeployment:
|
|
10
|
+
enabled: true
|
|
11
|
+
tag_regex: null
|
|
12
|
+
min_scale: 1
|
|
13
|
+
revision_retention_count: 3
|
|
14
|
+
# The Analyst's read tools, served at /mcp (ADR 0021).
|
|
15
|
+
mcp_enabled: true
|
|
16
|
+
access:
|
|
17
|
+
secrets:
|
|
18
|
+
- name: METATABLES_RUNTIME_DATABASE
|
|
19
|
+
level: view
|
|
20
|
+
|
|
21
|
+
- key: metatables-analyst-agent
|
|
22
|
+
kind: harness_agent
|
|
23
|
+
spec:
|
|
24
|
+
source_path: api/tau/main.py
|
|
25
|
+
llm_provider: openai
|
|
26
|
+
llm_model: gpt-5.6-luna
|
|
27
|
+
llm_thinking: medium
|
|
28
|
+
automatic_deployment: true
|
|
29
|
+
automatic_redeployment:
|
|
30
|
+
enabled: true
|
|
31
|
+
tag_regex: null
|
|
32
|
+
revision_retention_count: 3
|
|
33
|
+
cpu_request: "1"
|
|
34
|
+
memory_request: 2Gi
|
|
35
|
+
# Hosted tools come from the API's MCP endpoint (ADR 0021).
|
|
36
|
+
mcp_applications:
|
|
37
|
+
- resource: metatables
|
|
38
|
+
env_vars:
|
|
39
|
+
- name: TAU_EXCLUDE_BASE_TOOLS
|
|
40
|
+
value: "true"
|
|
41
|
+
- name: TAU_EXCLUDE_MAINSEQUENCE_MCP
|
|
42
|
+
value: "true"
|
|
43
|
+
# The Analyst reads only as the person it serves (ADR 0020); it holds no grants.
|
|
44
|
+
acts_for_requester: true
|
|
45
|
+
access:
|
|
46
|
+
branch: view
|
|
47
|
+
|
|
48
|
+
- key: migrate-system
|
|
49
|
+
kind: job
|
|
50
|
+
spec:
|
|
51
|
+
name: MetaTables system migrations
|
|
52
|
+
execution_path: jobs/migrate_system.py
|
|
53
|
+
cpu_request: "1"
|
|
54
|
+
memory_request: "1"
|
|
55
|
+
max_runtime_seconds: 1800
|
|
56
|
+
automatic_redeployment:
|
|
57
|
+
enabled: true
|
|
58
|
+
tag_regex: null
|
|
59
|
+
access:
|
|
60
|
+
secrets:
|
|
61
|
+
- name: METATABLES_RUNTIME_DATABASE
|
|
62
|
+
level: view
|
|
63
|
+
|
|
64
|
+
execution:
|
|
65
|
+
steps:
|
|
66
|
+
image:
|
|
67
|
+
prepare_image: metatables
|
|
68
|
+
|
|
69
|
+
agent_image:
|
|
70
|
+
prepare_image: metatables-analyst-agent
|
|
71
|
+
|
|
72
|
+
migrate:
|
|
73
|
+
run_job: migrate-system
|
|
74
|
+
image_from: image
|
|
75
|
+
needs: [image]
|
|
76
|
+
|
|
77
|
+
deploy_api:
|
|
78
|
+
deploy: metatables
|
|
79
|
+
image_from: image
|
|
80
|
+
needs: [migrate]
|
|
81
|
+
|
|
82
|
+
deploy_agent:
|
|
83
|
+
deploy: metatables-analyst-agent
|
|
84
|
+
image_from: agent_image
|
|
85
|
+
needs: [agent_image, deploy_api]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mainsequence-metatable
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.24
|
|
4
4
|
Summary: Main Sequence MetaTables Python client and standalone API
|
|
5
5
|
Author-email: Main Sequence GmbH <dev@main-sequence.io>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,7 +14,7 @@ Classifier: Operating System :: OS Independent
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: mainsequence<10,>=9.0.
|
|
17
|
+
Requires-Dist: mainsequence[mcp]<10,>=9.0.19
|
|
18
18
|
Requires-Dist: alembic<2,>=1.18
|
|
19
19
|
Requires-Dist: cachetools
|
|
20
20
|
Requires-Dist: cryptography<51,>=46
|
|
@@ -51,7 +51,7 @@ Requires-Dist: twine<7,>=6; extra == "dev"
|
|
|
51
51
|
Provides-Extra: docs
|
|
52
52
|
Requires-Dist: mkdocs<2,>=1.6; extra == "docs"
|
|
53
53
|
Provides-Extra: agent
|
|
54
|
-
Requires-Dist: ms-tau-sdk==
|
|
54
|
+
Requires-Dist: ms-tau-sdk==2.0.7; extra == "agent"
|
|
55
55
|
Provides-Extra: mysql
|
|
56
56
|
Requires-Dist: PyMySQL[rsa]<1.2,>=1.1.1; extra == "mysql"
|
|
57
57
|
Provides-Extra: mssql
|