@mcoda/agent-setup 0.1.76 → 0.1.79
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.
- package/CHANGELOG.md +8 -0
- package/README.md +41 -0
- package/dist/headless/catalog.d.ts +1 -0
- package/dist/headless/catalog.d.ts.map +1 -1
- package/dist/headless/catalog.js +28 -1
- package/dist/headless/normalization.d.ts.map +1 -1
- package/dist/headless/normalization.js +38 -16
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/jobClient.d.ts +76 -0
- package/dist/jobClient.d.ts.map +1 -0
- package/dist/jobClient.js +92 -0
- package/dist/react/index.d.ts +20 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +244 -18
- package/dist/server/cliRuntime.d.ts.map +1 -1
- package/dist/server/cliRuntime.js +6 -0
- package/dist/server/inMemoryRuntime.d.ts.map +1 -1
- package/dist/server/inMemoryRuntime.js +47 -3
- package/dist/server/programmaticRuntime.d.ts.map +1 -1
- package/dist/server/programmaticRuntime.js +5 -1
- package/dist/server/service.d.ts.map +1 -1
- package/dist/server/service.js +5 -1
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/styles/react.css +168 -0
package/dist/react/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export function McodaAgentSetupPage(props) {
|
|
|
16
16
|
const components = {
|
|
17
17
|
AgentCatalogSummary,
|
|
18
18
|
MswarmAccessCard,
|
|
19
|
+
GpuJobOpsPanel,
|
|
19
20
|
StageAgentAssignments,
|
|
20
21
|
...(props.components ?? {}),
|
|
21
22
|
};
|
|
@@ -98,6 +99,40 @@ export function McodaAgentSetupPage(props) {
|
|
|
98
99
|
setBusy(false);
|
|
99
100
|
}
|
|
100
101
|
};
|
|
102
|
+
const refreshGpuJobOps = async () => {
|
|
103
|
+
if (!props.onGpuJobOpsRefresh)
|
|
104
|
+
return;
|
|
105
|
+
setBusy(true);
|
|
106
|
+
setError(null);
|
|
107
|
+
setStatusMessage(null);
|
|
108
|
+
try {
|
|
109
|
+
await props.onGpuJobOpsRefresh();
|
|
110
|
+
setStatusMessage("GPU job operations refreshed.");
|
|
111
|
+
}
|
|
112
|
+
catch (caught) {
|
|
113
|
+
setError(caught instanceof Error ? caught.message : String(caught));
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
setBusy(false);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const runGpuJobAction = async (action, job, message) => {
|
|
120
|
+
if (!action)
|
|
121
|
+
return;
|
|
122
|
+
setBusy(true);
|
|
123
|
+
setError(null);
|
|
124
|
+
setStatusMessage(null);
|
|
125
|
+
try {
|
|
126
|
+
await action(job);
|
|
127
|
+
setStatusMessage(message);
|
|
128
|
+
}
|
|
129
|
+
catch (caught) {
|
|
130
|
+
setError(caught instanceof Error ? caught.message : String(caught));
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
setBusy(false);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
101
136
|
return React.createElement("section", { className: joinClasses("mcoda-agent-setup", props.className) }, React.createElement("header", { className: "mcoda-agent-setup__header" }, React.createElement("div", { className: "mcoda-agent-setup__title-block" }, React.createElement("p", { className: "mcoda-agent-setup__eyebrow" }, "Runtime routing"), React.createElement("h1", null, props.title ?? "mcoda Agent Setup"), React.createElement("p", null, "Configure mswarm access and assign local, cloud, self-hosted, or Worker mcoda targets to each runtime stage.")), React.createElement("button", {
|
|
102
137
|
type: "button",
|
|
103
138
|
className: "mcoda-agent-setup__button mcoda-agent-setup__button--secondary",
|
|
@@ -117,7 +152,28 @@ export function McodaAgentSetupPage(props) {
|
|
|
117
152
|
onApiKeyChange: setApiKey,
|
|
118
153
|
onSaveKey: saveKey,
|
|
119
154
|
onSyncAgents: syncAgents,
|
|
120
|
-
})),
|
|
155
|
+
})), props.gpuJobOps
|
|
156
|
+
? React.createElement(components.GpuJobOpsPanel, {
|
|
157
|
+
ops: props.gpuJobOps,
|
|
158
|
+
busy,
|
|
159
|
+
onRefresh: props.onGpuJobOpsRefresh ? refreshGpuJobOps : undefined,
|
|
160
|
+
onViewDetails: props.onGpuJobViewDetails
|
|
161
|
+
? (job) => runGpuJobAction(props.onGpuJobViewDetails, job, `Loaded details for ${job.job_id}.`)
|
|
162
|
+
: undefined,
|
|
163
|
+
onViewLogs: props.onGpuJobViewLogs
|
|
164
|
+
? (job) => runGpuJobAction(props.onGpuJobViewLogs, job, `Loaded logs for ${job.job_id}.`)
|
|
165
|
+
: undefined,
|
|
166
|
+
onViewArtifacts: props.onGpuJobViewArtifacts
|
|
167
|
+
? (job) => runGpuJobAction(props.onGpuJobViewArtifacts, job, `Loaded artifacts for ${job.job_id}.`)
|
|
168
|
+
: undefined,
|
|
169
|
+
onRetry: props.onGpuJobRetry
|
|
170
|
+
? (job) => runGpuJobAction(props.onGpuJobRetry, job, `Retry queued for ${job.job_id}.`)
|
|
171
|
+
: undefined,
|
|
172
|
+
onCancel: props.onGpuJobCancel
|
|
173
|
+
? (job) => runGpuJobAction(props.onGpuJobCancel, job, `Cancel requested for ${job.job_id}.`)
|
|
174
|
+
: undefined,
|
|
175
|
+
})
|
|
176
|
+
: null, snapshot
|
|
121
177
|
? React.createElement(components.StageAgentAssignments, {
|
|
122
178
|
stages,
|
|
123
179
|
snapshot,
|
|
@@ -129,6 +185,101 @@ export function McodaAgentSetupPage(props) {
|
|
|
129
185
|
})
|
|
130
186
|
: null);
|
|
131
187
|
}
|
|
188
|
+
export function GpuJobOpsPanel(props) {
|
|
189
|
+
const { ops } = props;
|
|
190
|
+
const jobs = ops.queue.jobs;
|
|
191
|
+
const auditEvents = ops.audit.events.slice(0, 6);
|
|
192
|
+
const stateEntries = Object.entries(ops.queue.totals_by_state).sort(([left], [right]) => left.localeCompare(right));
|
|
193
|
+
const software = opsSoftwareMetric(ops);
|
|
194
|
+
const showControls = Boolean(props.onViewDetails || props.onViewLogs || props.onViewArtifacts || props.onRetry || props.onCancel);
|
|
195
|
+
return React.createElement("section", { className: "mcoda-agent-setup__gpu-ops" }, React.createElement("div", { className: "mcoda-agent-setup__card-heading" }, React.createElement("div", null, React.createElement("h2", null, "GPU Job Operations"), React.createElement("p", null, `Node ${ops.node.node_id} · ${formatTimestamp(ops.generated_at)}`)), props.onRefresh
|
|
196
|
+
? React.createElement("button", {
|
|
197
|
+
type: "button",
|
|
198
|
+
className: "mcoda-agent-setup__button mcoda-agent-setup__button--secondary",
|
|
199
|
+
disabled: props.busy,
|
|
200
|
+
onClick: props.onRefresh,
|
|
201
|
+
}, props.busy ? "Refreshing" : "Refresh")
|
|
202
|
+
: React.createElement("span", {
|
|
203
|
+
className: ops.node.generic_jobs_enabled
|
|
204
|
+
? "mcoda-agent-setup__badge mcoda-agent-setup__badge--success"
|
|
205
|
+
: "mcoda-agent-setup__badge mcoda-agent-setup__badge--warning",
|
|
206
|
+
}, ops.node.generic_jobs_enabled ? "Enabled" : "Disabled")), React.createElement("div", { className: "mcoda-agent-setup__metric-grid" }, React.createElement(MetricCard, {
|
|
207
|
+
label: "Queue",
|
|
208
|
+
value: String(ops.usage.total_jobs),
|
|
209
|
+
detail: `${ops.queue.active_jobs} active, ${ops.queue.queued_jobs} queued`,
|
|
210
|
+
}), React.createElement(MetricCard, {
|
|
211
|
+
label: "Slots",
|
|
212
|
+
value: `${ops.quota.available_slots}/${ops.quota.max_concurrent_jobs}`,
|
|
213
|
+
detail: "available concurrency",
|
|
214
|
+
}), React.createElement(MetricCard, {
|
|
215
|
+
label: "GPU time",
|
|
216
|
+
value: formatDurationSeconds(ops.usage.gpu_seconds),
|
|
217
|
+
detail: "owner-local runtime",
|
|
218
|
+
}), React.createElement(MetricCard, {
|
|
219
|
+
label: "Artifacts",
|
|
220
|
+
value: String(ops.usage.artifact_count),
|
|
221
|
+
detail: formatBytes(ops.usage.artifact_bytes),
|
|
222
|
+
}), React.createElement(MetricCard, {
|
|
223
|
+
label: "Job types",
|
|
224
|
+
value: opsJobTypes(ops),
|
|
225
|
+
detail: opsGpuSummary(ops),
|
|
226
|
+
}), React.createElement(MetricCard, {
|
|
227
|
+
label: "Software",
|
|
228
|
+
value: software.value,
|
|
229
|
+
detail: software.detail,
|
|
230
|
+
}), React.createElement(MetricCard, {
|
|
231
|
+
label: "Audit",
|
|
232
|
+
value: String(ops.audit.total),
|
|
233
|
+
detail: `${ops.audit.limit} visible from ${ops.audit.offset}`,
|
|
234
|
+
})), stateEntries.length
|
|
235
|
+
? React.createElement("div", { className: "mcoda-agent-setup__state-chips", "aria-label": "GPU job states" }, stateEntries.map(([state, count]) => React.createElement("span", { key: state, className: `mcoda-agent-setup__state-chip mcoda-agent-setup__state-chip--${state}` }, React.createElement("strong", null, String(count)), React.createElement("span", null, state))))
|
|
236
|
+
: null, React.createElement("div", { className: "mcoda-agent-setup__gpu-ops-grid" }, React.createElement("div", { className: "mcoda-agent-setup__gpu-ops-panel" }, React.createElement("h3", null, "Jobs"), jobs.length
|
|
237
|
+
? React.createElement("div", { className: "mcoda-agent-setup__gpu-table-wrap" }, React.createElement("table", { className: "mcoda-agent-setup__gpu-table" }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", null, "Job"), React.createElement("th", null, "State"), React.createElement("th", null, "Progress"), React.createElement("th", null, "Artifacts"), showControls ? React.createElement("th", null, "Actions") : null)), React.createElement("tbody", null, jobs.map((job) => {
|
|
238
|
+
const terminal = isTerminalGpuJobState(job.state);
|
|
239
|
+
const retryable = terminal && job.state !== "succeeded";
|
|
240
|
+
return React.createElement("tr", { key: job.job_id }, React.createElement("td", { className: "mcoda-agent-setup__gpu-job-cell" }, React.createElement("strong", null, job.job_id), React.createElement("small", null, `${job.job_type} · ${formatTimestamp(job.updated_at)}`)), React.createElement("td", null, React.createElement("span", { className: `mcoda-agent-setup__badge ${terminal ? "mcoda-agent-setup__badge--info" : "mcoda-agent-setup__badge--success"}` }, job.state)), React.createElement("td", null, formatPercent(job.progress_percent)), React.createElement("td", null, `${job.artifact_count} / ${formatBytes(job.artifact_bytes)}`), showControls
|
|
241
|
+
? React.createElement("td", null, React.createElement("div", { className: "mcoda-agent-setup__gpu-actions" }, props.onViewDetails
|
|
242
|
+
? React.createElement("button", {
|
|
243
|
+
type: "button",
|
|
244
|
+
className: "mcoda-agent-setup__button mcoda-agent-setup__button--secondary",
|
|
245
|
+
disabled: props.busy,
|
|
246
|
+
onClick: () => props.onViewDetails?.(job),
|
|
247
|
+
}, "Details")
|
|
248
|
+
: null, props.onViewLogs
|
|
249
|
+
? React.createElement("button", {
|
|
250
|
+
type: "button",
|
|
251
|
+
className: "mcoda-agent-setup__button mcoda-agent-setup__button--secondary",
|
|
252
|
+
disabled: props.busy,
|
|
253
|
+
onClick: () => props.onViewLogs?.(job),
|
|
254
|
+
}, "Logs")
|
|
255
|
+
: null, props.onViewArtifacts
|
|
256
|
+
? React.createElement("button", {
|
|
257
|
+
type: "button",
|
|
258
|
+
className: "mcoda-agent-setup__button mcoda-agent-setup__button--secondary",
|
|
259
|
+
disabled: props.busy,
|
|
260
|
+
onClick: () => props.onViewArtifacts?.(job),
|
|
261
|
+
}, "Artifacts")
|
|
262
|
+
: null, props.onCancel
|
|
263
|
+
? React.createElement("button", {
|
|
264
|
+
type: "button",
|
|
265
|
+
className: "mcoda-agent-setup__button mcoda-agent-setup__button--secondary",
|
|
266
|
+
disabled: props.busy || terminal,
|
|
267
|
+
onClick: () => props.onCancel?.(job),
|
|
268
|
+
}, "Cancel")
|
|
269
|
+
: null, props.onRetry
|
|
270
|
+
? React.createElement("button", {
|
|
271
|
+
type: "button",
|
|
272
|
+
className: "mcoda-agent-setup__button mcoda-agent-setup__button--primary",
|
|
273
|
+
disabled: props.busy || !retryable,
|
|
274
|
+
onClick: () => props.onRetry?.(job),
|
|
275
|
+
}, "Retry")
|
|
276
|
+
: null))
|
|
277
|
+
: null);
|
|
278
|
+
}))))
|
|
279
|
+
: React.createElement("p", { className: "mcoda-agent-setup__gpu-empty" }, "No GPU jobs recorded.")), React.createElement("div", { className: "mcoda-agent-setup__gpu-ops-panel" }, React.createElement("h3", null, "Audit"), auditEvents.length
|
|
280
|
+
? React.createElement("ol", { className: "mcoda-agent-setup__audit-list" }, auditEvents.map((event, index) => React.createElement("li", { key: `${event.timestamp}-${event.action}-${index}` }, React.createElement("strong", null, event.action), React.createElement("span", null, formatTimestamp(event.timestamp)))))
|
|
281
|
+
: React.createElement("p", { className: "mcoda-agent-setup__gpu-empty" }, "No audit events recorded."))));
|
|
282
|
+
}
|
|
132
283
|
export function AgentCatalogSummary(props) {
|
|
133
284
|
const { snapshot } = props;
|
|
134
285
|
const warningEntries = Object.entries(snapshot.catalog.errors);
|
|
@@ -506,30 +657,105 @@ export function AgentSearchSelect(props) {
|
|
|
506
657
|
function MetricCard(props) {
|
|
507
658
|
return React.createElement("div", { className: "mcoda-agent-setup__metric" }, React.createElement("span", null, props.label), React.createElement("strong", null, props.value), React.createElement("small", null, props.detail));
|
|
508
659
|
}
|
|
660
|
+
const GPU_TERMINAL_STATES = new Set(["succeeded", "failed", "cancelled", "expired", "blocked"]);
|
|
661
|
+
function isTerminalGpuJobState(state) {
|
|
662
|
+
return GPU_TERMINAL_STATES.has(state);
|
|
663
|
+
}
|
|
664
|
+
function asRecord(value) {
|
|
665
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
666
|
+
? value
|
|
667
|
+
: {};
|
|
668
|
+
}
|
|
669
|
+
function opsJobTypes(ops) {
|
|
670
|
+
const value = ops.capabilities.job_types;
|
|
671
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
672
|
+
return "none";
|
|
673
|
+
return value.map((entry) => String(entry)).slice(0, 3).join(", ");
|
|
674
|
+
}
|
|
675
|
+
function opsGpuSummary(ops) {
|
|
676
|
+
const accelerators = asRecord(ops.capabilities.accelerators);
|
|
677
|
+
const gpu = asRecord(accelerators.gpu);
|
|
678
|
+
const vendors = Array.isArray(gpu.vendors)
|
|
679
|
+
? gpu.vendors.map((entry) => String(entry)).join(", ")
|
|
680
|
+
: "";
|
|
681
|
+
const count = typeof gpu.count === "number" ? `${gpu.count} GPU${gpu.count === 1 ? "" : "s"}` : null;
|
|
682
|
+
const cuda = gpu.cuda === true ? "CUDA" : gpu.cuda === false ? "no CUDA" : null;
|
|
683
|
+
const vram = typeof gpu.vram_tier === "string" ? gpu.vram_tier : null;
|
|
684
|
+
return [count, vendors, cuda, vram].filter(Boolean).join(" / ") || "capability snapshot";
|
|
685
|
+
}
|
|
686
|
+
function opsSoftwareMetric(ops) {
|
|
687
|
+
const software = asRecord(ops.capabilities.software);
|
|
688
|
+
const entries = Object.entries(software)
|
|
689
|
+
.map(([name, value]) => [name, asRecord(value)])
|
|
690
|
+
.filter(([, value]) => Object.keys(value).length > 0);
|
|
691
|
+
if (entries.length === 0) {
|
|
692
|
+
return { value: "unknown", detail: "software probes unavailable" };
|
|
693
|
+
}
|
|
694
|
+
const available = entries.filter(([, value]) => value.available === true || value.status === "available").length;
|
|
695
|
+
return {
|
|
696
|
+
value: `${available}/${entries.length} available`,
|
|
697
|
+
detail: entries
|
|
698
|
+
.map(([name, value]) => `${name}: ${typeof value.status === "string" ? value.status : value.available === true ? "available" : "unknown"}`)
|
|
699
|
+
.join(", "),
|
|
700
|
+
};
|
|
701
|
+
}
|
|
702
|
+
function formatPercent(value) {
|
|
703
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
704
|
+
return "-";
|
|
705
|
+
return `${Math.round(Math.max(0, Math.min(100, value)))}%`;
|
|
706
|
+
}
|
|
707
|
+
function formatDurationSeconds(value) {
|
|
708
|
+
if (!Number.isFinite(value) || value <= 0)
|
|
709
|
+
return "0s";
|
|
710
|
+
if (value < 60)
|
|
711
|
+
return `${Math.round(value)}s`;
|
|
712
|
+
const minutes = Math.floor(value / 60);
|
|
713
|
+
const seconds = Math.round(value % 60);
|
|
714
|
+
if (minutes < 60)
|
|
715
|
+
return `${minutes}m ${seconds}s`;
|
|
716
|
+
const hours = Math.floor(minutes / 60);
|
|
717
|
+
return `${hours}h ${minutes % 60}m`;
|
|
718
|
+
}
|
|
719
|
+
function formatBytes(value) {
|
|
720
|
+
if (!Number.isFinite(value) || value <= 0)
|
|
721
|
+
return "0 B";
|
|
722
|
+
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
723
|
+
let next = value;
|
|
724
|
+
let unit = 0;
|
|
725
|
+
while (next >= 1024 && unit < units.length - 1) {
|
|
726
|
+
next /= 1024;
|
|
727
|
+
unit += 1;
|
|
728
|
+
}
|
|
729
|
+
return `${next >= 10 || unit === 0 ? Math.round(next) : next.toFixed(1)} ${units[unit]}`;
|
|
730
|
+
}
|
|
509
731
|
function AgentStatusBadge(props) {
|
|
510
732
|
const kind = props.agent?.managedKind;
|
|
511
733
|
const sourceLabel = kind === "cloud"
|
|
512
734
|
? "Cloud"
|
|
513
|
-
: kind === "
|
|
514
|
-
? "
|
|
515
|
-
: kind === "
|
|
516
|
-
? "
|
|
517
|
-
:
|
|
518
|
-
?
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
:
|
|
735
|
+
: kind === "self_hosted_load_balanced"
|
|
736
|
+
? "Auto self-hosted"
|
|
737
|
+
: kind === "self_hosted"
|
|
738
|
+
? "Self-hosted"
|
|
739
|
+
: kind === "worker"
|
|
740
|
+
? "Worker"
|
|
741
|
+
: props.agent
|
|
742
|
+
? props.agent.localRunner
|
|
743
|
+
? "Local runner"
|
|
744
|
+
: "Local"
|
|
745
|
+
: props.slug
|
|
746
|
+
? "Missing"
|
|
747
|
+
: "Unset";
|
|
524
748
|
const className = kind === "cloud"
|
|
525
749
|
? "mcoda-agent-setup__badge mcoda-agent-setup__badge--info"
|
|
526
|
-
: kind === "
|
|
750
|
+
: kind === "self_hosted_load_balanced"
|
|
527
751
|
? "mcoda-agent-setup__badge mcoda-agent-setup__badge--success"
|
|
528
|
-
: kind === "
|
|
529
|
-
? "mcoda-agent-setup__badge mcoda-agent-setup__badge--
|
|
530
|
-
:
|
|
531
|
-
? "mcoda-agent-setup__badge"
|
|
532
|
-
:
|
|
752
|
+
: kind === "self_hosted"
|
|
753
|
+
? "mcoda-agent-setup__badge mcoda-agent-setup__badge--success"
|
|
754
|
+
: kind === "worker"
|
|
755
|
+
? "mcoda-agent-setup__badge mcoda-agent-setup__badge--worker"
|
|
756
|
+
: props.agent
|
|
757
|
+
? "mcoda-agent-setup__badge"
|
|
758
|
+
: "mcoda-agent-setup__badge mcoda-agent-setup__badge--warning";
|
|
533
759
|
return React.createElement("span", { className }, sourceLabel);
|
|
534
760
|
}
|
|
535
761
|
function defaultAssignmentSource(preferredSource) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliRuntime.d.ts","sourceRoot":"","sources":["../../src/server/cliRuntime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1C,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAE,2BAAgC,GACtC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"cliRuntime.d.ts","sourceRoot":"","sources":["../../src/server/cliRuntime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1C,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,GAAE,2BAAgC,GACtC,mBAAmB,CA8IrB"}
|
|
@@ -60,6 +60,9 @@ export function createCliMcodaRuntimeAdapter(input = {}) {
|
|
|
60
60
|
"list",
|
|
61
61
|
"--provider",
|
|
62
62
|
options?.provider ?? "mcoda",
|
|
63
|
+
...(options?.includeLoadBalanced ?? true
|
|
64
|
+
? ["--include-load-balanced"]
|
|
65
|
+
: []),
|
|
63
66
|
"--json",
|
|
64
67
|
], {
|
|
65
68
|
source: "self_hosted_catalog",
|
|
@@ -74,6 +77,9 @@ export function createCliMcodaRuntimeAdapter(input = {}) {
|
|
|
74
77
|
"sync",
|
|
75
78
|
"--provider",
|
|
76
79
|
options?.provider ?? "mcoda",
|
|
80
|
+
...(options?.includeLoadBalanced ?? true
|
|
81
|
+
? ["--include-load-balanced"]
|
|
82
|
+
: []),
|
|
77
83
|
"--prune",
|
|
78
84
|
"--json",
|
|
79
85
|
], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inMemoryRuntime.d.ts","sourceRoot":"","sources":["../../src/server/inMemoryRuntime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inMemoryRuntime.d.ts","sourceRoot":"","sources":["../../src/server/inMemoryRuntime.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,sBAAsB,EAKtB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,gCAAgC;IAC/C,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC5C,YAAY,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACxC,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,GAAE,gCAAqC,GAC3C,mBAAmB,CAiLrB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { syncedCloudSlug, syncedSelfHostedSlug, syncedWorkerSlug, } from "../headless/catalog.js";
|
|
1
|
+
import { syncedCloudSlug, isLoadBalancedSelfHostedAgent, syncedSelfHostedSlug, syncedWorkerSlug, } from "../headless/catalog.js";
|
|
2
2
|
export function createInMemoryMcodaRuntimeAdapter(input = {}) {
|
|
3
3
|
let cloudAgents = input.cloudAgents?.map((agent) => ({ ...agent })) ?? [];
|
|
4
4
|
let selfHostedAgents = input.selfHostedAgents?.map((agent) => ({ ...agent })) ?? [];
|
|
@@ -32,9 +32,53 @@ export function createInMemoryMcodaRuntimeAdapter(input = {}) {
|
|
|
32
32
|
}
|
|
33
33
|
return localAgents.filter((agent) => agent.managedKind === managedKind);
|
|
34
34
|
};
|
|
35
|
+
const syncSelfHostedRemote = (remoteAgents, options) => {
|
|
36
|
+
const remoteLocalSlugs = new Set(remoteAgents.map(syncedSelfHostedSlug));
|
|
37
|
+
localAgents = localAgents.filter((agent) => {
|
|
38
|
+
if (agent.managedKind !== "self_hosted" &&
|
|
39
|
+
agent.managedKind !== "self_hosted_load_balanced") {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (agent.managedKind === "self_hosted_load_balanced" &&
|
|
43
|
+
options?.includeLoadBalanced === false) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
return remoteLocalSlugs.has(agent.slug);
|
|
47
|
+
});
|
|
48
|
+
for (const remote of remoteAgents) {
|
|
49
|
+
const localSlug = syncedSelfHostedSlug(remote);
|
|
50
|
+
const managedKind = isLoadBalancedSelfHostedAgent(remote)
|
|
51
|
+
? "self_hosted_load_balanced"
|
|
52
|
+
: "self_hosted";
|
|
53
|
+
const next = {
|
|
54
|
+
...remote,
|
|
55
|
+
slug: localSlug,
|
|
56
|
+
source: "local_registry",
|
|
57
|
+
synced: true,
|
|
58
|
+
managedKind,
|
|
59
|
+
remoteSlug: remote.remoteSlug ?? remote.slug,
|
|
60
|
+
};
|
|
61
|
+
const index = localAgents.findIndex((agent) => agent.slug === localSlug);
|
|
62
|
+
if (index >= 0) {
|
|
63
|
+
localAgents[index] = next;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
localAgents.push(next);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return localAgents.filter((agent) => agent.managedKind === "self_hosted" ||
|
|
70
|
+
agent.managedKind === "self_hosted_load_balanced");
|
|
71
|
+
};
|
|
35
72
|
const filterProvider = (agents, options) => options?.provider
|
|
36
73
|
? agents.filter((agent) => agent.provider === options.provider)
|
|
37
74
|
: agents;
|
|
75
|
+
const filterSelfHosted = (agents, options) => {
|
|
76
|
+
const providerFiltered = filterProvider(agents, options);
|
|
77
|
+
if (options?.includeLoadBalanced === false) {
|
|
78
|
+
return providerFiltered.filter((agent) => !isLoadBalancedSelfHostedAgent(agent));
|
|
79
|
+
}
|
|
80
|
+
return providerFiltered;
|
|
81
|
+
};
|
|
38
82
|
return {
|
|
39
83
|
runtime: {
|
|
40
84
|
mode: "programmatic",
|
|
@@ -59,7 +103,7 @@ export function createInMemoryMcodaRuntimeAdapter(input = {}) {
|
|
|
59
103
|
return syncRemote(filterProvider(cloudAgents, options), syncedCloudSlug, "cloud");
|
|
60
104
|
},
|
|
61
105
|
async listSelfHostedAgents(options) {
|
|
62
|
-
return
|
|
106
|
+
return filterSelfHosted(selfHostedAgents, options).map((agent) => ({
|
|
63
107
|
...agent,
|
|
64
108
|
}));
|
|
65
109
|
},
|
|
@@ -67,7 +111,7 @@ export function createInMemoryMcodaRuntimeAdapter(input = {}) {
|
|
|
67
111
|
if (!configuredApiKey) {
|
|
68
112
|
throw new Error("mswarm api key is required");
|
|
69
113
|
}
|
|
70
|
-
return
|
|
114
|
+
return syncSelfHostedRemote(filterSelfHosted(selfHostedAgents, options), options);
|
|
71
115
|
},
|
|
72
116
|
async listWorkerAgents(options) {
|
|
73
117
|
return filterProvider(workerAgents, options).map((agent) => ({ ...agent }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"programmaticRuntime.d.ts","sourceRoot":"","sources":["../../src/server/programmaticRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EAOlB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAMV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,oCAAoC;IACnD,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,wBAAgB,qCAAqC,CACnD,KAAK,GAAE,oCAAyC,GAC/C,mBAAmB,
|
|
1
|
+
{"version":3,"file":"programmaticRuntime.d.ts","sourceRoot":"","sources":["../../src/server/programmaticRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EAOlB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAMV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,oCAAoC;IACnD,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,wBAAgB,qCAAqC,CACnD,KAAK,GAAE,oCAAyC,GAC/C,mBAAmB,CA8IrB"}
|
|
@@ -72,7 +72,9 @@ export function createProgrammaticMcodaRuntimeAdapter(input = {}) {
|
|
|
72
72
|
return agents.map((agent) => normalizeAgentCatalogEntry(agent, {
|
|
73
73
|
source: "self_hosted_catalog",
|
|
74
74
|
synced: false,
|
|
75
|
-
managedKind:
|
|
75
|
+
managedKind: agent.load_balanced
|
|
76
|
+
? "self_hosted_load_balanced"
|
|
77
|
+
: "self_hosted",
|
|
76
78
|
}));
|
|
77
79
|
});
|
|
78
80
|
},
|
|
@@ -228,12 +230,14 @@ function toSelfHostedOptions(options) {
|
|
|
228
230
|
return {
|
|
229
231
|
provider: options?.provider,
|
|
230
232
|
includeUnreachable: options?.includeUnreachable ?? true,
|
|
233
|
+
includeLoadBalanced: options?.includeLoadBalanced ?? true,
|
|
231
234
|
};
|
|
232
235
|
}
|
|
233
236
|
function toSelfHostedSyncOptions(options) {
|
|
234
237
|
return {
|
|
235
238
|
provider: options?.provider,
|
|
236
239
|
includeUnreachable: options?.includeUnreachable ?? true,
|
|
240
|
+
includeLoadBalanced: options?.includeLoadBalanced ?? true,
|
|
237
241
|
pruneMissing: options?.pruneMissing ?? true,
|
|
238
242
|
};
|
|
239
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/server/service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,4BAA4B,EAC5B,sBAAsB,EAKvB,MAAM,aAAa,CAAC;AAIrB,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,4BAA4B,GACpC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/server/service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,4BAA4B,EAC5B,sBAAsB,EAKvB,MAAM,aAAa,CAAC;AAIrB,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,4BAA4B,GACpC,sBAAsB,CAoNxB"}
|
package/dist/server/service.js
CHANGED
|
@@ -38,7 +38,10 @@ export function createMcodaAgentSetupService(options) {
|
|
|
38
38
|
const [localAgents, cloudCatalogAgents, selfHostedCatalogAgents, workerCatalogAgents,] = await Promise.all([
|
|
39
39
|
capture(errors, "local_agents", () => runtime.listLocalAgents({ refreshHealth: true }), []),
|
|
40
40
|
captureRemote(errors, "cloud_agents", () => runtime.listCloudAgents(), []),
|
|
41
|
-
captureRemote(errors, "self_hosted_agents", () => runtime.listSelfHostedAgents({
|
|
41
|
+
captureRemote(errors, "self_hosted_agents", () => runtime.listSelfHostedAgents({
|
|
42
|
+
includeUnreachable: true,
|
|
43
|
+
includeLoadBalanced: true,
|
|
44
|
+
}), []),
|
|
42
45
|
captureRemote(errors, "worker_agents", () => runtime.listWorkerAgents(), []),
|
|
43
46
|
]);
|
|
44
47
|
const cloudAgents = errors.cloud_agents === undefined
|
|
@@ -141,6 +144,7 @@ export function createMcodaAgentSetupService(options) {
|
|
|
141
144
|
await captureRemote(errors, "self_hosted_agent_sync", () => runtime.syncSelfHostedAgents({
|
|
142
145
|
pruneMissing: true,
|
|
143
146
|
includeUnreachable: true,
|
|
147
|
+
includeLoadBalanced: true,
|
|
144
148
|
}), []);
|
|
145
149
|
await captureRemote(errors, "worker_agent_sync", () => runtime.syncWorkerAgents({ pruneMissing: true }), []);
|
|
146
150
|
return errors;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import type { MswarmGenericJobOpsJobSummary, MswarmGenericJobOpsSummary } from "@mcoda/core";
|
|
1
2
|
export type McodaRuntimeMode = "programmatic" | "cli_fallback" | "custom";
|
|
2
3
|
export interface McodaRuntimeInfo {
|
|
3
4
|
mode: McodaRuntimeMode;
|
|
4
5
|
requiresMcodaCli: boolean;
|
|
5
6
|
}
|
|
6
7
|
export type McodaAgentSource = "local_registry" | "cloud_catalog" | "self_hosted_catalog" | "worker_catalog";
|
|
7
|
-
export type McodaAgentManagedKind = "cloud" | "self_hosted" | "worker" | null;
|
|
8
|
+
export type McodaAgentManagedKind = "cloud" | "self_hosted" | "self_hosted_load_balanced" | "worker" | null;
|
|
9
|
+
export type McodaSelfHostedRoutingMode = "direct" | "auto";
|
|
8
10
|
export type McodaPreferredSource = "cloud" | "self_hosted" | "worker" | "cloud_or_self_hosted" | null;
|
|
9
11
|
export type McodaLocalRunnerKind = "vllm" | "llama-cpp" | "llama-cpp-python" | "lm-studio" | "localai" | "sglang" | "tgi" | "custom";
|
|
10
12
|
export type McodaLocalRunnerAuthMode = "none" | "bearer" | "dummy-bearer";
|
|
@@ -64,6 +66,8 @@ export interface McodaAgentCatalogEntry {
|
|
|
64
66
|
synced: boolean;
|
|
65
67
|
remoteSlug: string | null;
|
|
66
68
|
managedKind?: McodaAgentManagedKind;
|
|
69
|
+
routingMode?: McodaSelfHostedRoutingMode | null;
|
|
70
|
+
loadBalancedGroupId?: string | null;
|
|
67
71
|
nodeId?: string | null;
|
|
68
72
|
serverName?: string | null;
|
|
69
73
|
serverId?: string | null;
|
|
@@ -91,6 +95,8 @@ export interface McodaSelfHostedServer {
|
|
|
91
95
|
label: string;
|
|
92
96
|
nodeId?: string | null;
|
|
93
97
|
serverName?: string | null;
|
|
98
|
+
routingMode?: McodaSelfHostedRoutingMode | null;
|
|
99
|
+
loadBalancedGroupId?: string | null;
|
|
94
100
|
status?: string | null;
|
|
95
101
|
remoteSlugPrefix?: string | null;
|
|
96
102
|
agentCount: number;
|
|
@@ -118,6 +124,8 @@ export interface McodaAgentSetupSnapshot {
|
|
|
118
124
|
updatedAt: string | null;
|
|
119
125
|
fetchedAt: string;
|
|
120
126
|
}
|
|
127
|
+
export type McodaGpuJobOpsPanelData = MswarmGenericJobOpsSummary;
|
|
128
|
+
export type McodaGpuJobOpsPanelJob = MswarmGenericJobOpsJobSummary;
|
|
121
129
|
export interface McodaAgentTestResult {
|
|
122
130
|
slug: string;
|
|
123
131
|
ok: boolean;
|
|
@@ -154,6 +162,7 @@ export interface McodaAgentListInput {
|
|
|
154
162
|
provider?: string;
|
|
155
163
|
refreshHealth?: boolean;
|
|
156
164
|
includeUnreachable?: boolean;
|
|
165
|
+
includeLoadBalanced?: boolean;
|
|
157
166
|
}
|
|
158
167
|
export interface McodaAgentSyncInput extends McodaAgentListInput {
|
|
159
168
|
pruneMissing?: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,cAAc,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,eAAe,GACf,qBAAqB,GACrB,gBAAgB,CAAC;AAErB,MAAM,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcoda/agent-setup",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.79",
|
|
4
4
|
"description": "Turnkey mcoda/mswarm agent setup SDK for applications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@mcoda/core": "0.1.
|
|
65
|
+
"@mcoda/core": "0.1.79"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
68
|
"react": ">=18.2.0 || >=19.0.0",
|