mainsequence-metatable 0.1.23.dev36__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.
Files changed (573) hide show
  1. mainsequence_metatable-0.1.24/.agents/skills/analyze-with-sql/SKILL.md +23 -0
  2. mainsequence_metatable-0.1.24/.agents/skills/discover-tables/SKILL.md +24 -0
  3. mainsequence_metatable-0.1.24/.agents/skills/ms_tau_sdk/PINNED_FROM.txt +7 -0
  4. mainsequence_metatable-0.1.24/.agents/skills/ms_tau_sdk/tau_a2a_runtime_adapter/SKILL.md +110 -0
  5. mainsequence_metatable-0.1.24/.agents/skills/ms_tau_sdk/tau_local_development/SKILL.md +237 -0
  6. mainsequence_metatable-0.1.24/.agents/skills/ms_tau_sdk/tau_project_customization/SKILL.md +193 -0
  7. mainsequence_metatable-0.1.24/.agents/skills/ms_tau_sdk/tau_repository_integration/SKILL.md +130 -0
  8. mainsequence_metatable-0.1.24/.agents/skills/ms_tau_sdk/tau_security_and_access/SKILL.md +244 -0
  9. mainsequence_metatable-0.1.24/.mainsequence/workflows/metatables-api.yaml +85 -0
  10. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/MANIFEST.in +1 -1
  11. {mainsequence_metatable-0.1.23.dev36/src/mainsequence_metatable.egg-info → mainsequence_metatable-0.1.24}/PKG-INFO +4 -2
  12. mainsequence_metatable-0.1.24/docs/adr/agent/0019-metatables-analyst-agent.md +176 -0
  13. mainsequence_metatable-0.1.24/docs/adr/agent/0020-analyst-reads-as-its-requester.md +77 -0
  14. mainsequence_metatable-0.1.24/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md +50 -0
  15. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0002-application-administration-and-table-ownership.md +37 -0
  16. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0017-hosted-request-identity.md +22 -0
  17. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/index.md +4 -2
  18. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/api/authentication-and-errors.md +11 -9
  19. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/api/openapi.json +45 -2
  20. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/api/reference.md +1 -0
  21. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/installation-and-connection.md +5 -5
  22. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/contributing/releasing.md +11 -3
  23. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/contributing/testing.md +1 -1
  24. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/operations/hosted-runtime.md +7 -2
  25. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/security/index.md +16 -13
  26. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/security/ownership-and-sharing.md +40 -3
  27. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/mkdocs.yml +2 -0
  28. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/pyproject.toml +3 -2
  29. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/check_boundaries.py +3 -1
  30. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/check_docs.py +2 -1
  31. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24/src/mainsequence_metatable.egg-info}/PKG-INFO +4 -2
  32. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/SOURCES.txt +19 -1
  33. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/requires.txt +4 -1
  34. mainsequence_metatable-0.1.24/src/metatables/analysis.py +411 -0
  35. mainsequence_metatable-0.1.24/src/metatables/analyst/__init__.py +31 -0
  36. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/auth/boundary.py +36 -14
  37. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/main.py +4 -0
  38. mainsequence_metatable-0.1.24/src/metatables/api/app/mcp.py +114 -0
  39. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/security.py +56 -12
  40. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/runtime.py +7 -3
  41. mainsequence_metatable-0.1.24/src/metatables/api/backend/integrations/platform_principals.py +136 -0
  42. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/models.py +17 -2
  43. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/runtime_contract.py +2 -2
  44. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/sdk_compat.py +14 -0
  45. mainsequence_metatable-0.1.24/tests/analyst/test_agent_surface.py +112 -0
  46. mainsequence_metatable-0.1.24/tests/analyst/test_api_search.py +55 -0
  47. mainsequence_metatable-0.1.24/tests/analyst/test_mcp.py +50 -0
  48. mainsequence_metatable-0.1.24/tests/analyst/test_tools.py +160 -0
  49. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_local_mode.py +1 -1
  50. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_platform_fact_cache.py +41 -36
  51. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_request_identity.py +74 -9
  52. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_bootstrap.py +1 -1
  53. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_scaffold.py +2 -2
  54. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_selection.py +1 -1
  55. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_storage_binding.py +1 -1
  56. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/conftest.py +2 -0
  57. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/client_signatures.json +1 -1
  58. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/documentation/test_project_checks.py +18 -0
  59. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_run_logs.py +1 -1
  60. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_sdk_local_startup.py +1 -1
  61. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_sqlite_runtime.py +2 -3
  62. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_local_actor_membership.py +4 -6
  63. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_security_api.py +85 -2
  64. mainsequence_metatable-0.1.24/tests/permissions/test_workload_principals.py +151 -0
  65. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/uv.lock +568 -7
  66. mainsequence_metatable-0.1.23.dev36/.mainsequence/workflows/metatables-api.yaml +0 -40
  67. mainsequence_metatable-0.1.23.dev36/docs/adr/agent/0019-metatables-analyst-agent.md +0 -118
  68. mainsequence_metatable-0.1.23.dev36/src/metatables/api/backend/integrations/platform_principals.py +0 -36
  69. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-local-development/SKILL.md +0 -0
  70. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-meta-tables/SKILL.md +0 -0
  71. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-migrations/SKILL.md +0 -0
  72. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-table-discovery/SKILL.md +0 -0
  73. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-time-index-table-updates/SKILL.md +0 -0
  74. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/.agents/skills/client/metatables-upgrade-legacy-app/SKILL.md +0 -0
  75. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/LICENSE +0 -0
  76. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/README.md +0 -0
  77. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/alembic.ini +0 -0
  78. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/api/metatables/main.py +0 -0
  79. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/compose.database-tests.yml +0 -0
  80. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md +0 -0
  81. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0004-approved-application-migrations.md +0 -0
  82. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0005-run-logs-and-local-file-capture.md +0 -0
  83. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0006-historical-run-graphs.md +0 -0
  84. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0007-database-enforced-table-access.md +0 -0
  85. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0007-database-roles-and-privileges.svg +0 -0
  86. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0007-query-enforcement-path.svg +0 -0
  87. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0008-mysql-mssql-table-workflows.md +0 -0
  88. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0009-shared-credential-store.md +0 -0
  89. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0010-import-external-tables-and-views.md +0 -0
  90. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0012-bounded-data-transfer-and-safe-retries.md +0 -0
  91. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0013-application-owned-migrations.md +0 -0
  92. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0014-main-sequence-release-jobs-and-production-migrations.md +0 -0
  93. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0015-timescale-compression-and-retention-policies.md +0 -0
  94. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0016-impact-preflight.md +0 -0
  95. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0018-search-document-pipeline.svg +0 -0
  96. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/api/0018-table-search.md +0 -0
  97. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/client/0003-api-endpoint-resolution.md +0 -0
  98. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/adr/client/0011-cli-local-development-with-managed-admin.md +0 -0
  99. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/api/data-sources.md +0 -0
  100. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/api/overview.md +0 -0
  101. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/api/tables-and-migrations.md +0 -0
  102. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/api/time-index-and-updates.md +0 -0
  103. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/assets/branding/metatables.svg +0 -0
  104. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/assets/diagrams/local-client-experience.svg +0 -0
  105. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/bounded-transfers.md +0 -0
  106. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/build-an-updater.md +0 -0
  107. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/define-and-migrate-tables.md +0 -0
  108. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/deploy-application-migrations.md +0 -0
  109. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/local-storage.md +0 -0
  110. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/query-and-mutate.md +0 -0
  111. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/quickstart.md +0 -0
  112. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/read-existing-time-index-tables.md +0 -0
  113. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/register-existing-tables.md +0 -0
  114. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/tutorial.md +0 -0
  115. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/client/upgrade-legacy-app.md +0 -0
  116. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/concepts/architecture.md +0 -0
  117. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/concepts/data-sources.md +0 -0
  118. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/concepts/identity-and-scope.md +0 -0
  119. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/concepts/permissions-namespaces-labels.md +0 -0
  120. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/concepts/runs-and-execution-graphs.md +0 -0
  121. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/concepts/table-contracts-and-lifecycle.md +0 -0
  122. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/concepts/time-index-tables-and-updates.md +0 -0
  123. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/contributing/architecture-and-boundaries.md +0 -0
  124. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/contributing/database-backends.md +0 -0
  125. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/contributing/documentation.md +0 -0
  126. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/README.md +0 -0
  127. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/__init__.py +0 -0
  128. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/bounded_reader.py +0 -0
  129. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/README.md +0 -0
  130. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/mssql.json +0 -0
  131. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/mysql.json +0 -0
  132. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/postgresql.json +0 -0
  133. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/data_sources/register.py +0 -0
  134. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/external_table.py +0 -0
  135. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/README.md +0 -0
  136. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/__init__.py +0 -0
  137. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/__main__.py +0 -0
  138. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/__init__.py +0 -0
  139. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/env.py +0 -0
  140. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/script.py.mako +0 -0
  141. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  142. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/local_app/tables.py +0 -0
  143. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/query.py +0 -0
  144. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/quickstart.py +0 -0
  145. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/reader.py +0 -0
  146. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/scripts/__init__.py +0 -0
  147. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/scripts/setup_metatables.py +0 -0
  148. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tables.py +0 -0
  149. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/README.md +0 -0
  150. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/__init__.py +0 -0
  151. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/__main__.py +0 -0
  152. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/data/README.md +0 -0
  153. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  154. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/frames.py +0 -0
  155. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/__init__.py +0 -0
  156. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/env.py +0 -0
  157. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/registry.py +0 -0
  158. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/script.py.mako +0 -0
  159. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/__init__.py +0 -0
  160. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  161. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  162. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  163. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/operations.py +0 -0
  164. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/tables.py +0 -0
  165. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/tutorial/updaters.py +0 -0
  166. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/examples/updater.py +0 -0
  167. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/index.md +0 -0
  168. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/operations/catalog-migrations.md +0 -0
  169. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/operations/configuration.md +0 -0
  170. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/operations/local-runtime.md +0 -0
  171. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/operations/recovery-and-observability.md +0 -0
  172. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/operations/run-history.md +0 -0
  173. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/operations/run-logs.md +0 -0
  174. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/reference/capabilities.md +0 -0
  175. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/reference/cli.md +0 -0
  176. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/reference/python.md +0 -0
  177. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/docs/security/permissions.md +0 -0
  178. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/__init__.py +0 -0
  179. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/build_reference.py +0 -0
  180. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/check_client_api_coverage.py +0 -0
  181. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/check_distribution_sources.py +0 -0
  182. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/check_examples_debug.py +0 -0
  183. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/check_project.py +0 -0
  184. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/dev_release_version.py +0 -0
  185. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/test_databases.py +0 -0
  186. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/scripts/test_postgresql.py +0 -0
  187. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/setup.cfg +0 -0
  188. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/dependency_links.txt +0 -0
  189. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/entry_points.txt +0 -0
  190. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/mainsequence_metatable.egg-info/top_level.txt +0 -0
  191. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/__init__.py +0 -0
  192. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/_admin_source.json +0 -0
  193. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/_build.py +0 -0
  194. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/_skill_bundle.py +0 -0
  195. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/__init__.py +0 -0
  196. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/__init__.py +0 -0
  197. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/auth/__init__.py +0 -0
  198. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/auth/local_actor.py +0 -0
  199. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/bootstrap.py +0 -0
  200. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/configuration.py +0 -0
  201. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/credential_admin.py +0 -0
  202. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/development.py +0 -0
  203. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/development_client.py +0 -0
  204. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/error_logging.py +0 -0
  205. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/platform_cache.py +0 -0
  206. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/__init__.py +0 -0
  207. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/column_search.py +0 -0
  208. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/contract_validation.py +0 -0
  209. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/data_sources.py +0 -0
  210. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/managed_finalize.py +0 -0
  211. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/migration_connection.py +0 -0
  212. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/namespaces.py +0 -0
  213. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/run_logs.py +0 -0
  214. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/runtime_context.py +0 -0
  215. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/schema_graph.py +0 -0
  216. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_cascade.py +0 -0
  217. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_crud.py +0 -0
  218. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_delete.py +0 -0
  219. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_filter.py +0 -0
  220. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_import.py +0 -0
  221. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_introspection.py +0 -0
  222. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_patch.py +0 -0
  223. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_registration.py +0 -0
  224. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_response.py +0 -0
  225. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_search.py +0 -0
  226. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_search_document.py +0 -0
  227. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_sql.py +0 -0
  228. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/table_update_pipeline.py +0 -0
  229. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/time_index_delete.py +0 -0
  230. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/time_index_reads.py +0 -0
  231. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/time_index_stats.py +0 -0
  232. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/timescale_policies.py +0 -0
  233. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_batch.py +0 -0
  234. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_chunk_insert.py +0 -0
  235. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_constants.py +0 -0
  236. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_crud.py +0 -0
  237. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_details.py +0 -0
  238. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_graph.py +0 -0
  239. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_index_statistics.py +0 -0
  240. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_registration.py +0 -0
  241. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_runs.py +0 -0
  242. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/routes/update_statistics.py +0 -0
  243. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/runtime_control.py +0 -0
  244. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/runtime_database.py +0 -0
  245. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/source_passwords.py +0 -0
  246. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/app/transfer.py +0 -0
  247. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/__init__.py +0 -0
  248. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/__init__.py +0 -0
  249. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/access.py +0 -0
  250. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/__init__.py +0 -0
  251. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/__init__.py +0 -0
  252. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/postgresql.py +0 -0
  253. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/runtime.py +0 -0
  254. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/temporal.py +0 -0
  255. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/timescaledb.py +0 -0
  256. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/maintenance/validation.py +0 -0
  257. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_cascade_delete.py +0 -0
  258. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_connection.py +0 -0
  259. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_introspection.py +0 -0
  260. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_table_delete.py +0 -0
  261. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_tables.py +0 -0
  262. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index.py +0 -0
  263. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_delete.py +0 -0
  264. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_queries.py +0 -0
  265. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_stats.py +0 -0
  266. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/postgresql_time_index_write.py +0 -0
  267. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/source_validation.py +0 -0
  268. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/sqlite_connection.py +0 -0
  269. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/sqlite_introspection.py +0 -0
  270. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/adapters/table_cursor.py +0 -0
  271. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/catalog.py +0 -0
  272. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/catalog_ddl.py +0 -0
  273. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/catalog_types.py +0 -0
  274. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/contracts.py +0 -0
  275. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/hosted.py +0 -0
  276. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/hosted_access.py +0 -0
  277. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/migration_connection.py +0 -0
  278. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/native.py +0 -0
  279. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/operations.py +0 -0
  280. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/pages.py +0 -0
  281. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/postgresql_access.py +0 -0
  282. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/registry.py +0 -0
  283. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/relation_tables.py +0 -0
  284. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/relational.py +0 -0
  285. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/restricted_sql.py +0 -0
  286. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/sqlite_access.py +0 -0
  287. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/streaming.py +0 -0
  288. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/backends/timescale.py +0 -0
  289. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/__init__.py +0 -0
  290. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/relation_import.py +0 -0
  291. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/storage_layouts.py +0 -0
  292. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/table_contracts.py +0 -0
  293. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/contracts/values.py +0 -0
  294. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/__init__.py +0 -0
  295. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/catalog_rules.py +0 -0
  296. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/data_source_rules.py +0 -0
  297. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/index_statistics.py +0 -0
  298. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/label_rules.py +0 -0
  299. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/permission_rules.py +0 -0
  300. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/domain/update_constants.py +0 -0
  301. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/__init__.py +0 -0
  302. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/catalog_data_sources.py +0 -0
  303. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/credential_keys.py +0 -0
  304. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/credential_store.py +0 -0
  305. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/data_source_provider.py +0 -0
  306. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/local_credentials.py +0 -0
  307. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/local_workspace.py +0 -0
  308. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/run_logs.py +0 -0
  309. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/runtime_binding.py +0 -0
  310. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/runtime_data_sources.py +0 -0
  311. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/integrations/source_validation.py +0 -0
  312. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/__init__.py +0 -0
  313. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/env.py +0 -0
  314. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/script.py.mako +0 -0
  315. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0001_initial.py +0 -0
  316. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0002_security_model.py +0 -0
  317. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0003_run_log_capture.py +0 -0
  318. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0004_historical_run_graphs.py +0 -0
  319. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0005_database_access.py +0 -0
  320. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0006_local_credentials.py +0 -0
  321. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0007_external_relation_names.py +0 -0
  322. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0008_upload_receipts.py +0 -0
  323. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0009_timescale_policies.py +0 -0
  324. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0010_cascade_targets.py +0 -0
  325. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/0011_table_search.py +0 -0
  326. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/migrations/versions/__init__.py +0 -0
  327. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/__init__.py +0 -0
  328. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/bootstrap_migrations.py +0 -0
  329. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/catalog_schema.py +0 -0
  330. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/create_table.py +0 -0
  331. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/finalize_managed.py +0 -0
  332. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/import_relations.py +0 -0
  333. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/introspect_table.py +0 -0
  334. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/read_time_index.py +0 -0
  335. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/operations/register_catalog.py +0 -0
  336. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/__init__.py +0 -0
  337. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/cascade.py +0 -0
  338. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/catalog.py +0 -0
  339. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/database.py +0 -0
  340. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/grants.py +0 -0
  341. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/impact.py +0 -0
  342. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/labels.py +0 -0
  343. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/locking.py +0 -0
  344. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/models.py +0 -0
  345. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/physical_operations.py +0 -0
  346. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/projections.py +0 -0
  347. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/run_graphs.py +0 -0
  348. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/schema_graph.py +0 -0
  349. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/sqlite_types.py +0 -0
  350. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/table_body_filter.py +0 -0
  351. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/table_queries.py +0 -0
  352. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/table_response.py +0 -0
  353. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/update_graph.py +0 -0
  354. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/update_pipeline.py +0 -0
  355. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/updates.py +0 -0
  356. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/persistence/upload_receipts.py +0 -0
  357. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/presentation/data_source_summary.py +0 -0
  358. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/__init__.py +0 -0
  359. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/documents.py +0 -0
  360. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/embeddings.py +0 -0
  361. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/index.py +0 -0
  362. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/ranking.py +0 -0
  363. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/text.py +0 -0
  364. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/backend/search/worker.py +0 -0
  365. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/metatables/__init__.py +0 -0
  366. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/metatables/configuration.yaml +0 -0
  367. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/api/metatables/main.py +0 -0
  368. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/__init__.py +0 -0
  369. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/admin_install.py +0 -0
  370. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/app.py +0 -0
  371. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/filters.py +0 -0
  372. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/local.py +0 -0
  373. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/migrations.py +0 -0
  374. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/project.py +0 -0
  375. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/cli/skills.py +0 -0
  376. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/compiled_sql/__init__.py +0 -0
  377. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/compiled_sql/mssql.py +0 -0
  378. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/compiled_sql/v1.py +0 -0
  379. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/dtype_codec.py +0 -0
  380. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/endpoint.py +0 -0
  381. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/README.md +0 -0
  382. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/__init__.py +0 -0
  383. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/bounded_reader.py +0 -0
  384. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/README.md +0 -0
  385. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/mssql.json +0 -0
  386. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/mysql.json +0 -0
  387. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/postgresql.json +0 -0
  388. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/data_sources/register.py +0 -0
  389. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/external_table.py +0 -0
  390. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/README.md +0 -0
  391. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/__init__.py +0 -0
  392. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/__main__.py +0 -0
  393. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/__init__.py +0 -0
  394. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/env.py +0 -0
  395. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/script.py.mako +0 -0
  396. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/migrations/versions/metatables_local_example/0001.py +0 -0
  397. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/local_app/tables.py +0 -0
  398. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/query.py +0 -0
  399. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/quickstart.py +0 -0
  400. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/reader.py +0 -0
  401. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/scripts/__init__.py +0 -0
  402. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/scripts/setup_metatables.py +0 -0
  403. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tables.py +0 -0
  404. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/README.md +0 -0
  405. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/__init__.py +0 -0
  406. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/__main__.py +0 -0
  407. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/data/README.md +0 -0
  408. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/data/yahoo_spy_qqq_iwm_2026-06-15_2026-07-17.csv +0 -0
  409. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/frames.py +0 -0
  410. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/__init__.py +0 -0
  411. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/env.py +0 -0
  412. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/registry.py +0 -0
  413. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/script.py.mako +0 -0
  414. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/__init__.py +0 -0
  415. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0001_create_market_tutorial_tables.py +0 -0
  416. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/0002_create_rolling_volatility.py +0 -0
  417. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/migrations/versions/metatables_market_tutorial/__init__.py +0 -0
  418. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/operations.py +0 -0
  419. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/tables.py +0 -0
  420. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/tutorial/updaters.py +0 -0
  421. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/examples/updater.py +0 -0
  422. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/future_registry.py +0 -0
  423. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/hashing.py +0 -0
  424. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/instrumentation.py +0 -0
  425. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/local_connection.py +0 -0
  426. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/local_files.py +0 -0
  427. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/local_run_logs.py +0 -0
  428. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/log_contract.py +0 -0
  429. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/__init__.py +0 -0
  430. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/alembic.py +0 -0
  431. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/connection.py +0 -0
  432. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/env.py +0 -0
  433. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/provider.py +0 -0
  434. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/registry.py +0 -0
  435. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/runner.py +0 -0
  436. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/scaffold.py +0 -0
  437. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/sqlite.py +0 -0
  438. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/templates/__init__.py +0 -0
  439. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/templates/env.py.mako +0 -0
  440. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/templates/script.py.mako +0 -0
  441. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/migrations/tls.py +0 -0
  442. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/pydantic_metadata.py +0 -0
  443. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/run_logging.py +0 -0
  444. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/runtime.py +0 -0
  445. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/runtime_context.py +0 -0
  446. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/schema_names.py +0 -0
  447. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/sqlalchemy_contracts.py +0 -0
  448. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/storage_layout_contract.py +0 -0
  449. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/time_index_table_refs.py +0 -0
  450. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/transfer.py +0 -0
  451. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/transfer_contract.py +0 -0
  452. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/transport.py +0 -0
  453. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/update_configuration_contract.py +0 -0
  454. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/__init__.py +0 -0
  455. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/configuration.py +0 -0
  456. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/dependencies.py +0 -0
  457. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/managers.py +0 -0
  458. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/namespacing.py +0 -0
  459. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/runner.py +0 -0
  460. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/updaters.py +0 -0
  461. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/updaters/utils.py +0 -0
  462. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/src/metatables/upload.py +0 -0
  463. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_bootstrap_failure_cause.py +0 -0
  464. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_data_source_identity.py +0 -0
  465. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_development_client.py +0 -0
  466. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_hosted_environment_target.py +0 -0
  467. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_runtime_database.py +0 -0
  468. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/auth/test_source_passwords.py +0 -0
  469. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/catalog/test_catalog_foundation.py +0 -0
  470. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/catalog/test_contract_projection.py +0 -0
  471. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/catalog/test_database_config.py +0 -0
  472. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/catalog/test_index_statistics.py +0 -0
  473. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/catalog/test_migration.py +0 -0
  474. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/capabilities.json +0 -0
  475. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/database_operations.json +0 -0
  476. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/test_bounded_transfer.py +0 -0
  477. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/test_compiler_runtime_source.py +0 -0
  478. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/test_relation_batching.py +0 -0
  479. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/test_relation_import.py +0 -0
  480. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/test_runtime_contract_compat.py +0 -0
  481. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/test_storage_layouts.py +0 -0
  482. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/contracts/test_table_contracts.py +0 -0
  483. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/Dockerfile +0 -0
  484. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/Dockerfile.dockerignore +0 -0
  485. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/__init__.py +0 -0
  486. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/conftest.py +0 -0
  487. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/provider/__init__.py +0 -0
  488. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/provider/env.py +0 -0
  489. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/provider/versions/0001_measurement.py +0 -0
  490. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_api_contract.py +0 -0
  491. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_application_migration.py +0 -0
  492. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_bootstrap_recovery.py +0 -0
  493. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_catalog_contract.py +0 -0
  494. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_credential_catalog.py +0 -0
  495. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_physical_contract.py +0 -0
  496. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_relation_import.py +0 -0
  497. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_runtime_bootstrap.py +0 -0
  498. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_sql_security.py +0 -0
  499. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_backend/test_update_client.py +0 -0
  500. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_operations/test_physical_operations.py +0 -0
  501. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_operations/test_postgresql_operations.py +0 -0
  502. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/database_operations/test_runtime_and_temporal.py +0 -0
  503. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_admin_installation.py +0 -0
  504. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_api_endpoint.py +0 -0
  505. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_application_owned_migrations.py +0 -0
  506. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_catalog_outage.py +0 -0
  507. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_api_contract.py +0 -0
  508. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_api_coverage.py +0 -0
  509. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_migration_scaffold.py +0 -0
  510. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_migration_tls.py +0 -0
  511. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_package.py +0 -0
  512. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_signatures.py +0 -0
  513. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_client_value_behaviors.py +0 -0
  514. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_data_source_registry.py +0 -0
  515. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_local_actor_client_api.py +0 -0
  516. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_local_cli_workflow.py +0 -0
  517. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_local_client_selection.py +0 -0
  518. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_managed_finalize_client_api.py +0 -0
  519. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_namespaces_admin_http.py +0 -0
  520. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_public_imports.py +0 -0
  521. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_remaining_client_routes.py +0 -0
  522. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_run_graphs.py +0 -0
  523. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_runtime_upgrade.py +0 -0
  524. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_delete_client_api.py +0 -0
  525. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_filter_client_api.py +0 -0
  526. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_introspection_client_api.py +0 -0
  527. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_patch_client_api.py +0 -0
  528. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_search_api.py +0 -0
  529. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_search_document_api.py +0 -0
  530. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_search_scale.py +0 -0
  531. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_stats_api.py +0 -0
  532. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_update_pipeline.py +0 -0
  533. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_table_updates_http.py +0 -0
  534. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_time_index_delete_client_api.py +0 -0
  535. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_time_index_reads_client_api.py +0 -0
  536. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_timescale_policies_client_api.py +0 -0
  537. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_batch_client_api.py +0 -0
  538. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_chunk_insert_client_api.py +0 -0
  539. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_dependency_priority_client_api.py +0 -0
  540. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_index_statistics_client_api.py +0 -0
  541. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/e2e/test_update_registration_client_api.py +0 -0
  542. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/examples/test_documented_examples.py +0 -0
  543. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/examples/test_postgresql_examples.py +0 -0
  544. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/examples/test_setup_launch.py +0 -0
  545. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/examples/test_tutorial.py +0 -0
  546. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_credential_store.py +0 -0
  547. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_data_source_rules.py +0 -0
  548. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_local_data_sources.py +0 -0
  549. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_local_run_logs.py +0 -0
  550. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_connection.py +0 -0
  551. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_sql.py +0 -0
  552. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_tables.py +0 -0
  553. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_postgresql_time_index_queries.py +0 -0
  554. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_source_validation.py +0 -0
  555. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/integrations/test_sqlite_operations.py +0 -0
  556. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/labels/test_labels.py +0 -0
  557. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/operations/test_create_table_operation.py +0 -0
  558. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/operations/test_create_table_postgres.py +0 -0
  559. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/operations/test_physical_operation_journal.py +0 -0
  560. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/operations/test_register_catalog.py +0 -0
  561. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/operations/test_search_documents.py +0 -0
  562. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/operations/test_timescale_policies.py +0 -0
  563. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/packaging/test_client_skills.py +0 -0
  564. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/packaging/test_dev_release_version.py +0 -0
  565. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/packaging/test_distribution_sources.py +0 -0
  566. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/packaging/test_editable_build.py +0 -0
  567. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/packaging/test_installed_distribution.py +0 -0
  568. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_governed_sql_scope.py +0 -0
  569. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_migration_boundary.py +0 -0
  570. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_namespace_grants.py +0 -0
  571. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_table_body_filter.py +0 -0
  572. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_table_grants.py +0 -0
  573. {mainsequence_metatable-0.1.23.dev36 → mainsequence_metatable-0.1.24}/tests/permissions/test_table_queries.py +0 -0
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: analyze-with-sql
3
+ description: Answer a data question by running read-only SQL on MetaTables and reporting the result with the SQL that produced it. Use when someone asks for numbers, trends, comparisons or rows from MetaTables data.
4
+ ---
5
+
6
+ # Analyze with SQL
7
+
8
+ Input: a data question. Output: the answer, the SQL that ran and the tables it read.
9
+
10
+ 1. Find the tables with the `discover-tables` workflow first; never guess names.
11
+ 2. Write one query in the dialect of the table's `engine`, using its physical name.
12
+ Establish the grain and join keys, filter time-index tables on their time index
13
+ within the covered range, and aggregate or `LIMIT` the query.
14
+ 3. Run it with `run_sql`, passing the uid of a table it reads. All tables in a query
15
+ must share that table's DataSource. If the DataSource does not accept SQL, use
16
+ `preview_rows`.
17
+ 4. Fix failing SQL from the error message; never invent numbers.
18
+
19
+ Report what the data shows, what you infer and what remains unresolved, and say when
20
+ results were truncated. End with the SQL and the tables it read.
21
+
22
+ Side effects: none. The database enforces the grants of the person you are answering and
23
+ refuses writes.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: discover-tables
3
+ description: Find, list and explain the MetaTables that hold some data, with their columns, time coverage and join keys. Use when someone asks where data lives or what a table or column means.
4
+ ---
5
+
6
+ # Discover tables
7
+
8
+ Input: a question or topic, optionally a namespace. Output: the tables that fit, why
9
+ they fit, and how they join.
10
+
11
+ 1. Call `deep_search` with 3-6 short noun phrases that describe the data in different
12
+ words: the business concept, synonyms and likely column names. Search again with
13
+ more synonyms when phrases come back keyword-only.
14
+ 2. Read the described candidates: description, matched columns, time index and covered
15
+ range, and foreign keys. Use `describe_table` for any table you name that was not
16
+ described, including `related` tables that supply join keys.
17
+ 3. To show what data exists, use `list_namespaces` for the data areas and their table
18
+ counts, then `list_tables` for one namespace.
19
+
20
+ Answer with each table's identifier, namespace, uid and physical name, the columns that
21
+ matter, and the join keys between them. When candidates compete, say which you would use
22
+ and why. When nothing fits, say so.
23
+
24
+ Side effects: none; every tool reads with the access of the person you are answering.
@@ -0,0 +1,7 @@
1
+ schema=1
2
+ library_name=ms-tau-sdk
3
+ namespace=ms_tau_sdk
4
+ pinned_version=2.0.7
5
+ skills_path=src/ms_tau_sdk/agent_skills
6
+ skills=tau_a2a_runtime_adapter,tau_local_development,tau_project_customization,tau_repository_integration,tau_security_and_access
7
+ command=ms-tau skills sync --path .
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: tau-a2a-runtime-adapter
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
+ ---
5
+
6
+ # TAU A2A Runtime Adapter
7
+
8
+ Use this skill only for `ms-tau-sdk` host behavior. Read the platform-owned `a2a_communication`
9
+ skill first for canonical tool inputs, discovery, authorization, wire envelopes, task lifecycle,
10
+ idempotency, and retry semantics.
11
+
12
+ ## Ownership boundary
13
+
14
+ The platform owns:
15
+
16
+ - canonical `a2a.*` MCP schemas and platform discovery;
17
+ - AgentSession and AgentTask lifecycle;
18
+ - exact runtime-access authorization;
19
+ - caller-session proof validation; and
20
+ - direct-runtime protocol and response-kind semantics.
21
+
22
+ The SDK owns:
23
+
24
+ - projecting the authenticated Main Sequence MCP catalog into a TAU session;
25
+ - preserving each tool's canonical name and metadata through host normalization;
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;
38
+ - translating inbound A2A requests into the shared TAU runtime; and
39
+ - translating runtime events and results into validated A2A responses.
40
+
41
+ Do not hard-code behavior from a rendered host-tool name. Inspect the canonical tool record and its
42
+ `_meta` marker. The proof belongs under request `_meta` key
43
+ `mainsequence.ai/caller-session-proof/v1`; it is never a model-visible argument.
44
+
45
+ ## Managed runtime behavior
46
+
47
+ For a protected call, the active session must provide its exact UID, lease holder, and lease token.
48
+ The SDK attaches that proof only to the individual MCP call that requested it. It must not expose,
49
+ log, persist, or reuse the proof as general authorization.
50
+
51
+ ## Send Work To Another Agent
52
+
53
+ For a deployed Agent, use the projected `a2a.send_message` MCP operation. The platform creates or
54
+ resolves the target `AgentSession`, waits for its runtime to become ready, and dispatches the
55
+ message. For asynchronous work, use the returned Task handle with `a2a.wait_task`.
56
+
57
+ For local Tau development, start `ms-tau` and wait for its local `/ready` result. The public A2A
58
+ REST and JSON-RPC surfaces support Message and Task execution against the workspace-local SQLite
59
+ store, including streaming, list/get/cancel/subscribe, and continuation. An A2A protocol Task does
60
+ not require a platform AgentSession.
61
+
62
+ Outbound work to a deployed Agent still uses `a2a.send_message` through Main Sequence MCP. Message
63
+ and Task-with-polling flows use the authenticated user. `resume_caller` requires a registered
64
+ platform callback target and is therefore unavailable to an unregistered local process.
65
+
66
+ If proof is unavailable or stale, surface the platform error. Never fabricate an AgentSession,
67
+ lease, target identity, or Environment selection. The SDK does not reinterpret requester/responder
68
+ wire direction as caller identity.
69
+
70
+ ## Local-mode behavior
71
+
72
+ Local mode has no registered Agent or AgentSession and therefore cannot supply deployed caller
73
+ proof or appear in platform discovery. Public local Message and Task coordination is nevertheless
74
+ supported through local context identities and SQLite persistence. Only internal backend dispatch,
75
+ caller delivery, push notifications, platform discovery, and `resume_caller` retain the documented
76
+ capability boundary. Main Sequence MCP remains available for authenticated-user A2A semantics.
77
+
78
+ ## Diagnostics
79
+
80
+ When an A2A operation fails, identify the boundary before changing code:
81
+
82
+ 1. Catalog projection: canonical tool or `_meta` marker missing.
83
+ 2. Host adaptation: private proof not attached to the marked call.
84
+ 3. Platform authorization: proof rejected, target disallowed, or Environment mismatch.
85
+ 4. Runtime access: endpoint, token, or release bundle stale.
86
+ 5. Wire validation: request/response role, context, extension, or payload invalid.
87
+ 6. Task lifecycle: fence, lease, cancellation, event order, or retry semantics violated.
88
+
89
+ For Task lifecycle diagnosis, derive terminality from the Task state; never introduce a second
90
+ terminal flag. Normal execution errors must settle `failed` and streaming must emit that
91
+ authoritative terminal status update. `task_terminalization_unknown` means settlement durability
92
+ is unknown and belongs to the recovery owner. Local SQLite recovery is SDK-owned; managed dispatch
93
+ recovery is backend-owned. Do not retry a stale working attempt when project or MCP side effects may
94
+ have occurred unless a checkpoint or idempotency contract proves replay safe.
95
+
96
+ Treat Task Messages, Artifacts, Tau entries, Task events, and logs as separate ontologies. Use
97
+ `historyLength` only for the bounded durable Message tail. Omission means the SDK default of 100,
98
+ zero omits history without a tail read, and positive values return the latest bounded tail in
99
+ oldest-to-newest order. Public A2A v1 roles are `ROLE_USER` and `ROLE_AGENT`; persistence uses the
100
+ Main Sequence requester/responder direction values. Never expose internal Tau entries, reasoning,
101
+ tool traffic, prompts, or logs as public Task history.
102
+
103
+ Allocate the Tau turn UID before attempt start and pass that exact UID to the runtime prompt. A
104
+ Task attempt owns one turn and one half-open entry interval with a `committed` or `abandoned`
105
+ resolution. Do not correlate by timestamps. A status settlement is absent or one complete durable
106
+ responder Message; never send the removed ad hoc status-detail shape. Status events reference that
107
+ Message and consumers reload the Task snapshot.
108
+
109
+ Change this SDK only for catalog projection, proof attachment, runtime execution, or transport
110
+ translation defects. Platform contract changes are made in the platform, not in this SDK.
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: tau-local-development
3
+ description: Run and diagnose Main Sequence TAU SDK local mode, including live provider and MCP access, workspace SQLite persistence, and public local A2A Message and Task workflows.
4
+ ---
5
+
6
+ # TAU Local Development
7
+
8
+ Use this skill when developing a repository that embeds `ms-tau-sdk` without creating platform
9
+ Agent or AgentSession runtime records. Local mode changes where runtime state is stored. It is not
10
+ an offline, mock-provider, or mock-MCP mode.
11
+
12
+ ## Start the process
13
+
14
+ The user logs in once with a Main Sequence CLI that provides `mainsequence auth token`. Local mode
15
+ then asks that CLI for a short-lived access token, at startup and again when the token is about to
16
+ expire. No token is exported and none is written to the project `.env`. The SDK does not install or
17
+ import the `mainsequence` Python package and does not read the CLI's private credential store.
18
+
19
+ ```bash
20
+ mainsequence login # once; the session is kept by the CLI, not in .env
21
+
22
+ export MAINSEQUENCE_AUTH_MODE=jwt
23
+ export TAU_LOCAL_MODE=true
24
+ export TAU_LOCAL_PROVIDER="<provider>"
25
+ export TAU_LOCAL_MODEL="<model>"
26
+ # Optional:
27
+ export TAU_LOCAL_THINKING="<thinking-level>"
28
+
29
+ uv run ms-tau
30
+ ```
31
+
32
+ The SDK looks for the CLI in `MAINSEQUENCE_CLI`, then beside the Python interpreter that runs
33
+ `ms-tau`, then on `PATH`. Launchers and CI can export `MAINSEQUENCE_ACCESS_TOKEN` and
34
+ `MAINSEQUENCE_REFRESH_TOKEN` instead. With both set, the SDK uses that pair and never runs the
35
+ CLI. Do not add token lines to `.env`. A pair found there still works, but it is deprecated and
36
+ startup logs a warning. `mainsequence refresh-token` run in that directory removes the lines.
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
+
42
+ Set `MAINSEQUENCE_ENDPOINT` only for a non-default platform endpoint. The CLI session must be for
43
+ the same endpoint. Local mode binds to `127.0.0.1:8787` by default. Treat an explicit public bind
44
+ as privileged exposure: each accepted request can use the authenticated user's live Main Sequence
45
+ permissions.
46
+
47
+ Never place JWTs or provider credentials in source control, `.tau`, copied skills, command output,
48
+ or debugging artifacts. Do not run `mainsequence auth token` to read its output: it prints the
49
+ access token. The user JWT is sent only to Main Sequence. Main Sequence validates the
50
+ explicit `TAU_LOCAL_PROVIDER` and `TAU_LOCAL_MODEL`, returns provider-control evidence, and hydrates
51
+ the provider credential used for inference. Provider secrets are neither environment settings nor
52
+ local state.
53
+
54
+ ## Exact local/remote boundary
55
+
56
+ | Concern | Local-mode behavior |
57
+ | --- | --- |
58
+ | Agent or AgentSession registration | Never created or updated |
59
+ | Chat history, snapshots, leases, activity, and cancellation | Workspace SQLite |
60
+ | Public A2A Message and Task state | Workspace SQLite |
61
+ | Main Sequence authentication and token refresh | Remote. The token comes from the Main Sequence CLI session, or from an exported JWT pair |
62
+ | Provider authorization, hydration, and inference | Remote and real |
63
+ | Main Sequence MCP catalog and tool calls | Remote and real; platform mutations remain possible |
64
+ | Project instructions, skills, hooks, and extensions | Normal repository `.tau` composition |
65
+
66
+ The database defaults to `~/.tau/mainsequence/<workspace-hash>/runtime.sqlite3`; override its
67
+ parent only with `TAU_LOCAL_STATE_ROOT`. Local state is never uploaded or attached to a platform
68
+ AgentSession when local mode is disabled. Stop all processes for the workspace before moving or
69
+ deleting its workspace-hash directory.
70
+
71
+ Local operational events are also written as structured JSON Lines to
72
+ `~/.tau/mainsequence/<workspace-hash>/logs/tau.jsonl` (or beneath `TAU_LOCAL_STATE_ROOT`). The
73
+ file sink is mandatory in local mode even when console logging is enabled. Read the current file
74
+ and its five rotated backups when diagnosing startup, provider, MCP, A2A, or project-extension
75
+ failures. The SDK log does not capture arbitrary extension `print()` output; project-owned code
76
+ must use propagating Python logging and must not log secrets or prompt/tool payloads. A failure to
77
+ open the file stops startup; the logs are never uploaded to an AgentSession.
78
+
79
+ ## Public local A2A contract
80
+
81
+ An A2A protocol Task is local coordination state, not a platform `AgentTask`, and does not require
82
+ a platform AgentSession. Local mode supports:
83
+
84
+ - REST `POST /api/a2a/v1/message:send` and JSON-RPC `message/send` for Message or Task execution;
85
+ - REST `POST /api/a2a/v1/message:stream` and JSON-RPC `message/stream` for SSE Task execution;
86
+ - REST `GET /api/a2a/v1/tasks`, `GET /api/a2a/v1/tasks/{task_id}`,
87
+ `POST /api/a2a/v1/tasks/{task_id}:cancel`, and
88
+ `GET /api/a2a/v1/tasks/{task_id}:subscribe`;
89
+ - JSON-RPC `tasks/list`, `tasks/get`, `tasks/cancel`, and `tasks/subscribe`;
90
+ - subscription resumption with `afterSequence`;
91
+ - continuation of a Task in `input_required` or `auth_required` by sending a new Message carrying
92
+ that `taskId`; and
93
+ - Task status, messages, artifacts, attempts, and events surviving process restart, with the SDK
94
+ rescheduling safe unclaimed work and terminalizing stale uncertain work rather than replaying
95
+ possible side effects.
96
+
97
+ For a chat UI over `POST /api/chat`, do not read `runtime.sqlite3` or keep a browser-only
98
+ transcript either. List sessions with `GET /api/local/v1/chat-sessions?limit=<n>&cursor=<opaque>`
99
+ and hydrate one with `GET /api/local/v1/chat-sessions/{sessionUid}/history`. The history has the
100
+ platform's `GET /api/v1/agent-sessions/{uid}/history/` shape, including reasoning, tool calls with
101
+ results, and a running turn in `inProgressMessage`, so one reader serves local and deployed
102
+ Agents. Reuse the listed `sessionUid` in `POST /api/chat`. A local chat turn keeps running when
103
+ the client disconnects or reloads; stop it only with `POST /api/chat/session/cancel`, and queue a
104
+ new message while a session is `working` (`POST /api/chat` returns 409 `session_busy`). Title the
105
+ UI from `GET /api/local/v1/agent`, which reads the workspace's `.agents/agent_card.json`.
106
+
107
+ For the default direct Message flow, do not read `runtime.sqlite3` or keep a browser-only source of
108
+ truth. Discover conversations with `GET /api/local/v1/conversations?limit=<n>&cursor=<opaque>` and
109
+ hydrate the latest bounded Message tail with
110
+ `GET /api/local/v1/conversations/{contextId}/messages?limit=<n>&beforeSequence=<n>`. Reuse the
111
+ listed canonical `contextId` in `message:send`. These are Main Sequence local SDK extensions, not
112
+ A2A v1 methods. They contain only persisted public `ROLE_USER`/`ROLE_AGENT` Messages and are
113
+ separate from `Task.history`, Tau entries, tools, reasoning, events, and logs.
114
+
115
+ To request a Task from `message:send`, send the response-kind extension header
116
+ `A2A-Extensions: https://mainsequence.ai/a2a/extensions/response-kind/v1` together with
117
+ `configuration.responseKind: "task"`. Omit that selection for the default completed Message
118
+ response. `message:stream` is always Task-oriented and does not accept `responseKind` or
119
+ `returnImmediately`.
120
+
121
+ Task terminality is derived only from its A2A state. `completed`, `failed`, `canceled`, and
122
+ `rejected` are terminal; `input_required` and `auth_required` are resumable. A normal execution
123
+ failure produces a durable failed Task and a standard responder `status.message`. A
124
+ `task_terminalization_unknown` stream error means the terminal write itself could not be proven;
125
+ retrieve or subscribe to the Task while recovery resolves it. Never treat an HTTP disconnect or
126
+ bounded wait expiry as Task cancellation.
127
+
128
+ Task responses include a bounded Message tail by default. Set `configuration.historyLength` on
129
+ Message send/stream or `historyLength` on Task get/list: zero omits history and performs no tail
130
+ read, while a positive value returns the latest Messages oldest-to-newest, capped at 100. History
131
+ contains requester and deliberately durable responder/status Messages only. Final output remains
132
+ under `artifacts`; Tau entries, tool activity, events, and logs never become public history. Public
133
+ roles are `ROLE_USER`/`ROLE_AGENT`; the local SQLite binding stores requester/responder directions.
134
+
135
+ Each local Task attempt reserves one immutable Tau turn. Its entries share that turn UID and remain
136
+ inside the recorded half-open sequence interval. Completed and interrupted settlement requires a
137
+ committed turn; failed, rejected, or canceled settlement can abandon a pending turn, after which
138
+ late append or commit is rejected. An unresolved Task-owned turn prevents lease replacement until
139
+ the local Task reconciler records its recovery outcome. Ordinary chat/direct-Message turns have no
140
+ Task owner and retain normal lease cleanup.
141
+
142
+ After restart, the local reconciler schedules an unclaimed `submitted` Task from its persisted
143
+ request. It does not blindly rerun a stale `working` Task: once the old lease and stale interval
144
+ expire, an attempt without replay-safe checkpoint evidence becomes failed with
145
+ `ambiguous_execution_outcome`. Inspect the failure code, attempt, recovery owner, and correlation ID
146
+ in Tau Board and the structured log.
147
+
148
+ Incoming local A2A requests do not need managed-gateway `X-Caller-*` headers. TAU assigns
149
+ workspace-local provenance and maps each supplied `contextId` into the same workspace-scoped local
150
+ session namespace used by chat. A supplied `taskId` remains the public Task identifier. The local
151
+ `GET /api/a2a/v1/extendedAgentCard` response advertises Message, Task, and streaming support while
152
+ disabling push notifications.
153
+
154
+ The following remain unavailable because they require registered platform routing or callback
155
+ identity:
156
+
157
+ - platform discovery of the unregistered local process;
158
+ - `/internal/a2a` backend dispatch and caller-delivery hooks;
159
+ - A2A push-notification configuration; and
160
+ - `resume_caller` Task completion.
161
+
162
+ These are the only A2A-adjacent capability boundaries; public local Message and Task requests must not return
163
+ `local_mode_capability_unsupported`.
164
+
165
+ Each standard A2A Task carries the time its current state was recorded in
166
+ `task.status.timestamp`. For `TASK_STATE_COMPLETED`, that is the completion time. The A2A Task
167
+ object has no standard top-level creation timestamp; Tau persists `created_at` in local SQLite,
168
+ and Tau Board joins that local row when it displays the A2A Task list. Do not invent extra A2A
169
+ wire fields for Board presentation.
170
+
171
+ ## Inspect and test with Tau Board
172
+
173
+ Install `ms-tau-sdk[tau-board]`, run `tau-board` as a separate process, and connect it to the
174
+ loopback local-mode Tau endpoint. The Agent tab requires an already loaded session: first send a
175
+ Chat or A2A request, then select that session. It shows the effective Agent Card, loaded tools by
176
+ source, project extension diagnostics, and registered project extension entry source.
177
+
178
+ Only project-extension tools with an object JSON Schema are runnable in the workbench. Select the
179
+ tool, fill its generated form or raw JSON, validate the exact canonical arguments, acknowledge
180
+ the side-effect warning, then run it. Validation never calls the tool. Run invokes the exact
181
+ loaded tool without a model call and without adding chat entries, A2A Tasks, or artifacts. The
182
+ tool still has the Tau process's real filesystem, network, environment, and credential access;
183
+ there is no automatic rollback. A busy session, stale catalog, expired confirmation, non-project
184
+ tool, oversized output, timeout, or cancellation must fail explicitly.
185
+
186
+ The Tasks tab is the primary inspection surface: Overview states the lifecycle, Conversation shows
187
+ durable Messages, Result shows complete Artifacts, Execution uses exact attempt/turn correlation,
188
+ and Technical retains mutation events and logs. **Open in A2A Console** is an action shortcut, not
189
+ the Task explanation. Many `output_updated` records represent revisions of one Artifact and must
190
+ not be interpreted as many agent responses.
191
+
192
+ ## Outbound A2A through Main Sequence MCP
193
+
194
+ Keep the projected `a2a.send_message` tool available. A local agent may send a Message or create a
195
+ Task for a deployed Agent using authenticated-user semantics. For a Task, use
196
+ `completion_policy: "poll"` and use the returned Task handle with `a2a.wait_task`. Local mode rejects
197
+ `completion_policy: "resume_caller"` because it has no registered callback target and never
198
+ fabricates caller-session proof. Other live MCP tools remain available and can read or mutate real
199
+ platform resources under the authenticated user's permissions.
200
+
201
+ ## Verify the runtime
202
+
203
+ Check the process in this order:
204
+
205
+ 1. `GET /health` reports `mode: local`, safe composition diagnostics, and
206
+ `mainsequence_auth_source`: `cli`, `environment`, or `env_file`.
207
+ 2. `GET /ready` confirms user authentication, provider control, local storage, and MCP readiness.
208
+ 3. `GET /version` reports the expected installed SDK release.
209
+ 4. A chat request without `sessionUid` returns an effective identifier in
210
+ `X-Agent-Session-Uid`; reuse it to resume the conversation.
211
+ 5. A REST `POST /api/a2a/v1/message:send` without gateway caller headers returns a Message.
212
+ 6. Repeat it with the response-kind extension and `configuration.responseKind: "task"`; verify
213
+ the Task through `GET /api/a2a/v1/tasks/{task_id}` and after a process restart.
214
+ 7. Verify `POST /api/a2a/v1/message:stream`, cancellation, subscription, and continuation for the
215
+ project workflow being developed.
216
+
217
+ ## Classify failures
218
+
219
+ - Startup setting failure: inspect the exact missing or conflicting environment variable.
220
+ - Authentication failure: read the error, which names its remedy. The user runs
221
+ `mainsequence login`, upgrades a Main Sequence CLI that is too old for `auth token`, sets
222
+ `MAINSEQUENCE_CLI`, or provides the JWT pair. With an exported pair, export a fresh one. Do not
223
+ substitute a runtime credential in local mode.
224
+ - Provider/model rejection: verify the exact configured names against the authenticated live
225
+ catalog; do not silently select a different model.
226
+ - OpenAI-compatible transport failure: open the Task's failure incident in Tau Board. Use its
227
+ concrete HTTPX type, transport phase, attempt count, provider duration, failure UID, and bounded
228
+ traceback frames; expand raw JSON only for additional correlation fields. Do not infer a timeout
229
+ when the dependency explicitly reports that its cause was unavailable.
230
+ - MCP failure: distinguish catalog/connectivity failure from server-side authorization. A tool
231
+ genuinely requiring caller AgentSession proof must fail explicitly without causing registration.
232
+ - Session conflict: keep one provider/model/thinking selection for an existing local session or
233
+ intentionally use a new local state namespace.
234
+ - Public local A2A capability error: treat it as a stale or defective SDK. Capability errors are
235
+ valid only at the unsupported routing/callback boundaries listed above.
236
+ - Project behavior failure: inspect `.tau` resources and extension diagnostics using
237
+ `tau-project-customization`.
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: tau-project-customization
3
+ description: Customize project-owned TAU instructions, skills, prompts, hooks, and extension tools while preserving SDK-owned transport and protocol invariants.
4
+ ---
5
+
6
+ # TAU Project Customization
7
+
8
+ Use this skill when changing the effective agent behavior of a repository that runs
9
+ `ms-tau-sdk`. The project already executes arbitrary code in the runtime process, so the project
10
+ owns and is responsible for its TAU resources and extensions.
11
+
12
+ ## One configuration boundary
13
+
14
+ The workspace `.tau/` directory is the project behavior boundary:
15
+
16
+ ```text
17
+ .tau/
18
+ ├── SYSTEM.md
19
+ ├── prompts/
20
+ ├── skills/
21
+ └── extensions/
22
+ ```
23
+
24
+ Creating `.tau/SYSTEM.md` replaces the packaged default general system instructions. There is no
25
+ second SDK-specific prompt override or companion append file. Other resources follow the TAU
26
+ version pinned by the installed SDK.
27
+
28
+ `.agents/skills/ms_tau_sdk/` is different: it contains managed development instructions for coding
29
+ agents working on the repository. It is not loaded as the runtime's `.tau` behavior and must not be
30
+ used as application configuration.
31
+
32
+ ## Extension ownership
33
+
34
+ Project extensions belong under `.tau/extensions/` and may add tools, hooks, and lifecycle
35
+ behavior. Keep reusable business logic in the normal application package and make extension
36
+ adapters thin and structured.
37
+
38
+ The project author owns:
39
+
40
+ - extension source, behavior, and tests;
41
+ - Python and operating-system dependencies;
42
+ - outbound network access and third-party credentials;
43
+ - compatibility with the pinned SDK and TAU versions; and
44
+ - reload, cancellation, and shutdown behavior.
45
+
46
+ The SDK does not sandbox these extensions. Web, fetch, search, browser, video, and other optional
47
+ tools are project choices and are not part of the base SDK.
48
+
49
+ ## Runtime tool composition
50
+
51
+ Two independent process settings select the host-provided tools. Both default to `false`:
52
+
53
+ | Setting | Effect when `true` |
54
+ | --- | --- |
55
+ | `TAU_EXCLUDE_BASE_TOOLS` | Replace Tau's `read`, `write`, `edit`, and `bash` with a skill-scoped `read`. |
56
+ | `TAU_EXCLUDE_MAINSEQUENCE_MCP` | Skip Main Sequence MCP connection, tools, resources, and resource prompt. |
57
+
58
+ Set them in `harness_agent.spec.env_vars` in a managed repository workflow, in the process
59
+ environment for local `ms-tau`, or through explicit `TauSDKSettings` fields in a Python host. They
60
+ apply to all sessions in that process; neither Agent Card skills nor prompt text removes tools.
61
+
62
+ The accepted, pending job-hosted batch entry point uses these same two settings. It must not
63
+ start Main Sequence MCP or add coding tools when the corresponding source is excluded. The table
64
+ below describes the currently implemented service and local modes; batch behavior for A2A-only
65
+ Task controls requires an actual Task context and is specified by ADR 0015.
66
+
67
+ | Exclude base tools | Exclude Main Sequence MCP | Model-facing sources |
68
+ | --- | --- | --- |
69
+ | `false` | `false` | Coding tools, Main Sequence MCP, project extension tools, A2A Task controls. |
70
+ | `true` | `false` | Skill-scoped `read`, Main Sequence MCP, project extension tools, A2A Task controls. |
71
+ | `false` | `true` | Coding tools, project extension tools, A2A Task controls. |
72
+ | `true` | `true` | Skill-scoped `read`, project extension tools, and A2A Task controls. |
73
+
74
+ The A2A Task controls are `task_request_input` and `task_request_authorization`. They remain
75
+ available in every mode for the agent's own Task; extensions must not register those names.
76
+ Register project tools under `.tau/extensions/` and verify the effective catalog after loading.
77
+ With base tools excluded, the skill-scoped `read` keeps `.tau/skills/` available: it opens a
78
+ discovered skill's `SKILL.md` and the files in its directory, such as `references/*.md`, and
79
+ rejects every other path, including symlinks that resolve outside the skill. Tau lists the skills
80
+ in the system prompt because a tool named `read` exists. Extensions must not register `read` in
81
+ this mode.
82
+ Excluding coding tools does not sandbox extension Python code.
83
+
84
+ ## Invariants extensions must not replace
85
+
86
+ Extensions may change effective agent capabilities, but they must not replace or bypass:
87
+
88
+ - Main Sequence runtime or user authentication;
89
+ - provider-control evidence and credential hydration;
90
+ - caller identity, the turn's requester, and active-session proof;
91
+ - persistence ordering, leases, cancellation, or task settlement;
92
+ - secret redaction and payload limits; or
93
+ - HTTP, SSE, Responses, and A2A wire validation.
94
+
95
+ When Main Sequence MCP is enabled, use its canonical operations for live platform state. Project
96
+ tools do not grant new platform permissions merely because they run inside TAU.
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
+
181
+ ## Validation
182
+
183
+ Verify each project-owned capability through its observable interface and focused tests. Check
184
+ that documented tool names and schemas match the loaded catalog, lifecycle hooks clean up their
185
+ resources, and health diagnostics report extension load errors without exposing prompt content or
186
+ secrets.
187
+
188
+ For interactive local verification, start Tau in local mode, load a session through Chat or A2A,
189
+ then open Tau Board's Agent tab. Inspect the effective tool category, JSON Schema, extension entry
190
+ source, and diagnostics. For a project-owned tool, fill the generated form or raw JSON, validate
191
+ the canonical arguments, explicitly acknowledge the side-effect warning, and run it. This invokes
192
+ the exact loaded tool without a model turn or conversation/Task-history entry. It is not a sandbox:
193
+ filesystem, network, credential, and external-system side effects are the project's responsibility.