mas-lab-component-controller 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mas/lab/controller/__init__.py +7 -0
- mas/lab/controller/__main__.py +5 -0
- mas/lab/controller/agent_chat.py +226 -0
- mas/lab/controller/api.py +364 -0
- mas/lab/controller/artifact_discovery.py +107 -0
- mas/lab/controller/artifacts.py +112 -0
- mas/lab/controller/cli.py +493 -0
- mas/lab/controller/client.py +271 -0
- mas/lab/controller/config.py +75 -0
- mas/lab/controller/constants.py +30 -0
- mas/lab/controller/daemon.py +190 -0
- mas/lab/controller/deps.py +172 -0
- mas/lab/controller/fastapi_app.py +166 -0
- mas/lab/controller/http_server.py +243 -0
- mas/lab/controller/io_capture.py +55 -0
- mas/lab/controller/item_service.py +625 -0
- mas/lab/controller/job_store.py +209 -0
- mas/lab/controller/jobs.py +375 -0
- mas/lab/controller/kinds.py +149 -0
- mas/lab/controller/lab_registry.py +1076 -0
- mas/lab/controller/manifest_layout.py +832 -0
- mas/lab/controller/manifest_store.py +214 -0
- mas/lab/controller/manifest_validation.py +90 -0
- mas/lab/controller/models.py +215 -0
- mas/lab/controller/path_safety.py +68 -0
- mas/lab/controller/pipeline_validation.py +79 -0
- mas/lab/controller/registry.py +83 -0
- mas/lab/controller/routes/__init__.py +82 -0
- mas/lab/controller/routes/_api.py +15 -0
- mas/lab/controller/routes/apps.py +190 -0
- mas/lab/controller/routes/artifacts.py +37 -0
- mas/lab/controller/routes/benchmark.py +307 -0
- mas/lab/controller/routes/choices.py +141 -0
- mas/lab/controller/routes/datasets.py +91 -0
- mas/lab/controller/routes/design_patterns.py +121 -0
- mas/lab/controller/routes/eval_output.py +31 -0
- mas/lab/controller/routes/experiments.py +194 -0
- mas/lab/controller/routes/health.py +178 -0
- mas/lab/controller/routes/items.py +187 -0
- mas/lab/controller/routes/jobs.py +107 -0
- mas/lab/controller/routes/libraries.py +144 -0
- mas/lab/controller/routes/overlays.py +164 -0
- mas/lab/controller/routes/pipelines.py +139 -0
- mas/lab/controller/routes/registry.py +40 -0
- mas/lab/controller/routes/run.py +215 -0
- mas/lab/controller/routes/runs.py +392 -0
- mas/lab/controller/routes/scopes.py +139 -0
- mas/lab/controller/routes/uploads.py +24 -0
- mas/lab/controller/routes/validate.py +36 -0
- mas/lab/controller/run_bridge.py +276 -0
- mas/lab/controller/run_store.py +190 -0
- mas/lab/controller/schema_registry.py +109 -0
- mas/lab/controller/schemas/pipeline-step-types-post.json +764 -0
- mas/lab/controller/schemas/pipeline-step-types-pre.json +35 -0
- mas/lab/controller/scope_catalog.py +266 -0
- mas/lab/controller/scope_service.py +134 -0
- mas/lab/controller/sessions.py +63 -0
- mas/lab/controller/settings.py +65 -0
- mas/lab/controller/ui_stream/__init__.py +13 -0
- mas/lab/controller/ui_stream/app.py +2147 -0
- mas/lab/controller/ui_stream/artefact_bind.py +308 -0
- mas/lab/controller/ui_stream/auth.py +136 -0
- mas/lab/controller/ui_stream/bus.py +156 -0
- mas/lab/controller/ui_stream/export.py +400 -0
- mas/lab/controller/ui_stream/governance.py +141 -0
- mas/lab/controller/ui_stream/ingest.py +300 -0
- mas/lab/controller/ui_stream/inspect.py +55 -0
- mas/lab/controller/ui_stream/layouts.py +161 -0
- mas/lab/controller/ui_stream/metrics.py +274 -0
- mas/lab/controller/ui_stream/plot_folds.py +609 -0
- mas/lab/controller/ui_stream/plugin_registry.py +139 -0
- mas/lab/controller/ui_stream/refs.py +259 -0
- mas/lab/controller/ui_stream/replay.py +236 -0
- mas/lab/controller/ui_stream/replay_cli.py +707 -0
- mas/lab/controller/ui_stream/run_index.py +337 -0
- mas/lab/controller/ui_stream/spec_load.py +48 -0
- mas/lab/controller/ui_stream/spec_snapshot.py +313 -0
- mas/lab/controller/ui_stream/stream.py +95 -0
- mas/lab/controller/ui_stream/streams.py +42 -0
- mas/lab/controller/ui_stream/timeline.py +183 -0
- mas/lab/controller/ui_stream/ui_trace.py +258 -0
- mas/lab/controller/uploads.py +61 -0
- mas/lab/controller/worker_model.py +137 -0
- mas/lab/controller/workers.py +296 -0
- mas/lab/controller/workspace_library.py +70 -0
- mas_lab_component_controller-0.2.0.dist-info/METADATA +21 -0
- mas_lab_component_controller-0.2.0.dist-info/RECORD +89 -0
- mas_lab_component_controller-0.2.0.dist-info/WHEEL +4 -0
- mas_lab_component_controller-0.2.0.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Copyright (c) 2026 Cisco Systems, Inc. and its affiliates
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
"""Kind metadata the UI uses instead of hardcoded folder / model lists."""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
NAME_PATTERN = r"^[A-Za-z0-9][A-Za-z0-9._-]*$"
|
|
10
|
+
VERSION_PATTERN = r"^v[0-9]+([.][0-9]+)*$"
|
|
11
|
+
|
|
12
|
+
# Kinds a lab scope reports (no applications — a lab is not a library).
|
|
13
|
+
LAB_KINDS = (
|
|
14
|
+
"experiment",
|
|
15
|
+
"pipeline",
|
|
16
|
+
"overlay",
|
|
17
|
+
"dataset",
|
|
18
|
+
"scenario",
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
# Kinds a library always offers. Experiments/pipelines appear when present.
|
|
22
|
+
LIBRARY_BASE_KINDS = (
|
|
23
|
+
"application",
|
|
24
|
+
"agent",
|
|
25
|
+
"overlay",
|
|
26
|
+
"dataset",
|
|
27
|
+
"tool",
|
|
28
|
+
"skill",
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
KIND_CATALOG: dict[str, dict[str, Any]] = {
|
|
32
|
+
"application": {
|
|
33
|
+
"id": "application",
|
|
34
|
+
"plural": "applications",
|
|
35
|
+
"schema_id": "mas",
|
|
36
|
+
"creatable": True,
|
|
37
|
+
"versioned": True,
|
|
38
|
+
"runnable": True,
|
|
39
|
+
"children": ["agent"],
|
|
40
|
+
"name_pattern": NAME_PATTERN,
|
|
41
|
+
"template_ids": ["blank"],
|
|
42
|
+
"display_fields": ["title", "summary", "ref", "latest"],
|
|
43
|
+
},
|
|
44
|
+
"agent": {
|
|
45
|
+
"id": "agent",
|
|
46
|
+
"plural": "agents",
|
|
47
|
+
"schema_id": "agent",
|
|
48
|
+
"creatable": True,
|
|
49
|
+
"versioned": False,
|
|
50
|
+
"children": [],
|
|
51
|
+
"name_pattern": NAME_PATTERN,
|
|
52
|
+
"template_ids": ["blank"],
|
|
53
|
+
"display_fields": ["title", "summary", "ref"],
|
|
54
|
+
},
|
|
55
|
+
"overlay": {
|
|
56
|
+
"id": "overlay",
|
|
57
|
+
"plural": "overlays",
|
|
58
|
+
"schema_id": "overlay",
|
|
59
|
+
"creatable": True,
|
|
60
|
+
"versioned": False,
|
|
61
|
+
"children": [],
|
|
62
|
+
"name_pattern": NAME_PATTERN,
|
|
63
|
+
"template_ids": ["blank"],
|
|
64
|
+
"display_fields": ["title", "summary", "ref"],
|
|
65
|
+
},
|
|
66
|
+
"pipeline": {
|
|
67
|
+
"id": "pipeline",
|
|
68
|
+
"plural": "pipelines",
|
|
69
|
+
"schema_id": "pipeline",
|
|
70
|
+
"creatable": True,
|
|
71
|
+
"versioned": False,
|
|
72
|
+
"runnable": True,
|
|
73
|
+
"children": [],
|
|
74
|
+
"name_pattern": NAME_PATTERN,
|
|
75
|
+
"template_ids": ["blank"],
|
|
76
|
+
"display_fields": ["title", "summary", "ref"],
|
|
77
|
+
},
|
|
78
|
+
"experiment": {
|
|
79
|
+
"id": "experiment",
|
|
80
|
+
"plural": "experiments",
|
|
81
|
+
"schema_id": "experiment",
|
|
82
|
+
"creatable": True,
|
|
83
|
+
"versioned": False,
|
|
84
|
+
"runnable": True,
|
|
85
|
+
"children": [],
|
|
86
|
+
"name_pattern": NAME_PATTERN,
|
|
87
|
+
"template_ids": ["blank"],
|
|
88
|
+
"display_fields": ["title", "summary", "ref"],
|
|
89
|
+
},
|
|
90
|
+
"dataset": {
|
|
91
|
+
"id": "dataset",
|
|
92
|
+
"plural": "datasets",
|
|
93
|
+
"schema_id": "dataset",
|
|
94
|
+
"creatable": True,
|
|
95
|
+
"versioned": False,
|
|
96
|
+
"children": [],
|
|
97
|
+
"name_pattern": NAME_PATTERN,
|
|
98
|
+
"template_ids": ["blank"],
|
|
99
|
+
"display_fields": ["title", "summary", "ref"],
|
|
100
|
+
},
|
|
101
|
+
"tool": {
|
|
102
|
+
"id": "tool",
|
|
103
|
+
"plural": "tools",
|
|
104
|
+
"schema_id": "tool",
|
|
105
|
+
"creatable": False,
|
|
106
|
+
"versioned": False,
|
|
107
|
+
"children": [],
|
|
108
|
+
"name_pattern": NAME_PATTERN,
|
|
109
|
+
"template_ids": [],
|
|
110
|
+
"display_fields": ["title", "summary", "ref"],
|
|
111
|
+
},
|
|
112
|
+
"skill": {
|
|
113
|
+
"id": "skill",
|
|
114
|
+
"plural": "skills",
|
|
115
|
+
"schema_id": "skill",
|
|
116
|
+
"creatable": False,
|
|
117
|
+
"versioned": False,
|
|
118
|
+
"children": [],
|
|
119
|
+
"name_pattern": NAME_PATTERN,
|
|
120
|
+
"template_ids": [],
|
|
121
|
+
"display_fields": ["title", "summary", "ref"],
|
|
122
|
+
},
|
|
123
|
+
"scenario": {
|
|
124
|
+
"id": "scenario",
|
|
125
|
+
"plural": "scenarios",
|
|
126
|
+
"schema_id": "scenario",
|
|
127
|
+
"creatable": False,
|
|
128
|
+
"versioned": False,
|
|
129
|
+
"children": [],
|
|
130
|
+
"name_pattern": NAME_PATTERN,
|
|
131
|
+
"template_ids": [],
|
|
132
|
+
"display_fields": ["title", "summary", "ref"],
|
|
133
|
+
},
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def kind_info(kind: str) -> dict[str, Any]:
|
|
138
|
+
info = KIND_CATALOG.get(kind)
|
|
139
|
+
if info is None:
|
|
140
|
+
raise KeyError(kind)
|
|
141
|
+
return dict(info)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def list_kinds() -> list[dict[str, Any]]:
|
|
145
|
+
return [dict(KIND_CATALOG[k]) for k in KIND_CATALOG]
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def path_for_kind(kind: str) -> str:
|
|
149
|
+
return str(KIND_CATALOG.get(kind, {}).get("plural") or f"{kind}s")
|