mas-lab-ctl 0.2.0__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 (353) hide show
  1. mas_lab_ctl-0.2.0/.gitignore +86 -0
  2. mas_lab_ctl-0.2.0/PKG-INFO +180 -0
  3. mas_lab_ctl-0.2.0/README.md +156 -0
  4. mas_lab_ctl-0.2.0/docs/developer-guide.md +48 -0
  5. mas_lab_ctl-0.2.0/docs/schemas/component-registry.yaml +38 -0
  6. mas_lab_ctl-0.2.0/docs/user-guide.md +87 -0
  7. mas_lab_ctl-0.2.0/pyproject.toml +58 -0
  8. mas_lab_ctl-0.2.0/src/mas/ctl/__init__.py +11 -0
  9. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/checkpoint.schema.yaml +105 -0
  10. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/component-registry.yaml +48 -0
  11. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/config.schema.yaml +262 -0
  12. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/contracts-registry.yaml +104 -0
  13. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/controller-openapi.json +5259 -0
  14. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/deployment.example.yaml +24 -0
  15. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/deployment.local-inproc.example.yaml +28 -0
  16. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/deployment.schema.yaml +110 -0
  17. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/effective-bind.example.yaml +45 -0
  18. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/effective-bind.schema.yaml +43 -0
  19. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/evaluation-envelope.schema.yaml +56 -0
  20. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/checkpoint-axis.yaml +22 -0
  21. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/checkpoint-v2.json +22 -0
  22. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/datasets/mmlu-pro-jsonl.yaml +18 -0
  23. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/datasets/mmlu-pro-slice.jsonl +2 -0
  24. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/datasets/mmlu-pro.yaml +22 -0
  25. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/experiments/design-schedule.yaml +34 -0
  26. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/infra/mcp-localhost.yaml +13 -0
  27. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/infra/override-stack.yaml +37 -0
  28. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/live-llm.yaml +15 -0
  29. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/llm-reasoning.yaml +18 -0
  30. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/llm-sampling.yaml +26 -0
  31. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/observability-native.yaml +13 -0
  32. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/subagent-agent.yaml +18 -0
  33. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/subagent-reviewer.yaml +9 -0
  34. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/tools/annotated.tool.yaml +66 -0
  35. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/artefacts/metrics.schema.json +114 -0
  36. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/artefacts/run_info.schema.json +67 -0
  37. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/dataset.schema.yaml +222 -0
  38. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/experiment.schema.yaml +988 -0
  39. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/memory-seed-entry.schema.yaml +26 -0
  40. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/message.schema.yaml +16 -0
  41. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/ref.schema.yaml +25 -0
  42. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/tool-fixture-mapping.schema.yaml +46 -0
  43. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/lab-config.schema.yaml +282 -0
  44. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/lab.schema.yaml +65 -0
  45. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/pipeline-manifest.schema.json +116 -0
  46. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/pipeline.schema.yaml +230 -0
  47. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/run-input.schema.yaml +155 -0
  48. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/library.schema.yaml +183 -0
  49. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/memory-seed.example.yaml +11 -0
  50. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/memory-seed.schema.yaml +28 -0
  51. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/placement-plan.example.yaml +42 -0
  52. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/placement-plan.schema.yaml +88 -0
  53. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/plugins/comm-layer.schema.yaml +44 -0
  54. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/agent.schema.yaml +1021 -0
  55. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/flavour.schema.yaml +186 -0
  56. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/agent-patch.schema.yaml +41 -0
  57. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/chunk-meta.schema.yaml +40 -0
  58. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-chunk.schema.yaml +44 -0
  59. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-assembly-params.schema.yaml +53 -0
  60. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-params.schema.yaml +14 -0
  61. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-sliding-window-params.schema.yaml +20 -0
  62. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-sliding-window-strategy.schema.yaml +21 -0
  63. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-stack-params.schema.yaml +19 -0
  64. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-stack-strategy.schema.yaml +14 -0
  65. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-strategy-params.schema.yaml +13 -0
  66. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-summarising-params.schema.yaml +21 -0
  67. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-summarising-strategy.schema.yaml +78 -0
  68. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-sources-binding.schema.yaml +117 -0
  69. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/control-binding.schema.yaml +69 -0
  70. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/design-pattern-config.schema.yaml +41 -0
  71. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/execution-binding.schema.yaml +58 -0
  72. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/failure-class.schema.yaml +14 -0
  73. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/governance-binding.schema.yaml +24 -0
  74. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-entry.schema.yaml +57 -0
  75. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-fault-inject-params.schema.yaml +32 -0
  76. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-llm-cache-params.schema.yaml +44 -0
  77. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-llm-scheduler-params.schema.yaml +38 -0
  78. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-middleware-inline.schema.yaml +35 -0
  79. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-middleware-params-by-id.schema.yaml +36 -0
  80. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-middleware-params.schema.yaml +12 -0
  81. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-tool-binding.schema.yaml +23 -0
  82. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-tool-server.schema.yaml +117 -0
  83. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-binding.schema.yaml +78 -0
  84. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-model-entry.schema.yaml +105 -0
  85. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-reasoning.schema.yaml +56 -0
  86. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-sampling.schema.yaml +106 -0
  87. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-truncation.schema.yaml +48 -0
  88. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/memory-backend-params.schema.yaml +21 -0
  89. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/memory-seed-entry.schema.yaml +20 -0
  90. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/observability-binding.schema.yaml +83 -0
  91. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-agent-patch.schema.yaml +129 -0
  92. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-context.schema.yaml +60 -0
  93. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-control.schema.yaml +22 -0
  94. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-governance.schema.yaml +26 -0
  95. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-memory-seed.schema.yaml +28 -0
  96. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-models.schema.yaml +37 -0
  97. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-object-merge.schema.yaml +22 -0
  98. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-observability.schema.yaml +74 -0
  99. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-string.schema.yaml +33 -0
  100. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-tool.schema.yaml +110 -0
  101. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-flavour-patch.schema.yaml +44 -0
  102. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-infra-patch.schema.yaml +64 -0
  103. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-mas-patch.schema.yaml +107 -0
  104. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/policy-rule.schema.yaml +57 -0
  105. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/retry-policy.schema.yaml +40 -0
  106. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/runtime-engine.schema.yaml +48 -0
  107. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/workflow-edge.schema.yaml +17 -0
  108. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/workflow-node.schema.yaml +36 -0
  109. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/infra.schema.yaml +443 -0
  110. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/llm-model-catalog.schema.yaml +122 -0
  111. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/mas.schema.yaml +336 -0
  112. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/overlay.schema.yaml +169 -0
  113. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/prompt_bundle.schema.yaml +97 -0
  114. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/tool.schema.yaml +285 -0
  115. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/tool_bundle.schema.yaml +159 -0
  116. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/workflow.schema.yaml +109 -0
  117. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime-profile.example.yaml +15 -0
  118. mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime-profile.schema.yaml +40 -0
  119. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/__init__.py +24 -0
  120. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/checkpoint.py +102 -0
  121. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/hitl_terminal.py +33 -0
  122. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/memory_seed.py +107 -0
  123. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/__init__.py +15 -0
  124. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/config.py +24 -0
  125. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/context.py +16 -0
  126. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/factory.py +8 -0
  127. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/pipeline.py +8 -0
  128. mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/session.py +31 -0
  129. mas_lab_ctl-0.2.0/src/mas/ctl/benchmark/__init__.py +9 -0
  130. mas_lab_ctl-0.2.0/src/mas/ctl/benchmark/runner.py +727 -0
  131. mas_lab_ctl-0.2.0/src/mas/ctl/benchmark/runner_dispatch.py +33 -0
  132. mas_lab_ctl-0.2.0/src/mas/ctl/cli/__init__.py +7 -0
  133. mas_lab_ctl-0.2.0/src/mas/ctl/cli/bind_flags.py +100 -0
  134. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/__init__.py +3 -0
  135. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/bundles.py +33 -0
  136. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/chat.py +563 -0
  137. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/checkpoint.py +84 -0
  138. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/compile.py +107 -0
  139. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/compose.py +132 -0
  140. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/control.py +334 -0
  141. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/plugin.py +160 -0
  142. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/registry.py +47 -0
  143. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/run_mas.py +158 -0
  144. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/serve.py +156 -0
  145. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/tui.py +193 -0
  146. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/validate.py +121 -0
  147. mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/workspace.py +134 -0
  148. mas_lab_ctl-0.2.0/src/mas/ctl/cli/help_text.py +56 -0
  149. mas_lab_ctl-0.2.0/src/mas/ctl/cli/main.py +67 -0
  150. mas_lab_ctl-0.2.0/src/mas/ctl/cli/obs_flags.py +145 -0
  151. mas_lab_ctl-0.2.0/src/mas/ctl/cli/runtime_flags.py +13 -0
  152. mas_lab_ctl-0.2.0/src/mas/ctl/cli/trace_flags.py +179 -0
  153. mas_lab_ctl-0.2.0/src/mas/ctl/compile.py +531 -0
  154. mas_lab_ctl-0.2.0/src/mas/ctl/compose/__init__.py +59 -0
  155. mas_lab_ctl-0.2.0/src/mas/ctl/compose/adapters/langgraph.py +77 -0
  156. mas_lab_ctl-0.2.0/src/mas/ctl/compose/backends/__init__.py +3 -0
  157. mas_lab_ctl-0.2.0/src/mas/ctl/compose/backends/mas_runtime_py.py +122 -0
  158. mas_lab_ctl-0.2.0/src/mas/ctl/compose/framework_registry.py +84 -0
  159. mas_lab_ctl-0.2.0/src/mas/ctl/compose/kernel_registry.py +83 -0
  160. mas_lab_ctl-0.2.0/src/mas/ctl/compose/models.py +98 -0
  161. mas_lab_ctl-0.2.0/src/mas/ctl/compose/pattern_registry.py +72 -0
  162. mas_lab_ctl-0.2.0/src/mas/ctl/compose/pipeline.py +161 -0
  163. mas_lab_ctl-0.2.0/src/mas/ctl/compose/placement_registry.py +78 -0
  164. mas_lab_ctl-0.2.0/src/mas/ctl/compose/placement_validate.py +32 -0
  165. mas_lab_ctl-0.2.0/src/mas/ctl/compose/runner.py +239 -0
  166. mas_lab_ctl-0.2.0/src/mas/ctl/deployment/__init__.py +27 -0
  167. mas_lab_ctl-0.2.0/src/mas/ctl/deployment/load.py +141 -0
  168. mas_lab_ctl-0.2.0/src/mas/ctl/deployment/runtime_id.py +37 -0
  169. mas_lab_ctl-0.2.0/src/mas/ctl/env.py +112 -0
  170. mas_lab_ctl-0.2.0/src/mas/ctl/executor/__init__.py +7 -0
  171. mas_lab_ctl-0.2.0/src/mas/ctl/executor/engine_tool_context.py +229 -0
  172. mas_lab_ctl-0.2.0/src/mas/ctl/executor/mas_session.py +751 -0
  173. mas_lab_ctl-0.2.0/src/mas/ctl/executor/run_mas.py +216 -0
  174. mas_lab_ctl-0.2.0/src/mas/ctl/executor/spawn_ledger.py +91 -0
  175. mas_lab_ctl-0.2.0/src/mas/ctl/executor/subagent_spawner.py +195 -0
  176. mas_lab_ctl-0.2.0/src/mas/ctl/infra/__init__.py +14 -0
  177. mas_lab_ctl-0.2.0/src/mas/ctl/infra/env_resolve.py +80 -0
  178. mas_lab_ctl-0.2.0/src/mas/ctl/infra/models.py +213 -0
  179. mas_lab_ctl-0.2.0/src/mas/ctl/infra/pipeline_chain.py +74 -0
  180. mas_lab_ctl-0.2.0/src/mas/ctl/infra/resolve.py +798 -0
  181. mas_lab_ctl-0.2.0/src/mas/ctl/infra/show.py +219 -0
  182. mas_lab_ctl-0.2.0/src/mas/ctl/libraries/bundles.py +68 -0
  183. mas_lab_ctl-0.2.0/src/mas/ctl/logging_setup.py +64 -0
  184. mas_lab_ctl-0.2.0/src/mas/ctl/manifest/__init__.py +19 -0
  185. mas_lab_ctl-0.2.0/src/mas/ctl/manifest/mas_agent_merge.py +384 -0
  186. mas_lab_ctl-0.2.0/src/mas/ctl/manifest/spec_bindings.py +379 -0
  187. mas_lab_ctl-0.2.0/src/mas/ctl/overlay/__init__.py +33 -0
  188. mas_lab_ctl-0.2.0/src/mas/ctl/overlay/canvas.py +543 -0
  189. mas_lab_ctl-0.2.0/src/mas/ctl/overlay/merge.py +1326 -0
  190. mas_lab_ctl-0.2.0/src/mas/ctl/overlay/normalize.py +83 -0
  191. mas_lab_ctl-0.2.0/src/mas/ctl/overrides/__init__.py +29 -0
  192. mas_lab_ctl-0.2.0/src/mas/ctl/overrides/apply.py +375 -0
  193. mas_lab_ctl-0.2.0/src/mas/ctl/overrides/bind.py +140 -0
  194. mas_lab_ctl-0.2.0/src/mas/ctl/overrides/model.py +91 -0
  195. mas_lab_ctl-0.2.0/src/mas/ctl/overrides/parser.py +186 -0
  196. mas_lab_ctl-0.2.0/src/mas/ctl/overrides/schema.py +484 -0
  197. mas_lab_ctl-0.2.0/src/mas/ctl/overrides/shortcuts.py +12 -0
  198. mas_lab_ctl-0.2.0/src/mas/ctl/paths.py +195 -0
  199. mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/__init__.py +8 -0
  200. mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/adapter.py +21 -0
  201. mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/inproc.py +52 -0
  202. mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/protocol.py +32 -0
  203. mas_lab_ctl-0.2.0/src/mas/ctl/placement/docker.py +19 -0
  204. mas_lab_ctl-0.2.0/src/mas/ctl/placement/k8s.py +19 -0
  205. mas_lab_ctl-0.2.0/src/mas/ctl/placement/protocol.py +28 -0
  206. mas_lab_ctl-0.2.0/src/mas/ctl/plugins/registry.py +28 -0
  207. mas_lab_ctl-0.2.0/src/mas/ctl/plugins/registry.yaml +5 -0
  208. mas_lab_ctl-0.2.0/src/mas/ctl/registry/__init__.py +29 -0
  209. mas_lab_ctl-0.2.0/src/mas/ctl/registry/catalog.py +178 -0
  210. mas_lab_ctl-0.2.0/src/mas/ctl/registry/introspect.py +111 -0
  211. mas_lab_ctl-0.2.0/src/mas/ctl/run_progress.py +72 -0
  212. mas_lab_ctl-0.2.0/src/mas/ctl/runtime_cli.py +177 -0
  213. mas_lab_ctl-0.2.0/src/mas/ctl/session/__init__.py +21 -0
  214. mas_lab_ctl-0.2.0/src/mas/ctl/session/bootstrap.py +596 -0
  215. mas_lab_ctl-0.2.0/src/mas/ctl/session/control.py +840 -0
  216. mas_lab_ctl-0.2.0/src/mas/ctl/session/control_dir.py +53 -0
  217. mas_lab_ctl-0.2.0/src/mas/ctl/session/control_host.py +90 -0
  218. mas_lab_ctl-0.2.0/src/mas/ctl/session/controller.py +790 -0
  219. mas_lab_ctl-0.2.0/src/mas/ctl/session/display_user_io_contract.py +37 -0
  220. mas_lab_ctl-0.2.0/src/mas/ctl/session/engine_factory.py +447 -0
  221. mas_lab_ctl-0.2.0/src/mas/ctl/session/exchange_log.py +374 -0
  222. mas_lab_ctl-0.2.0/src/mas/ctl/session/exposure.py +346 -0
  223. mas_lab_ctl-0.2.0/src/mas/ctl/session/flavour.py +96 -0
  224. mas_lab_ctl-0.2.0/src/mas/ctl/session/hitl_config.py +53 -0
  225. mas_lab_ctl-0.2.0/src/mas/ctl/session/hitl_prompt.py +62 -0
  226. mas_lab_ctl-0.2.0/src/mas/ctl/session/infra_resolve.py +59 -0
  227. mas_lab_ctl-0.2.0/src/mas/ctl/session/ingress_governance_loader.py +28 -0
  228. mas_lab_ctl-0.2.0/src/mas/ctl/session/interactive_hitl_contract.py +66 -0
  229. mas_lab_ctl-0.2.0/src/mas/ctl/session/mailbox.py +77 -0
  230. mas_lab_ctl-0.2.0/src/mas/ctl/session/manager.py +322 -0
  231. mas_lab_ctl-0.2.0/src/mas/ctl/session/manifest_config.py +165 -0
  232. mas_lab_ctl-0.2.0/src/mas/ctl/session/observability.py +294 -0
  233. mas_lab_ctl-0.2.0/src/mas/ctl/session/observability_loader.py +8 -0
  234. mas_lab_ctl-0.2.0/src/mas/ctl/session/operator_console.py +157 -0
  235. mas_lab_ctl-0.2.0/src/mas/ctl/session/params_sidecar.py +23 -0
  236. mas_lab_ctl-0.2.0/src/mas/ctl/session/protocol_hints.py +48 -0
  237. mas_lab_ctl-0.2.0/src/mas/ctl/session/session_flags.py +52 -0
  238. mas_lab_ctl-0.2.0/src/mas/ctl/session/turn_queue.py +223 -0
  239. mas_lab_ctl-0.2.0/src/mas/ctl/testing/cli_helpers.py +122 -0
  240. mas_lab_ctl-0.2.0/src/mas/ctl/testing/scenario_commands.py +165 -0
  241. mas_lab_ctl-0.2.0/src/mas/ctl/ui/__init__.py +8 -0
  242. mas_lab_ctl-0.2.0/src/mas/ctl/ui/curses_app.py +266 -0
  243. mas_lab_ctl-0.2.0/src/mas/ctl/ui/display.py +25 -0
  244. mas_lab_ctl-0.2.0/src/mas/ctl/ui/stdout.py +103 -0
  245. mas_lab_ctl-0.2.0/src/mas/ctl/ui/turn_result.py +57 -0
  246. mas_lab_ctl-0.2.0/src/mas/ctl/validate/__init__.py +29 -0
  247. mas_lab_ctl-0.2.0/src/mas/ctl/validate/deprecations.py +212 -0
  248. mas_lab_ctl-0.2.0/src/mas/ctl/validate/identity.py +158 -0
  249. mas_lab_ctl-0.2.0/src/mas/ctl/validate/providers.py +132 -0
  250. mas_lab_ctl-0.2.0/src/mas/ctl/validate/refs.py +162 -0
  251. mas_lab_ctl-0.2.0/src/mas/ctl/validate/schema_errors.py +76 -0
  252. mas_lab_ctl-0.2.0/src/mas/ctl/validate/schemas.py +254 -0
  253. mas_lab_ctl-0.2.0/src/mas/ctl/validate/separation.py +220 -0
  254. mas_lab_ctl-0.2.0/src/mas/ctl/validate/validator.py +421 -0
  255. mas_lab_ctl-0.2.0/src/mas/ctl/workspace/__init__.py +19 -0
  256. mas_lab_ctl-0.2.0/src/mas/ctl/workspace/config.py +333 -0
  257. mas_lab_ctl-0.2.0/tests/conftest.py +37 -0
  258. mas_lab_ctl-0.2.0/tests/test_application_endpoint.py +123 -0
  259. mas_lab_ctl-0.2.0/tests/test_archive_artefact.py +72 -0
  260. mas_lab_ctl-0.2.0/tests/test_benchmark_runner.py +394 -0
  261. mas_lab_ctl-0.2.0/tests/test_bootstrap_context.py +235 -0
  262. mas_lab_ctl-0.2.0/tests/test_budget_schema.py +86 -0
  263. mas_lab_ctl-0.2.0/tests/test_cache_read_write_controls.py +50 -0
  264. mas_lab_ctl-0.2.0/tests/test_chat_checkpoint_resume.py +59 -0
  265. mas_lab_ctl-0.2.0/tests/test_chat_exit_code.py +49 -0
  266. mas_lab_ctl-0.2.0/tests/test_checkpoint.py +208 -0
  267. mas_lab_ctl-0.2.0/tests/test_checkpoint_validator.py +96 -0
  268. mas_lab_ctl-0.2.0/tests/test_cli_bind.py +288 -0
  269. mas_lab_ctl-0.2.0/tests/test_cli_overlay_shape.py +85 -0
  270. mas_lab_ctl-0.2.0/tests/test_cli_overrides.py +581 -0
  271. mas_lab_ctl-0.2.0/tests/test_cli_plugin.py +128 -0
  272. mas_lab_ctl-0.2.0/tests/test_compile.py +313 -0
  273. mas_lab_ctl-0.2.0/tests/test_compile_cli.py +441 -0
  274. mas_lab_ctl-0.2.0/tests/test_component_catalog_registry.py +67 -0
  275. mas_lab_ctl-0.2.0/tests/test_compose_pipeline.py +33 -0
  276. mas_lab_ctl-0.2.0/tests/test_control_contract.py +463 -0
  277. mas_lab_ctl-0.2.0/tests/test_control_dir.py +21 -0
  278. mas_lab_ctl-0.2.0/tests/test_delegates_to_deprecation.py +359 -0
  279. mas_lab_ctl-0.2.0/tests/test_deployment_runtime_id.py +38 -0
  280. mas_lab_ctl-0.2.0/tests/test_display_user_io_contract.py +35 -0
  281. mas_lab_ctl-0.2.0/tests/test_endpoint_usage_deprecation.py +115 -0
  282. mas_lab_ctl-0.2.0/tests/test_engine_factory.py +470 -0
  283. mas_lab_ctl-0.2.0/tests/test_engine_tool_context.py +71 -0
  284. mas_lab_ctl-0.2.0/tests/test_engine_tool_loop.py +47 -0
  285. mas_lab_ctl-0.2.0/tests/test_env_model_override.py +45 -0
  286. mas_lab_ctl-0.2.0/tests/test_env_resolve.py +39 -0
  287. mas_lab_ctl-0.2.0/tests/test_exchange_log.py +378 -0
  288. mas_lab_ctl-0.2.0/tests/test_exchange_tracing_plugins.py +94 -0
  289. mas_lab_ctl-0.2.0/tests/test_execution_separation.py +66 -0
  290. mas_lab_ctl-0.2.0/tests/test_exposure.py +300 -0
  291. mas_lab_ctl-0.2.0/tests/test_hitl_prompt.py +43 -0
  292. mas_lab_ctl-0.2.0/tests/test_huggingface_token.py +116 -0
  293. mas_lab_ctl-0.2.0/tests/test_infra_entries.py +360 -0
  294. mas_lab_ctl-0.2.0/tests/test_infra_llm_leaves.py +246 -0
  295. mas_lab_ctl-0.2.0/tests/test_infra_show.py +151 -0
  296. mas_lab_ctl-0.2.0/tests/test_interactive_hitl_contract.py +85 -0
  297. mas_lab_ctl-0.2.0/tests/test_manifest_load.py +50 -0
  298. mas_lab_ctl-0.2.0/tests/test_manifest_observability_config.py +117 -0
  299. mas_lab_ctl-0.2.0/tests/test_manifest_tools_bootstrap.py +62 -0
  300. mas_lab_ctl-0.2.0/tests/test_mas_agent_merge.py +717 -0
  301. mas_lab_ctl-0.2.0/tests/test_mas_session.py +686 -0
  302. mas_lab_ctl-0.2.0/tests/test_middleware_for_per.py +235 -0
  303. mas_lab_ctl-0.2.0/tests/test_native_jsonl_plugin.py +135 -0
  304. mas_lab_ctl-0.2.0/tests/test_obs_flags_flavour_overlay.py +89 -0
  305. mas_lab_ctl-0.2.0/tests/test_obs_transform.py +48 -0
  306. mas_lab_ctl-0.2.0/tests/test_observability_loader.py +45 -0
  307. mas_lab_ctl-0.2.0/tests/test_observability_per_agent_scoping.py +192 -0
  308. mas_lab_ctl-0.2.0/tests/test_observability_pipeline_shared.py +137 -0
  309. mas_lab_ctl-0.2.0/tests/test_operator_console.py +132 -0
  310. mas_lab_ctl-0.2.0/tests/test_overlay_agent_patch_schema.py +177 -0
  311. mas_lab_ctl-0.2.0/tests/test_overlay_ref_resolve.py +50 -0
  312. mas_lab_ctl-0.2.0/tests/test_override_schema.py +292 -0
  313. mas_lab_ctl-0.2.0/tests/test_params_sidecar.py +13 -0
  314. mas_lab_ctl-0.2.0/tests/test_pattern_registry.py +17 -0
  315. mas_lab_ctl-0.2.0/tests/test_placement_validate.py +91 -0
  316. mas_lab_ctl-0.2.0/tests/test_plugin_params_by_id.py +134 -0
  317. mas_lab_ctl-0.2.0/tests/test_protocol_hints.py +34 -0
  318. mas_lab_ctl-0.2.0/tests/test_provider_tool_claims.py +72 -0
  319. mas_lab_ctl-0.2.0/tests/test_ref_paths.py +55 -0
  320. mas_lab_ctl-0.2.0/tests/test_resolve_manifest_library_app.py +28 -0
  321. mas_lab_ctl-0.2.0/tests/test_run_mas_compose.py +187 -0
  322. mas_lab_ctl-0.2.0/tests/test_run_mas_hitl.py +115 -0
  323. mas_lab_ctl-0.2.0/tests/test_runtime_engine_resolve.py +165 -0
  324. mas_lab_ctl-0.2.0/tests/test_schema_cache_invalidation.py +169 -0
  325. mas_lab_ctl-0.2.0/tests/test_schema_errors.py +73 -0
  326. mas_lab_ctl-0.2.0/tests/test_schema_ref_pointer.py +176 -0
  327. mas_lab_ctl-0.2.0/tests/test_schema_registry_cache.py +11 -0
  328. mas_lab_ctl-0.2.0/tests/test_send_steer_patterns.py +325 -0
  329. mas_lab_ctl-0.2.0/tests/test_send_steer_session.py +345 -0
  330. mas_lab_ctl-0.2.0/tests/test_session_controller_finalize_turn.py +219 -0
  331. mas_lab_ctl-0.2.0/tests/test_session_controller_session_id.py +109 -0
  332. mas_lab_ctl-0.2.0/tests/test_session_controller_skills.py +203 -0
  333. mas_lab_ctl-0.2.0/tests/test_session_controller_working_memory.py +195 -0
  334. mas_lab_ctl-0.2.0/tests/test_session_flavour.py +97 -0
  335. mas_lab_ctl-0.2.0/tests/test_session_mailbox.py +44 -0
  336. mas_lab_ctl-0.2.0/tests/test_session_manager.py +189 -0
  337. mas_lab_ctl-0.2.0/tests/test_session_observability_setup.py +142 -0
  338. mas_lab_ctl-0.2.0/tests/test_shipped_manifest_identity.py +110 -0
  339. mas_lab_ctl-0.2.0/tests/test_spawn_ledger.py +97 -0
  340. mas_lab_ctl-0.2.0/tests/test_spec_bindings_governance.py +40 -0
  341. mas_lab_ctl-0.2.0/tests/test_stdout_display.py +44 -0
  342. mas_lab_ctl-0.2.0/tests/test_subagent_manifest.py +90 -0
  343. mas_lab_ctl-0.2.0/tests/test_subagent_spawner.py +305 -0
  344. mas_lab_ctl-0.2.0/tests/test_subagent_spawner_concurrent.py +96 -0
  345. mas_lab_ctl-0.2.0/tests/test_summarizer_eval_model_schema.py +160 -0
  346. mas_lab_ctl-0.2.0/tests/test_trace_flags.py +139 -0
  347. mas_lab_ctl-0.2.0/tests/test_ui_canvas_overlay.py +389 -0
  348. mas_lab_ctl-0.2.0/tests/test_validate_cli.py +45 -0
  349. mas_lab_ctl-0.2.0/tests/test_validate_identity.py +126 -0
  350. mas_lab_ctl-0.2.0/tests/test_validation_enhancements.py +197 -0
  351. mas_lab_ctl-0.2.0/tests/test_working_memory_compaction_bootstrap.py +171 -0
  352. mas_lab_ctl-0.2.0/tests/test_workspace_cache_mode.py +26 -0
  353. mas_lab_ctl-0.2.0/tests/test_workspace_env.py +27 -0
@@ -0,0 +1,86 @@
1
+ *.pyc
2
+ __pycache__/
3
+ *.egg-info/
4
+ .DS_Store
5
+ dist/
6
+ build/
7
+ .venv/
8
+ .demo-ui/
9
+ .demo-ui-mock/
10
+ .env
11
+ .env.local
12
+ .env.*.local
13
+ config.yaml
14
+ !lab/src/mas/lab/templates/**/config.yaml
15
+ !docs/tutorials/**/config.yaml
16
+ !labs/**/config.yaml
17
+ !library-samples/sample-workspace/config.yaml
18
+ .mypy_cache/
19
+ .ruff_cache/
20
+ .pytest_cache/
21
+ .test-venv/
22
+ node_modules/
23
+ *.log
24
+ docs/tutorials/**/logs/
25
+ .hypothesis/
26
+ compliance-report.json
27
+ COMPLIANCE_REPORT.md
28
+ compliance/results/
29
+
30
+ # MkDocs build output
31
+ site/
32
+
33
+ .vscode/
34
+ .cursor/
35
+ .claude/
36
+
37
+ # Test / coverage artifacts
38
+ .coverage
39
+ coverage.xml
40
+ coverage.json
41
+ **/coverage.json
42
+
43
+ # LaTeX build artifacts
44
+ *.fdb_latexmk
45
+ *.fls
46
+ *.aux
47
+ *.out
48
+ *.toc
49
+ *.synctex.gz
50
+
51
+ # Run output / artifacts
52
+ **/output/*.jsonl
53
+ **/output/benchmark
54
+ **/output/meta.json
55
+ **/output/current_run_id.txt
56
+ **/output/*/
57
+ .tutorial-cache/
58
+ tests/.tutorial-engine-cache/
59
+ .demo-cache/
60
+ # Local mas-ctl chat traces next to an agent (fixtures live under fixtures/ or T01 traces/)
61
+ docs/tutorials/**/agents/**/traces/
62
+
63
+ # Backup files
64
+ *.bak
65
+ *.bak2
66
+
67
+ # Legacy dead code (removed from repo)
68
+ lab/src/mas/lab/_cli_legacy.py
69
+ .deepeval/
70
+ ~/.mas/
71
+
72
+
73
+ # Docker local secrets + data (never commit)
74
+ docker/.env
75
+ docker/data/*
76
+ !docker/data/.gitkeep
77
+
78
+ # Local protocol compliance checkouts and reports
79
+ compliance/vendor/
80
+
81
+ # Local harness playbooks (not published)
82
+ AGENTS.md
83
+ # .agents/
84
+ COVERAGE_REPORT.md
85
+ MANIFEST_SCHEMA_MAPPING.md
86
+ .lycheecache
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.5
2
+ Name: mas-lab-ctl
3
+ Version: 0.2.0
4
+ Summary: MAS control plane V2 — compile, compose, session, placement
5
+ Project-URL: Homepage, https://github.com/ioc-project/mas-lab
6
+ Project-URL: Issues, https://github.com/ioc-project/mas-lab/issues
7
+ License: Apache-2.0
8
+ Requires-Python: >=3.11
9
+ Requires-Dist: certifi>=2024.0
10
+ Requires-Dist: click>=8.0
11
+ Requires-Dist: httpx>=0.27
12
+ Requires-Dist: jsonschema>=4.0
13
+ Requires-Dist: mas-lab-library-skills
14
+ Requires-Dist: mas-lab-library-standard
15
+ Requires-Dist: mas-lab-runtime
16
+ Requires-Dist: python-dotenv>=1.0
17
+ Requires-Dist: pyyaml>=6.0
18
+ Provides-Extra: curses
19
+ Requires-Dist: windows-curses>=2.3.2; (sys_platform == 'win32') and extra == 'curses'
20
+ Provides-Extra: dev
21
+ Requires-Dist: import-linter>=2.0; extra == 'dev'
22
+ Requires-Dist: pytest>=8.0; extra == 'dev'
23
+ Description-Content-Type: text/markdown
24
+
25
+ <!--
26
+ Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
27
+ SPDX-License-Identifier: Apache-2.0
28
+ -->
29
+ # ctl
30
+
31
+ > Multi-agent orchestration — compile, compose, chat, validate, run.
32
+
33
+ ---
34
+
35
+ ## Objective
36
+
37
+ `mas-ctl` manages multi-agent systems described by declarative **MAS manifests**
38
+ (`mas.yaml`). It resolves topologies, applies flavours and infra bundles, runs
39
+ workflows, and provides the **interactive** CLI (`chat`, `tui`) on top of
40
+ `mas-runtime`.
41
+
42
+ ```
43
+ mas-runtime ← single agent : kernel + contracts + design-pattern plugins
44
+ mas-ctl ← multi-agent : compile, compose, chat, run-mas, validate
45
+ mas-lab ← evaluation : benchmarks, pipelines, controller UI
46
+ ```
47
+
48
+ Benchmarking is **`mas-lab`**, not `mas-ctl`.
49
+
50
+ ---
51
+
52
+ ## Install
53
+
54
+ ```bash
55
+ uv sync --all-packages
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Quickstart
61
+
62
+ ```bash
63
+ # Validate / compile manifests
64
+ mas-ctl validate agent.yaml
65
+ mas-ctl compile agent.yaml -o overlays/tools.yaml
66
+
67
+ # Interactive single agent
68
+ mas-ctl chat agent.yaml -q "Hello"
69
+
70
+ # Run a MAS
71
+ mas-ctl run-mas library-samples/apps/trip-planner/mas.yaml --flavour local
72
+
73
+ # Inspect workspace / infra
74
+ mas-ctl infra list
75
+ mas-ctl flavour list
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Key concepts
81
+
82
+ ### MAS manifest (`mas.yaml`)
83
+
84
+ Declares agents, workflow, and metadata. See
85
+ [docs/manifests/mas.md](../docs/manifests/mas.md).
86
+
87
+ ### Flavour
88
+
89
+ Selects model endpoint and non-secret configuration (`local`, `mock`, …) from
90
+ `library-standard`.
91
+
92
+ ### Scenario
93
+
94
+ Named overlay for A/B configuration without duplicating manifests.
95
+
96
+ ### Workspace
97
+
98
+ `$XDG_CONFIG_HOME/mas/config.yaml` and optional project `config.yaml` — see
99
+ [docs/user-config.md](../docs/user-config.md) for the full XDG layout.
100
+
101
+ ---
102
+
103
+ ## CLI reference
104
+
105
+ | Command | What it does | Flags |
106
+ |---------|-------------|-------|
107
+ | `mas-ctl chat MANIFEST` | Interactive or scripted conversation | [docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) |
108
+ | `mas-ctl tui MANIFEST` | Terminal UI for chat | same · [docs/ctl/tui.md](../docs/ctl/tui.md) |
109
+ | `mas-ctl run-mas MANIFEST` | Run a multi-agent workflow | [docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) |
110
+ | `mas-ctl compile …` | Dump resolved Agent/MAS YAML (overlays + defaults) | [docs/cli/compile.md](../docs/cli/compile.md) |
111
+ | `mas-ctl compose …` | Compose effective manifests / placement | `mas-ctl compose --help` |
112
+ | `mas-ctl plan …` | Dry-run placement plan | `mas-ctl plan --help` |
113
+ | `mas-ctl validate PATH …` | Validate agent / MAS / experiment YAML | [docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) |
114
+ | `mas-ctl schemas` | List JSON/YAML schemas | — |
115
+ | `mas-ctl flavour list\|show` | List or show flavours | — |
116
+ | `mas-ctl infra list\|show` | List or show infra bundles | — |
117
+ | `mas-ctl registry …` | Plugin registry introspection | `mas-ctl registry --help` |
118
+ | `mas-ctl checkpoint …` | Session checkpoint utilities | `mas-ctl checkpoint --help` |
119
+ | `mas-ctl list-bundles` | List library bundles | — |
120
+
121
+ Overview: [docs/cli/index.md](../docs/cli/index.md).
122
+ Workspace YAML: [docs/references/config.yaml.md](../docs/references/config.yaml.md).
123
+
124
+ ---
125
+
126
+ ## Design philosophy
127
+
128
+ 1. **Declarative over imperative** — topology and policies in YAML.
129
+ 2. **Secrets separated from config** — only `*_env` names in manifests.
130
+ 3. **Thin CLI** — click handlers call library code in `mas.ctl.*`.
131
+ 4. **Library-first bench** — `mas-lab` imports ctl session/bootstrap, not subprocesses.
132
+
133
+ ---
134
+
135
+ ## Tutorials
136
+
137
+ Primary path (MkDocs): **[docs/tutorials/index.md](../docs/tutorials/index.md)**
138
+
139
+ | # | Tutorial | Topic |
140
+ |---|----------|-------|
141
+ | 0 | [Environment](../docs/tutorials/00-environment-setup/README.md) | Docker / `uv`, credentials, workspace |
142
+ | 1 | [Building an agent](../docs/tutorials/01-building-an-agent/README.md) | `mas-ctl chat`, overlays |
143
+ | 2 | [Creating a MAS](../docs/tutorials/02-creating-a-mas/README.md) | `mas.yaml`, `run-mas` |
144
+ | 3 | [Experiments](../docs/tutorials/03-experiments-and-analysis/README.md) | `mas-lab benchmark run` |
145
+
146
+ ---
147
+
148
+ ## Examples
149
+
150
+ | Path | Description |
151
+ |------|-------------|
152
+ | [library-samples/apps/](../library-samples/apps/) | Trip planner, Q&A, moderator variants |
153
+ | [docs/tutorials/](../docs/tutorials/) | Copy-paste tutorial manifests |
154
+
155
+ Flavours ship in **`library-standard`** and resolve by name:
156
+ `mas-ctl run-mas … --flavour local`.
157
+
158
+ ---
159
+
160
+ ## Documentation
161
+
162
+ | Document | Covers |
163
+ |----------|--------|
164
+ | [../docs/user-guide.md](../docs/user-guide.md) | Operational guide |
165
+ | [../docs/cli/index.md](../docs/cli/index.md) | CLI overview |
166
+ | [../docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) | `mas-ctl` flags (`--trace`, `--events`, …) |
167
+ | [../docs/references/config.yaml.md](../docs/references/config.yaml.md) | `config.yaml` fields |
168
+ | [../docs/cli/observability.md](../docs/cli/observability.md) | `events.jsonl` |
169
+ | [../docs/manifests/](../docs/manifests/README.md) | YAML manifests |
170
+ | [../docs/libraries.md](../docs/libraries.md) | Package matrix |
171
+
172
+ ---
173
+
174
+ ## Related packages
175
+
176
+ | Package | Role |
177
+ |---------|------|
178
+ | [`mas-runtime`](../runtime/) | Kernel, contracts, design patterns |
179
+ | [`mas-lab`](../lab/) | Benchmarks, pipelines, UI |
180
+ | [`library-standard`](../library-standard/) | Flavours, overlays, infra |
@@ -0,0 +1,156 @@
1
+ <!--
2
+ Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
3
+ SPDX-License-Identifier: Apache-2.0
4
+ -->
5
+ # ctl
6
+
7
+ > Multi-agent orchestration — compile, compose, chat, validate, run.
8
+
9
+ ---
10
+
11
+ ## Objective
12
+
13
+ `mas-ctl` manages multi-agent systems described by declarative **MAS manifests**
14
+ (`mas.yaml`). It resolves topologies, applies flavours and infra bundles, runs
15
+ workflows, and provides the **interactive** CLI (`chat`, `tui`) on top of
16
+ `mas-runtime`.
17
+
18
+ ```
19
+ mas-runtime ← single agent : kernel + contracts + design-pattern plugins
20
+ mas-ctl ← multi-agent : compile, compose, chat, run-mas, validate
21
+ mas-lab ← evaluation : benchmarks, pipelines, controller UI
22
+ ```
23
+
24
+ Benchmarking is **`mas-lab`**, not `mas-ctl`.
25
+
26
+ ---
27
+
28
+ ## Install
29
+
30
+ ```bash
31
+ uv sync --all-packages
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Quickstart
37
+
38
+ ```bash
39
+ # Validate / compile manifests
40
+ mas-ctl validate agent.yaml
41
+ mas-ctl compile agent.yaml -o overlays/tools.yaml
42
+
43
+ # Interactive single agent
44
+ mas-ctl chat agent.yaml -q "Hello"
45
+
46
+ # Run a MAS
47
+ mas-ctl run-mas library-samples/apps/trip-planner/mas.yaml --flavour local
48
+
49
+ # Inspect workspace / infra
50
+ mas-ctl infra list
51
+ mas-ctl flavour list
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Key concepts
57
+
58
+ ### MAS manifest (`mas.yaml`)
59
+
60
+ Declares agents, workflow, and metadata. See
61
+ [docs/manifests/mas.md](../docs/manifests/mas.md).
62
+
63
+ ### Flavour
64
+
65
+ Selects model endpoint and non-secret configuration (`local`, `mock`, …) from
66
+ `library-standard`.
67
+
68
+ ### Scenario
69
+
70
+ Named overlay for A/B configuration without duplicating manifests.
71
+
72
+ ### Workspace
73
+
74
+ `$XDG_CONFIG_HOME/mas/config.yaml` and optional project `config.yaml` — see
75
+ [docs/user-config.md](../docs/user-config.md) for the full XDG layout.
76
+
77
+ ---
78
+
79
+ ## CLI reference
80
+
81
+ | Command | What it does | Flags |
82
+ |---------|-------------|-------|
83
+ | `mas-ctl chat MANIFEST` | Interactive or scripted conversation | [docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) |
84
+ | `mas-ctl tui MANIFEST` | Terminal UI for chat | same · [docs/ctl/tui.md](../docs/ctl/tui.md) |
85
+ | `mas-ctl run-mas MANIFEST` | Run a multi-agent workflow | [docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) |
86
+ | `mas-ctl compile …` | Dump resolved Agent/MAS YAML (overlays + defaults) | [docs/cli/compile.md](../docs/cli/compile.md) |
87
+ | `mas-ctl compose …` | Compose effective manifests / placement | `mas-ctl compose --help` |
88
+ | `mas-ctl plan …` | Dry-run placement plan | `mas-ctl plan --help` |
89
+ | `mas-ctl validate PATH …` | Validate agent / MAS / experiment YAML | [docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) |
90
+ | `mas-ctl schemas` | List JSON/YAML schemas | — |
91
+ | `mas-ctl flavour list\|show` | List or show flavours | — |
92
+ | `mas-ctl infra list\|show` | List or show infra bundles | — |
93
+ | `mas-ctl registry …` | Plugin registry introspection | `mas-ctl registry --help` |
94
+ | `mas-ctl checkpoint …` | Session checkpoint utilities | `mas-ctl checkpoint --help` |
95
+ | `mas-ctl list-bundles` | List library bundles | — |
96
+
97
+ Overview: [docs/cli/index.md](../docs/cli/index.md).
98
+ Workspace YAML: [docs/references/config.yaml.md](../docs/references/config.yaml.md).
99
+
100
+ ---
101
+
102
+ ## Design philosophy
103
+
104
+ 1. **Declarative over imperative** — topology and policies in YAML.
105
+ 2. **Secrets separated from config** — only `*_env` names in manifests.
106
+ 3. **Thin CLI** — click handlers call library code in `mas.ctl.*`.
107
+ 4. **Library-first bench** — `mas-lab` imports ctl session/bootstrap, not subprocesses.
108
+
109
+ ---
110
+
111
+ ## Tutorials
112
+
113
+ Primary path (MkDocs): **[docs/tutorials/index.md](../docs/tutorials/index.md)**
114
+
115
+ | # | Tutorial | Topic |
116
+ |---|----------|-------|
117
+ | 0 | [Environment](../docs/tutorials/00-environment-setup/README.md) | Docker / `uv`, credentials, workspace |
118
+ | 1 | [Building an agent](../docs/tutorials/01-building-an-agent/README.md) | `mas-ctl chat`, overlays |
119
+ | 2 | [Creating a MAS](../docs/tutorials/02-creating-a-mas/README.md) | `mas.yaml`, `run-mas` |
120
+ | 3 | [Experiments](../docs/tutorials/03-experiments-and-analysis/README.md) | `mas-lab benchmark run` |
121
+
122
+ ---
123
+
124
+ ## Examples
125
+
126
+ | Path | Description |
127
+ |------|-------------|
128
+ | [library-samples/apps/](../library-samples/apps/) | Trip planner, Q&A, moderator variants |
129
+ | [docs/tutorials/](../docs/tutorials/) | Copy-paste tutorial manifests |
130
+
131
+ Flavours ship in **`library-standard`** and resolve by name:
132
+ `mas-ctl run-mas … --flavour local`.
133
+
134
+ ---
135
+
136
+ ## Documentation
137
+
138
+ | Document | Covers |
139
+ |----------|--------|
140
+ | [../docs/user-guide.md](../docs/user-guide.md) | Operational guide |
141
+ | [../docs/cli/index.md](../docs/cli/index.md) | CLI overview |
142
+ | [../docs/cli/mas-ctl.md](../docs/cli/mas-ctl.md) | `mas-ctl` flags (`--trace`, `--events`, …) |
143
+ | [../docs/references/config.yaml.md](../docs/references/config.yaml.md) | `config.yaml` fields |
144
+ | [../docs/cli/observability.md](../docs/cli/observability.md) | `events.jsonl` |
145
+ | [../docs/manifests/](../docs/manifests/README.md) | YAML manifests |
146
+ | [../docs/libraries.md](../docs/libraries.md) | Package matrix |
147
+
148
+ ---
149
+
150
+ ## Related packages
151
+
152
+ | Package | Role |
153
+ |---------|------|
154
+ | [`mas-runtime`](../runtime/) | Kernel, contracts, design patterns |
155
+ | [`mas-lab`](../lab/) | Benchmarks, pipelines, UI |
156
+ | [`library-standard`](../library-standard/) | Flavours, overlays, infra |
@@ -0,0 +1,48 @@
1
+ <!--
2
+ Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
3
+ SPDX-License-Identifier: Apache-2.0
4
+ -->
5
+ # mas-ctl Developer Guide
6
+
7
+ This guide is for developers who extend `mas-ctl` while keeping it declarative. `mas-ctl` stays a thin CLI over reusable orchestration library code.
8
+
9
+ ## Development principles
10
+
11
+ - Keep orchestration logic in library modules, not command handlers.
12
+ - Model topology and policy in manifests first.
13
+ - Preserve deterministic resolution order (base + flavour + overlays + overrides).
14
+
15
+ ## Extension areas
16
+
17
+ ### Manifest resolution
18
+
19
+ - Add new schema keys only with explicit validation rules.
20
+ - Maintain strict secret-vs-config separation.
21
+
22
+ ### Workflow/topology
23
+
24
+ - Add topology types with clear execution semantics.
25
+ - Provide migration notes when changing default behavior.
26
+
27
+ ### Placement
28
+
29
+ - Only `local-inproc` is OSS-supported; other strategies are planned for a later release (see `ctl/docs/schemas/component-registry.yaml`).
30
+ - Validate placement strategy at compose time via `placement_validate.validate_placement_strategy`.
31
+
32
+ ### Policy enforcement
33
+
34
+ - Implement checks as composable components.
35
+ - Produce actionable policy errors with context.
36
+
37
+ ## Testing strategy
38
+
39
+ - Unit tests for manifest parsing and overlay merge behavior.
40
+ - Integration tests for representative topologies.
41
+ - End-to-end tests with real runtime/lab coupling where needed.
42
+
43
+ ## Developer checklist
44
+
45
+ - New config fields documented
46
+ - Effective config output updated
47
+ - CLI help updated
48
+ - Backward-compatibility implications documented
@@ -0,0 +1,38 @@
1
+ # Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ # Authoritative runtime/placement/framework IDs (mas-lab)
4
+ apiVersion: mas/v1
5
+ kind: ComponentRegistry
6
+
7
+ metadata:
8
+ name: component-registry
9
+ description: Single source of truth for ctl dispatch IDs
10
+
11
+ spec:
12
+ runtimes:
13
+ - id: mas-runtime-py
14
+ layer: ctl.runtime
15
+ module: mas.ctl.compose.backends.mas_runtime_py.MasRuntimePyKernelBackend
16
+ description: Python Mealy kernel (OSS default)
17
+ status: available
18
+
19
+ placement:
20
+ - id: local-inproc
21
+ layer: ctl.placement
22
+ module: mas.ctl.compose.placement_registry.LocalInprocBackend
23
+ description: In-process comm bus (OSS default)
24
+ status: available
25
+ - id: docker
26
+ layer: ctl.placement
27
+ description: Docker placement — not in this OSS release; future release
28
+ status: future_release
29
+ - id: kubernetes
30
+ layer: ctl.placement
31
+ description: Kubernetes placement — not in this OSS release; future release
32
+ status: future_release
33
+
34
+ framework:
35
+ - id: native
36
+ layer: ctl.framework
37
+ description: Native MAS kernel runner (OSS — mas-lab benchmark path)
38
+ status: available
@@ -0,0 +1,87 @@
1
+ <!--
2
+ Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
3
+ SPDX-License-Identifier: Apache-2.0
4
+ -->
5
+ # mas-ctl User Guide
6
+
7
+ `mas-ctl` runs agents and multi-agent systems (MAS) from YAML manifests. This guide is for teams that run a MAS, switch environments with flavours, and apply overlays.
8
+
9
+ ## Install
10
+
11
+ From a checkout of the repository (the PyPI upload is still pending):
12
+
13
+ ```bash
14
+ uv sync --all-packages
15
+ ```
16
+
17
+ `mas-ctl` is then available through `uv run mas-ctl ...` (or activate the virtual environment).
18
+
19
+ ## Quickstart
20
+
21
+ Run from a MAS manifest:
22
+
23
+ ```bash
24
+ mas-ctl run-mas mas.yaml --flavour local
25
+ ```
26
+
27
+ Run with an explicit prompt and an overlay (a partial manifest merged on top of the base):
28
+
29
+ ```bash
30
+ mas-ctl run-mas mas.yaml --overlay overlays/baseline.yaml --prompt "Plan a 3-day trip to Paris" --flavour local
31
+ ```
32
+
33
+ Add `--override PATH=VALUE` (repeatable) for one-off, schema-validated changes applied last.
34
+
35
+ ## Core concepts
36
+
37
+ - MAS manifest: declares agents, topology/workflow, metadata
38
+ - Deployment: placement strategy and runtime binding (`local-inproc` is the only OSS-supported strategy)
39
+ - Overlay: a partial manifest merged over the base (`--overlay`, `--override`). In `mas-lab`, a *scenario* is the experiment-level construct that selects overlays per run (hierarchy: Experiment, Scenario, Item, Run).
40
+ - Flavour: a named environment profile shipped by a library (list them with `mas-ctl flavour list`). Only `local` is available today.
41
+ - Policy: guardrails and runtime limits declared in the manifest
42
+
43
+ ### Placement (OSS)
44
+
45
+ Only `local-inproc` placement is supported in mas-lab OSS. Strategies
46
+ `local-multiprocess`, `docker`, and `kubernetes` are planned for a later release.
47
+ `compose` and `plan` fail with a clear error if an unsupported strategy is used.
48
+
49
+ ## Common tasks
50
+
51
+ ### Validate effective topology
52
+
53
+ - Dry-run composition and placement: `mas-ctl plan mas.yaml`.
54
+ - Print the composed manifest: `mas-ctl compose mas.yaml` (write it with `--output`).
55
+ - Check manifests against their schemas: `mas-ctl validate mas.yaml`.
56
+
57
+ ### Switch environments
58
+
59
+ - Keep the same MAS manifest; switch only `--flavour` (or `--infra-ref` for an infra bundle).
60
+
61
+ ### Audit secret usage
62
+
63
+ - Secrets are never stored in manifests. Verify that every `*_env` reference names an environment variable that is set at runtime.
64
+
65
+ ## CLI map
66
+
67
+ Run `mas-ctl --help` and `mas-ctl <command> --help` for all options.
68
+
69
+ - `chat`, `tui` — interactive conversation with an agent or MAS manifest
70
+ - `run-mas` — execute a MAS workflow (`--prompt`/`--query`, `--interactive`)
71
+ - `compile`, `compose`, `plan` — manifest compilation, composition and placement dry-run
72
+ - `validate`, `schemas` — YAML validation and schema listing
73
+ - `flavour list` — flavours shipped by installed libraries
74
+ - `infra list` (alias `list-bundles`) — infra bundles
75
+ - `registry list`, `registry query` — plugin registry introspection
76
+ - `plugin list`, `plugin enable`, `plugin doctor` — plugin inspection and checks
77
+ - `serve` — expose an agent through the endpoint plugin its infra selects
78
+ - `checkpoint` (`list`, `show`, `fork`, `resume`) — session checkpoints
79
+ - `control` (`attach`, `inspect`, `pause`, `resume`, `steer`, `snapshot`, ...) — drive a running session
80
+
81
+ Benchmarking: **`mas-lab benchmark run`** (see [Tutorial 3](../../docs/tutorials/03-experiments-and-analysis/README.md)).
82
+
83
+ ## Troubleshooting
84
+
85
+ - Overlay not applied: check the `--overlay` path and the `--override` session-tree path.
86
+ - Agent startup failure: validate referenced agent manifests.
87
+ - Policy mismatch: inspect effective config output before run.
@@ -0,0 +1,58 @@
1
+ # Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ [build-system]
4
+ requires = ["hatchling"]
5
+ build-backend = "hatchling.build"
6
+
7
+ [project]
8
+ name = "mas-lab-ctl"
9
+ version = "0.2.0"
10
+ description = "MAS control plane V2 — compile, compose, session, placement"
11
+ readme = "README.md"
12
+ requires-python = ">=3.11"
13
+ license = { text = "Apache-2.0" }
14
+ dependencies = [
15
+ "mas-lab-runtime",
16
+ "mas-lab-library-standard",
17
+ "mas-lab-library-skills",
18
+ "click>=8.0",
19
+ "pyyaml>=6.0",
20
+ "python-dotenv>=1.0",
21
+ "jsonschema>=4.0",
22
+ "httpx>=0.27",
23
+ "certifi>=2024.0",
24
+ ]
25
+
26
+ [project.urls]
27
+ Homepage = "https://github.com/ioc-project/mas-lab"
28
+ Issues = "https://github.com/ioc-project/mas-lab/issues"
29
+
30
+ [project.optional-dependencies]
31
+ curses = [
32
+ "windows-curses>=2.3.2; sys_platform == 'win32'",
33
+ ]
34
+ dev = [
35
+ "pytest>=8.0",
36
+ "import-linter>=2.0",
37
+ ]
38
+
39
+ [project.scripts]
40
+ mas-ctl = "mas.ctl.cli.main:main"
41
+
42
+ [tool.hatch.build.targets.wheel]
43
+ packages = ["src/mas"]
44
+ # Test-support helpers (mas.ctl.testing) are used only by the repo test suite and
45
+ # tutorial scenario scripts; they are not part of the public runtime surface and
46
+ # are excluded from the published wheel.
47
+ exclude = ["src/mas/ctl/testing/**"]
48
+
49
+ # Package a copy of the canonical runtime/lab manifest schemas inside mas.ctl so
50
+ # overlay merging and manifest validation still work when installed from PyPI,
51
+ # where there is no repo checkout to read docs/schemas/ from. See
52
+ # mas.ctl.validate.schemas.schema_root().
53
+ [tool.hatch.build.targets.sdist.force-include]
54
+ "../docs/schemas" = "src/mas/ctl/_schemas"
55
+
56
+ [tool.uv.sources]
57
+ mas-lab-runtime = { workspace = true }
58
+ mas-lab-library-standard = { workspace = true }
@@ -0,0 +1,11 @@
1
+ # Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ """MAS ctl — compose, placement, session UI, protocol adapters (not the Mealy kernel)."""
4
+
5
+ from mas.ctl.session.controller import ConversationConfig, SessionController, TurnResult
6
+
7
+ __all__ = [
8
+ "ConversationConfig",
9
+ "SessionController",
10
+ "TurnResult",
11
+ ]