edgegate-mcp 0.4.1 → 0.8.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.
Files changed (83) hide show
  1. package/README.md +27 -3
  2. package/dist/client.d.ts +43 -1
  3. package/dist/client.js +83 -0
  4. package/dist/client.js.map +1 -1
  5. package/dist/server.js +178 -0
  6. package/dist/server.js.map +1 -1
  7. package/dist/tools/change_member_role.d.ts +18 -0
  8. package/dist/tools/change_member_role.js +61 -0
  9. package/dist/tools/change_member_role.js.map +1 -0
  10. package/dist/tools/check_byo_bucket.d.ts +12 -0
  11. package/dist/tools/check_byo_bucket.js +89 -0
  12. package/dist/tools/check_byo_bucket.js.map +1 -0
  13. package/dist/tools/check_status.d.ts +2 -2
  14. package/dist/tools/compare_runs.d.ts +2 -2
  15. package/dist/tools/connect_huggingface.d.ts +15 -0
  16. package/dist/tools/connect_huggingface.js +83 -0
  17. package/dist/tools/connect_huggingface.js.map +1 -0
  18. package/dist/tools/connect_qaihub.d.ts +15 -0
  19. package/dist/tools/connect_qaihub.js +62 -0
  20. package/dist/tools/connect_qaihub.js.map +1 -0
  21. package/dist/tools/create_api_key.d.ts +18 -0
  22. package/dist/tools/create_api_key.js +73 -0
  23. package/dist/tools/create_api_key.js.map +1 -0
  24. package/dist/tools/create_pipeline.d.ts +34 -4
  25. package/dist/tools/create_pipeline.js +31 -0
  26. package/dist/tools/create_pipeline.js.map +1 -1
  27. package/dist/tools/create_workspace.d.ts +12 -0
  28. package/dist/tools/create_workspace.js +51 -0
  29. package/dist/tools/create_workspace.js.map +1 -0
  30. package/dist/tools/disconnect_byo_bucket.d.ts +12 -0
  31. package/dist/tools/disconnect_byo_bucket.js +90 -0
  32. package/dist/tools/disconnect_byo_bucket.js.map +1 -0
  33. package/dist/tools/disconnect_huggingface.d.ts +12 -0
  34. package/dist/tools/disconnect_huggingface.js +44 -0
  35. package/dist/tools/disconnect_huggingface.js.map +1 -0
  36. package/dist/tools/disconnect_qaihub.d.ts +12 -0
  37. package/dist/tools/disconnect_qaihub.js +42 -0
  38. package/dist/tools/disconnect_qaihub.js.map +1 -0
  39. package/dist/tools/export_run_report.d.ts +2 -2
  40. package/dist/tools/get_audit_report.d.ts +2 -2
  41. package/dist/tools/get_byo_audit.d.ts +27 -0
  42. package/dist/tools/get_byo_audit.js +125 -0
  43. package/dist/tools/get_byo_audit.js.map +1 -0
  44. package/dist/tools/get_huggingface_integration.d.ts +12 -0
  45. package/dist/tools/get_huggingface_integration.js +52 -0
  46. package/dist/tools/get_huggingface_integration.js.map +1 -0
  47. package/dist/tools/get_qaihub_integration.d.ts +12 -0
  48. package/dist/tools/get_qaihub_integration.js +52 -0
  49. package/dist/tools/get_qaihub_integration.js.map +1 -0
  50. package/dist/tools/get_report.d.ts +1 -1
  51. package/dist/tools/invite_member.d.ts +18 -0
  52. package/dist/tools/invite_member.js +85 -0
  53. package/dist/tools/invite_member.js.map +1 -0
  54. package/dist/tools/list_api_keys.d.ts +12 -0
  55. package/dist/tools/list_api_keys.js +51 -0
  56. package/dist/tools/list_api_keys.js.map +1 -0
  57. package/dist/tools/list_members.d.ts +12 -0
  58. package/dist/tools/list_members.js +43 -0
  59. package/dist/tools/list_members.js.map +1 -0
  60. package/dist/tools/register_byo_artifact.d.ts +27 -0
  61. package/dist/tools/register_byo_artifact.js +122 -0
  62. package/dist/tools/register_byo_artifact.js.map +1 -0
  63. package/dist/tools/register_byo_bucket.d.ts +24 -0
  64. package/dist/tools/register_byo_bucket.js +143 -0
  65. package/dist/tools/register_byo_bucket.js.map +1 -0
  66. package/dist/tools/remove_member.d.ts +15 -0
  67. package/dist/tools/remove_member.js +64 -0
  68. package/dist/tools/remove_member.js.map +1 -0
  69. package/dist/tools/revoke_api_key.d.ts +15 -0
  70. package/dist/tools/revoke_api_key.js +49 -0
  71. package/dist/tools/revoke_api_key.js.map +1 -0
  72. package/dist/types.d.ts +169 -0
  73. package/dist/version.d.ts +2 -2
  74. package/dist/version.js +1 -1
  75. package/package.json +1 -1
  76. package/plugin.json +7 -2
  77. package/skills/edgegate-byo-storage.md +148 -0
  78. package/skills/edgegate-connect-huggingface.md +64 -0
  79. package/skills/edgegate-connect-qaihub.md +56 -0
  80. package/skills/edgegate-import.md +2 -2
  81. package/skills/edgegate-init.md +17 -0
  82. package/skills/edgegate-members.md +51 -0
  83. package/skills/edgegate-workspace-setup.md +74 -0
@@ -0,0 +1,89 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateError } from "../client.js";
3
+ export const checkByoBucketInputSchema = z.object({
4
+ workspace_id: z.string().uuid(),
5
+ });
6
+ export async function checkByoBucketHandler(client, input) {
7
+ try {
8
+ const grant = await client.verifyByoGrant(input.workspace_id);
9
+ return renderGrantStatus(grant);
10
+ }
11
+ catch (err) {
12
+ if (err instanceof EdgeGateError) {
13
+ if (err.status === 402) {
14
+ return {
15
+ isError: true,
16
+ content: [
17
+ {
18
+ type: "text",
19
+ text: `BYO storage requires the Enterprise plan. ` +
20
+ `Contact sales: https://edgegate.frozo.ai/enterprise.`,
21
+ },
22
+ ],
23
+ };
24
+ }
25
+ if (err.status === 404) {
26
+ return {
27
+ content: [
28
+ {
29
+ type: "text",
30
+ text: [
31
+ `No BYO storage grant is registered for this workspace.`,
32
+ ``,
33
+ `Register one with \`edgegate_register_byo_bucket\` first. ` +
34
+ `Until then, this workspace uses EdgeGate-managed storage.`,
35
+ ].join("\n"),
36
+ },
37
+ ],
38
+ };
39
+ }
40
+ return {
41
+ isError: true,
42
+ content: [{ type: "text", text: `EdgeGate returned ${err.status}: ${err.detail}` }],
43
+ };
44
+ }
45
+ throw err;
46
+ }
47
+ }
48
+ function renderGrantStatus(grant) {
49
+ const lines = [
50
+ `BYO storage probe result: **${grant.status}**`,
51
+ ``,
52
+ `- bucket: \`${grant.bucket}\` (${grant.region})`,
53
+ `- role: \`${grant.role_arn}\``,
54
+ grant.kms_key_id
55
+ ? `- kms key: \`${grant.kms_key_id}\``
56
+ : `- kms key: (none)`,
57
+ `- last_verified_at: ${grant.last_verified_at ?? "(never)"}`,
58
+ ];
59
+ if (grant.status === "active") {
60
+ lines.push(``);
61
+ lines.push(`Probe passed — AssumeRole + HeadObject succeeded. You can register ` +
62
+ `artifacts with \`edgegate_register_byo_artifact\` and trigger runs as usual.`);
63
+ }
64
+ else if (grant.status === "failed" && grant.last_verify_error) {
65
+ lines.push(``);
66
+ lines.push(`Last error: \`${grant.last_verify_error}\``);
67
+ lines.push(``);
68
+ lines.push(`Common causes:`);
69
+ lines.push(`- **BYO_ASSUME_ROLE_FAILED** — the External ID in your role's trust policy ` +
70
+ `doesn't match. Copy the \`external_id\` from \`edgegate_register_byo_bucket\` ` +
71
+ `or the dashboard into your trust policy's \`sts:ExternalId\` condition.`);
72
+ lines.push(`- **BYO_OBJECT_ACCESS_DENIED** / **BYO_BUCKET_GONE** — the IAM role lacks ` +
73
+ `s3:GetObject/ListBucket on the registered bucket, or the bucket name was ` +
74
+ `mistyped.`);
75
+ lines.push(`- **BYO_KMS_ACCESS_DENIED** — bucket uses SSE-KMS but the role lacks ` +
76
+ `kms:Decrypt on the key.`);
77
+ lines.push(`- **BYO_REGION_MISMATCH** — the bucket isn't in the region you registered.`);
78
+ lines.push(``);
79
+ lines.push(`Fix the IAM/bucket config in your AWS account, then re-run ` +
80
+ `\`edgegate_check_byo_bucket\` to re-probe.`);
81
+ }
82
+ else if (grant.status === "revoked") {
83
+ lines.push(``);
84
+ lines.push(`The grant is revoked — no further reads will be attempted. Register a fresh ` +
85
+ `grant via \`edgegate_register_byo_bucket\` if you want to re-enable BYO storage.`);
86
+ }
87
+ return { content: [{ type: "text", text: lines.join("\n") }] };
88
+ }
89
+ //# sourceMappingURL=check_byo_bucket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check_byo_bucket.js","sourceRoot":"","sources":["../../src/tools/check_byo_bucket.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,11 @@ export declare const checkStatusInputSchema: z.ZodObject<{
5
5
  workspace_id: z.ZodString;
6
6
  run_id: z.ZodString;
7
7
  }, "strip", z.ZodTypeAny, {
8
- workspace_id: string;
9
8
  run_id: string;
10
- }, {
11
9
  workspace_id: string;
10
+ }, {
12
11
  run_id: string;
12
+ workspace_id: string;
13
13
  }>;
14
14
  export type CheckStatusInput = z.infer<typeof checkStatusInputSchema>;
15
15
  export declare function checkStatusHandler(client: EdgeGateClient, input: CheckStatusInput): Promise<ToolResult>;
@@ -23,12 +23,12 @@ export declare const compareRunsInputSchema: z.ZodObject<{
23
23
  run_id: z.ZodString;
24
24
  baseline_run_id: z.ZodOptional<z.ZodString>;
25
25
  }, "strip", z.ZodTypeAny, {
26
- workspace_id: string;
27
26
  run_id: string;
27
+ workspace_id: string;
28
28
  baseline_run_id?: string | undefined;
29
29
  }, {
30
- workspace_id: string;
31
30
  run_id: string;
31
+ workspace_id: string;
32
32
  baseline_run_id?: string | undefined;
33
33
  }>;
34
34
  export type CompareRunsInput = z.infer<typeof compareRunsInputSchema>;
@@ -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 connectHuggingfaceInputSchema: z.ZodObject<{
5
+ workspace_id: z.ZodString;
6
+ token: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ workspace_id: string;
9
+ token: string;
10
+ }, {
11
+ workspace_id: string;
12
+ token: string;
13
+ }>;
14
+ export type ConnectHuggingfaceInput = z.infer<typeof connectHuggingfaceInputSchema>;
15
+ export declare function connectHuggingfaceHandler(client: EdgeGateClient, input: ConnectHuggingfaceInput): Promise<ToolResult>;
@@ -0,0 +1,83 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateError } from "../client.js";
3
+ export const connectHuggingfaceInputSchema = z.object({
4
+ workspace_id: z.string().uuid(),
5
+ token: z
6
+ .string()
7
+ .min(8)
8
+ .describe("Personal HuggingFace access token (starts with hf_). Generate one at " +
9
+ "https://huggingface.co/settings/tokens — Read scope is enough for the " +
10
+ "import flow."),
11
+ });
12
+ export async function connectHuggingfaceHandler(client, input) {
13
+ try {
14
+ const result = await client.connectHuggingFaceIntegration(input.workspace_id, input.token);
15
+ return {
16
+ content: [
17
+ {
18
+ type: "text",
19
+ text: [
20
+ `Connected HuggingFace as **${result.account_name}** (${result.account_type}).`,
21
+ ``,
22
+ `- token: \`****${result.token_last4}\` (encrypted at rest, never echoed)`,
23
+ `- status: ${result.status}`,
24
+ ``,
25
+ `EdgeGate will now use this token for \`edgegate_import_huggingface_model\` calls in this workspace, so private / gated / Qualcomm-org repos work end-to-end.`,
26
+ `Rotate by calling this tool again with a fresh token; remove with \`edgegate_disconnect_huggingface\`.`,
27
+ ].join("\n"),
28
+ },
29
+ ],
30
+ };
31
+ }
32
+ catch (err) {
33
+ if (err instanceof EdgeGateError) {
34
+ if (err.status === 409) {
35
+ // Integration already exists — try rotating instead.
36
+ try {
37
+ const rotated = await client.rotateHuggingFaceIntegration(input.workspace_id, input.token);
38
+ return {
39
+ content: [
40
+ {
41
+ type: "text",
42
+ text: [
43
+ `Replaced existing HuggingFace token for account **${rotated.account_name}**.`,
44
+ ``,
45
+ `- token: \`****${rotated.token_last4}\``,
46
+ `- status: ${rotated.status}`,
47
+ ].join("\n"),
48
+ },
49
+ ],
50
+ };
51
+ }
52
+ catch (rotateErr) {
53
+ if (rotateErr instanceof EdgeGateError) {
54
+ return formatError(rotateErr);
55
+ }
56
+ throw rotateErr;
57
+ }
58
+ }
59
+ return formatError(err);
60
+ }
61
+ throw err;
62
+ }
63
+ }
64
+ function formatError(err) {
65
+ if (err.status === 400) {
66
+ return {
67
+ isError: true,
68
+ content: [
69
+ {
70
+ type: "text",
71
+ text: `HuggingFace rejected the token: ${err.detail}\n\n` +
72
+ `Generate a fresh token at https://huggingface.co/settings/tokens — the ` +
73
+ `default "Read" scope is sufficient.`,
74
+ },
75
+ ],
76
+ };
77
+ }
78
+ return {
79
+ isError: true,
80
+ content: [{ type: "text", text: `EdgeGate returned ${err.status}: ${err.detail}` }],
81
+ };
82
+ }
83
+ //# sourceMappingURL=connect_huggingface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect_huggingface.js","sourceRoot":"","sources":["../../src/tools/connect_huggingface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uEAAuE;QACrE,wEAAwE;QACxE,cAAc,CACjB;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAsB,EACtB,KAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,6BAA6B,CACvD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,KAAK,CACZ,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,8BAA8B,MAAM,CAAC,YAAY,OAAO,MAAM,CAAC,YAAY,IAAI;wBAC/E,EAAE;wBACF,kBAAkB,MAAM,CAAC,WAAW,sCAAsC;wBAC1E,aAAa,MAAM,CAAC,MAAM,EAAE;wBAC5B,EAAE;wBACF,8JAA8J;wBAC9J,wGAAwG;qBACzG,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,qDAAqD;gBACrD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACvD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,KAAK,CACZ,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE;oCACJ,qDAAqD,OAAO,CAAC,YAAY,KAAK;oCAC9E,EAAE;oCACF,kBAAkB,OAAO,CAAC,WAAW,IAAI;oCACzC,aAAa,OAAO,CAAC,MAAM,EAAE;iCAC9B,CAAC,IAAI,CAAC,IAAI,CAAC;6BACb;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAC;oBACnB,IAAI,SAAS,YAAY,aAAa,EAAE,CAAC;wBACvC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;oBACD,MAAM,SAAS,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAkB;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,mCAAmC,GAAG,CAAC,MAAM,MAAM;wBACnD,yEAAyE;wBACzE,qCAAqC;iBACxC;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;KACpF,CAAC;AACJ,CAAC"}
@@ -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 connectQaihubInputSchema: z.ZodObject<{
5
+ workspace_id: z.ZodString;
6
+ token: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ workspace_id: string;
9
+ token: string;
10
+ }, {
11
+ workspace_id: string;
12
+ token: string;
13
+ }>;
14
+ export type ConnectQaihubInput = z.infer<typeof connectQaihubInputSchema>;
15
+ export declare function connectQaihubHandler(client: EdgeGateClient, input: ConnectQaihubInput): Promise<ToolResult>;
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateError } from "../client.js";
3
+ export const connectQaihubInputSchema = z.object({
4
+ workspace_id: z.string().uuid(),
5
+ token: z
6
+ .string()
7
+ .min(8)
8
+ .describe("Qualcomm AI Hub API token. Generate one at " +
9
+ "https://app.aihub.qualcomm.com/account/api-token — it's the same token " +
10
+ "you'd export as QAIHUB_API_TOKEN in a local SDK setup."),
11
+ });
12
+ export async function connectQaihubHandler(client, input) {
13
+ try {
14
+ const result = await client.connectQaihubIntegration(input.workspace_id, input.token);
15
+ return successText(result, "Connected");
16
+ }
17
+ catch (err) {
18
+ if (err instanceof EdgeGateError) {
19
+ if (err.status === 409) {
20
+ // Already exists — rotate transparently. Users don't have to think
21
+ // about "is there already a token here" — the right thing happens
22
+ // on the second call too.
23
+ try {
24
+ const rotated = await client.rotateQaihubIntegration(input.workspace_id, input.token);
25
+ return successText(rotated, "Replaced");
26
+ }
27
+ catch (rotateErr) {
28
+ if (rotateErr instanceof EdgeGateError) {
29
+ return formatError(rotateErr);
30
+ }
31
+ throw rotateErr;
32
+ }
33
+ }
34
+ return formatError(err);
35
+ }
36
+ throw err;
37
+ }
38
+ }
39
+ function successText(result, verb) {
40
+ return {
41
+ content: [
42
+ {
43
+ type: "text",
44
+ text: [
45
+ `${verb} Qualcomm AI Hub integration for this workspace.`,
46
+ ``,
47
+ `- token: \`****${result.token_last4}\` (encrypted at rest, never echoed)`,
48
+ `- status: ${result.status}`,
49
+ ``,
50
+ `EdgeGate runs in this workspace will now use this token to compile + profile models on real Snapdragon devices via Qualcomm AI Hub.`,
51
+ ].join("\n"),
52
+ },
53
+ ],
54
+ };
55
+ }
56
+ function formatError(err) {
57
+ return {
58
+ isError: true,
59
+ content: [{ type: "text", text: `EdgeGate returned ${err.status}: ${err.detail}` }],
60
+ };
61
+ }
62
+ //# sourceMappingURL=connect_qaihub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect_qaihub.js","sourceRoot":"","sources":["../../src/tools/connect_qaihub.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,6CAA6C;QAC3C,yEAAyE;QACzE,wDAAwD,CAC3D;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAsB,EACtB,KAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAClD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,KAAK,CACZ,CAAC;QACF,OAAO,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,mEAAmE;gBACnE,kEAAkE;gBAClE,0BAA0B;gBAC1B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAClD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,KAAK,CACZ,CAAC;oBACF,OAAO,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC1C,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAC;oBACnB,IAAI,SAAS,YAAY,aAAa,EAAE,CAAC;wBACvC,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;oBACD,MAAM,SAAS,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,MAA+C,EAC/C,IAA8B;IAE9B,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACJ,GAAG,IAAI,kDAAkD;oBACzD,EAAE;oBACF,kBAAkB,MAAM,CAAC,WAAW,sCAAsC;oBAC1E,aAAa,MAAM,CAAC,MAAM,EAAE;oBAC5B,EAAE;oBACF,qIAAqI;iBACtI,CAAC,IAAI,CAAC,IAAI,CAAC;aACb;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAkB;IACrC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;KACpF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateClient } from "../client.js";
3
+ import type { ToolResult } from "./setup_workspace.js";
4
+ export declare const createApiKeyInputSchema: z.ZodObject<{
5
+ workspace_id: z.ZodString;
6
+ name: z.ZodString;
7
+ expires_at: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ workspace_id: string;
10
+ name: string;
11
+ expires_at?: string | undefined;
12
+ }, {
13
+ workspace_id: string;
14
+ name: string;
15
+ expires_at?: string | undefined;
16
+ }>;
17
+ export type CreateApiKeyInput = z.infer<typeof createApiKeyInputSchema>;
18
+ export declare function createApiKeyHandler(client: EdgeGateClient, input: CreateApiKeyInput): Promise<ToolResult>;
@@ -0,0 +1,73 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateError } from "../client.js";
3
+ export const createApiKeyInputSchema = z.object({
4
+ workspace_id: z.string().uuid(),
5
+ name: z
6
+ .string()
7
+ .min(1)
8
+ .max(255)
9
+ .describe("Human-readable label for the key, e.g. \"GitHub Actions production\" — " +
10
+ "you'll need this later to identify which key to rotate or revoke."),
11
+ expires_at: z
12
+ .string()
13
+ .datetime()
14
+ .optional()
15
+ .describe("Optional ISO-8601 expiry timestamp. Omit for a non-expiring key " +
16
+ "(you can always revoke it manually)."),
17
+ });
18
+ export async function createApiKeyHandler(client, input) {
19
+ try {
20
+ const key = await client.createApiKey(input.workspace_id, {
21
+ name: input.name,
22
+ expires_at: input.expires_at ?? null,
23
+ });
24
+ // Plaintext is shown ONCE and never again. Flag that explicitly so the
25
+ // user knows to copy it now — and so the LLM client can be careful with
26
+ // how/where it persists this in chat scrollback.
27
+ return {
28
+ content: [
29
+ {
30
+ type: "text",
31
+ text: [
32
+ `Created API key **${key.name}**.`,
33
+ ``,
34
+ `**Copy this plaintext now — it cannot be recovered later:**`,
35
+ ``,
36
+ "```",
37
+ key.plaintext,
38
+ "```",
39
+ ``,
40
+ `Details:`,
41
+ `- key_id: \`${key.id}\``,
42
+ `- prefix...suffix: \`${key.prefix}...${key.suffix}\``,
43
+ `- expires: ${key.expires_at ?? "never"}`,
44
+ ``,
45
+ `Use it as the \`EDGEGATE_API_KEY\` env var for the MCP server, or as the bearer token for direct REST calls. Revoke it any time with \`edgegate_revoke_api_key({ workspace_id, key_id: "${key.id}" })\`.`,
46
+ ].join("\n"),
47
+ },
48
+ ],
49
+ };
50
+ }
51
+ catch (err) {
52
+ if (err instanceof EdgeGateError) {
53
+ if (err.status === 402) {
54
+ return {
55
+ isError: true,
56
+ content: [
57
+ {
58
+ type: "text",
59
+ text: `API key creation requires a Pro tier or above: ${err.detail}\n\n` +
60
+ `Upgrade at https://edgegate.frozo.ai/pricing.`,
61
+ },
62
+ ],
63
+ };
64
+ }
65
+ return {
66
+ isError: true,
67
+ content: [{ type: "text", text: `EdgeGate returned ${err.status}: ${err.detail}` }],
68
+ };
69
+ }
70
+ throw err;
71
+ }
72
+ }
73
+ //# sourceMappingURL=create_api_key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_api_key.js","sourceRoot":"","sources":["../../src/tools/create_api_key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC/B,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,yEAAyE;QACvE,mEAAmE,CACtE;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,kEAAkE;QAChE,sCAAsC,CACzC;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAsB,EACtB,KAAwB;IAExB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE;YACxD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;SACrC,CAAC,CAAC;QAEH,uEAAuE;QACvE,wEAAwE;QACxE,iDAAiD;QACjD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,qBAAqB,GAAG,CAAC,IAAI,KAAK;wBAClC,EAAE;wBACF,6DAA6D;wBAC7D,EAAE;wBACF,KAAK;wBACL,GAAG,CAAC,SAAS;wBACb,KAAK;wBACL,EAAE;wBACF,UAAU;wBACV,eAAe,GAAG,CAAC,EAAE,IAAI;wBACzB,wBAAwB,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI;wBACtD,cAAc,GAAG,CAAC,UAAU,IAAI,OAAO,EAAE;wBACzC,EAAE;wBACF,2LAA2L,GAAG,CAAC,EAAE,SAAS;qBAC3M,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,kDAAkD,GAAG,CAAC,MAAM,MAAM;gCAClE,+CAA+C;yBAClD;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,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"}
@@ -34,14 +34,36 @@ export declare const createPipelineInputSchema: z.ZodObject<{
34
34
  name: z.ZodString;
35
35
  artifact_id: z.ZodString;
36
36
  }, "strip", z.ZodTypeAny, {
37
- name: string;
38
37
  artifact_id: string;
39
- }, {
40
38
  name: string;
39
+ }, {
41
40
  artifact_id: string;
41
+ name: string;
42
42
  }>, "many">>;
43
43
  /** Measurement repeats per cell (1–5). Defaults to API default (3). */
44
44
  repeats: z.ZodOptional<z.ZodNumber>;
45
+ /**
46
+ * Optional. Override AI Hub input shapes per named input.
47
+ *
48
+ * For text models like MiniLM / BERT-family, try:
49
+ * `{ input_ids: { shape: [1, 128], dtype: "int64" }, attention_mask: { shape: [1, 128], dtype: "int64" } }`
50
+ *
51
+ * For image models (e.g. MobileNet) the backend auto-detects static shapes
52
+ * from the ONNX file — omit this field.
53
+ *
54
+ * Omit entirely to let EdgeGate auto-detect from the ONNX file (works for most
55
+ * models including image classification, BERT-family, MiniLM).
56
+ */
57
+ input_specs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
58
+ shape: z.ZodArray<z.ZodNumber, "many">;
59
+ dtype: z.ZodDefault<z.ZodEnum<["float32", "float16", "int64", "int32", "bool"]>>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ shape: number[];
62
+ dtype: "float32" | "float16" | "int64" | "int32" | "bool";
63
+ }, {
64
+ shape: number[];
65
+ dtype?: "float32" | "float16" | "int64" | "int32" | "bool" | undefined;
66
+ }>>>;
45
67
  }, "strip", z.ZodTypeAny, {
46
68
  workspace_id: string;
47
69
  name: string;
@@ -55,10 +77,14 @@ export declare const createPipelineInputSchema: z.ZodObject<{
55
77
  description?: string | undefined;
56
78
  }[];
57
79
  models?: {
58
- name: string;
59
80
  artifact_id: string;
81
+ name: string;
60
82
  }[] | undefined;
61
83
  repeats?: number | undefined;
84
+ input_specs?: Record<string, {
85
+ shape: number[];
86
+ dtype: "float32" | "float16" | "int64" | "int32" | "bool";
87
+ }> | undefined;
62
88
  }, {
63
89
  workspace_id: string;
64
90
  name: string;
@@ -72,10 +98,14 @@ export declare const createPipelineInputSchema: z.ZodObject<{
72
98
  }[];
73
99
  promptpack_version?: string | undefined;
74
100
  models?: {
75
- name: string;
76
101
  artifact_id: string;
102
+ name: string;
77
103
  }[] | undefined;
78
104
  repeats?: number | undefined;
105
+ input_specs?: Record<string, {
106
+ shape: number[];
107
+ dtype?: "float32" | "float16" | "int64" | "int32" | "bool" | undefined;
108
+ }> | undefined;
79
109
  }>;
80
110
  export type CreatePipelineInput = z.infer<typeof createPipelineInputSchema>;
81
111
  export declare function createPipelineHandler(client: EdgeGateClient, input: CreatePipelineInput): Promise<ToolResult>;
@@ -37,6 +37,36 @@ export const createPipelineInputSchema = z.object({
37
37
  .optional(),
38
38
  /** Measurement repeats per cell (1–5). Defaults to API default (3). */
39
39
  repeats: z.number().int().min(1).max(5).optional(),
40
+ /**
41
+ * Optional. Override AI Hub input shapes per named input.
42
+ *
43
+ * For text models like MiniLM / BERT-family, try:
44
+ * `{ input_ids: { shape: [1, 128], dtype: "int64" }, attention_mask: { shape: [1, 128], dtype: "int64" } }`
45
+ *
46
+ * For image models (e.g. MobileNet) the backend auto-detects static shapes
47
+ * from the ONNX file — omit this field.
48
+ *
49
+ * Omit entirely to let EdgeGate auto-detect from the ONNX file (works for most
50
+ * models including image classification, BERT-family, MiniLM).
51
+ */
52
+ input_specs: z
53
+ .record(z.string(), z.object({
54
+ shape: z
55
+ .array(z.number().int().positive())
56
+ .min(1)
57
+ .max(8)
58
+ .describe("Tensor shape (1–8 positive integers)"),
59
+ dtype: z
60
+ .enum(["float32", "float16", "int64", "int32", "bool"])
61
+ .default("float32")
62
+ .describe("Element dtype"),
63
+ }))
64
+ .optional()
65
+ .describe("Optional. Override AI Hub input shapes per named input. " +
66
+ 'For text models like MiniLM, try `{input_ids: {shape: [1, 128], dtype: "int64"}, ' +
67
+ 'attention_mask: {shape: [1, 128], dtype: "int64"}}`. ' +
68
+ "Omit to let EdgeGate auto-detect from the ONNX file (works for most models " +
69
+ "including image classification, BERT-family, MiniLM)."),
40
70
  });
41
71
  export async function createPipelineHandler(client, input) {
42
72
  // Guard: cell count limit applies when model_matrix is provided
@@ -77,6 +107,7 @@ export async function createPipelineHandler(client, input) {
77
107
  gates,
78
108
  ...(model_matrix !== undefined ? { model_matrix } : {}),
79
109
  ...(run_policy !== undefined ? { run_policy } : {}),
110
+ ...(input.input_specs !== undefined ? { input_specs: input.input_specs } : {}),
80
111
  });
81
112
  return {
82
113
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"create_pipeline.js","sourceRoot":"","sources":["../../src/tools/create_pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create_pipeline.js","sourceRoot":"","sources":["../../src/tools/create_pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateClient } from "../client.js";
3
+ import type { ToolResult } from "./setup_workspace.js";
4
+ export declare const createWorkspaceInputSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ name: string;
8
+ }, {
9
+ name: string;
10
+ }>;
11
+ export type CreateWorkspaceInput = z.infer<typeof createWorkspaceInputSchema>;
12
+ export declare function createWorkspaceHandler(client: EdgeGateClient, input: CreateWorkspaceInput): Promise<ToolResult>;
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateError } from "../client.js";
3
+ export const createWorkspaceInputSchema = z.object({
4
+ name: z
5
+ .string()
6
+ .min(1)
7
+ .max(255)
8
+ .describe("Display name for the new workspace, e.g. \"MobileNet Production\"."),
9
+ });
10
+ export async function createWorkspaceHandler(client, input) {
11
+ try {
12
+ const ws = await client.createWorkspace(input.name);
13
+ return {
14
+ content: [
15
+ {
16
+ type: "text",
17
+ text: [
18
+ `Created workspace **${ws.name}** — you are the owner.`,
19
+ ``,
20
+ `- workspace_id: \`${ws.id}\``,
21
+ `- plan: ${ws.plan ?? "(unknown)"}`,
22
+ ``,
23
+ `Next: connect Qualcomm AI Hub via \`edgegate_connect_qaihub\`, then start defining pipelines with \`edgegate_create_pipeline\`. Pass \`workspace_id\` to every subsequent tool call so they operate on this workspace.`,
24
+ ].join("\n"),
25
+ },
26
+ ],
27
+ };
28
+ }
29
+ catch (err) {
30
+ if (err instanceof EdgeGateError) {
31
+ if (err.status === 403) {
32
+ return {
33
+ isError: true,
34
+ content: [
35
+ {
36
+ type: "text",
37
+ text: `Workspace creation blocked: ${err.detail}\n\n` +
38
+ `If you've hit your plan's workspace limit, upgrade at https://edgegate.frozo.ai/pricing.`,
39
+ },
40
+ ],
41
+ };
42
+ }
43
+ return {
44
+ isError: true,
45
+ content: [{ type: "text", text: `EdgeGate returned ${err.status}: ${err.detail}` }],
46
+ };
47
+ }
48
+ throw err;
49
+ }
50
+ }
51
+ //# sourceMappingURL=create_workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_workspace.js","sourceRoot":"","sources":["../../src/tools/create_workspace.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,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,oEAAoE,CAAC;CAClF,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAsB,EACtB,KAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;wBACJ,uBAAuB,EAAE,CAAC,IAAI,yBAAyB;wBACvD,EAAE;wBACF,qBAAqB,EAAE,CAAC,EAAE,IAAI;wBAC9B,WAAW,EAAE,CAAC,IAAI,IAAI,WAAW,EAAE;wBACnC,EAAE;wBACF,wNAAwN;qBACzN,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,+BAA+B,GAAG,CAAC,MAAM,MAAM;gCAC/C,0FAA0F;yBAC7F;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,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"}
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ import { EdgeGateClient } from "../client.js";
3
+ import type { ToolResult } from "./setup_workspace.js";
4
+ export declare const disconnectByoBucketInputSchema: z.ZodObject<{
5
+ workspace_id: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ workspace_id: string;
8
+ }, {
9
+ workspace_id: string;
10
+ }>;
11
+ export type DisconnectByoBucketInput = z.infer<typeof disconnectByoBucketInputSchema>;
12
+ export declare function disconnectByoBucketHandler(client: EdgeGateClient, input: DisconnectByoBucketInput): Promise<ToolResult>;