edgegate-mcp 0.1.1 → 0.1.2

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/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { APIKeyCreateResponse, AuditReport, Pipeline, RunDetail, RunSummary, Workspace, WorkflowTemplate } from "./types.js";
1
+ import type { APIKeyCreateResponse, Pipeline, RunBundle, RunDetail, RunSummary, Workspace, WorkflowTemplate } from "./types.js";
2
2
  export interface EdgeGateClientOptions {
3
3
  apiUrl: string;
4
4
  apiKey: string;
@@ -27,28 +27,40 @@ export declare class EdgeGateClient {
27
27
  }): Promise<APIKeyCreateResponse>;
28
28
  createPipeline(workspaceId: string, body: {
29
29
  name: string;
30
- description?: string;
31
- models: Array<{
30
+ device_matrix: Array<{
32
31
  name: string;
33
- artifact_id: string;
32
+ enabled: boolean;
34
33
  }>;
35
- devices: string[];
34
+ promptpack_ref: {
35
+ promptpack_id: string;
36
+ version: string;
37
+ };
36
38
  gates: Array<{
37
39
  metric: string;
38
40
  operator: string;
39
41
  threshold: number;
42
+ description?: string;
43
+ }>;
44
+ run_policy?: {
45
+ warmup_runs?: number;
46
+ measurement_repeats?: number;
47
+ max_new_tokens?: number;
48
+ timeout_minutes?: number;
49
+ };
50
+ model_matrix?: Array<{
51
+ artifact_id: string;
52
+ label?: string;
40
53
  }>;
41
- promptpack_id?: string;
42
- repeats?: number;
43
54
  }): Promise<Pipeline>;
44
55
  listPipelines(workspaceId: string): Promise<Pipeline[]>;
45
- triggerRun(workspaceId: string, pipelineId: string, body?: {
56
+ triggerRun(workspaceId: string, body: {
57
+ pipeline_id: string;
46
58
  trigger?: string;
47
59
  model_artifact_id?: string;
48
60
  }): Promise<RunSummary>;
49
61
  getRun(workspaceId: string, runId: string): Promise<RunDetail>;
50
62
  listRuns(workspaceId: string, limit?: number): Promise<RunSummary[]>;
51
- getAuditReport(workspaceId: string, runId: string): Promise<AuditReport>;
63
+ getRunBundle(workspaceId: string, runId: string): Promise<RunBundle>;
52
64
  getWorkflowTemplate(workspaceId: string): Promise<WorkflowTemplate>;
53
65
  private request;
54
66
  }
package/dist/client.js CHANGED
@@ -39,8 +39,8 @@ export class EdgeGateClient {
39
39
  async listPipelines(workspaceId) {
40
40
  return this.request("GET", `/v1/workspaces/${workspaceId}/pipelines`);
41
41
  }
42
- async triggerRun(workspaceId, pipelineId, body = {}) {
43
- return this.request("POST", `/v1/workspaces/${workspaceId}/pipelines/${pipelineId}/runs`, body);
42
+ async triggerRun(workspaceId, body) {
43
+ return this.request("POST", `/v1/workspaces/${workspaceId}/runs`, body);
44
44
  }
45
45
  async getRun(workspaceId, runId) {
46
46
  return this.request("GET", `/v1/workspaces/${workspaceId}/runs/${runId}`);
@@ -48,8 +48,8 @@ export class EdgeGateClient {
48
48
  async listRuns(workspaceId, limit = 20) {
49
49
  return this.request("GET", `/v1/workspaces/${workspaceId}/runs?limit=${limit}`);
50
50
  }
51
- async getAuditReport(workspaceId, runId) {
52
- return this.request("GET", `/v1/workspaces/${workspaceId}/runs/${runId}/audit-report`);
51
+ async getRunBundle(workspaceId, runId) {
52
+ return this.request("GET", `/v1/workspaces/${workspaceId}/runs/${runId}/bundle`);
53
53
  }
54
54
  async getWorkflowTemplate(workspaceId) {
55
55
  return this.request("GET", `/v1/workspaces/${workspaceId}/github-action/template`);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAmB1C,MAAM,OAAO,aAAc,SAAQ,KAAK;IAEpB;IACA;IACA;IAHlB,YACkB,MAAc,EACd,MAAc,EACd,GAAW;QAE3B,KAAK,CAAC,YAAY,MAAM,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC;QAJjC,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAQ;QAG3B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,cAAc;IACR,MAAM,CAAS;IACf,MAAM,CAAS;IACf,YAAY,CAAS;IACrB,UAAU,CAAS;IACnB,SAAS,CAAS;IAEnC,YAAY,IAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAY,KAAK,EAAE,kBAAkB,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,OAAO,CAAc,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,CAAC,YAAY,CAChB,WAAmB,EACnB,IAA2C;QAE3C,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,kBAAkB,WAAW,WAAW,EACxC,IAAI,CACL,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,IAQC;QAED,OAAO,IAAI,CAAC,OAAO,CAAW,MAAM,EAAE,kBAAkB,WAAW,YAAY,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,OAAO,IAAI,CAAC,OAAO,CAAa,KAAK,EAAE,kBAAkB,WAAW,YAAY,CAAC,CAAC;IACpF,CAAC;IACD,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,UAAkB,EAClB,OAAyD,EAAE;QAE3D,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,kBAAkB,WAAW,cAAc,UAAU,OAAO,EAC5D,IAAI,CACL,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,KAAa;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAY,KAAK,EAAE,kBAAkB,WAAW,SAAS,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,KAAK,GAAG,EAAE;QAC5C,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,kBAAkB,WAAW,eAAe,KAAK,EAAE,CACpD,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,KAAa;QACrD,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,kBAAkB,WAAW,SAAS,KAAK,eAAe,CAC3D,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAC3C,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,kBAAkB,WAAW,yBAAyB,CACvD,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAiC,EACjC,IAAY,EACZ,IAAc;QAEd,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,MAAM,KAAK,KAAK,CAAC;QACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,OAAO,GAA2B;gBACtC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;gBACtC,YAAY,EAAE,UAAU;aACzB,CAAC;YACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC/C,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC5B,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC3D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;aAC5C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,IAAS,CAAC;YACnB,CAAC;YACD,MAAM,MAAM,GACV,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI;gBAClD,CAAC,CAAC,MAAM,CAAE,IAA4B,CAAC,MAAM,CAAC;gBAC9C,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,YAAY,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;gBAC7D,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACzD,CAAC;AACD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -23,25 +23,36 @@ function format(run) {
23
23
  const badge = run.status.toUpperCase();
24
24
  const lines = [
25
25
  `Run **${run.id}**: ${badge}`,
26
- `Pipeline: ${run.pipeline_id}`,
26
+ `Pipeline: ${run.pipeline_id} (${run.pipeline_name})`,
27
27
  `Trigger: ${run.trigger}`,
28
- `Started: ${run.started_at ?? "(pending)"}`,
28
+ `Started: ${run.created_at}`,
29
29
  `Completed: ${run.completed_at ?? "(in flight)"}`,
30
30
  ``,
31
31
  ];
32
- for (const cell of run.cells ?? []) {
33
- lines.push(`### Cell: ${cell.device_name}`);
34
- for (const [m, v] of Object.entries(cell.metrics)) {
35
- lines.push(`- ${m}: ${v}`);
32
+ if (run.normalized_metrics) {
33
+ lines.push(`### Metrics`);
34
+ for (const [metric, value] of Object.entries(run.normalized_metrics)) {
35
+ lines.push(`- ${metric}: ${value}`);
36
36
  }
37
- for (const gr of cell.gate_results ?? []) {
38
- const sym = gr.passed ? "✓" : "✗";
39
- lines.push(` ${sym} ${gr.metric} ${gr.passed ? "≤" : ">"} ${gr.threshold} (actual ${gr.actual})`);
37
+ lines.push(``);
38
+ }
39
+ if (run.gates_eval) {
40
+ lines.push(`### Gate Results`);
41
+ for (const gate of run.gates_eval.gates) {
42
+ const sym = gate.passed ? "✓" : "✗";
43
+ lines.push(` ${sym} ${gate.metric} ${gate.operator} ${gate.threshold} (actual ${gate.actual_value})`);
40
44
  }
45
+ lines.push(`Overall: ${run.gates_eval.passed ? "PASSED" : "FAILED"}`);
46
+ lines.push(``);
47
+ }
48
+ if (run.error_code) {
49
+ lines.push(`Error: ${run.error_code}`);
50
+ if (run.error_detail)
51
+ lines.push(`Detail: ${run.error_detail}`);
41
52
  lines.push(``);
42
53
  }
43
- if (run.evidence_bundle_url) {
44
- lines.push(`Evidence bundle: ${run.evidence_bundle_url}`);
54
+ if (run.bundle_artifact_id) {
55
+ lines.push(`Evidence bundle artifact: ${run.bundle_artifact_id}`, `Fetch bundle details with \`edgegate_get_audit_report\`.`);
45
56
  }
46
57
  return lines.join("\n");
47
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"check_status.js","sourceRoot":"","sources":["../../src/tools/check_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC1B,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAsB,EACtB,KAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,GAAc;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,KAAK,GAAa;QACtB,SAAS,GAAG,CAAC,EAAE,OAAO,KAAK,EAAE;QAC7B,aAAa,GAAG,CAAC,WAAW,EAAE;QAC9B,YAAY,GAAG,CAAC,OAAO,EAAE;QACzB,YAAY,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE;QAC3C,cAAc,GAAG,CAAC,YAAY,IAAI,aAAa,EAAE;QACjD,EAAE;KACH,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACrG,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"check_status.js","sourceRoot":"","sources":["../../src/tools/check_status.ts"],"names":[],"mappings":"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"}
@@ -4,64 +4,77 @@ import type { ToolResult } from "./setup_workspace.js";
4
4
  export declare const createPipelineInputSchema: z.ZodObject<{
5
5
  workspace_id: z.ZodString;
6
6
  name: z.ZodString;
7
- description: z.ZodOptional<z.ZodString>;
8
- models: z.ZodArray<z.ZodObject<{
9
- name: z.ZodString;
10
- artifact_id: z.ZodString;
11
- }, "strip", z.ZodTypeAny, {
12
- name: string;
13
- artifact_id: string;
14
- }, {
15
- name: string;
16
- artifact_id: string;
17
- }>, "many">;
7
+ /** Required. Use the string promptpack_id (e.g. "image-classification-bench-v1"), not the UUID row id. */
8
+ promptpack_id: z.ZodString;
9
+ /** PromptPack version string, e.g. "1.0.0" */
10
+ promptpack_version: z.ZodDefault<z.ZodString>;
11
+ /** Device names to include. E.g. ["Samsung Galaxy S24 (Family)"] */
18
12
  devices: z.ZodArray<z.ZodString, "many">;
19
13
  gates: z.ZodArray<z.ZodObject<{
20
14
  metric: z.ZodEnum<["inference_time_ms", "peak_memory_mb", "throughput_tps"]>;
21
15
  operator: z.ZodEnum<["<=", "<", ">=", ">", "=="]>;
22
16
  threshold: z.ZodNumber;
17
+ description: z.ZodOptional<z.ZodString>;
23
18
  }, "strip", z.ZodTypeAny, {
24
19
  metric: "inference_time_ms" | "peak_memory_mb" | "throughput_tps";
25
20
  operator: "<=" | "<" | ">=" | ">" | "==";
26
21
  threshold: number;
22
+ description?: string | undefined;
27
23
  }, {
28
24
  metric: "inference_time_ms" | "peak_memory_mb" | "throughput_tps";
29
25
  operator: "<=" | "<" | ">=" | ">" | "==";
30
26
  threshold: number;
27
+ description?: string | undefined;
31
28
  }>, "many">;
32
- promptpack_id: z.ZodOptional<z.ZodString>;
29
+ /**
30
+ * Optional multi-model matrix. When omitted the pipeline runs in legacy
31
+ * single-model mode (model_artifact_id is supplied per-run instead).
32
+ */
33
+ models: z.ZodOptional<z.ZodArray<z.ZodObject<{
34
+ name: z.ZodString;
35
+ artifact_id: z.ZodString;
36
+ }, "strip", z.ZodTypeAny, {
37
+ name: string;
38
+ artifact_id: string;
39
+ }, {
40
+ name: string;
41
+ artifact_id: string;
42
+ }>, "many">>;
43
+ /** Measurement repeats per cell (1–5). Defaults to API default (3). */
33
44
  repeats: z.ZodOptional<z.ZodNumber>;
34
45
  }, "strip", z.ZodTypeAny, {
35
46
  workspace_id: string;
36
47
  name: string;
37
- models: {
38
- name: string;
39
- artifact_id: string;
40
- }[];
48
+ promptpack_id: string;
49
+ promptpack_version: string;
41
50
  devices: string[];
42
51
  gates: {
43
52
  metric: "inference_time_ms" | "peak_memory_mb" | "throughput_tps";
44
53
  operator: "<=" | "<" | ">=" | ">" | "==";
45
54
  threshold: number;
55
+ description?: string | undefined;
46
56
  }[];
47
- description?: string | undefined;
48
- promptpack_id?: string | undefined;
57
+ models?: {
58
+ name: string;
59
+ artifact_id: string;
60
+ }[] | undefined;
49
61
  repeats?: number | undefined;
50
62
  }, {
51
63
  workspace_id: string;
52
64
  name: string;
53
- models: {
54
- name: string;
55
- artifact_id: string;
56
- }[];
65
+ promptpack_id: string;
57
66
  devices: string[];
58
67
  gates: {
59
68
  metric: "inference_time_ms" | "peak_memory_mb" | "throughput_tps";
60
69
  operator: "<=" | "<" | ">=" | ">" | "==";
61
70
  threshold: number;
71
+ description?: string | undefined;
62
72
  }[];
63
- description?: string | undefined;
64
- promptpack_id?: string | undefined;
73
+ promptpack_version?: string | undefined;
74
+ models?: {
75
+ name: string;
76
+ artifact_id: string;
77
+ }[] | undefined;
65
78
  repeats?: number | undefined;
66
79
  }>;
67
80
  export type CreatePipelineInput = z.infer<typeof createPipelineInputSchema>;
@@ -1,28 +1,48 @@
1
1
  import { z } from "zod";
2
2
  import { EdgeGateError } from "../client.js";
3
3
  const MAX_CELLS = 25;
4
+ // Operator mapping: user-friendly symbols → API enum values
5
+ const OPERATOR_MAP = {
6
+ "<=": "lte",
7
+ "<": "lt",
8
+ ">=": "gte",
9
+ ">": "gt",
10
+ "==": "eq",
11
+ };
4
12
  export const createPipelineInputSchema = z.object({
5
13
  workspace_id: z.string().uuid(),
6
14
  name: z.string().min(1).max(255),
7
- description: z.string().optional(),
8
- models: z
9
- .array(z.object({ name: z.string().min(1), artifact_id: z.string().min(1) }))
10
- .min(1)
11
- .max(10),
15
+ /** Required. Use the string promptpack_id (e.g. "image-classification-bench-v1"), not the UUID row id. */
16
+ promptpack_id: z.string().min(1),
17
+ /** PromptPack version string, e.g. "1.0.0" */
18
+ promptpack_version: z.string().min(1).default("1.0.0"),
19
+ /** Device names to include. E.g. ["Samsung Galaxy S24 (Family)"] */
12
20
  devices: z.array(z.string().min(1)).min(1).max(5),
13
21
  gates: z
14
22
  .array(z.object({
15
23
  metric: z.enum(["inference_time_ms", "peak_memory_mb", "throughput_tps"]),
16
24
  operator: z.enum(["<=", "<", ">=", ">", "=="]),
17
25
  threshold: z.number().positive(),
26
+ description: z.string().optional(),
18
27
  }))
19
28
  .min(1),
20
- promptpack_id: z.string().uuid().optional(),
29
+ /**
30
+ * Optional multi-model matrix. When omitted the pipeline runs in legacy
31
+ * single-model mode (model_artifact_id is supplied per-run instead).
32
+ */
33
+ models: z
34
+ .array(z.object({ name: z.string().min(1), artifact_id: z.string().min(1) }))
35
+ .min(1)
36
+ .max(10)
37
+ .optional(),
38
+ /** Measurement repeats per cell (1–5). Defaults to API default (3). */
21
39
  repeats: z.number().int().min(1).max(5).optional(),
22
40
  });
23
41
  export async function createPipelineHandler(client, input) {
24
- const cellCount = input.models.length * input.devices.length;
25
- if (cellCount > MAX_CELLS) {
42
+ // Guard: cell count limit applies when model_matrix is provided
43
+ const modelCount = input.models?.length ?? 1;
44
+ const cellCount = modelCount * input.devices.length;
45
+ if (input.models && cellCount > MAX_CELLS) {
26
46
  return {
27
47
  isError: true,
28
48
  content: [
@@ -35,15 +55,28 @@ export async function createPipelineHandler(client, input) {
35
55
  ],
36
56
  };
37
57
  }
58
+ // Translate user-facing shape → API shape
59
+ const device_matrix = input.devices.map((name) => ({ name, enabled: true }));
60
+ const promptpack_ref = {
61
+ promptpack_id: input.promptpack_id,
62
+ version: input.promptpack_version,
63
+ };
64
+ const gates = input.gates.map((g) => ({
65
+ metric: g.metric,
66
+ operator: OPERATOR_MAP[g.operator] ?? g.operator,
67
+ threshold: g.threshold,
68
+ ...(g.description !== undefined ? { description: g.description } : {}),
69
+ }));
70
+ const model_matrix = input.models?.map((m) => ({ artifact_id: m.artifact_id, label: m.name }));
71
+ const run_policy = input.repeats !== undefined ? { measurement_repeats: input.repeats } : undefined;
38
72
  try {
39
73
  const pipeline = await client.createPipeline(input.workspace_id, {
40
74
  name: input.name,
41
- description: input.description,
42
- models: input.models,
43
- devices: input.devices,
44
- gates: input.gates,
45
- promptpack_id: input.promptpack_id,
46
- repeats: input.repeats,
75
+ device_matrix,
76
+ promptpack_ref,
77
+ gates,
78
+ ...(model_matrix !== undefined ? { model_matrix } : {}),
79
+ ...(run_policy !== undefined ? { run_policy } : {}),
47
80
  });
48
81
  return {
49
82
  content: [
@@ -52,8 +85,9 @@ export async function createPipelineHandler(client, input) {
52
85
  text: [
53
86
  `Created pipeline **${pipeline.name}** (id=${pipeline.id}).`,
54
87
  ``,
55
- `- ${input.models.length} model(s) × ${input.devices.length} device(s) = ${cellCount} cell(s) per run`,
56
- `- ${input.gates.length} gate(s)`,
88
+ `- ${pipeline.device_count} device(s) × ${Math.max(pipeline.model_count, 1)} model(s) = ${pipeline.cell_count} cell(s) per run`,
89
+ `- ${pipeline.gate_count} gate(s)`,
90
+ `- PromptPack: ${pipeline.promptpack_id}@${pipeline.promptpack_version}`,
57
91
  ``,
58
92
  `Trigger a run with \`edgegate_run_gate\`, or wire CI with \`edgegate_setup_github_action\`.`,
59
93
  ].join("\n"),
@@ -1 +1 @@
1
- {"version":3,"file":"create_pipeline.js","sourceRoot":"","sources":["../../src/tools/create_pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5E,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QACzE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACjC,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;IACT,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB,EACtB,KAA0B;IAE1B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7D,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,aAAa,KAAK,CAAC,OAAO,CAAC,MAAM,cAAc,SAAS,UAAU;wBACxF,sCAAsC,SAAS,+BAA+B;wBAC9E,0BAA0B;iBAC7B;aACF;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE;YAC/D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,sBAAsB,QAAQ,CAAC,IAAI,UAAU,QAAQ,CAAC,EAAE,IAAI;wBAC5D,EAAE;wBACF,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,eAAe,KAAK,CAAC,OAAO,CAAC,MAAM,gBAAgB,SAAS,kBAAkB;wBACtG,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,UAAU;wBACjC,EAAE;wBACF,6FAA6F;qBAC9F,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;aAC9E,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"create_pipeline.js","sourceRoot":"","sources":["../../src/tools/create_pipeline.ts"],"names":[],"mappings":"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"}
@@ -6,23 +6,35 @@ export const getAuditReportInputSchema = z.object({
6
6
  });
7
7
  export async function getAuditReportHandler(client, input) {
8
8
  try {
9
- const report = await client.getAuditReport(input.workspace_id, input.run_id);
9
+ const bundle = await client.getRunBundle(input.workspace_id, input.run_id);
10
+ const lines = [
11
+ `Evidence bundle for run ${input.run_id}:`,
12
+ ``,
13
+ `Status: ${bundle.status.toUpperCase()}`,
14
+ `Pipeline: ${bundle.pipeline_id} (${bundle.pipeline_name})`,
15
+ `Bundle artifact ID: ${bundle.bundle_artifact_id ?? "(not yet generated)"}`,
16
+ ``,
17
+ ];
18
+ if (bundle.normalized_metrics) {
19
+ lines.push(`### Metrics`);
20
+ for (const [metric, value] of Object.entries(bundle.normalized_metrics)) {
21
+ lines.push(`- ${metric}: ${value}`);
22
+ }
23
+ lines.push(``);
24
+ }
25
+ if (bundle.gates_eval) {
26
+ lines.push(`### Gate Decisions`);
27
+ for (const gate of bundle.gates_eval.gates) {
28
+ const sym = gate.passed ? "✓" : "✗";
29
+ lines.push(` ${sym} ${gate.metric} ${gate.operator} ${gate.threshold} (actual ${gate.actual_value})`);
30
+ }
31
+ lines.push(`Overall: ${bundle.gates_eval.passed ? "PASSED" : "FAILED"}`);
32
+ lines.push(``);
33
+ }
34
+ lines.push(`The bundle artifact ID can be used with the EdgeGate API to download the ` +
35
+ `signed evidence bundle containing the full SHA-256 manifest and device fingerprints.`);
10
36
  return {
11
- content: [
12
- {
13
- type: "text",
14
- text: [
15
- `Audit report for run ${input.run_id}:`,
16
- ``,
17
- `Download URL: ${report.url}`,
18
- `Generated: ${report.generated_at}`,
19
- ``,
20
- `The URL is signed and time-limited (typically 1h). The PDF contains ` +
21
- `the signed evidence bundle hash, device fingerprints, and gate decisions — ` +
22
- `keep it with your compliance records.`,
23
- ].join("\n"),
24
- },
25
- ],
37
+ content: [{ type: "text", text: lines.join("\n") }],
26
38
  };
27
39
  }
28
40
  catch (err) {
@@ -32,10 +44,13 @@ export async function getAuditReportHandler(client, input) {
32
44
  content: [
33
45
  {
34
46
  type: "text",
35
- text: err.status === 404
36
- ? `No audit report for run ${input.run_id} yet. Reports are generated ` +
37
- `asynchronously after the run completes try again in 1-2 minutes.`
38
- : `EdgeGate returned ${err.status}: ${err.detail}`,
47
+ text: err.status === 409
48
+ ? `Evidence bundle not available yet the run has not completed. ` +
49
+ `Check status with \`edgegate_check_status\` and retry when it is PASSED or FAILED.`
50
+ : err.status === 404
51
+ ? `No evidence bundle for run ${input.run_id} yet. ` +
52
+ `Bundles are generated after the run completes — try again in 1-2 minutes.`
53
+ : `EdgeGate returned ${err.status}: ${err.detail}`,
39
54
  },
40
55
  ],
41
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get_audit_report.js","sourceRoot":"","sources":["../../src/tools/get_audit_report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC1B,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB,EACtB,KAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,wBAAwB,KAAK,CAAC,MAAM,GAAG;wBACvC,EAAE;wBACF,iBAAiB,MAAM,CAAC,GAAG,EAAE;wBAC7B,cAAc,MAAM,CAAC,YAAY,EAAE;wBACnC,EAAE;wBACF,sEAAsE;4BACpE,6EAA6E;4BAC7E,uCAAuC;qBAC1C,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,GAAG,CAAC,MAAM,KAAK,GAAG;4BAChB,CAAC,CAAC,2BAA2B,KAAK,CAAC,MAAM,8BAA8B;gCACrE,oEAAoE;4BACtE,CAAC,CAAC,qBAAqB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;qBACvD;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"get_audit_report.js","sourceRoot":"","sources":["../../src/tools/get_audit_report.ts"],"names":[],"mappings":"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"}
@@ -19,10 +19,10 @@ export async function getReportHandler(client, input) {
19
19
  }
20
20
  const rows = runs
21
21
  .map((r) => {
22
- const dur = r.started_at && r.completed_at
23
- ? `${Math.round((new Date(r.completed_at).getTime() - new Date(r.started_at).getTime()) / 1000)}s`
22
+ const dur = r.created_at && r.completed_at
23
+ ? `${Math.round((new Date(r.completed_at).getTime() - new Date(r.created_at).getTime()) / 1000)}s`
24
24
  : "-";
25
- return `| ${r.id} | ${r.status} | ${r.trigger} | ${dur} | ${r.started_at ?? "-"} |`;
25
+ return `| ${r.id} | ${r.status} | ${r.trigger} | ${dur} | ${r.created_at ?? "-"} |`;
26
26
  })
27
27
  .join("\n");
28
28
  return {
@@ -7,9 +7,12 @@ export const runGateInputSchema = z.object({
7
7
  });
8
8
  export async function runGateHandler(client, input) {
9
9
  try {
10
- const run = await client.triggerRun(input.workspace_id, input.pipeline_id, {
11
- trigger: "mcp",
12
- model_artifact_id: input.model_artifact_id,
10
+ const run = await client.triggerRun(input.workspace_id, {
11
+ pipeline_id: input.pipeline_id,
12
+ trigger: "manual",
13
+ ...(input.model_artifact_id !== undefined
14
+ ? { model_artifact_id: input.model_artifact_id }
15
+ : {}),
13
16
  });
14
17
  return {
15
18
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"run_gate.js","sourceRoot":"","sources":["../../src/tools/run_gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC9B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAsB,EACtB,KAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;YACzE,OAAO,EAAE,KAAK;YACd,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;SAC3C,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,mBAAmB,GAAG,CAAC,EAAE,kBAAkB,KAAK,CAAC,WAAW,GAAG;wBAC/D,EAAE;wBACF,mBAAmB;wBACnB,8CAA8C,KAAK,CAAC,YAAY,eAAe,GAAG,CAAC,EAAE,QAAQ;wBAC7F,EAAE;wBACF,kDAAkD;qBACnD,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,GAAG,CAAC,MAAM,KAAK,GAAG;4BAChB,CAAC,CAAC,gEAAgE;gCAChE,6DAA6D;4BAC/D,CAAC,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE;qBAC7C;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"run_gate.js","sourceRoot":"","sources":["../../src/tools/run_gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC9B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAsB,EACtB,KAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE;YACtD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,QAAQ;YACjB,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,mBAAmB,GAAG,CAAC,EAAE,kBAAkB,KAAK,CAAC,WAAW,GAAG;wBAC/D,EAAE;wBACF,mBAAmB;wBACnB,8CAA8C,KAAK,CAAC,YAAY,eAAe,GAAG,CAAC,EAAE,QAAQ;wBAC7F,EAAE;wBACF,kDAAkD;qBACnD,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,GAAG,CAAC,MAAM,KAAK,GAAG;4BAChB,CAAC,CAAC,gEAAgE;gCAChE,6DAA6D;4BAC/D,CAAC,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE;qBAC7C;iBACF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -10,12 +10,20 @@ export interface Workspace {
10
10
  }
11
11
  export interface Pipeline {
12
12
  id: UUID;
13
- workspace_id: UUID;
14
13
  name: string;
15
- description: string | null;
16
- status: "active" | "paused";
17
- pipeline_yaml: string;
14
+ device_count: number;
15
+ model_count: number;
16
+ gate_count: number;
17
+ cell_count: number;
18
+ promptpack_id: string;
19
+ promptpack_version: string;
18
20
  created_at: string;
21
+ updated_at: string;
22
+ last_run: {
23
+ id: UUID;
24
+ status: string;
25
+ created_at: string;
26
+ } | null;
19
27
  }
20
28
  export interface Gate {
21
29
  metric: string;
@@ -24,27 +32,45 @@ export interface Gate {
24
32
  }
25
33
  export interface RunSummary {
26
34
  id: UUID;
27
- workspace_id: UUID;
28
35
  pipeline_id: UUID;
36
+ pipeline_name: string;
29
37
  status: "pending" | "running" | "passed" | "failed" | "error";
30
- started_at: string | null;
31
- completed_at: string | null;
32
38
  trigger: string;
39
+ model_artifact_id: UUID | null;
40
+ model_filename: string | null;
41
+ error_code: string | null;
42
+ error_detail: string | null;
43
+ created_at: string;
44
+ updated_at: string;
45
+ completed_at: string | null;
46
+ hub_model_id: string | null;
47
+ hub_job_id: string | null;
48
+ }
49
+ export interface GateEvalResult {
50
+ metric: string;
51
+ passed: boolean;
52
+ operator: string;
53
+ threshold: number;
54
+ description: string | null;
55
+ actual_value: number;
33
56
  }
34
- export interface RunCell {
35
- model_artifact_id: UUID;
36
- device_name: string;
37
- metrics: Record<string, number>;
38
- gate_results: Array<{
39
- metric: string;
40
- passed: boolean;
41
- threshold: number;
42
- actual: number;
43
- }>;
57
+ export interface GatesEval {
58
+ gates: GateEvalResult[];
59
+ passed: boolean;
44
60
  }
45
61
  export interface RunDetail extends RunSummary {
46
- cells: RunCell[];
47
- evidence_bundle_url: string | null;
62
+ normalized_metrics: Record<string, number> | null;
63
+ gates_eval: GatesEval | null;
64
+ bundle_artifact_id: UUID | null;
65
+ }
66
+ export interface RunBundle {
67
+ run_id: UUID;
68
+ status: string;
69
+ pipeline_id: UUID;
70
+ pipeline_name: string;
71
+ normalized_metrics: Record<string, number> | null;
72
+ gates_eval: GatesEval | null;
73
+ bundle_artifact_id: UUID | null;
48
74
  }
49
75
  export interface APIKeyCreateResponse {
50
76
  id: UUID;
@@ -58,7 +84,8 @@ export interface WorkflowTemplate {
58
84
  api_url: string;
59
85
  secret_names: string[];
60
86
  }
87
+ /** @deprecated Not used — audit-report endpoint does not exist; use RunBundle instead. */
61
88
  export interface AuditReport {
62
- url: string;
63
- generated_at: string;
89
+ url?: string;
90
+ generated_at?: string;
64
91
  }
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.1";
2
- export declare const USER_AGENT = "edgegate-mcp/0.1.1";
1
+ export declare const VERSION = "0.1.2";
2
+ export declare const USER_AGENT = "edgegate-mcp/0.1.2";
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
- export const VERSION = "0.1.1";
1
+ export const VERSION = "0.1.2";
2
2
  export const USER_AGENT = `edgegate-mcp/${VERSION}`;
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edgegate-mcp",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "MCP server for EdgeGate — set up edge-AI regression gates from Claude Code, Cursor, or Claude Desktop.",
5
5
  "license": "MIT",
6
6
  "type": "module",