mainsequence-metatable 0.1.26.dev43__py3-none-any.whl → 0.1.27.dev45__py3-none-any.whl

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 (16) hide show
  1. {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/METADATA +1 -1
  2. {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/RECORD +16 -16
  3. metatables/_api_workflow.yaml +5 -1
  4. metatables/_client_skills/metatables-local-development/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
  5. metatables/_client_skills/metatables-meta-tables/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
  6. metatables/_client_skills/metatables-migrations/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
  7. metatables/_client_skills/metatables-table-discovery/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
  8. metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
  9. metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
  10. metatables/api/app/routes/runtime_context.py +29 -1
  11. metatables/api/app/runtime.py +3 -1
  12. metatables/runtime_contract.py +9 -0
  13. {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/WHEEL +0 -0
  14. {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/entry_points.txt +0 -0
  15. {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/licenses/LICENSE +0 -0
  16. {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence-metatable
3
- Version: 0.1.26.dev43
3
+ Version: 0.1.27.dev45
4
4
  Summary: Main Sequence MetaTables Python client and standalone API
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: MIT
@@ -1,7 +1,7 @@
1
- mainsequence_metatable-0.1.26.dev43.dist-info/licenses/LICENSE,sha256=b6Ecsk8wjsEby3lbSzdljR6hHiFGHBizt9iWV2p1c_I,1074
1
+ mainsequence_metatable-0.1.27.dev45.dist-info/licenses/LICENSE,sha256=b6Ecsk8wjsEby3lbSzdljR6hHiFGHBizt9iWV2p1c_I,1074
2
2
  metatables/__init__.py,sha256=O9jlzG1beeYWRmjR5dkh-DWb9K4_94_QB2jIS8uvWqo,7986
3
3
  metatables/_admin_source.json,sha256=G75Ymua6ZfLmBclOz4pWKWl6d7lb-Z2gT0zsB7Zdj9Y,203
4
- metatables/_api_workflow.yaml,sha256=ifywENtZt7tux9mov-s6Ml5nVZH6jexGhlvzDV1MbUo,2095
4
+ metatables/_api_workflow.yaml,sha256=BqK4ZHivaXotxVcozHDu0DRtphorM0J85G_8sWz8_bE,2259
5
5
  metatables/_build.py,sha256=e5vYyyvmnv0JEn9A1-sGAV1RAbbibgJ-wV2pAKddIBI,1639
6
6
  metatables/_skill_bundle.py,sha256=ZOT_5sN9eNkfJi-Pm3leKtqNL68FIQpeJ5jP1Z5l8YQ,2265
7
7
  metatables/analysis.py,sha256=6n_1bvJtyZGqQjooMazwwzimdArnZWeXBOPT0cpFk9k,16837
@@ -19,7 +19,7 @@ metatables/pydantic_metadata.py,sha256=8MkEV9dR8OSOoJWAVQCRdjbf_4wn8klw4nAcENfFA
19
19
  metatables/run_logging.py,sha256=4v06wrwTiiQuXj-BLqfmVgUS2REgkWLPbBlwIAtAt8s,6967
20
20
  metatables/runtime.py,sha256=qhl9AaXXcpNEgRmHRpne0isT7Inu7TOEy-65xOAAqRQ,1670
21
21
  metatables/runtime_context.py,sha256=-Vq1whAoR0vrDDbO73kdgZsZQambwIf6OxJn7ToREe4,1105
22
- metatables/runtime_contract.py,sha256=Ee_947bU34XHLUfn6C5RzqXC4omI2JI_1GjJmfo9v3A,4151
22
+ metatables/runtime_contract.py,sha256=bt0MXUSVxEIz3Wptws0VGMYzMUNGTnhgFljfTaJV9Xg,4498
23
23
  metatables/schema_names.py,sha256=J-75kxyjkCkml5vtLtCGxL7yDZIVAmBCV7yIhA4EQ5Q,9736
24
24
  metatables/sdk_compat.py,sha256=xjeKtCXOdjnO7bye698PiiNX1s4NzVQ4dLErqfeRZ4g,3367
25
25
  metatables/sqlalchemy_contracts.py,sha256=WmZd0Re0EsRZbyJpLgYhmmUBe6XDyXkPtSIXlovqLmA,62651
@@ -32,7 +32,7 @@ metatables/update_configuration_contract.py,sha256=DqDUhcyZne5XsIhuaPUZRd446LCIw
32
32
  metatables/upload.py,sha256=CD7K9fj_-tBLauYLBsfMXfbIYBZNI2dmmRZNj_5yFnA,4820
33
33
  metatables/_client_skills/metatables-local-development/SKILL.md,sha256=-YDa8xoh7LgJWBGUW5C05DnBgV_bLVVNCgfy5EmK_eI,10680
34
34
  metatables/_client_skills/metatables-local-development/references/docs/adr/index.md,sha256=gm5Q8asOMXQQ1FbzAXnD7we4e0cO51bkaesU9VmNn4k,7878
35
- metatables/_client_skills/metatables-local-development/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=nI_-Yk7ciOYILK8wUJmGvrl40x5CrlwpBAno0bd8dXE,9797
35
+ metatables/_client_skills/metatables-local-development/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=PU3UbKXoRYtzPcawPXaHpGxSvMQQNWuWwL-qhsYhJ1I,10506
36
36
  metatables/_client_skills/metatables-local-development/references/docs/adr/agent/0020-analyst-reads-as-its-requester.md,sha256=OtShJBGjDI0OgdRhvbz8eLl2_eZIzYpV0Y4V2iSUx3I,5442
37
37
  metatables/_client_skills/metatables-local-development/references/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md,sha256=yo91GLlLgNkvEcfmgYXZRZBp5FNWOo3RZdfPb2XBuIs,3206
38
38
  metatables/_client_skills/metatables-local-development/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md,sha256=Mznn086kxNIYF4qWc8nfFhkc7KA4Hmcil9sS7QMjGgY,49019
@@ -126,7 +126,7 @@ metatables/_client_skills/metatables-local-development/references/src/metatables
126
126
  metatables/_client_skills/metatables-local-development/references/src/metatables/examples/local_app/migrations/__init__.py,sha256=qDVwyYjauptlOM49Skpff-Z6wHj7qEJuGjuY6njs7aI,973
127
127
  metatables/_client_skills/metatables-meta-tables/SKILL.md,sha256=Kx0g4wJaUrRbITDw5IiU4CU7ikkhoXPIsa0ddF2-5v4,10370
128
128
  metatables/_client_skills/metatables-meta-tables/references/docs/adr/index.md,sha256=gm5Q8asOMXQQ1FbzAXnD7we4e0cO51bkaesU9VmNn4k,7878
129
- metatables/_client_skills/metatables-meta-tables/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=nI_-Yk7ciOYILK8wUJmGvrl40x5CrlwpBAno0bd8dXE,9797
129
+ metatables/_client_skills/metatables-meta-tables/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=PU3UbKXoRYtzPcawPXaHpGxSvMQQNWuWwL-qhsYhJ1I,10506
130
130
  metatables/_client_skills/metatables-meta-tables/references/docs/adr/agent/0020-analyst-reads-as-its-requester.md,sha256=OtShJBGjDI0OgdRhvbz8eLl2_eZIzYpV0Y4V2iSUx3I,5442
131
131
  metatables/_client_skills/metatables-meta-tables/references/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md,sha256=yo91GLlLgNkvEcfmgYXZRZBp5FNWOo3RZdfPb2XBuIs,3206
132
132
  metatables/_client_skills/metatables-meta-tables/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md,sha256=Mznn086kxNIYF4qWc8nfFhkc7KA4Hmcil9sS7QMjGgY,49019
@@ -221,7 +221,7 @@ metatables/_client_skills/metatables-meta-tables/references/src/metatables/examp
221
221
  metatables/_client_skills/metatables-meta-tables/references/src/metatables/examples/tables.py,sha256=jozAx69ZqkQ_pyuOmmuL5i76WzSHM60boFqESKn-iCY,2360
222
222
  metatables/_client_skills/metatables-migrations/SKILL.md,sha256=3beA5MSr_Mz-x4Al5cCwUKbDh_WUPl1t0HwOmQ7nbb4,11720
223
223
  metatables/_client_skills/metatables-migrations/references/docs/adr/index.md,sha256=gm5Q8asOMXQQ1FbzAXnD7we4e0cO51bkaesU9VmNn4k,7878
224
- metatables/_client_skills/metatables-migrations/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=nI_-Yk7ciOYILK8wUJmGvrl40x5CrlwpBAno0bd8dXE,9797
224
+ metatables/_client_skills/metatables-migrations/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=PU3UbKXoRYtzPcawPXaHpGxSvMQQNWuWwL-qhsYhJ1I,10506
225
225
  metatables/_client_skills/metatables-migrations/references/docs/adr/agent/0020-analyst-reads-as-its-requester.md,sha256=OtShJBGjDI0OgdRhvbz8eLl2_eZIzYpV0Y4V2iSUx3I,5442
226
226
  metatables/_client_skills/metatables-migrations/references/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md,sha256=yo91GLlLgNkvEcfmgYXZRZBp5FNWOo3RZdfPb2XBuIs,3206
227
227
  metatables/_client_skills/metatables-migrations/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md,sha256=Mznn086kxNIYF4qWc8nfFhkc7KA4Hmcil9sS7QMjGgY,49019
@@ -315,7 +315,7 @@ metatables/_client_skills/metatables-migrations/references/src/metatables/exampl
315
315
  metatables/_client_skills/metatables-migrations/references/src/metatables/examples/scripts/setup_metatables.py,sha256=F2i1wryU9yrp06EB3NeJtqFEh7f-XTi1JkezZ3rtBUk,1217
316
316
  metatables/_client_skills/metatables-table-discovery/SKILL.md,sha256=M2-ZJzTRIMK4iLmoGcAj-B_scWtEIAcHtjffCIo2Yn0,11077
317
317
  metatables/_client_skills/metatables-table-discovery/references/docs/adr/index.md,sha256=gm5Q8asOMXQQ1FbzAXnD7we4e0cO51bkaesU9VmNn4k,7878
318
- metatables/_client_skills/metatables-table-discovery/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=nI_-Yk7ciOYILK8wUJmGvrl40x5CrlwpBAno0bd8dXE,9797
318
+ metatables/_client_skills/metatables-table-discovery/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=PU3UbKXoRYtzPcawPXaHpGxSvMQQNWuWwL-qhsYhJ1I,10506
319
319
  metatables/_client_skills/metatables-table-discovery/references/docs/adr/agent/0020-analyst-reads-as-its-requester.md,sha256=OtShJBGjDI0OgdRhvbz8eLl2_eZIzYpV0Y4V2iSUx3I,5442
320
320
  metatables/_client_skills/metatables-table-discovery/references/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md,sha256=yo91GLlLgNkvEcfmgYXZRZBp5FNWOo3RZdfPb2XBuIs,3206
321
321
  metatables/_client_skills/metatables-table-discovery/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md,sha256=Mznn086kxNIYF4qWc8nfFhkc7KA4Hmcil9sS7QMjGgY,49019
@@ -406,7 +406,7 @@ metatables/_client_skills/metatables-table-discovery/references/docs/security/ow
406
406
  metatables/_client_skills/metatables-table-discovery/references/docs/security/permissions.md,sha256=mM9Js0SX_1FA01Pvdde-eUQ6yoE87BS_hauYvPwQ4AA,8834
407
407
  metatables/_client_skills/metatables-time-index-table-updates/SKILL.md,sha256=8N1pIJ7n0X3wWWX_wU5SSCyylvNseu6kEOUu8j5YCEs,7029
408
408
  metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/index.md,sha256=gm5Q8asOMXQQ1FbzAXnD7we4e0cO51bkaesU9VmNn4k,7878
409
- metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=nI_-Yk7ciOYILK8wUJmGvrl40x5CrlwpBAno0bd8dXE,9797
409
+ metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=PU3UbKXoRYtzPcawPXaHpGxSvMQQNWuWwL-qhsYhJ1I,10506
410
410
  metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/agent/0020-analyst-reads-as-its-requester.md,sha256=OtShJBGjDI0OgdRhvbz8eLl2_eZIzYpV0Y4V2iSUx3I,5442
411
411
  metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md,sha256=yo91GLlLgNkvEcfmgYXZRZBp5FNWOo3RZdfPb2XBuIs,3206
412
412
  metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md,sha256=Mznn086kxNIYF4qWc8nfFhkc7KA4Hmcil9sS7QMjGgY,49019
@@ -500,7 +500,7 @@ metatables/_client_skills/metatables-time-index-table-updates/references/src/met
500
500
  metatables/_client_skills/metatables-time-index-table-updates/references/src/metatables/examples/updater.py,sha256=UwabEnQBITpnjtyJzm5j2BNXNoDyAfxTPg2_eItvrNk,1512
501
501
  metatables/_client_skills/metatables-upgrade-legacy-app/SKILL.md,sha256=i9qhX2lJBr3TR9LYb3fYDKrV1zC51ZzSOTRXkuspfnQ,6672
502
502
  metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/index.md,sha256=gm5Q8asOMXQQ1FbzAXnD7we4e0cO51bkaesU9VmNn4k,7878
503
- metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=nI_-Yk7ciOYILK8wUJmGvrl40x5CrlwpBAno0bd8dXE,9797
503
+ metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/agent/0019-metatables-analyst-agent.md,sha256=PU3UbKXoRYtzPcawPXaHpGxSvMQQNWuWwL-qhsYhJ1I,10506
504
504
  metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/agent/0020-analyst-reads-as-its-requester.md,sha256=OtShJBGjDI0OgdRhvbz8eLl2_eZIzYpV0Y4V2iSUx3I,5442
505
505
  metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/agent/0021-api-serves-the-analyst-tools-over-mcp.md,sha256=yo91GLlLgNkvEcfmgYXZRZBp5FNWOo3RZdfPb2XBuIs,3206
506
506
  metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/api/0001-unified-api-storage-and-local-sqlite.md,sha256=Mznn086kxNIYF4qWc8nfFhkc7KA4Hmcil9sS7QMjGgY,49019
@@ -601,7 +601,7 @@ metatables/api/app/error_logging.py,sha256=1Gc4zQMoGq8_DIAIsturYex-QdIBWOIQ5WxpO
601
601
  metatables/api/app/main.py,sha256=rGl3Yp9CoI2qlnhGCr6rR1ddxoBeWhjgy-dv-7AQHrs,14346
602
602
  metatables/api/app/mcp.py,sha256=ed5Df7fil02olJr719Eg9A9ppwy-D-uCw2anFSM8upA,4850
603
603
  metatables/api/app/platform_cache.py,sha256=2Y4EmyW5xAyHywfH0tq1Uoafjo4xkHNGEj1feOlp-Uw,2229
604
- metatables/api/app/runtime.py,sha256=Q9ssnISzjI15ATRKTazc66x4RIjsXLBpm7ruoP9g16U,14340
604
+ metatables/api/app/runtime.py,sha256=l0Ot1V4Zm1yPkYzOTwfA7GXn-lS04INRE32_N9Ct9JA,14478
605
605
  metatables/api/app/runtime_control.py,sha256=E0hnH2UXr9vhOJmhSVmqLY5eb8gZeXSpAeEhTLNd2R4,5190
606
606
  metatables/api/app/runtime_database.py,sha256=4juGijODojPUbXqzcY6qvJtDjZBhEgC5sOdFEs1DEm0,6451
607
607
  metatables/api/app/source_passwords.py,sha256=B3GM_OuJgINqnl-YDmVVeqV0rKby2pcHOyrTAfPRzAg,1611
@@ -617,7 +617,7 @@ metatables/api/app/routes/managed_finalize.py,sha256=BY89o6G7GmnAsvWMQ-wv5U_ij2d
617
617
  metatables/api/app/routes/migration_connection.py,sha256=26ujKjt-rIkErqau9sCUC8ZZjHp-dTR5yphveaTWR0c,4046
618
618
  metatables/api/app/routes/namespaces.py,sha256=BBgKY0cVjdvB_sVnxUdgUaehYdNVKdCUNRMnr10ZDhk,6486
619
619
  metatables/api/app/routes/run_logs.py,sha256=yw4W-tuXrT71fFrTkjbzyCpLiE-7x_88wjGRkSG1ing,4970
620
- metatables/api/app/routes/runtime_context.py,sha256=vTGSsL9ZUhhUDmQhdHnNvdIFWOebIb5fA7JkuO_oxcE,5842
620
+ metatables/api/app/routes/runtime_context.py,sha256=xuXUpr1IjrGVQYHPRRqvHbVBmS19jfAnxzKkcZeCp9A,7192
621
621
  metatables/api/app/routes/schema_graph.py,sha256=dY-14YAqraP38AJMujZSYZnpsrkRKdpxX2UTrgzEez0,1396
622
622
  metatables/api/app/routes/security.py,sha256=TgArpIi-dOhtD-dFm8kkmUQ4FbkskzgJHV48J8mddMI,16649
623
623
  metatables/api/app/routes/table_cascade.py,sha256=5laMXeUde8rNf0R8YYmUsJ35CtRUmliLJlJQkGCUV4M,8897
@@ -842,8 +842,8 @@ metatables/updaters/namespacing.py,sha256=obJfMnjLgOyl2iNRIK67vd1dIDETgQ8hj8gWDU
842
842
  metatables/updaters/runner.py,sha256=cRIfJp4qe4cqffJp8Wb01hagPbyJEMA09eqTdJ2CYsc,37826
843
843
  metatables/updaters/updaters.py,sha256=4widdcXC_cfR6HKID9pkJsdFNaxm9ew8_UZM4O4f2tg,31286
844
844
  metatables/updaters/utils.py,sha256=O1iKp2tzCkqxyCblI6MKxez6XV180w87VszxDO9OfAE,621
845
- mainsequence_metatable-0.1.26.dev43.dist-info/METADATA,sha256=2wJnyoSGgMdubAytH0SXG8svIPI2QTxPRvJwTzm8nwY,6487
846
- mainsequence_metatable-0.1.26.dev43.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
847
- mainsequence_metatable-0.1.26.dev43.dist-info/entry_points.txt,sha256=wGFA4TfimgF5GCBt64c06SvYYiFrM_C1g-Ctdsk-eZM,54
848
- mainsequence_metatable-0.1.26.dev43.dist-info/top_level.txt,sha256=zJGuZJNwzaHNhvJe1MCQYUU0fP5Wg_iJoqvQJUMPIbY,11
849
- mainsequence_metatable-0.1.26.dev43.dist-info/RECORD,,
845
+ mainsequence_metatable-0.1.27.dev45.dist-info/METADATA,sha256=vBPlUhLPdclrXSZ9lGcgF8BXEF2Gb9iVLU1BMMAQ_3o,6487
846
+ mainsequence_metatable-0.1.27.dev45.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
847
+ mainsequence_metatable-0.1.27.dev45.dist-info/entry_points.txt,sha256=wGFA4TfimgF5GCBt64c06SvYYiFrM_C1g-Ctdsk-eZM,54
848
+ mainsequence_metatable-0.1.27.dev45.dist-info/top_level.txt,sha256=zJGuZJNwzaHNhvJe1MCQYUU0fP5Wg_iJoqvQJUMPIbY,11
849
+ mainsequence_metatable-0.1.27.dev45.dist-info/RECORD,,
@@ -17,12 +17,16 @@ resources:
17
17
  secrets:
18
18
  - name: METATABLES_RUNTIME_DATABASE
19
19
  level: view
20
+ # /runtime-context/ tells applications this branch's Analyst (ADR 0019).
21
+ resources:
22
+ - key: metatables-analyst-agent
23
+ level: view
20
24
 
21
25
  - key: metatables-analyst-agent
22
26
  kind: harness_agent
23
27
  spec:
24
28
  source_path: api/tau/main.py
25
- llm_provider: openai
29
+ llm_provider: openai-codex
26
30
  llm_model: gpt-5.6-luna
27
31
  llm_thinking: medium
28
32
  automatic_deployment: true
@@ -1,5 +1,14 @@
1
1
  # ADR 0019: MetaTables Analyst agent
2
2
 
3
+ > Amendment (2026-10-08): The API names this branch's Analyst to applications.
4
+ > `GET /runtime-context/` returns `hosted_agent` (`uid`, `name`, `status`) beside
5
+ > `hosted_environment`: the Agent the API's own branch deploys, which the API finds with its
6
+ > workload credentials and caches for an hour like the Environment; a failed lookup is
7
+ > `unavailable` and is not cached. The API's `access` names the Analyst by its key so it can
8
+ > see it. An application's assistant, such as the MetaTables Admin rail, takes the Agent and
9
+ > the Environment from there instead of build values. A re-created Analyst reaches it at the
10
+ > API's next deployment, which the same push starts. Local mode reports neither.
11
+ >
3
12
  > Amendment (2026-10-08): [ADR 0020](0020-analyst-reads-as-its-requester.md) replaces
4
13
  > the agent's own Reader grants: each tool call is answered as the person the turn
5
14
  > serves, so nobody reads more through the agent than they can read directly.
@@ -61,7 +70,7 @@ refuses anything else.
61
70
 
62
71
  | Part | Rule |
63
72
  | --- | --- |
64
- | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai` / `gpt-5.6-luna`, thinking `medium`. |
73
+ | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
65
74
  | Identity | The person each turn serves (ADR 0020); the agent's own identity holds no grants. |
66
75
  | Tools | The six tools below, served by the API over MCP when hosted (ADR 0021), and the SDK's skill-scoped `read`. No shell, file writes or Main Sequence MCP. |
67
76
  | Instructions | `.tau/SYSTEM.md` covers MetaTables; vendored `pg-aiguide` skills cover PostgreSQL and TimescaleDB. |
@@ -1,5 +1,14 @@
1
1
  # ADR 0019: MetaTables Analyst agent
2
2
 
3
+ > Amendment (2026-10-08): The API names this branch's Analyst to applications.
4
+ > `GET /runtime-context/` returns `hosted_agent` (`uid`, `name`, `status`) beside
5
+ > `hosted_environment`: the Agent the API's own branch deploys, which the API finds with its
6
+ > workload credentials and caches for an hour like the Environment; a failed lookup is
7
+ > `unavailable` and is not cached. The API's `access` names the Analyst by its key so it can
8
+ > see it. An application's assistant, such as the MetaTables Admin rail, takes the Agent and
9
+ > the Environment from there instead of build values. A re-created Analyst reaches it at the
10
+ > API's next deployment, which the same push starts. Local mode reports neither.
11
+ >
3
12
  > Amendment (2026-10-08): [ADR 0020](0020-analyst-reads-as-its-requester.md) replaces
4
13
  > the agent's own Reader grants: each tool call is answered as the person the turn
5
14
  > serves, so nobody reads more through the agent than they can read directly.
@@ -61,7 +70,7 @@ refuses anything else.
61
70
 
62
71
  | Part | Rule |
63
72
  | --- | --- |
64
- | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai` / `gpt-5.6-luna`, thinking `medium`. |
73
+ | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
65
74
  | Identity | The person each turn serves (ADR 0020); the agent's own identity holds no grants. |
66
75
  | Tools | The six tools below, served by the API over MCP when hosted (ADR 0021), and the SDK's skill-scoped `read`. No shell, file writes or Main Sequence MCP. |
67
76
  | Instructions | `.tau/SYSTEM.md` covers MetaTables; vendored `pg-aiguide` skills cover PostgreSQL and TimescaleDB. |
@@ -1,5 +1,14 @@
1
1
  # ADR 0019: MetaTables Analyst agent
2
2
 
3
+ > Amendment (2026-10-08): The API names this branch's Analyst to applications.
4
+ > `GET /runtime-context/` returns `hosted_agent` (`uid`, `name`, `status`) beside
5
+ > `hosted_environment`: the Agent the API's own branch deploys, which the API finds with its
6
+ > workload credentials and caches for an hour like the Environment; a failed lookup is
7
+ > `unavailable` and is not cached. The API's `access` names the Analyst by its key so it can
8
+ > see it. An application's assistant, such as the MetaTables Admin rail, takes the Agent and
9
+ > the Environment from there instead of build values. A re-created Analyst reaches it at the
10
+ > API's next deployment, which the same push starts. Local mode reports neither.
11
+ >
3
12
  > Amendment (2026-10-08): [ADR 0020](0020-analyst-reads-as-its-requester.md) replaces
4
13
  > the agent's own Reader grants: each tool call is answered as the person the turn
5
14
  > serves, so nobody reads more through the agent than they can read directly.
@@ -61,7 +70,7 @@ refuses anything else.
61
70
 
62
71
  | Part | Rule |
63
72
  | --- | --- |
64
- | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai` / `gpt-5.6-luna`, thinking `medium`. |
73
+ | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
65
74
  | Identity | The person each turn serves (ADR 0020); the agent's own identity holds no grants. |
66
75
  | Tools | The six tools below, served by the API over MCP when hosted (ADR 0021), and the SDK's skill-scoped `read`. No shell, file writes or Main Sequence MCP. |
67
76
  | Instructions | `.tau/SYSTEM.md` covers MetaTables; vendored `pg-aiguide` skills cover PostgreSQL and TimescaleDB. |
@@ -1,5 +1,14 @@
1
1
  # ADR 0019: MetaTables Analyst agent
2
2
 
3
+ > Amendment (2026-10-08): The API names this branch's Analyst to applications.
4
+ > `GET /runtime-context/` returns `hosted_agent` (`uid`, `name`, `status`) beside
5
+ > `hosted_environment`: the Agent the API's own branch deploys, which the API finds with its
6
+ > workload credentials and caches for an hour like the Environment; a failed lookup is
7
+ > `unavailable` and is not cached. The API's `access` names the Analyst by its key so it can
8
+ > see it. An application's assistant, such as the MetaTables Admin rail, takes the Agent and
9
+ > the Environment from there instead of build values. A re-created Analyst reaches it at the
10
+ > API's next deployment, which the same push starts. Local mode reports neither.
11
+ >
3
12
  > Amendment (2026-10-08): [ADR 0020](0020-analyst-reads-as-its-requester.md) replaces
4
13
  > the agent's own Reader grants: each tool call is answered as the person the turn
5
14
  > serves, so nobody reads more through the agent than they can read directly.
@@ -61,7 +70,7 @@ refuses anything else.
61
70
 
62
71
  | Part | Rule |
63
72
  | --- | --- |
64
- | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai` / `gpt-5.6-luna`, thinking `medium`. |
73
+ | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
65
74
  | Identity | The person each turn serves (ADR 0020); the agent's own identity holds no grants. |
66
75
  | Tools | The six tools below, served by the API over MCP when hosted (ADR 0021), and the SDK's skill-scoped `read`. No shell, file writes or Main Sequence MCP. |
67
76
  | Instructions | `.tau/SYSTEM.md` covers MetaTables; vendored `pg-aiguide` skills cover PostgreSQL and TimescaleDB. |
@@ -1,5 +1,14 @@
1
1
  # ADR 0019: MetaTables Analyst agent
2
2
 
3
+ > Amendment (2026-10-08): The API names this branch's Analyst to applications.
4
+ > `GET /runtime-context/` returns `hosted_agent` (`uid`, `name`, `status`) beside
5
+ > `hosted_environment`: the Agent the API's own branch deploys, which the API finds with its
6
+ > workload credentials and caches for an hour like the Environment; a failed lookup is
7
+ > `unavailable` and is not cached. The API's `access` names the Analyst by its key so it can
8
+ > see it. An application's assistant, such as the MetaTables Admin rail, takes the Agent and
9
+ > the Environment from there instead of build values. A re-created Analyst reaches it at the
10
+ > API's next deployment, which the same push starts. Local mode reports neither.
11
+ >
3
12
  > Amendment (2026-10-08): [ADR 0020](0020-analyst-reads-as-its-requester.md) replaces
4
13
  > the agent's own Reader grants: each tool call is answered as the person the turn
5
14
  > serves, so nobody reads more through the agent than they can read directly.
@@ -61,7 +70,7 @@ refuses anything else.
61
70
 
62
71
  | Part | Rule |
63
72
  | --- | --- |
64
- | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai` / `gpt-5.6-luna`, thinking `medium`. |
73
+ | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
65
74
  | Identity | The person each turn serves (ADR 0020); the agent's own identity holds no grants. |
66
75
  | Tools | The six tools below, served by the API over MCP when hosted (ADR 0021), and the SDK's skill-scoped `read`. No shell, file writes or Main Sequence MCP. |
67
76
  | Instructions | `.tau/SYSTEM.md` covers MetaTables; vendored `pg-aiguide` skills cover PostgreSQL and TimescaleDB. |
@@ -1,5 +1,14 @@
1
1
  # ADR 0019: MetaTables Analyst agent
2
2
 
3
+ > Amendment (2026-10-08): The API names this branch's Analyst to applications.
4
+ > `GET /runtime-context/` returns `hosted_agent` (`uid`, `name`, `status`) beside
5
+ > `hosted_environment`: the Agent the API's own branch deploys, which the API finds with its
6
+ > workload credentials and caches for an hour like the Environment; a failed lookup is
7
+ > `unavailable` and is not cached. The API's `access` names the Analyst by its key so it can
8
+ > see it. An application's assistant, such as the MetaTables Admin rail, takes the Agent and
9
+ > the Environment from there instead of build values. A re-created Analyst reaches it at the
10
+ > API's next deployment, which the same push starts. Local mode reports neither.
11
+ >
3
12
  > Amendment (2026-10-08): [ADR 0020](0020-analyst-reads-as-its-requester.md) replaces
4
13
  > the agent's own Reader grants: each tool call is answered as the person the turn
5
14
  > serves, so nobody reads more through the agent than they can read directly.
@@ -61,7 +70,7 @@ refuses anything else.
61
70
 
62
71
  | Part | Rule |
63
72
  | --- | --- |
64
- | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai` / `gpt-5.6-luna`, thinking `medium`. |
73
+ | Runtime | `ms-tau-sdk` 2.0.8.dev44, `openai-codex` / `gpt-5.6-luna`, thinking `medium`. |
65
74
  | Identity | The person each turn serves (ADR 0020); the agent's own identity holds no grants. |
66
75
  | Tools | The six tools below, served by the API over MCP when hosted (ADR 0021), and the SDK's skill-scoped `read`. No shell, file writes or Main Sequence MCP. |
67
76
  | Instructions | `.tau/SYSTEM.md` covers MetaTables; vendored `pg-aiguide` skills cover PostgreSQL and TimescaleDB. |
@@ -12,7 +12,7 @@ from metatables.api.app.runtime import data_source_provider
12
12
  from metatables.api.app.runtime_control import runtime_instance_id
13
13
  from metatables.api.backend.integrations.local_workspace import source_descriptor
14
14
  from metatables.api.backend.integrations.runtime_data_sources import DataSourceIntegrationError
15
- from metatables.runtime_contract import HostedEnvironment, RuntimeContext
15
+ from metatables.runtime_contract import HostedAgent, HostedEnvironment, RuntimeContext
16
16
 
17
17
  logger = logging.getLogger(__name__)
18
18
 
@@ -49,6 +49,32 @@ def cached_environment(cache: PlatformCache[UUID, HostedEnvironment], uid: UUID
49
49
  return cache.get(uid, lambda: verified_environment(uid))
50
50
 
51
51
 
52
+ def branch_agent() -> HostedAgent:
53
+ """The Harness Agent this API's branch deploys (ADR 0019); a branch deploys at most one.
54
+
55
+ A failed lookup raises, so the cache keeps no failure.
56
+ """
57
+ from mainsequence.client.agent_runtime_models import Agent
58
+ from mainsequence.code_repository_context import get_code_repository_context
59
+
60
+ branch_uid = get_code_repository_context().code_repository_branch_uid
61
+ agents = [agent for agent in Agent.filter(timeout=(2, 5))
62
+ if branch_uid and agent.code_repository_branch_uid == branch_uid]
63
+ if len(agents) != 1:
64
+ return HostedAgent(uid=None, status="not_found")
65
+ return HostedAgent(uid=agents[0].uid, status="verified", name=agents[0].name)
66
+
67
+
68
+ def cached_agent(cache: PlatformCache[UUID, HostedAgent], environment_uid: UUID | None) -> HostedAgent:
69
+ if environment_uid is None:
70
+ return HostedAgent(uid=None, status="not_configured")
71
+ try:
72
+ return cache.get(environment_uid, branch_agent)
73
+ except Exception:
74
+ logger.exception("Hosted agent lookup failed")
75
+ return HostedAgent(uid=None, status="unavailable")
76
+
77
+
52
78
  @router.get("/runtime-context/", response_model=RuntimeContext, response_model_exclude_unset=True)
53
79
  def runtime_context(
54
80
  request: Request, response: Response,
@@ -73,6 +99,8 @@ def runtime_context(
73
99
  "runtime_instance_id": runtime_instance_id(state) if control else None,
74
100
  "api_endpoint": f"http://{state.config.expected_host}" if state.config.local_mode else str(request.base_url).rstrip("/"),
75
101
  "hosted_environment": environment,
102
+ # The Analyst an application's assistant talks to, in the same Environment (ADR 0019).
103
+ "hosted_agent": None if state.config.local_mode else cached_agent(state.agent_cache, caller.environment_uid),
76
104
  "git_source": source_descriptor(workspace.source) if workspace else None,
77
105
  "data_source_selection": selection,
78
106
  "bootstrap": state.bootstrap.descriptor(caller.user_uid, is_admin=caller.is_admin) if state.bootstrap else None,
@@ -37,7 +37,7 @@ from metatables.api.backend.integrations.runtime_binding import (
37
37
  RuntimeBindingError,
38
38
  RuntimeStorageBinding,
39
39
  )
40
- from metatables.runtime_contract import HostedEnvironment
40
+ from metatables.runtime_contract import HostedAgent, HostedEnvironment
41
41
 
42
42
  logger = logging.getLogger(__name__)
43
43
 
@@ -221,6 +221,8 @@ class RuntimeState:
221
221
  default_factory=PlatformCache, repr=False, compare=False)
222
222
  environment_cache: PlatformCache[UUID, HostedEnvironment] = field(
223
223
  default_factory=PlatformCache, repr=False, compare=False)
224
+ agent_cache: PlatformCache[UUID, HostedAgent] = field(
225
+ default_factory=PlatformCache, repr=False, compare=False)
224
226
 
225
227
  @property
226
228
  def workspace(self) -> LocalWorkspace | None:
@@ -23,6 +23,14 @@ class HostedEnvironment(BaseModel):
23
23
  required_repository_branch: str | None = None
24
24
 
25
25
 
26
+ class HostedAgent(BaseModel):
27
+ """The Harness Agent this API's branch deploys, as the API's workload sees it."""
28
+ model_config = ConfigDict(extra="ignore", frozen=True)
29
+ uid: str | None
30
+ status: Literal["verified", "not_found", "unavailable", "not_configured"]
31
+ name: str | None = None
32
+
33
+
26
34
  class RuntimeBootstrapDescriptor(BaseModel):
27
35
  model_config = ConfigDict(extra="ignore", frozen=True)
28
36
  status: Literal["unconfigured", "migration_required", "registration_required", "migrating", "ready", "incompatible", "unavailable"]
@@ -62,6 +70,7 @@ class RuntimeContext(BaseModel):
62
70
  runtime_instance_id: str | None = None
63
71
  api_endpoint: str = ""
64
72
  hosted_environment: HostedEnvironment | None = None
73
+ hosted_agent: HostedAgent | None = None
65
74
  data_source_selection: Literal["local_workspace", "catalog_default", "runtime_override", "runtime_binding"] = "catalog_default"
66
75
  data_source_error: str | None = None
67
76
  bootstrap: RuntimeBootstrapDescriptor | None = None