mainsequence 4.4.5__tar.gz → 4.4.10__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 (162) hide show
  1. {mainsequence-4.4.5/mainsequence.egg-info → mainsequence-4.4.10}/PKG-INFO +1 -1
  2. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/AGENTS.md +29 -6
  3. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +14 -6
  4. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +107 -3
  5. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +4 -2
  6. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/command_center/connections/SKILL.md +26 -1
  7. {mainsequence-4.4.5/agent_scaffold/skills/command_center → mainsequence-4.4.10/agent_scaffold/skills/command_center/widgets}/app_components/SKILL.md +9 -5
  8. mainsequence-4.4.10/agent_scaffold/skills/command_center/widgets/tables/SKILL.md +333 -0
  9. mainsequence-4.4.10/agent_scaffold/skills/command_center/widgets/tabular_transform/SKILL.md +232 -0
  10. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +37 -3
  11. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +11 -2
  12. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +1 -1
  13. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +1 -1
  14. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +1 -1
  15. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/project_builder/SKILL.md +1 -1
  16. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/api.py +279 -2
  17. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/cli.py +585 -31
  18. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/agent_runtime_models.py +3 -3
  19. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/command_center/__init__.py +4 -0
  20. mainsequence-4.4.10/mainsequence/client/command_center/connections.py +680 -0
  21. mainsequence-4.4.10/mainsequence/client/command_center/contracts/__init__.py +5 -0
  22. mainsequence-4.4.10/mainsequence/client/command_center/contracts/adapter_from_api.py +204 -0
  23. mainsequence-4.4.10/mainsequence/client/command_center/contracts/response_mapping.py +79 -0
  24. mainsequence-4.4.10/mainsequence/client/command_center/contracts/table_visuals.py +180 -0
  25. mainsequence-4.4.10/mainsequence/client/command_center/contracts/tabular.py +284 -0
  26. mainsequence-4.4.10/mainsequence/client/command_center/contracts/ui.py +23 -0
  27. mainsequence-4.4.10/mainsequence/client/command_center/providers/__init__.py +1 -0
  28. mainsequence-4.4.10/mainsequence/client/command_center/providers/adapter_from_api.py +153 -0
  29. mainsequence-4.4.10/mainsequence/client/command_center/widgets/__init__.py +5 -0
  30. mainsequence-4.4.10/mainsequence/client/command_center/widgets/bindings.py +78 -0
  31. mainsequence-4.4.10/mainsequence/client/command_center/widgets/connection_query.py +120 -0
  32. mainsequence-4.4.10/mainsequence/client/command_center/widgets/registry.py +46 -0
  33. mainsequence-4.4.10/mainsequence/client/command_center/widgets/table.py +455 -0
  34. mainsequence-4.4.10/mainsequence/client/command_center/widgets/tabular_transform.py +410 -0
  35. mainsequence-4.4.10/mainsequence/client/command_center/workspaces/__init__.py +2 -0
  36. mainsequence-4.4.10/mainsequence/client/command_center/workspaces/documents.py +43 -0
  37. mainsequence-4.4.10/mainsequence/client/command_center/workspaces/mounted_widgets.py +40 -0
  38. mainsequence-4.4.10/mainsequence/scaffold_skills.py +260 -0
  39. {mainsequence-4.4.5 → mainsequence-4.4.10/mainsequence.egg-info}/PKG-INFO +1 -1
  40. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence.egg-info/SOURCES.txt +24 -1
  41. {mainsequence-4.4.5 → mainsequence-4.4.10}/pyproject.toml +1 -1
  42. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_cli.py +284 -1
  43. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_command_center_models.py +201 -0
  44. mainsequence-4.4.10/tests/test_command_center_table_contracts.py +177 -0
  45. mainsequence-4.4.10/tests/test_command_center_tabular_transform.py +212 -0
  46. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_filter_normalization.py +12 -14
  47. mainsequence-4.4.10/tests/test_scaffold_skills.py +179 -0
  48. mainsequence-4.4.5/mainsequence/client/command_center/connections.py +0 -274
  49. {mainsequence-4.4.5 → mainsequence-4.4.10}/LICENSE +0 -0
  50. {mainsequence-4.4.5 → mainsequence-4.4.10}/README.md +0 -0
  51. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
  52. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
  53. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  54. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  55. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  56. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
  57. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  58. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  59. {mainsequence-4.4.5 → mainsequence-4.4.10}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
  60. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/__init__.py +0 -0
  61. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/__main__.py +0 -0
  62. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/bootstrap.py +0 -0
  63. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/__init__.py +0 -0
  64. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/browser_auth.py +0 -0
  65. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/config.py +0 -0
  66. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/docker_utils.py +0 -0
  67. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/doctor.py +0 -0
  68. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/local_ops.py +0 -0
  69. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/migrations.py +0 -0
  70. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/model_filters.py +0 -0
  71. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/project_status.py +0 -0
  72. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/pydantic_cli.py +0 -0
  73. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/sdk_utils.py +0 -0
  74. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/ssh_utils.py +0 -0
  75. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/cli/ui.py +0 -0
  76. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/__init__.py +0 -0
  77. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/base.py +0 -0
  78. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/client.py +0 -0
  79. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/command_center/app_component.py +0 -0
  80. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/command_center/data_models.py +0 -0
  81. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/command_center/workspace.py +0 -0
  82. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
  83. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/compute_validation.py +0 -0
  84. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  85. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  86. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  87. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  88. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/dtype_codec.py +0 -0
  89. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/exceptions.py +0 -0
  90. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/fastapi/__init__.py +0 -0
  91. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/fastapi/auth.py +0 -0
  92. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/metatables/__init__.py +0 -0
  93. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/metatables/core.py +0 -0
  94. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/models_foundry.py +0 -0
  95. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/models_helpers.py +0 -0
  96. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/models_user.py +0 -0
  97. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/client/utils.py +0 -0
  98. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/defaults.py +0 -0
  99. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/instrumentation/__init__.py +0 -0
  100. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/instrumentation/utils.py +0 -0
  101. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/logconf.py +0 -0
  102. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/__init__.py +0 -0
  103. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/__main__.py +0 -0
  104. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  105. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  106. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  107. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  108. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  109. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  110. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  111. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  112. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  113. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  114. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/future_registry.py +0 -0
  115. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/hashing.py +0 -0
  116. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  117. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  118. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/env.py +0 -0
  119. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/provider.py +0 -0
  120. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/registry.py +0 -0
  121. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  122. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  123. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  124. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  125. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  126. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/schema_names.py +0 -0
  127. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  128. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence/runtime_flags.py +0 -0
  129. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence.egg-info/dependency_links.txt +0 -0
  130. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence.egg-info/entry_points.txt +0 -0
  131. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence.egg-info/requires.txt +0 -0
  132. {mainsequence-4.4.5 → mainsequence-4.4.10}/mainsequence.egg-info/top_level.txt +0 -0
  133. {mainsequence-4.4.5 → mainsequence-4.4.10}/setup.cfg +0 -0
  134. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_auth_precedence.py +0 -0
  135. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_build_operations_hashing.py +0 -0
  136. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_cli_browser_auth.py +0 -0
  137. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_cli_migrations.py +0 -0
  138. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_client.py +0 -0
  139. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_command_center_app_component_models.py +0 -0
  140. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_command_center_data_models.py +0 -0
  141. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  142. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_data_node_storage_dimension_queries.py +0 -0
  143. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_data_node_update_flow.py +0 -0
  144. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_dependency_extras.py +0 -0
  145. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_duckdb_interface_dimensions.py +0 -0
  146. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_instrumentation.py +0 -0
  147. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_logconf.py +0 -0
  148. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_meta_table_migrations.py +0 -0
  149. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_meta_tables_client_models.py +0 -0
  150. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  151. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_models_user_request_bound_auth.py +0 -0
  152. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_pod_project_resolution.py +0 -0
  153. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_project_batch_jobs_from_file.py +0 -0
  154. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_run_configuration.py +0 -0
  155. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_schema_names.py +0 -0
  156. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_secret_client_model.py +0 -0
  157. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_source_table_configuration.py +0 -0
  158. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_sqlite_interface_dimensions.py +0 -0
  159. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_update_runner_uid_runtime.py +0 -0
  160. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_update_statistics.py +0 -0
  161. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_update_uid_guards.py +0 -0
  162. {mainsequence-4.4.5 → mainsequence-4.4.10}/tests/test_workspace_snapshot.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.4.5
3
+ Version: 4.4.10
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -17,14 +17,26 @@ uses them to update only the Main Sequence section below.
17
17
  <!-- mainsequence-agent-scaffold:start schema=1 source=agent_scaffold -->
18
18
  ## Main Sequence Instructions
19
19
 
20
- Before any non-trivial Main Sequence work, update the project SDK first and then refresh the
21
- installed Main Sequence scaffold files so the local CLI surface, `AGENTS.md`, and
22
- `.agents/skills/mainsequence/` match the installed SDK version:
20
+ Before any non-trivial Main Sequence work, update the project SDK first, then compare the
21
+ installed SDK version with the managed skills pin:
23
22
 
24
23
  - `mainsequence project update-sdk --path .`
24
+
25
+ After the SDK update, inspect `.agents/skills/mainsequence/PINNED_FROM.txt`.
26
+ Its `pinned_version=...` value records the SDK version that supplied the copied
27
+ Main Sequence skills. Compare that value with the installed SDK version reported
28
+ by `mainsequence --version`.
29
+
30
+ Refresh the managed scaffold only when `PINNED_FROM.txt` is missing or its
31
+ `pinned_version` differs from the installed SDK version:
32
+
25
33
  - `mainsequence project update AGENTS.md --path .`
26
34
  - `mainsequence project update_agent_skills --path .`
27
35
 
36
+ If `pinned_version` already matches the installed SDK version, do not refresh
37
+ `AGENTS.md` or `.agents/skills/mainsequence/` as a startup ritual; continue with
38
+ the task.
39
+
28
40
  Canonical Main Sequence documentation root:
29
41
  `https://mainsequence-sdk.github.io/mainsequence-sdk/`
30
42
 
@@ -179,7 +191,13 @@ Typical routing:
179
191
  - Command Center workspace JSON creation/update and mounted widget mutation:
180
192
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
181
193
  - AppComponents, custom forms, and widget input or output contracts:
182
- `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
194
+ `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
195
+ - Command Center table/pro-table widgets, tabular frames, table visual metadata, formulas,
196
+ selections, and live merge mappings:
197
+ `.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md`
198
+ - Command Center tabular transform widgets, projection, filtering, aggregate, pivot, unpivot,
199
+ computed columns, and seed/live update bindings:
200
+ `.agents/skills/mainsequence/command_center/widgets/tabular_transform/SKILL.md`
183
201
  - predeployment AppComponent/API contract testing through `apiTargetMode: "mock-json"`:
184
202
  `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
185
203
  - jobs, schedules, images, project resources, releases, and Artifacts:
@@ -207,10 +225,15 @@ For any non-trivial Main Sequence task:
207
225
  `mainsequence project open-signed-terminal <PROJECT_ID>`
208
226
  11. Before proceeding with non-trivial Main Sequence work, update the project SDK:
209
227
  `mainsequence project update-sdk --path .`
210
- 12. After updating the SDK, refresh the installed Main Sequence scaffold files:
228
+ 12. After updating the SDK, compare `mainsequence --version` with
229
+ `.agents/skills/mainsequence/PINNED_FROM.txt` field `pinned_version=...`.
230
+ 13. If `PINNED_FROM.txt` is missing or `pinned_version` differs from the installed
231
+ SDK version, refresh the managed scaffold files:
211
232
  `mainsequence project update AGENTS.md --path .`
212
233
  `mainsequence project update_agent_skills --path .`
213
- 13. Verify platform state with the CLI or platform tooling instead of guessing.
234
+ 14. If `pinned_version` already matches the installed SDK version, do not refresh
235
+ `AGENTS.md` or `.agents/skills/mainsequence/` as a startup ritual.
236
+ 15. Verify platform state with the CLI or platform tooling instead of guessing.
214
237
 
215
238
  ## Orchestrator Rule
216
239
 
@@ -51,7 +51,11 @@ This skill must not claim ownership of:
51
51
  - Command Center workspaces:
52
52
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
53
53
  - AppComponents and custom forms:
54
- `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
54
+ `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
55
+ - Command Center table/pro-table response contracts:
56
+ `.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md`
57
+ - Command Center tabular transform consumers:
58
+ `.agents/skills/mainsequence/command_center/widgets/tabular_transform/SKILL.md`
55
59
  - Adapter from API provider-side Command Center connection endpoints:
56
60
  `.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md`
57
61
  - predeployment mock API contract validation:
@@ -69,14 +73,18 @@ This skill must not claim ownership of:
69
73
  4. `docs/knowledge/fastapi/index.md`
70
74
  5. `docs/knowledge/command_center/widget_data_contracts.md`
71
75
  6. `docs/knowledge/command_center/forms.md`
72
- 7. `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
76
+ 7. `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
73
77
 
74
78
  Also load:
75
79
 
76
80
  8. `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md` when the API is tied to mounted widgets, workspace payloads, or workspace mutation
77
- 9. `.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md` when the API must be consumed through a Command Center Adapter from API connection
78
- 10. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md` when the contract should be validated in AppComponent mock mode before backend deployment
79
- 11. `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md` when the API must become usable from Command Center or an AppComponent
81
+ 9. `.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md` when the API returns
82
+ `core.tabular_frame@v1`, `meta.tableVisuals`, or table/pro-table widget-facing data
83
+ 10. `.agents/skills/mainsequence/command_center/widgets/tabular_transform/SKILL.md` when the API
84
+ response will be reshaped by `core__tabular-transform`
85
+ 11. `.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md` when the API must be consumed through a Command Center Adapter from API connection
86
+ 12. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md` when the contract should be validated in AppComponent mock mode before backend deployment
87
+ 13. `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md` when the API must become usable from Command Center or an AppComponent
80
88
 
81
89
  Do not wait for the user to say "Command Center" explicitly if the API is being built as a platform UI surface. That is the default assumption in Main Sequence projects.
82
90
 
@@ -138,7 +146,7 @@ In a Main Sequence project, assume API work is for Command Center unless the use
138
146
  That means:
139
147
 
140
148
  - prefer widget-facing contracts by default
141
- - load `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
149
+ - load `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
142
150
  - also load `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md` when the API is coupled to mounted workspace widgets or workspace payloads
143
151
  - load `.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md` when the API will be consumed by connection-first workspace dataflow
144
152
  - try to use the existing Command Center SDK response model before inventing a new response shape
@@ -33,6 +33,105 @@ frontend/editor tooling or a future explicit transform, but the current backend
33
33
  hot-path validate, extract JSONPath rows, coerce schemas, or reshape provider responses because a
34
34
  mapping exists.
35
35
 
36
+ ## Connection CLI And Transport Modes
37
+
38
+ Use the Main Sequence CLI to create or update the Adapter from API connection instance that points
39
+ Command Center at the provider API.
40
+
41
+ Backend/deployed API mode:
42
+
43
+ ```bash
44
+ mainsequence cc connection create-adapter-from-api \
45
+ --name "Provider API" \
46
+ --api-base-url https://api.example.com \
47
+ --workspace-uid <workspace-uid> \
48
+ --default
49
+ ```
50
+
51
+ Direct local/tunnel development mode:
52
+
53
+ ```bash
54
+ cloudflared tunnel --url http://127.0.0.1:8021
55
+
56
+ mainsequence cc connection create-adapter-from-api \
57
+ --name "Provider API local" \
58
+ --debug-api-base-url https://example.trycloudflare.com \
59
+ --workspace-uid <workspace-uid> \
60
+ --default
61
+ ```
62
+
63
+ Patch an existing Adapter from API connection:
64
+
65
+ ```bash
66
+ mainsequence cc connection patch-adapter-from-api <connection-uid> \
67
+ --api-base-url https://api.example.com
68
+
69
+ mainsequence cc connection patch-adapter-from-api <connection-uid> \
70
+ --debug-api-base-url https://example.trycloudflare.com
71
+ ```
72
+
73
+ Inspect connection state:
74
+
75
+ ```bash
76
+ mainsequence cc connection list --filter type_id=command_center.adapter_from_api
77
+ mainsequence cc connection detail <connection-uid>
78
+ ```
79
+
80
+ CLI characteristics:
81
+
82
+ - `--api-base-url` creates backend mode public config with `apiBaseUrl`.
83
+ - `--debug-api-base-url` creates direct mode public config with `transportMode=direct`,
84
+ `debugApiBaseUrl`, `compiledContractSource=direct`, and derived contract/OpenAPI URLs.
85
+ - `--public-config-json` and `--public-config-file` accept a full publicConfig object when URL
86
+ options are not enough.
87
+ - `--config-json` and `--config-file` set public non-secret `configValues`.
88
+ - `--secure-config-json` and `--secure-config-file` send secret values as `secureConfig`; returned
89
+ connection details expose only `secureFields`, not the raw secret values.
90
+ - `patch-adapter-from-api` must target an existing `command_center.adapter_from_api` connection; do
91
+ not use it for other connection types.
92
+ - Do not include `applicationBindings` in Adapter from API public config. The
93
+ `AdapterFromApiConnectionPublicConfig` model rejects it.
94
+
95
+ Direct mode is critical during development. It lets a workspace test the connection against a local
96
+ API before any resource release or API deployment. Run the local API, expose it with a Cloudflare
97
+ tunnel, create or patch the connection with `--debug-api-base-url`, and validate the workspace
98
+ connection/query flow directly. This avoids constant API deployments while iterating on the
99
+ contract, operation metadata, response shape, and widget behavior. Switch to `--api-base-url` only
100
+ when the deployed API is ready to be the stable backend target.
101
+
102
+ ## SDK Helper Modules
103
+
104
+ Provider code should use the Command Center SDK helpers instead of hand-building the well-known
105
+ contract when the project can depend on `mainsequence-sdk`:
106
+
107
+ ```python
108
+ from mainsequence.client.command_center.contracts.adapter_from_api import (
109
+ AdapterFromApiConfigVariable,
110
+ AdapterFromApiParameter,
111
+ AdapterFromApiSecretInjection,
112
+ AdapterFromApiSecretVariable,
113
+ )
114
+ from mainsequence.client.command_center.contracts.response_mapping import (
115
+ make_tabular_response_mapping,
116
+ )
117
+ from mainsequence.client.command_center.contracts.tabular import make_tabular_frame
118
+ from mainsequence.client.command_center.providers.adapter_from_api import (
119
+ make_health_operation,
120
+ make_provider_contract,
121
+ make_query_operation,
122
+ )
123
+ ```
124
+
125
+ Use:
126
+
127
+ - `contracts.adapter_from_api` for strict provider contract, operation, config variable, and secret
128
+ variable models
129
+ - `providers.adapter_from_api` for `make_health_operation`, `make_query_operation`, and
130
+ `make_provider_contract`
131
+ - `contracts.response_mapping` for optional `responseMappings` metadata
132
+ - `contracts.tabular` for canonical `core.tabular_frame@v1` response helpers such as
133
+ `make_tabular_frame`
134
+
36
135
  ## Scope
37
136
 
38
137
  This skill owns:
@@ -50,7 +149,7 @@ This skill does not own:
50
149
 
51
150
  - general FastAPI project structure
52
151
  - unrelated API routes for non-Command Center clients
53
- - Command Center connection instance creation
152
+ - general Command Center connection management beyond the Adapter from API CLI workflow above
54
153
  - workspace layout or widget mounting
55
154
  - backend adapter runtime internals
56
155
  - resource release or deployment orchestration
@@ -65,8 +164,10 @@ Route those concerns to the adjacent skills below.
65
164
  `.agents/skills/mainsequence/command_center/connections/SKILL.md`
66
165
  - Workspace widgets and binding:
67
166
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
167
+ - Table/pro-table output contracts and `meta.tableVisuals` metadata:
168
+ `.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md`
68
169
  - AppComponent form-driven actions:
69
- `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
170
+ `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
70
171
  - API mock/prototype validation before deployment:
71
172
  `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
72
173
  - FastAPI resources, images, jobs, and releases:
@@ -264,6 +365,7 @@ For FastAPI providers in Main Sequence repos, full canonical frame endpoints mus
264
365
 
265
366
  ```python
266
367
  from mainsequence.client.command_center.data_models import TabularFrameResponse
368
+ from mainsequence.client.command_center.contracts.tabular import make_tabular_frame
267
369
  ```
268
370
 
269
371
  Declare `response_model=TabularFrameResponse` instead of recreating the canonical frame shape
@@ -354,7 +456,9 @@ Before implementing or revising an API for Adapter from API consumption, decide:
354
456
 
355
457
  For a FastAPI provider:
356
458
 
357
- - define strict Pydantic models for the Command Center contract
459
+ - use the SDK provider helpers in `mainsequence.client.command_center.providers.adapter_from_api`
460
+ and strict models in `mainsequence.client.command_center.contracts.adapter_from_api` when the
461
+ dependency is available
358
462
  - set explicit `operation_id` values on routes
359
463
  - expose `GET /.well-known/command-center/connection-contract`
360
464
  - expose a zero-argument health route
@@ -44,9 +44,11 @@ This skill must not claim ownership of:
44
44
  ## Route Adjacent Work
45
45
 
46
46
  - AppComponents and custom forms:
47
- `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
47
+ `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
48
48
  - Command Center workspaces and widget mutation:
49
49
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
50
+ - Tabular transform widgets for downstream reshaping in mock validation:
51
+ `.agents/skills/mainsequence/command_center/widgets/tabular_transform/SKILL.md`
50
52
  - APIs and FastAPI:
51
53
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
52
54
  - Jobs, images, resources, and releases:
@@ -61,7 +63,7 @@ This skill must not claim ownership of:
61
63
  2. The SDK client models:
62
64
  - `mainsequence/client/command_center/app_component.py`
63
65
  - `mainsequence/client/command_center/workspace.py`
64
- 3. `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
66
+ 3. `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
65
67
  4. `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
66
68
 
67
69
  Only after the mock contract is stable:
@@ -24,6 +24,11 @@ connection instance and query model are known.
24
24
  ## This Skill Can Do
25
25
 
26
26
  - discover connection types and instances through `mainsequence.client.command_center.connections`
27
+ - use `mainsequence.client.command_center.widgets.connection_query` for connection-query source
28
+ widget payload drafts
29
+ - use `mainsequence.client.command_center.contracts.*` and
30
+ `mainsequence.client.command_center.providers.*` when validating Adapter from API provider
31
+ contracts
27
32
  - decide whether an existing connection instance can support the requested workspace data
28
33
  - inspect `ConnectionType.queryModels` and `usageGuidance`
29
34
  - verify that a query model can publish the required output contract
@@ -48,10 +53,14 @@ This skill must not claim ownership of:
48
53
  `.agents/skills/mainsequence/command_center/workspace_design/SKILL.md`
49
54
  - Workspace JSON creation and widget mutation:
50
55
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
56
+ - Table/pro-table consumer contracts, table visual metadata, selection, and live update behavior:
57
+ `.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md`
58
+ - Tabular transform consumer contracts and source/live update bindings:
59
+ `.agents/skills/mainsequence/command_center/widgets/tabular_transform/SKILL.md`
51
60
  - Adapter from API connection workflow:
52
61
  `.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md`
53
62
  - AppComponent forms and action API contracts:
54
- `.agents/skills/mainsequence/command_center/app_components/SKILL.md`
63
+ `.agents/skills/mainsequence/command_center/widgets/app_components/SKILL.md`
55
64
  - API implementation:
56
65
  `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
57
66
  - Jobs, images, resources, and releases:
@@ -63,6 +72,22 @@ This skill must not claim ownership of:
63
72
  - `mainsequence/client/command_center/connections.py`
64
73
  - `mainsequence/client/command_center/data_models.py` when validating `core.tabular_frame@v1`
65
74
  output shape
75
+ - `mainsequence/client/command_center/contracts/adapter_from_api.py` when validating provider
76
+ discovery contracts
77
+ - `mainsequence/client/command_center/contracts/response_mapping.py` when validating
78
+ response-mapping metadata
79
+ - `mainsequence/client/command_center/contracts/tabular.py` when building or checking canonical
80
+ tabular frames
81
+ - `mainsequence/client/command_center/contracts/table_visuals.py` when table-specific visual
82
+ defaults travel with `meta.tableVisuals`
83
+ - `mainsequence/client/command_center/providers/adapter_from_api.py` when a provider should use
84
+ SDK contract builders
85
+ - `mainsequence/client/command_center/widgets/connection_query.py` when creating
86
+ connection-query source widget payloads
87
+ - `mainsequence/client/command_center/widgets/tabular_transform.py` when a connection-backed
88
+ flow needs a `core__tabular-transform` widget
89
+ - `mainsequence/client/command_center/widgets/bindings.py` when binding seed data or live updates
90
+ into the transform
66
91
  2. Widget registry detail for the source and consumer widgets:
67
92
  - `mainsequence cc registered_widget_type list --json`
68
93
  - `mainsequence cc registered_widget_type detail <WIDGET_ID> --json`
@@ -47,6 +47,8 @@ This skill must not claim ownership of:
47
47
 
48
48
  - Command Center workspaces:
49
49
  `.agents/skills/mainsequence/command_center/workspace_builder/SKILL.md`
50
+ - Command Center table/pro-table output contracts and table visual metadata:
51
+ `.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md`
50
52
  - predeployment mock API contract validation:
51
53
  `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
52
54
  - APIs and FastAPI:
@@ -71,17 +73,19 @@ This skill must not claim ownership of:
71
73
  2. `docs/knowledge/command_center/forms.md`
72
74
  3. `docs/knowledge/command_center/widget_data_contracts.md`
73
75
  4. `mainsequence/client/command_center/app_component.py`
74
- 5. `.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md` when API-shaped data must become a connection-backed tabular dataset
75
- 6. `.agents/skills/mainsequence/command_center/connections/SKILL.md` when AppComponent output will be consumed by generic tabular widgets or must align with connection-first dataflow
76
+ 5. `.agents/skills/mainsequence/command_center/widgets/tables/SKILL.md` when AppComponent output will feed
77
+ a table/pro-table widget or needs `core.tabular_frame@v1` plus table visual metadata
78
+ 6. `.agents/skills/mainsequence/command_center/adapter_from_api/SKILL.md` when API-shaped data must become a connection-backed tabular dataset
79
+ 7. `.agents/skills/mainsequence/command_center/connections/SKILL.md` when AppComponent output will be consumed by generic tabular widgets or must align with connection-first dataflow
76
80
 
77
81
  If the AppComponent is backed by project APIs, also read:
78
82
 
79
- 7. `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
80
- 8. `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
83
+ 8. `.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md`
84
+ 9. `.agents/skills/mainsequence/platform_operations/orchestration_and_releases/SKILL.md`
81
85
 
82
86
  If the task is about validating the API contract before deployment, also read:
83
87
 
84
- 9. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
88
+ 10. `.agents/skills/mainsequence/command_center/api_mock_prototyping/SKILL.md`
85
89
 
86
90
  ## Inputs This Skill Needs
87
91