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.
- {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/METADATA +1 -1
- {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/RECORD +16 -16
- metatables/_api_workflow.yaml +5 -1
- metatables/_client_skills/metatables-local-development/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
- metatables/_client_skills/metatables-meta-tables/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
- metatables/_client_skills/metatables-migrations/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
- metatables/_client_skills/metatables-table-discovery/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
- metatables/_client_skills/metatables-time-index-table-updates/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
- metatables/_client_skills/metatables-upgrade-legacy-app/references/docs/adr/agent/0019-metatables-analyst-agent.md +10 -1
- metatables/api/app/routes/runtime_context.py +29 -1
- metatables/api/app/runtime.py +3 -1
- metatables/runtime_contract.py +9 -0
- {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/WHEEL +0 -0
- {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/entry_points.txt +0 -0
- {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/licenses/LICENSE +0 -0
- {mainsequence_metatable-0.1.26.dev43.dist-info → mainsequence_metatable-0.1.27.dev45.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
mainsequence_metatable-0.1.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
846
|
-
mainsequence_metatable-0.1.
|
|
847
|
-
mainsequence_metatable-0.1.
|
|
848
|
-
mainsequence_metatable-0.1.
|
|
849
|
-
mainsequence_metatable-0.1.
|
|
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,,
|
metatables/_api_workflow.yaml
CHANGED
|
@@ -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,
|
metatables/api/app/runtime.py
CHANGED
|
@@ -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:
|
metatables/runtime_contract.py
CHANGED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|