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.
- mas_lab_ctl-0.2.0/.gitignore +86 -0
- mas_lab_ctl-0.2.0/PKG-INFO +180 -0
- mas_lab_ctl-0.2.0/README.md +156 -0
- mas_lab_ctl-0.2.0/docs/developer-guide.md +48 -0
- mas_lab_ctl-0.2.0/docs/schemas/component-registry.yaml +38 -0
- mas_lab_ctl-0.2.0/docs/user-guide.md +87 -0
- mas_lab_ctl-0.2.0/pyproject.toml +58 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/__init__.py +11 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/checkpoint.schema.yaml +105 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/component-registry.yaml +48 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/config.schema.yaml +262 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/contracts-registry.yaml +104 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/controller-openapi.json +5259 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/deployment.example.yaml +24 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/deployment.local-inproc.example.yaml +28 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/deployment.schema.yaml +110 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/effective-bind.example.yaml +45 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/effective-bind.schema.yaml +43 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/evaluation-envelope.schema.yaml +56 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/checkpoint-axis.yaml +22 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/checkpoint-v2.json +22 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/datasets/mmlu-pro-jsonl.yaml +18 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/datasets/mmlu-pro-slice.jsonl +2 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/datasets/mmlu-pro.yaml +22 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/experiments/design-schedule.yaml +34 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/infra/mcp-localhost.yaml +13 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/infra/override-stack.yaml +37 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/live-llm.yaml +15 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/llm-reasoning.yaml +18 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/llm-sampling.yaml +26 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/overlays/observability-native.yaml +13 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/subagent-agent.yaml +18 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/subagent-reviewer.yaml +9 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/examples/tools/annotated.tool.yaml +66 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/artefacts/metrics.schema.json +114 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/artefacts/run_info.schema.json +67 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/dataset.schema.yaml +222 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/experiment.schema.yaml +988 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/memory-seed-entry.schema.yaml +26 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/message.schema.yaml +16 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/ref.schema.yaml +25 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/fragments/tool-fixture-mapping.schema.yaml +46 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/lab-config.schema.yaml +282 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/lab.schema.yaml +65 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/pipeline-manifest.schema.json +116 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/pipeline.schema.yaml +230 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/lab/run-input.schema.yaml +155 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/library.schema.yaml +183 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/memory-seed.example.yaml +11 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/memory-seed.schema.yaml +28 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/placement-plan.example.yaml +42 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/placement-plan.schema.yaml +88 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/plugins/comm-layer.schema.yaml +44 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/agent.schema.yaml +1021 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/flavour.schema.yaml +186 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/agent-patch.schema.yaml +41 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/chunk-meta.schema.yaml +40 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-chunk.schema.yaml +44 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-assembly-params.schema.yaml +53 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-params.schema.yaml +14 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-sliding-window-params.schema.yaml +20 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-sliding-window-strategy.schema.yaml +21 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-stack-params.schema.yaml +19 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-stack-strategy.schema.yaml +14 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-strategy-params.schema.yaml +13 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-summarising-params.schema.yaml +21 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-manager-summarising-strategy.schema.yaml +78 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/context-sources-binding.schema.yaml +117 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/control-binding.schema.yaml +69 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/design-pattern-config.schema.yaml +41 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/execution-binding.schema.yaml +58 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/failure-class.schema.yaml +14 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/governance-binding.schema.yaml +24 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-entry.schema.yaml +57 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-fault-inject-params.schema.yaml +32 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-llm-cache-params.schema.yaml +44 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-llm-scheduler-params.schema.yaml +38 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-middleware-inline.schema.yaml +35 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-middleware-params-by-id.schema.yaml +36 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-middleware-params.schema.yaml +12 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-tool-binding.schema.yaml +23 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/infra-tool-server.schema.yaml +117 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-binding.schema.yaml +78 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-model-entry.schema.yaml +105 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-reasoning.schema.yaml +56 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-sampling.schema.yaml +106 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/llm-truncation.schema.yaml +48 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/memory-backend-params.schema.yaml +21 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/memory-seed-entry.schema.yaml +20 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/observability-binding.schema.yaml +83 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-agent-patch.schema.yaml +129 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-context.schema.yaml +60 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-control.schema.yaml +22 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-governance.schema.yaml +26 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-memory-seed.schema.yaml +28 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-models.schema.yaml +37 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-object-merge.schema.yaml +22 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-observability.schema.yaml +74 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-string.schema.yaml +33 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-collection-ops-tool.schema.yaml +110 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-flavour-patch.schema.yaml +44 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-infra-patch.schema.yaml +64 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/overlay-mas-patch.schema.yaml +107 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/policy-rule.schema.yaml +57 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/retry-policy.schema.yaml +40 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/runtime-engine.schema.yaml +48 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/workflow-edge.schema.yaml +17 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/fragments/workflow-node.schema.yaml +36 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/infra.schema.yaml +443 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/llm-model-catalog.schema.yaml +122 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/mas.schema.yaml +336 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/overlay.schema.yaml +169 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/prompt_bundle.schema.yaml +97 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/tool.schema.yaml +285 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/tool_bundle.schema.yaml +159 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime/workflow.schema.yaml +109 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime-profile.example.yaml +15 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/_schemas/runtime-profile.schema.yaml +40 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/__init__.py +24 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/checkpoint.py +102 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/hitl_terminal.py +33 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/memory_seed.py +107 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/__init__.py +15 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/config.py +24 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/context.py +16 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/factory.py +8 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/pipeline.py +8 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/adapters/obs/session.py +31 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/benchmark/__init__.py +9 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/benchmark/runner.py +727 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/benchmark/runner_dispatch.py +33 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/__init__.py +7 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/bind_flags.py +100 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/__init__.py +3 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/bundles.py +33 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/chat.py +563 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/checkpoint.py +84 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/compile.py +107 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/compose.py +132 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/control.py +334 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/plugin.py +160 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/registry.py +47 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/run_mas.py +158 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/serve.py +156 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/tui.py +193 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/validate.py +121 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/commands/workspace.py +134 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/help_text.py +56 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/main.py +67 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/obs_flags.py +145 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/runtime_flags.py +13 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/cli/trace_flags.py +179 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compile.py +531 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/__init__.py +59 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/adapters/langgraph.py +77 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/backends/__init__.py +3 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/backends/mas_runtime_py.py +122 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/framework_registry.py +84 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/kernel_registry.py +83 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/models.py +98 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/pattern_registry.py +72 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/pipeline.py +161 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/placement_registry.py +78 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/placement_validate.py +32 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/compose/runner.py +239 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/deployment/__init__.py +27 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/deployment/load.py +141 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/deployment/runtime_id.py +37 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/env.py +112 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/executor/__init__.py +7 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/executor/engine_tool_context.py +229 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/executor/mas_session.py +751 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/executor/run_mas.py +216 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/executor/spawn_ledger.py +91 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/executor/subagent_spawner.py +195 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/infra/__init__.py +14 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/infra/env_resolve.py +80 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/infra/models.py +213 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/infra/pipeline_chain.py +74 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/infra/resolve.py +798 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/infra/show.py +219 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/libraries/bundles.py +68 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/logging_setup.py +64 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/manifest/__init__.py +19 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/manifest/mas_agent_merge.py +384 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/manifest/spec_bindings.py +379 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overlay/__init__.py +33 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overlay/canvas.py +543 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overlay/merge.py +1326 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overlay/normalize.py +83 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overrides/__init__.py +29 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overrides/apply.py +375 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overrides/bind.py +140 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overrides/model.py +91 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overrides/parser.py +186 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overrides/schema.py +484 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/overrides/shortcuts.py +12 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/paths.py +195 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/__init__.py +8 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/adapter.py +21 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/inproc.py +52 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/placement/bus/protocol.py +32 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/placement/docker.py +19 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/placement/k8s.py +19 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/placement/protocol.py +28 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/plugins/registry.py +28 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/plugins/registry.yaml +5 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/registry/__init__.py +29 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/registry/catalog.py +178 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/registry/introspect.py +111 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/run_progress.py +72 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/runtime_cli.py +177 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/__init__.py +21 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/bootstrap.py +596 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/control.py +840 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/control_dir.py +53 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/control_host.py +90 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/controller.py +790 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/display_user_io_contract.py +37 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/engine_factory.py +447 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/exchange_log.py +374 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/exposure.py +346 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/flavour.py +96 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/hitl_config.py +53 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/hitl_prompt.py +62 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/infra_resolve.py +59 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/ingress_governance_loader.py +28 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/interactive_hitl_contract.py +66 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/mailbox.py +77 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/manager.py +322 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/manifest_config.py +165 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/observability.py +294 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/observability_loader.py +8 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/operator_console.py +157 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/params_sidecar.py +23 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/protocol_hints.py +48 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/session_flags.py +52 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/session/turn_queue.py +223 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/testing/cli_helpers.py +122 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/testing/scenario_commands.py +165 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/ui/__init__.py +8 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/ui/curses_app.py +266 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/ui/display.py +25 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/ui/stdout.py +103 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/ui/turn_result.py +57 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/__init__.py +29 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/deprecations.py +212 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/identity.py +158 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/providers.py +132 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/refs.py +162 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/schema_errors.py +76 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/schemas.py +254 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/separation.py +220 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/validate/validator.py +421 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/workspace/__init__.py +19 -0
- mas_lab_ctl-0.2.0/src/mas/ctl/workspace/config.py +333 -0
- mas_lab_ctl-0.2.0/tests/conftest.py +37 -0
- mas_lab_ctl-0.2.0/tests/test_application_endpoint.py +123 -0
- mas_lab_ctl-0.2.0/tests/test_archive_artefact.py +72 -0
- mas_lab_ctl-0.2.0/tests/test_benchmark_runner.py +394 -0
- mas_lab_ctl-0.2.0/tests/test_bootstrap_context.py +235 -0
- mas_lab_ctl-0.2.0/tests/test_budget_schema.py +86 -0
- mas_lab_ctl-0.2.0/tests/test_cache_read_write_controls.py +50 -0
- mas_lab_ctl-0.2.0/tests/test_chat_checkpoint_resume.py +59 -0
- mas_lab_ctl-0.2.0/tests/test_chat_exit_code.py +49 -0
- mas_lab_ctl-0.2.0/tests/test_checkpoint.py +208 -0
- mas_lab_ctl-0.2.0/tests/test_checkpoint_validator.py +96 -0
- mas_lab_ctl-0.2.0/tests/test_cli_bind.py +288 -0
- mas_lab_ctl-0.2.0/tests/test_cli_overlay_shape.py +85 -0
- mas_lab_ctl-0.2.0/tests/test_cli_overrides.py +581 -0
- mas_lab_ctl-0.2.0/tests/test_cli_plugin.py +128 -0
- mas_lab_ctl-0.2.0/tests/test_compile.py +313 -0
- mas_lab_ctl-0.2.0/tests/test_compile_cli.py +441 -0
- mas_lab_ctl-0.2.0/tests/test_component_catalog_registry.py +67 -0
- mas_lab_ctl-0.2.0/tests/test_compose_pipeline.py +33 -0
- mas_lab_ctl-0.2.0/tests/test_control_contract.py +463 -0
- mas_lab_ctl-0.2.0/tests/test_control_dir.py +21 -0
- mas_lab_ctl-0.2.0/tests/test_delegates_to_deprecation.py +359 -0
- mas_lab_ctl-0.2.0/tests/test_deployment_runtime_id.py +38 -0
- mas_lab_ctl-0.2.0/tests/test_display_user_io_contract.py +35 -0
- mas_lab_ctl-0.2.0/tests/test_endpoint_usage_deprecation.py +115 -0
- mas_lab_ctl-0.2.0/tests/test_engine_factory.py +470 -0
- mas_lab_ctl-0.2.0/tests/test_engine_tool_context.py +71 -0
- mas_lab_ctl-0.2.0/tests/test_engine_tool_loop.py +47 -0
- mas_lab_ctl-0.2.0/tests/test_env_model_override.py +45 -0
- mas_lab_ctl-0.2.0/tests/test_env_resolve.py +39 -0
- mas_lab_ctl-0.2.0/tests/test_exchange_log.py +378 -0
- mas_lab_ctl-0.2.0/tests/test_exchange_tracing_plugins.py +94 -0
- mas_lab_ctl-0.2.0/tests/test_execution_separation.py +66 -0
- mas_lab_ctl-0.2.0/tests/test_exposure.py +300 -0
- mas_lab_ctl-0.2.0/tests/test_hitl_prompt.py +43 -0
- mas_lab_ctl-0.2.0/tests/test_huggingface_token.py +116 -0
- mas_lab_ctl-0.2.0/tests/test_infra_entries.py +360 -0
- mas_lab_ctl-0.2.0/tests/test_infra_llm_leaves.py +246 -0
- mas_lab_ctl-0.2.0/tests/test_infra_show.py +151 -0
- mas_lab_ctl-0.2.0/tests/test_interactive_hitl_contract.py +85 -0
- mas_lab_ctl-0.2.0/tests/test_manifest_load.py +50 -0
- mas_lab_ctl-0.2.0/tests/test_manifest_observability_config.py +117 -0
- mas_lab_ctl-0.2.0/tests/test_manifest_tools_bootstrap.py +62 -0
- mas_lab_ctl-0.2.0/tests/test_mas_agent_merge.py +717 -0
- mas_lab_ctl-0.2.0/tests/test_mas_session.py +686 -0
- mas_lab_ctl-0.2.0/tests/test_middleware_for_per.py +235 -0
- mas_lab_ctl-0.2.0/tests/test_native_jsonl_plugin.py +135 -0
- mas_lab_ctl-0.2.0/tests/test_obs_flags_flavour_overlay.py +89 -0
- mas_lab_ctl-0.2.0/tests/test_obs_transform.py +48 -0
- mas_lab_ctl-0.2.0/tests/test_observability_loader.py +45 -0
- mas_lab_ctl-0.2.0/tests/test_observability_per_agent_scoping.py +192 -0
- mas_lab_ctl-0.2.0/tests/test_observability_pipeline_shared.py +137 -0
- mas_lab_ctl-0.2.0/tests/test_operator_console.py +132 -0
- mas_lab_ctl-0.2.0/tests/test_overlay_agent_patch_schema.py +177 -0
- mas_lab_ctl-0.2.0/tests/test_overlay_ref_resolve.py +50 -0
- mas_lab_ctl-0.2.0/tests/test_override_schema.py +292 -0
- mas_lab_ctl-0.2.0/tests/test_params_sidecar.py +13 -0
- mas_lab_ctl-0.2.0/tests/test_pattern_registry.py +17 -0
- mas_lab_ctl-0.2.0/tests/test_placement_validate.py +91 -0
- mas_lab_ctl-0.2.0/tests/test_plugin_params_by_id.py +134 -0
- mas_lab_ctl-0.2.0/tests/test_protocol_hints.py +34 -0
- mas_lab_ctl-0.2.0/tests/test_provider_tool_claims.py +72 -0
- mas_lab_ctl-0.2.0/tests/test_ref_paths.py +55 -0
- mas_lab_ctl-0.2.0/tests/test_resolve_manifest_library_app.py +28 -0
- mas_lab_ctl-0.2.0/tests/test_run_mas_compose.py +187 -0
- mas_lab_ctl-0.2.0/tests/test_run_mas_hitl.py +115 -0
- mas_lab_ctl-0.2.0/tests/test_runtime_engine_resolve.py +165 -0
- mas_lab_ctl-0.2.0/tests/test_schema_cache_invalidation.py +169 -0
- mas_lab_ctl-0.2.0/tests/test_schema_errors.py +73 -0
- mas_lab_ctl-0.2.0/tests/test_schema_ref_pointer.py +176 -0
- mas_lab_ctl-0.2.0/tests/test_schema_registry_cache.py +11 -0
- mas_lab_ctl-0.2.0/tests/test_send_steer_patterns.py +325 -0
- mas_lab_ctl-0.2.0/tests/test_send_steer_session.py +345 -0
- mas_lab_ctl-0.2.0/tests/test_session_controller_finalize_turn.py +219 -0
- mas_lab_ctl-0.2.0/tests/test_session_controller_session_id.py +109 -0
- mas_lab_ctl-0.2.0/tests/test_session_controller_skills.py +203 -0
- mas_lab_ctl-0.2.0/tests/test_session_controller_working_memory.py +195 -0
- mas_lab_ctl-0.2.0/tests/test_session_flavour.py +97 -0
- mas_lab_ctl-0.2.0/tests/test_session_mailbox.py +44 -0
- mas_lab_ctl-0.2.0/tests/test_session_manager.py +189 -0
- mas_lab_ctl-0.2.0/tests/test_session_observability_setup.py +142 -0
- mas_lab_ctl-0.2.0/tests/test_shipped_manifest_identity.py +110 -0
- mas_lab_ctl-0.2.0/tests/test_spawn_ledger.py +97 -0
- mas_lab_ctl-0.2.0/tests/test_spec_bindings_governance.py +40 -0
- mas_lab_ctl-0.2.0/tests/test_stdout_display.py +44 -0
- mas_lab_ctl-0.2.0/tests/test_subagent_manifest.py +90 -0
- mas_lab_ctl-0.2.0/tests/test_subagent_spawner.py +305 -0
- mas_lab_ctl-0.2.0/tests/test_subagent_spawner_concurrent.py +96 -0
- mas_lab_ctl-0.2.0/tests/test_summarizer_eval_model_schema.py +160 -0
- mas_lab_ctl-0.2.0/tests/test_trace_flags.py +139 -0
- mas_lab_ctl-0.2.0/tests/test_ui_canvas_overlay.py +389 -0
- mas_lab_ctl-0.2.0/tests/test_validate_cli.py +45 -0
- mas_lab_ctl-0.2.0/tests/test_validate_identity.py +126 -0
- mas_lab_ctl-0.2.0/tests/test_validation_enhancements.py +197 -0
- mas_lab_ctl-0.2.0/tests/test_working_memory_compaction_bootstrap.py +171 -0
- mas_lab_ctl-0.2.0/tests/test_workspace_cache_mode.py +26 -0
- 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
|
+
]
|