edgegate-mcp 0.3.0 → 0.4.0

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/README.md CHANGED
@@ -4,7 +4,7 @@ MCP server for [EdgeGate](https://edgegate.frozo.ai) — set up edge-AI regressi
4
4
 
5
5
  ## What does it do?
6
6
 
7
- EdgeGate runs AI model regression tests on real Snapdragon hardware via Qualcomm AI Hub, then produces signed evidence bundles you can attach to CI gates. This npm package exposes EdgeGate's REST API as 10 MCP tools, plus bundled skills, so you can drive the whole flow from a prompt:
7
+ EdgeGate runs AI model regression tests on real Snapdragon hardware via Qualcomm AI Hub, then produces signed evidence bundles you can attach to CI gates. This npm package exposes EdgeGate's REST API as 12 MCP tools, plus bundled skills, so you can drive the whole flow from a prompt:
8
8
 
9
9
  ```
10
10
  > Use the edgegate MCP to set up a CI gate for my MobileNet ONNX model.
@@ -70,6 +70,8 @@ See [docs/tools.md](./docs/tools.md) for the full tool reference. Quick list:
70
70
  | `edgegate_compare_runs` | Diff two runs — gate flips, metric deltas, per-device breakdown, REGRESSION / IMPROVEMENT / NEUTRAL verdict |
71
71
  | `edgegate_export_run_report` | Save a complete run report as a markdown file to disk (returns the file path + preview) |
72
72
  | `edgegate_import_huggingface_model` | Import a public HuggingFace ONNX model — returns artifact_id ready for `edgegate_create_pipeline` |
73
+ | `edgegate_list_promptpacks` | List all promptpacks in a workspace (id, version, case count, published status) |
74
+ | `edgegate_create_promptpack` | Create a new promptpack with test cases (prompts, expected outputs, per-case overrides) |
73
75
 
74
76
  ## Skills
75
77
 
@@ -82,6 +84,7 @@ Slash commands you can invoke directly:
82
84
  - `/edgegate-compare` — diff two runs (auto-baseline) with REGRESSION/IMPROVEMENT/NEUTRAL verdict
83
85
  - `/edgegate-export` — save a run report as a markdown file (for PR comments, Slack, compliance)
84
86
  - `/edgegate-import` — import a public Hugging Face ONNX model and get an artifact_id
87
+ - `/edgegate-promptpacks` — list existing promptpacks or create a new one with generated test cases
85
88
 
86
89
  ## License
87
90
 
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { APIKeyCreateResponse, HFImportJob, Pipeline, RunBundle, RunComparison, RunDetail, RunSummary, Workspace, WorkflowTemplate } from "./types.js";
1
+ import type { APIKeyCreateResponse, HFImportJob, Pipeline, PromptPackCreateBody, PromptPackSummary, RunBundle, RunComparison, RunDetail, RunSummary, Workspace, WorkflowTemplate } from "./types.js";
2
2
  export interface EdgeGateClientOptions {
3
3
  apiUrl: string;
4
4
  apiKey: string;
@@ -70,5 +70,7 @@ export declare class EdgeGateClient {
70
70
  filename?: string;
71
71
  }): Promise<HFImportJob>;
72
72
  getHuggingFaceImportJob(workspaceId: string, jobId: string): Promise<HFImportJob>;
73
+ listPromptPacks(workspaceId: string): Promise<PromptPackSummary[]>;
74
+ createPromptPack(workspaceId: string, body: PromptPackCreateBody): Promise<PromptPackSummary>;
73
75
  private request;
74
76
  }
package/dist/client.js CHANGED
@@ -66,6 +66,12 @@ export class EdgeGateClient {
66
66
  async getHuggingFaceImportJob(workspaceId, jobId) {
67
67
  return this.request("GET", `/v1/workspaces/${workspaceId}/artifacts/import-huggingface/${jobId}`);
68
68
  }
69
+ async listPromptPacks(workspaceId) {
70
+ return this.request("GET", `/v1/workspaces/${workspaceId}/promptpacks`);
71
+ }
72
+ async createPromptPack(workspaceId, body) {
73
+ return this.request("POST", `/v1/workspaces/${workspaceId}/promptpacks`, body);
74
+ }
69
75
  async request(method, path, body) {
70
76
  const url = `${this.apiUrl}${path}`;
71
77
  const isIdempotent = method === "GET";
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -14,6 +14,8 @@ import { setupGithubActionHandler, setupGithubActionInputSchema, } from "./tools
14
14
  import { compareRunsHandler, compareRunsInputSchema, } from "./tools/compare_runs.js";
15
15
  import { exportRunReportHandler, exportRunReportInputSchema, } from "./tools/export_run_report.js";
16
16
  import { importHuggingfaceModelHandler, importHuggingfaceModelInputSchema, } from "./tools/import_huggingface_model.js";
17
+ import { listPromptpacksHandler, listPromptpacksInputSchema, } from "./tools/list_promptpacks.js";
18
+ import { createPromptpackHandler, createPromptpackInputSchema, } from "./tools/create_promptpack.js";
17
19
  const TOOLS = [
18
20
  {
19
21
  name: "edgegate_setup_workspace",
@@ -89,6 +91,23 @@ const TOOLS = [
89
91
  schema: importHuggingfaceModelInputSchema,
90
92
  handler: importHuggingfaceModelHandler,
91
93
  },
94
+ {
95
+ name: "edgegate_list_promptpacks",
96
+ description: "List all promptpacks in an EdgeGate workspace. Returns a markdown table with " +
97
+ "promptpack_id, version, case count, published status, and creation date. " +
98
+ "Use include_unpublished=false to hide draft packs.",
99
+ schema: listPromptpacksInputSchema,
100
+ handler: listPromptpacksHandler,
101
+ },
102
+ {
103
+ name: "edgegate_create_promptpack",
104
+ description: "Create a new promptpack in an EdgeGate workspace. A promptpack defines the test " +
105
+ "cases (prompts, expected outputs, per-case overrides) that regression pipelines " +
106
+ "evaluate. Requires admin role on the workspace. Packs are immutable after creation — " +
107
+ "bump the version to update.",
108
+ schema: createPromptpackInputSchema,
109
+ handler: createPromptpackHandler,
110
+ },
92
111
  ];
93
112
  function getClient() {
94
113
  const apiUrl = process.env.EDGEGATE_API_URL ?? "https://edgegateapi.frozo.ai";
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,qCAAqC,CAAC;AAE7C,MAAM,KAAK,GAAG;IACZ;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,6EAA6E;YAC7E,mFAAmF;QACrF,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,qBAAqB;KAC/B;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,qFAAqF;YACrF,0EAA0E;QAC5E,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,qBAAqB;KAC/B;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,iFAAiF;YACjF,wBAAwB;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,cAAc;KACxB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,8EAA8E;YAC9E,+BAA+B;QACjC,MAAM,EAAE,sBAAsB;QAC9B,OAAO,EAAE,kBAAkB;KAC5B;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,8EAA8E;QAC3F,MAAM,EAAE,oBAAoB;QAC5B,OAAO,EAAE,gBAAgB;KAC1B;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,6EAA6E;YAC7E,qBAAqB;QACvB,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,qBAAqB;KAC/B;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,kFAAkF;YAClF,wBAAwB;QAC1B,MAAM,EAAE,4BAA4B;QACpC,OAAO,EAAE,wBAAwB;KAClC;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,2FAA2F;YAC3F,gGAAgG;YAChG,wFAAwF;YACxF,oDAAoD;QACtD,MAAM,EAAE,sBAAsB;QAC9B,OAAO,EAAE,kBAAkB;KAC5B;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACT,qFAAqF;YACrF,uEAAuE;YACvE,yEAAyE;QAC3E,MAAM,EAAE,0BAA0B;QAClC,OAAO,EAAE,sBAAsB;KAChC;IACD;QACE,IAAI,EAAE,mCAAmC;QACzC,WAAW,EACT,mFAAmF;YACnF,sFAAsF;YACtF,yFAAyF;YACzF,iFAAiF;QACnF,MAAM,EAAE,iCAAiC;QACzC,OAAO,EAAE,6BAA6B;KACvC;CACO,CAAC;AAEX,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,8BAA8B,CAAC;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,4EAA4E;YAC1E,oEAAoE,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,EAC1C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAA4B;SAClE,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;iBACtF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,8DAA8D;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAW,CAAQ,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,qBAAqB,CAAC,CAAC;AAC9D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateClient } from "../client.js";
3
+ import type { ToolResult } from "./setup_workspace.js";
4
+ export declare const createPromptpackInputSchema: z.ZodObject<{
5
+ workspace_id: z.ZodString;
6
+ promptpack_id: z.ZodString;
7
+ version: z.ZodString;
8
+ name: z.ZodString;
9
+ description: z.ZodOptional<z.ZodString>;
10
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11
+ defaults: z.ZodOptional<z.ZodObject<{
12
+ max_new_tokens: z.ZodOptional<z.ZodNumber>;
13
+ temperature: z.ZodOptional<z.ZodNumber>;
14
+ top_p: z.ZodOptional<z.ZodNumber>;
15
+ seed: z.ZodOptional<z.ZodNumber>;
16
+ }, "strict", z.ZodTypeAny, {
17
+ max_new_tokens?: number | undefined;
18
+ temperature?: number | undefined;
19
+ top_p?: number | undefined;
20
+ seed?: number | undefined;
21
+ }, {
22
+ max_new_tokens?: number | undefined;
23
+ temperature?: number | undefined;
24
+ top_p?: number | undefined;
25
+ seed?: number | undefined;
26
+ }>>;
27
+ cases: z.ZodArray<z.ZodObject<{
28
+ case_id: z.ZodString;
29
+ name: z.ZodString;
30
+ prompt: z.ZodString;
31
+ expected: z.ZodOptional<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
32
+ type: z.ZodLiteral<"none">;
33
+ }, "strict", z.ZodTypeAny, {
34
+ type: "none";
35
+ }, {
36
+ type: "none";
37
+ }>, z.ZodObject<{
38
+ type: z.ZodLiteral<"exact">;
39
+ text: z.ZodString;
40
+ }, "strict", z.ZodTypeAny, {
41
+ type: "exact";
42
+ text: string;
43
+ }, {
44
+ type: "exact";
45
+ text: string;
46
+ }>, z.ZodObject<{
47
+ type: z.ZodLiteral<"regex">;
48
+ pattern: z.ZodString;
49
+ }, "strict", z.ZodTypeAny, {
50
+ type: "regex";
51
+ pattern: string;
52
+ }, {
53
+ type: "regex";
54
+ pattern: string;
55
+ }>, z.ZodObject<{
56
+ type: z.ZodLiteral<"json_schema">;
57
+ schema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
58
+ }, "strict", z.ZodTypeAny, {
59
+ type: "json_schema";
60
+ schema: Record<string, unknown>;
61
+ }, {
62
+ type: "json_schema";
63
+ schema: Record<string, unknown>;
64
+ }>]>>;
65
+ overrides: z.ZodOptional<z.ZodObject<{
66
+ max_new_tokens: z.ZodOptional<z.ZodNumber>;
67
+ temperature: z.ZodOptional<z.ZodNumber>;
68
+ top_p: z.ZodOptional<z.ZodNumber>;
69
+ seed: z.ZodOptional<z.ZodNumber>;
70
+ }, "strict", z.ZodTypeAny, {
71
+ max_new_tokens?: number | undefined;
72
+ temperature?: number | undefined;
73
+ top_p?: number | undefined;
74
+ seed?: number | undefined;
75
+ }, {
76
+ max_new_tokens?: number | undefined;
77
+ temperature?: number | undefined;
78
+ top_p?: number | undefined;
79
+ seed?: number | undefined;
80
+ }>>;
81
+ }, "strict", z.ZodTypeAny, {
82
+ prompt: string;
83
+ name: string;
84
+ case_id: string;
85
+ expected?: {
86
+ type: "none";
87
+ } | {
88
+ type: "exact";
89
+ text: string;
90
+ } | {
91
+ type: "regex";
92
+ pattern: string;
93
+ } | {
94
+ type: "json_schema";
95
+ schema: Record<string, unknown>;
96
+ } | undefined;
97
+ overrides?: {
98
+ max_new_tokens?: number | undefined;
99
+ temperature?: number | undefined;
100
+ top_p?: number | undefined;
101
+ seed?: number | undefined;
102
+ } | undefined;
103
+ }, {
104
+ prompt: string;
105
+ name: string;
106
+ case_id: string;
107
+ expected?: {
108
+ type: "none";
109
+ } | {
110
+ type: "exact";
111
+ text: string;
112
+ } | {
113
+ type: "regex";
114
+ pattern: string;
115
+ } | {
116
+ type: "json_schema";
117
+ schema: Record<string, unknown>;
118
+ } | undefined;
119
+ overrides?: {
120
+ max_new_tokens?: number | undefined;
121
+ temperature?: number | undefined;
122
+ top_p?: number | undefined;
123
+ seed?: number | undefined;
124
+ } | undefined;
125
+ }>, "many">;
126
+ }, "strict", z.ZodTypeAny, {
127
+ workspace_id: string;
128
+ name: string;
129
+ promptpack_id: string;
130
+ version: string;
131
+ cases: {
132
+ prompt: string;
133
+ name: string;
134
+ case_id: string;
135
+ expected?: {
136
+ type: "none";
137
+ } | {
138
+ type: "exact";
139
+ text: string;
140
+ } | {
141
+ type: "regex";
142
+ pattern: string;
143
+ } | {
144
+ type: "json_schema";
145
+ schema: Record<string, unknown>;
146
+ } | undefined;
147
+ overrides?: {
148
+ max_new_tokens?: number | undefined;
149
+ temperature?: number | undefined;
150
+ top_p?: number | undefined;
151
+ seed?: number | undefined;
152
+ } | undefined;
153
+ }[];
154
+ description?: string | undefined;
155
+ tags?: string[] | undefined;
156
+ defaults?: {
157
+ max_new_tokens?: number | undefined;
158
+ temperature?: number | undefined;
159
+ top_p?: number | undefined;
160
+ seed?: number | undefined;
161
+ } | undefined;
162
+ }, {
163
+ workspace_id: string;
164
+ name: string;
165
+ promptpack_id: string;
166
+ version: string;
167
+ cases: {
168
+ prompt: string;
169
+ name: string;
170
+ case_id: string;
171
+ expected?: {
172
+ type: "none";
173
+ } | {
174
+ type: "exact";
175
+ text: string;
176
+ } | {
177
+ type: "regex";
178
+ pattern: string;
179
+ } | {
180
+ type: "json_schema";
181
+ schema: Record<string, unknown>;
182
+ } | undefined;
183
+ overrides?: {
184
+ max_new_tokens?: number | undefined;
185
+ temperature?: number | undefined;
186
+ top_p?: number | undefined;
187
+ seed?: number | undefined;
188
+ } | undefined;
189
+ }[];
190
+ description?: string | undefined;
191
+ tags?: string[] | undefined;
192
+ defaults?: {
193
+ max_new_tokens?: number | undefined;
194
+ temperature?: number | undefined;
195
+ top_p?: number | undefined;
196
+ seed?: number | undefined;
197
+ } | undefined;
198
+ }>;
199
+ export type CreatePromptpackInput = z.infer<typeof createPromptpackInputSchema>;
200
+ export declare function createPromptpackHandler(client: EdgeGateClient, input: CreatePromptpackInput): Promise<ToolResult>;
@@ -0,0 +1,178 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateError } from "../client.js";
3
+ const promptpackIdRegex = /^[a-zA-Z0-9_-]{1,64}$/;
4
+ const caseIdRegex = /^[a-zA-Z0-9_-]{1,64}$/;
5
+ const semverRegex = /^\d+\.\d+\.\d+$/;
6
+ const defaultsSchema = z
7
+ .object({
8
+ max_new_tokens: z.number().int().min(1).max(256).optional(),
9
+ temperature: z.number().min(0).max(2).optional(),
10
+ top_p: z.number().min(0).max(1).optional(),
11
+ seed: z.number().int().min(0).optional(),
12
+ })
13
+ .strict();
14
+ const expectedSchema = z.discriminatedUnion("type", [
15
+ z.object({ type: z.literal("none") }).strict(),
16
+ z.object({ type: z.literal("exact"), text: z.string() }).strict(),
17
+ z.object({ type: z.literal("regex"), pattern: z.string() }).strict(),
18
+ z.object({
19
+ type: z.literal("json_schema"),
20
+ schema: z.record(z.unknown()),
21
+ }).strict(),
22
+ ]);
23
+ const caseSchema = z
24
+ .object({
25
+ case_id: z
26
+ .string()
27
+ .regex(caseIdRegex, "case_id must match ^[a-zA-Z0-9_-]{1,64}$"),
28
+ name: z.string().min(1).max(255),
29
+ prompt: z.string().min(1).max(32000),
30
+ expected: expectedSchema.optional(),
31
+ overrides: defaultsSchema.optional(),
32
+ })
33
+ .strict();
34
+ export const createPromptpackInputSchema = z
35
+ .object({
36
+ workspace_id: z.string().uuid(),
37
+ promptpack_id: z
38
+ .string()
39
+ .regex(promptpackIdRegex, "promptpack_id must match ^[a-zA-Z0-9_-]{1,64}$"),
40
+ version: z
41
+ .string()
42
+ .regex(semverRegex, "version must be semver (e.g. 1.0.0)"),
43
+ name: z.string().min(1).max(255),
44
+ description: z.string().max(2000).optional(),
45
+ tags: z
46
+ .array(z.string().min(1).max(64))
47
+ .max(20)
48
+ .optional(),
49
+ defaults: defaultsSchema.optional(),
50
+ cases: z
51
+ .array(caseSchema)
52
+ .min(1, "At least one case is required")
53
+ .max(50, "Maximum 50 cases per promptpack"),
54
+ })
55
+ .strict();
56
+ export async function createPromptpackHandler(client, input) {
57
+ try {
58
+ const content = {
59
+ promptpack_id: input.promptpack_id,
60
+ version: input.version,
61
+ name: input.name,
62
+ ...(input.description !== undefined && { description: input.description }),
63
+ ...(input.tags !== undefined && { tags: input.tags }),
64
+ ...(input.defaults !== undefined && { defaults: input.defaults }),
65
+ cases: input.cases,
66
+ };
67
+ const pack = await client.createPromptPack(input.workspace_id, {
68
+ promptpack_id: input.promptpack_id,
69
+ version: input.version,
70
+ content,
71
+ });
72
+ return {
73
+ content: [
74
+ {
75
+ type: "text",
76
+ text: [
77
+ `Created promptpack **${pack.promptpack_id}@${pack.version}**`,
78
+ ``,
79
+ `- id: ${pack.id}`,
80
+ `- ${pack.case_count} case(s)`,
81
+ `- published: false (newly created — call the publish endpoint or set published=true in the dashboard to make it usable in pipelines)`,
82
+ `- sha256: ${pack.sha256}`,
83
+ ``,
84
+ `Use it in a pipeline:`,
85
+ ` edgegate_create_pipeline({`,
86
+ ` ...,`,
87
+ ` promptpack_id: "${pack.promptpack_id}",`,
88
+ ` promptpack_version: "${pack.version}",`,
89
+ ` ...`,
90
+ ` })`,
91
+ ].join("\n"),
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ catch (err) {
97
+ if (err instanceof EdgeGateError) {
98
+ if (err.status === 409) {
99
+ return {
100
+ isError: true,
101
+ content: [
102
+ {
103
+ type: "text",
104
+ text: `A pack with id="${input.promptpack_id}" and version="${input.version}" already exists. ` +
105
+ `Packs are immutable — bump the version (e.g. ${bumpPatch(input.version)}) and retry.`,
106
+ },
107
+ ],
108
+ };
109
+ }
110
+ if (err.status === 403) {
111
+ return {
112
+ isError: true,
113
+ content: [
114
+ {
115
+ type: "text",
116
+ text: "You need admin role on this workspace to create promptpacks.",
117
+ },
118
+ ],
119
+ };
120
+ }
121
+ if (err.status === 400 || err.status === 422) {
122
+ // Try to surface the issues array if present in detail
123
+ let issuesText = err.detail;
124
+ try {
125
+ const parsed = JSON.parse(err.detail);
126
+ if (parsed && typeof parsed === "object" && Array.isArray(parsed.issues)) {
127
+ issuesText =
128
+ `Validation failed with ${parsed.issues.length} issue(s):\n` +
129
+ parsed.issues.map((iss) => ` - ${JSON.stringify(iss)}`).join("\n");
130
+ }
131
+ else if (parsed && typeof parsed === "object" && parsed.detail) {
132
+ issuesText = String(parsed.detail);
133
+ }
134
+ }
135
+ catch {
136
+ // detail was plain text — keep as-is
137
+ }
138
+ return {
139
+ isError: true,
140
+ content: [
141
+ {
142
+ type: "text",
143
+ text: `EdgeGate rejected the promptpack (${err.status}):\n\n${issuesText}`,
144
+ },
145
+ ],
146
+ };
147
+ }
148
+ if (err.status === 401) {
149
+ return {
150
+ isError: true,
151
+ content: [
152
+ {
153
+ type: "text",
154
+ text: "EDGEGATE_API_KEY is missing, expired, or revoked. Generate a fresh key at " +
155
+ "https://edgegate.frozo.ai/workspace/<id>/settings#api-keys and retry.",
156
+ },
157
+ ],
158
+ };
159
+ }
160
+ return {
161
+ isError: true,
162
+ content: [
163
+ { type: "text", text: `EdgeGate returned ${err.status}: ${err.detail}` },
164
+ ],
165
+ };
166
+ }
167
+ throw err;
168
+ }
169
+ }
170
+ /** Increment the patch segment of a semver string, e.g. "1.0.0" → "1.0.1". */
171
+ function bumpPatch(version) {
172
+ const parts = version.split(".");
173
+ if (parts.length !== 3)
174
+ return version;
175
+ const patch = parseInt(parts[2], 10);
176
+ return `${parts[0]}.${parts[1]}.${isNaN(patch) ? 1 : patch + 1}`;
177
+ }
178
+ //# sourceMappingURL=create_promptpack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_promptpack.js","sourceRoot":"","sources":["../../src/tools/create_promptpack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateClient } from "../client.js";
3
+ import type { ToolResult } from "./setup_workspace.js";
4
+ export declare const listPromptpacksInputSchema: z.ZodObject<{
5
+ workspace_id: z.ZodString;
6
+ include_unpublished: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ workspace_id: string;
9
+ include_unpublished: boolean;
10
+ }, {
11
+ workspace_id: string;
12
+ include_unpublished?: boolean | undefined;
13
+ }>;
14
+ export type ListPromptpacksInput = z.infer<typeof listPromptpacksInputSchema>;
15
+ export declare function listPromptpacksHandler(client: EdgeGateClient, input: ListPromptpacksInput): Promise<ToolResult>;
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateError } from "../client.js";
3
+ export const listPromptpacksInputSchema = z.object({
4
+ workspace_id: z.string().uuid(),
5
+ include_unpublished: z
6
+ .boolean()
7
+ .optional()
8
+ .default(true)
9
+ .describe("When false, hides packs with published=false (client-side filter). Default: true."),
10
+ });
11
+ export async function listPromptpacksHandler(client, input) {
12
+ try {
13
+ const packs = await client.listPromptPacks(input.workspace_id);
14
+ const filtered = input.include_unpublished
15
+ ? packs
16
+ : packs.filter((p) => p.published);
17
+ if (filtered.length === 0) {
18
+ const suffix = !input.include_unpublished && packs.length > 0
19
+ ? ` (${packs.length} unpublished pack(s) hidden — set include_unpublished=true to see them)`
20
+ : "";
21
+ return {
22
+ content: [
23
+ {
24
+ type: "text",
25
+ text: `No promptpacks yet in this workspace${suffix}.\n\n` +
26
+ `Create one with \`edgegate_create_promptpack\` or upload via the dashboard at ` +
27
+ `https://edgegate.frozo.ai/workspace/${input.workspace_id}/promptpacks.`,
28
+ },
29
+ ],
30
+ };
31
+ }
32
+ const header = `Found ${filtered.length} promptpack(s) in this workspace:\n\n` +
33
+ `| promptpack_id | version | cases | published | created |\n` +
34
+ `|---|---|---|---|---|\n`;
35
+ const rows = filtered
36
+ .map((p) => {
37
+ const date = p.created_at.slice(0, 10);
38
+ const pub = p.published ? "yes" : "no";
39
+ return `| ${p.promptpack_id} | ${p.version} | ${p.case_count} | ${pub} | ${date} |`;
40
+ })
41
+ .join("\n");
42
+ const footer = `\n\nUse the \`promptpack_id\` (string column) in \`edgegate_create_pipeline\`'s ` +
43
+ `\`promptpack_id\` field. The \`version\` defaults to "1.0.0" but can be overridden.`;
44
+ return {
45
+ content: [{ type: "text", text: header + rows + footer }],
46
+ };
47
+ }
48
+ catch (err) {
49
+ if (err instanceof EdgeGateError) {
50
+ return {
51
+ isError: true,
52
+ content: [
53
+ {
54
+ type: "text",
55
+ text: err.status === 401
56
+ ? "EDGEGATE_API_KEY is missing, expired, or revoked. Generate a fresh key at " +
57
+ "https://edgegate.frozo.ai/workspace/<id>/settings#api-keys and retry."
58
+ : `EdgeGate returned ${err.status}: ${err.detail}`,
59
+ },
60
+ ],
61
+ };
62
+ }
63
+ throw err;
64
+ }
65
+ }
66
+ //# sourceMappingURL=list_promptpacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_promptpacks.js","sourceRoot":"","sources":["../../src/tools/list_promptpacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,mBAAmB,EAAE,CAAC;SACnB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,mFAAmF,CAAC;CACjG,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAsB,EACtB,KAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB;YACxC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,yEAAyE;gBAC5F,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,uCAAuC,MAAM,OAAO;4BACpD,gFAAgF;4BAChF,uCAAuC,KAAK,CAAC,YAAY,eAAe;qBAC3E;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GACV,SAAS,QAAQ,CAAC,MAAM,uCAAuC;YAC/D,6DAA6D;YAC7D,yBAAyB,CAAC;QAE5B,MAAM,IAAI,GAAG,QAAQ;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACvC,OAAO,KAAK,CAAC,CAAC,aAAa,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,UAAU,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QACtF,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,MAAM,GACV,kFAAkF;YAClF,qFAAqF,CAAC;QAExF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;SAC1D,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,4EAA4E;gCAC5E,uEAAuE;4BACzE,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"}
package/dist/types.d.ts CHANGED
@@ -143,3 +143,45 @@ export interface RunComparison {
143
143
  diff: RunDiffPayload;
144
144
  created_at: string;
145
145
  }
146
+ export interface PromptPackSummary {
147
+ id: UUID;
148
+ promptpack_id: string;
149
+ version: string;
150
+ sha256: string;
151
+ case_count: number;
152
+ published: boolean;
153
+ created_at: string;
154
+ }
155
+ export interface PromptPackExpected {
156
+ type: "none" | "exact" | "regex" | "json_schema";
157
+ text?: string;
158
+ pattern?: string;
159
+ schema?: Record<string, unknown>;
160
+ }
161
+ export interface PromptPackDefaults {
162
+ max_new_tokens?: number;
163
+ temperature?: number;
164
+ top_p?: number;
165
+ seed?: number;
166
+ }
167
+ export interface PromptPackCase {
168
+ case_id: string;
169
+ name: string;
170
+ prompt: string;
171
+ expected?: PromptPackExpected;
172
+ overrides?: PromptPackDefaults;
173
+ }
174
+ export interface PromptPackContent {
175
+ promptpack_id: string;
176
+ version: string;
177
+ name: string;
178
+ description?: string;
179
+ tags?: string[];
180
+ defaults?: PromptPackDefaults;
181
+ cases: PromptPackCase[];
182
+ }
183
+ export interface PromptPackCreateBody {
184
+ promptpack_id: string;
185
+ version: string;
186
+ content: PromptPackContent;
187
+ }
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.3.0";
2
- export declare const USER_AGENT = "edgegate-mcp/0.3.0";
1
+ export declare const VERSION = "0.4.0";
2
+ export declare const USER_AGENT = "edgegate-mcp/0.4.0";
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
- export const VERSION = "0.3.0";
1
+ export const VERSION = "0.4.0";
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.3.0",
3
+ "version": "0.4.0",
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",
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edgegate",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Edge-AI regression gates from Claude Code — set up CI, run benchmarks, compare runs, export reports, and fetch audit bundles from any prompt.",
5
5
  "author": "Frozo / EdgeGate",
6
6
  "homepage": "https://edgegate.frozo.ai",
@@ -24,6 +24,7 @@
24
24
  "skills/edgegate-audit.md",
25
25
  "skills/edgegate-compare.md",
26
26
  "skills/edgegate-export.md",
27
- "skills/edgegate-import.md"
27
+ "skills/edgegate-import.md",
28
+ "skills/edgegate-promptpacks.md"
28
29
  ]
29
30
  }
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: edgegate-promptpacks
3
+ description: List or create EdgeGate promptpacks. Use when the user says "list my promptpacks", "what packs do I have", "create a promptpack", "make a new pack", "I need a text embedding pack", or any variation on viewing or authoring test-case packs for EdgeGate pipelines.
4
+ ---
5
+
6
+ # /edgegate-promptpacks
7
+
8
+ The user wants to list existing promptpacks in their workspace, or create a new one.
9
+
10
+ ## Triggers
11
+
12
+ Use this skill when the user says any of:
13
+ - "list my promptpacks" / "what packs do I have" / "show my packs"
14
+ - "create a promptpack" / "make a new pack" / "add test cases"
15
+ - "I need a text embedding pack" / "create an LLM completion benchmark"
16
+ - "set up test cases for my image classification model"
17
+
18
+ ## Decision tree
19
+
20
+ 1. **Confirm workspace.** If you don't have a `workspace_id`, call `edgegate_setup_workspace` with no args and ask which workspace to use.
21
+
22
+ 2. **List first if no specific pack mentioned.**
23
+ - Call `edgegate_list_promptpacks({ workspace_id, include_unpublished: true })`
24
+ - Show the user what already exists — they may be able to reuse an existing pack.
25
+
26
+ 3. **If creating:**
27
+ a. Ask the user what kind of model the pack is for if not clear:
28
+ - Text/LLM completion (prompt → generated text)
29
+ - Text embedding (prompt → vector; validation typically `type: "none"`)
30
+ - Image classification (structured output; validate with `json_schema`)
31
+ b. Suggest 3–5 sensible test cases based on use case (Claude can generate them — see templates below).
32
+ c. Confirm `promptpack_id` (slug, no spaces), `version` (start at `1.0.0` unless user says otherwise), and `name`.
33
+ d. Call `edgegate_create_promptpack(...)`.
34
+
35
+ ## Case templates by model type
36
+
37
+ ### Text embedding / similarity
38
+ ```json
39
+ [
40
+ { "case_id": "short-greeting", "name": "Short greeting", "prompt": "hello world", "expected": { "type": "none" } },
41
+ { "case_id": "sentence-pair", "name": "Sentence pair", "prompt": "The quick brown fox jumps.", "expected": { "type": "none" } },
42
+ { "case_id": "long-paragraph", "name": "Long paragraph", "prompt": "Embeddings capture semantic meaning...", "expected": { "type": "none" } }
43
+ ]
44
+ ```
45
+
46
+ ### LLM completion (exact or regex validation)
47
+ ```json
48
+ [
49
+ { "case_id": "capital-france", "name": "Capital of France", "prompt": "What is the capital of France?", "expected": { "type": "exact", "text": "Paris" } },
50
+ { "case_id": "hello-response", "name": "Hello response", "prompt": "Say hello.", "expected": { "type": "regex", "pattern": "(?i)hello" } },
51
+ { "case_id": "add-numbers", "name": "Add two numbers", "prompt": "What is 3 + 4?", "expected": { "type": "exact", "text": "7" } }
52
+ ]
53
+ ```
54
+
55
+ ### Structured / JSON output
56
+ ```json
57
+ [
58
+ {
59
+ "case_id": "classify-cat",
60
+ "name": "Classify cat image description",
61
+ "prompt": "Classify: a furry four-legged animal with whiskers.",
62
+ "expected": {
63
+ "type": "json_schema",
64
+ "schema": { "type": "object", "properties": { "label": { "type": "string" } }, "required": ["label"] }
65
+ }
66
+ }
67
+ ]
68
+ ```
69
+
70
+ ## Versioning rules
71
+
72
+ - Start at `1.0.0` unless the user specifies otherwise.
73
+ - Packs are **immutable** — to update, bump the patch (e.g. `1.0.0` → `1.0.1`) and create a new pack.
74
+ - Only published packs can be referenced in pipelines. Newly created packs are `published: false` — remind the user to publish via the dashboard.
75
+
76
+ ## Failure modes
77
+
78
+ - **409 conflict** — (promptpack_id, version) already exists. Bump the version and retry.
79
+ - **403 forbidden** — user needs admin role on the workspace.
80
+ - **400 / schema error** — surface the `issues` array to the user; common causes are `case_id` with spaces or special characters, `max_new_tokens` > 256, or more than 50 cases.