@mcoda/agent-setup 0.1.75 → 0.1.78

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.78
4
+
5
+ - Add the trusted backend `createMcodaGpuJobClient()` helper for owner-local
6
+ mswarm generic GPU/package jobs.
7
+ - Add the React `GpuJobOpsPanel` export and `McodaAgentSetupPage` GPU job ops
8
+ callbacks for queue, usage, quota, logs/events/artifacts, cancellation, and
9
+ retry drilldowns.
10
+
3
11
  ## 0.1.74
4
12
 
5
13
  - Expose non-secret local-runner metadata in catalog entries.
package/README.md CHANGED
@@ -9,6 +9,7 @@ The package provides:
9
9
  - framework-agnostic server service helpers
10
10
  - a default programmatic mcoda runtime adapter
11
11
  - an optional React setup page
12
+ - a trusted backend GPU/generic job client for owner-local mswarm nodes
12
13
 
13
14
  The default server runtime uses mcoda package APIs directly and does not require
14
15
  a preinstalled or configured `mcoda` CLI/client tool. When an admin submits a
@@ -27,3 +28,23 @@ React consumers can use the packaged default stylesheet:
27
28
  import { McodaAgentSetupPage } from "@mcoda/agent-setup/react";
28
29
  import "@mcoda/agent-setup/react/styles.css";
29
30
  ```
31
+
32
+ Host applications can pass `gpuJobOps` and GPU job callbacks into
33
+ `McodaAgentSetupPage` to show an owner-local queue/usage/audit panel beside the
34
+ agent setup flow. Keep those callbacks backed by trusted backend routes; do not
35
+ send self-hosted node signing secrets to browser code.
36
+
37
+ Trusted backend code can use the GPU job client directly:
38
+
39
+ ```ts
40
+ import { createMcodaGpuJobClient } from "@mcoda/agent-setup";
41
+
42
+ const gpuJobs = await createMcodaGpuJobClient({
43
+ nodeBaseUrl: process.env.MCODA_MSWARM_NODE_BASE_URL,
44
+ nodeId: process.env.MCODA_MSWARM_NODE_ID,
45
+ signingSecret: process.env.MCODA_MSWARM_NODE_SIGNING_SECRET,
46
+ });
47
+
48
+ const capabilities = await gpuJobs.listGpus();
49
+ const ops = await gpuJobs.ops({ auditLimit: 25 });
50
+ ```
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./types.js";
2
2
  export * from "./defaultStages.js";
3
3
  export * from "./client.js";
4
+ export * from "./jobClient.js";
4
5
  export * from "./headless/index.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./types.js";
2
2
  export * from "./defaultStages.js";
3
3
  export * from "./client.js";
4
+ export * from "./jobClient.js";
4
5
  export * from "./headless/index.js";
@@ -0,0 +1,76 @@
1
+ import { type MswarmCapabilityRequestOptions, type MswarmGenericJobArtifactUploadInput, type MswarmGenericJobArtifactUploadResult, type MswarmGenericJobArtifactsResult, type MswarmGenericJobEventsResult, type MswarmGenericJobLifecycleSnapshot, type MswarmGenericJobLogsResult, type MswarmGenericJobOpsRequestOptions, type MswarmGenericJobOpsSummary, type MswarmGenericJobReference, type MswarmGenericNodeJobEnvelope } from "@mcoda/core";
2
+ type MswarmGenericJobRequestInput = MswarmGenericNodeJobEnvelope["job"];
3
+ type McodaGpuJobCreateInput = MswarmGenericNodeJobEnvelope | MswarmGenericJobRequestInput;
4
+ type McodaGpuJobEvent = MswarmGenericJobEventsResult["events"][number];
5
+ export interface McodaGpuJobEventStreamOptions extends Partial<MswarmGenericJobReference> {
6
+ intervalMs?: number;
7
+ stopOnTerminal?: boolean;
8
+ }
9
+ export interface McodaGpuJobsNamespace {
10
+ create(job: McodaGpuJobCreateInput, input?: Partial<MswarmGenericJobReference>): Promise<MswarmGenericJobLifecycleSnapshot>;
11
+ run(job: McodaGpuJobCreateInput, input?: Partial<MswarmGenericJobReference>): Promise<MswarmGenericJobLifecycleSnapshot>;
12
+ status(input: Partial<MswarmGenericJobReference> & {
13
+ jobId: string;
14
+ }): Promise<MswarmGenericJobLifecycleSnapshot>;
15
+ logs(input: Partial<MswarmGenericJobReference> & {
16
+ jobId: string;
17
+ }): Promise<MswarmGenericJobLogsResult>;
18
+ events(jobIdOrInput: string | (Partial<MswarmGenericJobReference> & {
19
+ jobId: string;
20
+ }), input?: McodaGpuJobEventStreamOptions): AsyncIterable<McodaGpuJobEvent>;
21
+ eventsSnapshot(input: Partial<MswarmGenericJobReference> & {
22
+ jobId: string;
23
+ }): Promise<MswarmGenericJobEventsResult>;
24
+ artifacts(input: Partial<MswarmGenericJobReference> & {
25
+ jobId: string;
26
+ }): Promise<MswarmGenericJobArtifactsResult>;
27
+ cancel(input: Partial<MswarmGenericJobReference> & {
28
+ jobId: string;
29
+ }): Promise<MswarmGenericJobLifecycleSnapshot>;
30
+ retry(input: Partial<MswarmGenericJobReference> & {
31
+ jobId: string;
32
+ }): Promise<MswarmGenericJobLifecycleSnapshot>;
33
+ ops(input?: Partial<MswarmGenericJobOpsRequestOptions>): Promise<MswarmGenericJobOpsSummary>;
34
+ }
35
+ export interface CreateMcodaGpuJobClientInput {
36
+ baseUrl?: string;
37
+ apiKey?: string;
38
+ timeoutMs?: number;
39
+ nodeBaseUrl?: string;
40
+ nodeId?: string;
41
+ signingSecret?: string;
42
+ token?: string;
43
+ tokenTtlSeconds?: number;
44
+ }
45
+ export interface McodaGpuJobClient {
46
+ close(): Promise<void>;
47
+ jobs: McodaGpuJobsNamespace;
48
+ listGpus(input?: Partial<MswarmCapabilityRequestOptions>): Promise<Record<string, unknown>>;
49
+ uploadArtifact(input: Omit<MswarmGenericJobArtifactUploadInput, keyof MswarmGenericJobReference> & Partial<MswarmGenericJobReference> & {
50
+ jobId: string;
51
+ }): Promise<MswarmGenericJobArtifactUploadResult>;
52
+ runJob(job: McodaGpuJobCreateInput, input?: Partial<MswarmGenericJobReference>): Promise<MswarmGenericJobLifecycleSnapshot>;
53
+ create(job: McodaGpuJobCreateInput, input?: Partial<MswarmGenericJobReference>): Promise<MswarmGenericJobLifecycleSnapshot>;
54
+ status(input: Partial<MswarmGenericJobReference> & {
55
+ jobId: string;
56
+ }): Promise<MswarmGenericJobLifecycleSnapshot>;
57
+ logs(input: Partial<MswarmGenericJobReference> & {
58
+ jobId: string;
59
+ }): Promise<MswarmGenericJobLogsResult>;
60
+ events(input: Partial<MswarmGenericJobReference> & {
61
+ jobId: string;
62
+ }): Promise<MswarmGenericJobEventsResult>;
63
+ artifacts(input: Partial<MswarmGenericJobReference> & {
64
+ jobId: string;
65
+ }): Promise<MswarmGenericJobArtifactsResult>;
66
+ cancel(input: Partial<MswarmGenericJobReference> & {
67
+ jobId: string;
68
+ }): Promise<MswarmGenericJobLifecycleSnapshot>;
69
+ retry(input: Partial<MswarmGenericJobReference> & {
70
+ jobId: string;
71
+ }): Promise<MswarmGenericJobLifecycleSnapshot>;
72
+ ops(input?: Partial<MswarmGenericJobOpsRequestOptions>): Promise<MswarmGenericJobOpsSummary>;
73
+ }
74
+ export declare function createMcodaGpuJobClient(input?: CreateMcodaGpuJobClientInput): Promise<McodaGpuJobClient>;
75
+ export {};
76
+ //# sourceMappingURL=jobClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobClient.d.ts","sourceRoot":"","sources":["../src/jobClient.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EACtC,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EAClC,MAAM,aAAa,CAAC;AAErB,KAAK,4BAA4B,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;AACxE,KAAK,sBAAsB,GAAG,4BAA4B,GAAG,4BAA4B,CAAC;AAC1F,KAAK,gBAAgB,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,MAAM,WAAW,6BAA8B,SAAQ,OAAO,CAAC,yBAAyB,CAAC;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CACJ,GAAG,EAAE,sBAAsB,EAC3B,KAAK,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GACzC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC9C,GAAG,CACD,GAAG,EAAE,sBAAsB,EAC3B,KAAK,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GACzC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAClH,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzG,MAAM,CACJ,YAAY,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAC/E,KAAK,CAAC,EAAE,6BAA6B,GACpC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACrH,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IACnH,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAClH,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACjH,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC9F;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5F,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,mCAAmC,EAAE,MAAM,yBAAyB,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAC1M,MAAM,CAAC,GAAG,EAAE,sBAAsB,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC5H,MAAM,CAAC,GAAG,EAAE,sBAAsB,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC5H,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAClH,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC7G,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IACnH,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAClH,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACjH,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC9F;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,GAAE,4BAAiC,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAmG5B"}
@@ -0,0 +1,92 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { MswarmApi } from "@mcoda/core";
3
+ export async function createMcodaGpuJobClient(input = {}) {
4
+ const api = await MswarmApi.create({
5
+ baseUrl: input.baseUrl,
6
+ apiKey: input.apiKey,
7
+ timeoutMs: input.timeoutMs
8
+ });
9
+ const defaults = {
10
+ nodeBaseUrl: input.nodeBaseUrl,
11
+ nodeId: input.nodeId,
12
+ signingSecret: input.signingSecret,
13
+ token: input.token,
14
+ tokenTtlSeconds: input.tokenTtlSeconds
15
+ };
16
+ const withDefaults = (request) => ({
17
+ ...defaults,
18
+ ...request
19
+ });
20
+ const requireText = (value, label) => {
21
+ if (!value || value.trim() === "") {
22
+ throw new Error(`${label} is required`);
23
+ }
24
+ return value.trim();
25
+ };
26
+ const normalizeJobEnvelope = (job, request = {}) => {
27
+ if ("job" in job && typeof job.job_id === "string" && typeof job.request_id === "string" && typeof job.node_id === "string") {
28
+ return job;
29
+ }
30
+ const merged = withDefaults(request);
31
+ return {
32
+ job_id: request.jobId || `job-${randomUUID()}`,
33
+ request_id: request.requestId || `req-${randomUUID()}`,
34
+ node_id: requireText(merged.nodeId, "nodeId"),
35
+ job: job
36
+ };
37
+ };
38
+ const create = (job, request = {}) => api.runGenericJob(normalizeJobEnvelope(job, request), withDefaults(request));
39
+ const terminalStates = new Set(["succeeded", "failed", "cancelled", "expired", "blocked"]);
40
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
41
+ async function* streamEvents(jobIdOrInput, request = {}) {
42
+ const { intervalMs = 1000, stopOnTerminal = true, ...requestRest } = request;
43
+ const reference = typeof jobIdOrInput === "string"
44
+ ? withDefaults({ ...requestRest, jobId: jobIdOrInput })
45
+ : withDefaults({ ...jobIdOrInput, ...requestRest });
46
+ const seen = new Set();
47
+ while (true) {
48
+ const events = await api.getGenericJobEvents(reference);
49
+ for (const event of events.events) {
50
+ const key = `${event.sequence}:${event.timestamp}:${event.type}`;
51
+ if (!seen.has(key)) {
52
+ seen.add(key);
53
+ yield event;
54
+ }
55
+ }
56
+ if (stopOnTerminal) {
57
+ const snapshot = await api.getGenericJob(reference);
58
+ if (terminalStates.has(snapshot.job.state)) {
59
+ return;
60
+ }
61
+ }
62
+ await sleep(intervalMs);
63
+ }
64
+ }
65
+ const jobs = {
66
+ create,
67
+ run: create,
68
+ status: (request) => api.getGenericJob(withDefaults(request)),
69
+ logs: (request) => api.getGenericJobLogs(withDefaults(request)),
70
+ events: streamEvents,
71
+ eventsSnapshot: (request) => api.getGenericJobEvents(withDefaults(request)),
72
+ artifacts: (request) => api.getGenericJobArtifacts(withDefaults(request)),
73
+ cancel: (request) => api.cancelGenericJob(withDefaults(request)),
74
+ retry: (request) => api.retryGenericJob(withDefaults(request)),
75
+ ops: (request = {}) => api.getGenericJobOps(withDefaults(request))
76
+ };
77
+ return {
78
+ close: () => api.close(),
79
+ jobs,
80
+ listGpus: (request = {}) => api.listGpuCapabilities(withDefaults(request)),
81
+ uploadArtifact: (request) => api.uploadGenericJobArtifact(withDefaults(request)),
82
+ runJob: create,
83
+ create,
84
+ status: jobs.status,
85
+ logs: jobs.logs,
86
+ events: jobs.eventsSnapshot,
87
+ artifacts: jobs.artifacts,
88
+ cancel: jobs.cancel,
89
+ retry: jobs.retry,
90
+ ops: jobs.ops
91
+ };
92
+ }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { McodaAgentCatalogEntry, McodaAgentSetupClient, McodaAgentSetupSnapshot, McodaSelfHostedServer, McodaStageDefinition } from "../types.js";
2
+ import type { McodaAgentCatalogEntry, McodaAgentSetupClient, McodaAgentSetupSnapshot, McodaGpuJobOpsPanelData, McodaGpuJobOpsPanelJob, McodaSelfHostedServer, McodaStageDefinition } from "../types.js";
3
3
  export interface McodaAgentSetupPageProps {
4
4
  client: McodaAgentSetupClient;
5
5
  stages?: McodaStageDefinition[];
@@ -7,6 +7,13 @@ export interface McodaAgentSetupPageProps {
7
7
  className?: string;
8
8
  labels?: Partial<McodaAgentSetupLabels>;
9
9
  components?: Partial<McodaAgentSetupComponentOverrides>;
10
+ gpuJobOps?: McodaGpuJobOpsPanelData | null;
11
+ onGpuJobOpsRefresh?: () => void | Promise<void>;
12
+ onGpuJobViewDetails?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
13
+ onGpuJobViewLogs?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
14
+ onGpuJobViewArtifacts?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
15
+ onGpuJobRetry?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
16
+ onGpuJobCancel?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
10
17
  }
11
18
  export interface McodaAgentSetupLabels {
12
19
  saveKey: string;
@@ -20,6 +27,7 @@ export interface McodaAgentSetupLabels {
20
27
  export interface McodaAgentSetupComponentOverrides {
21
28
  AgentCatalogSummary: typeof AgentCatalogSummary;
22
29
  MswarmAccessCard: typeof MswarmAccessCard;
30
+ GpuJobOpsPanel: typeof GpuJobOpsPanel;
23
31
  StageAgentAssignments: typeof StageAgentAssignments;
24
32
  AgentSourceSelect: typeof AgentSourceSelect;
25
33
  SelfHostedServerSelect: typeof SelfHostedServerSelect;
@@ -27,6 +35,17 @@ export interface McodaAgentSetupComponentOverrides {
27
35
  }
28
36
  type AgentAssignmentSource = "local" | "cloud" | "self_hosted" | "worker";
29
37
  export declare function McodaAgentSetupPage(props: McodaAgentSetupPageProps): React.ReactElement;
38
+ export interface GpuJobOpsPanelProps {
39
+ ops: McodaGpuJobOpsPanelData;
40
+ busy?: boolean;
41
+ onRefresh?: () => void | Promise<void>;
42
+ onViewDetails?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
43
+ onViewLogs?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
44
+ onViewArtifacts?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
45
+ onRetry?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
46
+ onCancel?: (job: McodaGpuJobOpsPanelJob) => void | Promise<void>;
47
+ }
48
+ export declare function GpuJobOpsPanel(props: GpuJobOpsPanelProps): React.ReactElement;
30
49
  export declare function AgentCatalogSummary(props: {
31
50
  snapshot: McodaAgentSetupSnapshot;
32
51
  }): React.ReactElement;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
@@ -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
- })), snapshot
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,6 +657,77 @@ 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"
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
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;
@@ -118,6 +119,8 @@ export interface McodaAgentSetupSnapshot {
118
119
  updatedAt: string | null;
119
120
  fetchedAt: string;
120
121
  }
122
+ export type McodaGpuJobOpsPanelData = MswarmGenericJobOpsSummary;
123
+ export type McodaGpuJobOpsPanelJob = MswarmGenericJobOpsJobSummary;
121
124
  export interface McodaAgentTestResult {
122
125
  slug: string;
123
126
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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.75",
3
+ "version": "0.1.78",
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.75"
65
+ "@mcoda/core": "0.1.78"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "react": ">=18.2.0 || >=19.0.0",
package/styles/react.css CHANGED
@@ -35,6 +35,7 @@
35
35
  .mcoda-agent-setup__header,
36
36
  .mcoda-agent-setup__summary,
37
37
  .mcoda-agent-setup__access,
38
+ .mcoda-agent-setup__gpu-ops,
38
39
  .mcoda-agent-setup__assignments,
39
40
  .mcoda-agent-setup__empty-state,
40
41
  .mcoda-agent-setup__alert {
@@ -162,6 +163,7 @@
162
163
 
163
164
  .mcoda-agent-setup__summary,
164
165
  .mcoda-agent-setup__access,
166
+ .mcoda-agent-setup__gpu-ops,
165
167
  .mcoda-agent-setup__assignments,
166
168
  .mcoda-agent-setup__empty-state {
167
169
  padding: 18px;
@@ -549,6 +551,168 @@
549
551
  text-transform: uppercase;
550
552
  }
551
553
 
554
+ .mcoda-agent-setup__state-chips {
555
+ display: flex;
556
+ flex-wrap: wrap;
557
+ gap: 8px;
558
+ margin-top: 14px;
559
+ }
560
+
561
+ .mcoda-agent-setup__state-chip {
562
+ align-items: center;
563
+ background: #f8fafc;
564
+ border: 1px solid var(--mcoda-border);
565
+ border-radius: 8px;
566
+ color: var(--mcoda-muted);
567
+ display: inline-flex;
568
+ gap: 7px;
569
+ min-height: 32px;
570
+ padding: 6px 9px;
571
+ }
572
+
573
+ .mcoda-agent-setup__state-chip strong {
574
+ color: var(--mcoda-text);
575
+ font-size: 14px;
576
+ line-height: 1;
577
+ }
578
+
579
+ .mcoda-agent-setup__state-chip span {
580
+ font-size: 11px;
581
+ font-weight: 800;
582
+ text-transform: uppercase;
583
+ }
584
+
585
+ .mcoda-agent-setup__state-chip--failed,
586
+ .mcoda-agent-setup__state-chip--blocked,
587
+ .mcoda-agent-setup__state-chip--expired {
588
+ background: var(--mcoda-rose-soft);
589
+ border-color: #fecdd3;
590
+ color: #be123c;
591
+ }
592
+
593
+ .mcoda-agent-setup__state-chip--succeeded {
594
+ background: var(--mcoda-emerald-soft);
595
+ border-color: #a7f3d0;
596
+ color: #047857;
597
+ }
598
+
599
+ .mcoda-agent-setup__gpu-ops-grid {
600
+ display: grid;
601
+ gap: 14px;
602
+ grid-template-columns: minmax(0, 1.4fr) minmax(280px, 0.75fr);
603
+ margin-top: 16px;
604
+ }
605
+
606
+ .mcoda-agent-setup__gpu-ops-panel {
607
+ border: 1px solid var(--mcoda-border);
608
+ border-radius: 8px;
609
+ min-width: 0;
610
+ overflow: hidden;
611
+ }
612
+
613
+ .mcoda-agent-setup__gpu-ops-panel h3 {
614
+ background: #f8fafc;
615
+ border-bottom: 1px solid var(--mcoda-border);
616
+ color: var(--mcoda-text);
617
+ font-size: 13px;
618
+ font-weight: 800;
619
+ margin: 0;
620
+ padding: 10px 12px;
621
+ }
622
+
623
+ .mcoda-agent-setup__gpu-table-wrap {
624
+ overflow-x: auto;
625
+ }
626
+
627
+ .mcoda-agent-setup__gpu-table {
628
+ border-collapse: collapse;
629
+ min-width: 760px;
630
+ width: 100%;
631
+ }
632
+
633
+ .mcoda-agent-setup__gpu-table th {
634
+ color: var(--mcoda-faint);
635
+ font-size: 10px;
636
+ font-weight: 800;
637
+ letter-spacing: 0;
638
+ padding: 10px 12px;
639
+ text-align: left;
640
+ text-transform: uppercase;
641
+ }
642
+
643
+ .mcoda-agent-setup__gpu-table td {
644
+ border-top: 1px solid #f1f5f9;
645
+ color: var(--mcoda-text);
646
+ font-size: 13px;
647
+ padding: 10px 12px;
648
+ vertical-align: middle;
649
+ }
650
+
651
+ .mcoda-agent-setup__gpu-job-cell {
652
+ min-width: 0;
653
+ }
654
+
655
+ .mcoda-agent-setup__gpu-job-cell strong,
656
+ .mcoda-agent-setup__gpu-job-cell small {
657
+ display: block;
658
+ max-width: 260px;
659
+ overflow: hidden;
660
+ text-overflow: ellipsis;
661
+ white-space: nowrap;
662
+ }
663
+
664
+ .mcoda-agent-setup__gpu-job-cell small {
665
+ color: var(--mcoda-muted);
666
+ font-size: 11px;
667
+ margin-top: 3px;
668
+ }
669
+
670
+ .mcoda-agent-setup__gpu-actions {
671
+ display: flex;
672
+ flex-wrap: wrap;
673
+ gap: 8px;
674
+ }
675
+
676
+ .mcoda-agent-setup__gpu-actions .mcoda-agent-setup__button {
677
+ min-height: 32px;
678
+ padding: 0 10px;
679
+ }
680
+
681
+ .mcoda-agent-setup__audit-list {
682
+ display: grid;
683
+ gap: 0;
684
+ list-style: none;
685
+ margin: 0;
686
+ padding: 0;
687
+ }
688
+
689
+ .mcoda-agent-setup__audit-list li {
690
+ border-top: 1px solid #f1f5f9;
691
+ display: grid;
692
+ gap: 3px;
693
+ padding: 10px 12px;
694
+ }
695
+
696
+ .mcoda-agent-setup__audit-list li:first-child {
697
+ border-top: 0;
698
+ }
699
+
700
+ .mcoda-agent-setup__audit-list strong {
701
+ color: var(--mcoda-text);
702
+ font-size: 12px;
703
+ }
704
+
705
+ .mcoda-agent-setup__audit-list span,
706
+ .mcoda-agent-setup__gpu-empty {
707
+ color: var(--mcoda-muted);
708
+ font-size: 12px;
709
+ }
710
+
711
+ .mcoda-agent-setup__gpu-empty {
712
+ margin: 0;
713
+ padding: 14px 12px;
714
+ }
715
+
552
716
  .mcoda-agent-setup__empty-state {
553
717
  color: var(--mcoda-muted);
554
718
  font-size: 14px;
@@ -565,6 +729,10 @@
565
729
  .mcoda-agent-setup__metric-grid {
566
730
  grid-template-columns: repeat(2, minmax(0, 1fr));
567
731
  }
732
+
733
+ .mcoda-agent-setup__gpu-ops-grid {
734
+ grid-template-columns: 1fr;
735
+ }
568
736
  }
569
737
 
570
738
  @media (max-width: 720px) {