@clipform/mcp-server 1.8.1 → 1.9.1

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 (118) hide show
  1. package/dist/auth-context.js +9 -0
  2. package/dist/auth-context.js.map +1 -0
  3. package/dist/chunk-ESDD3WVD.js +24686 -0
  4. package/dist/chunk-ESDD3WVD.js.map +1 -0
  5. package/dist/chunk-YEDU3G7I.js +48 -0
  6. package/dist/chunk-YEDU3G7I.js.map +1 -0
  7. package/dist/index.js +108 -11
  8. package/dist/index.js.map +1 -1
  9. package/dist/server.js +7 -74
  10. package/dist/server.js.map +1 -1
  11. package/package.json +7 -8
  12. package/dist/__tests__/api-parity.test.d.ts +0 -1
  13. package/dist/__tests__/api-parity.test.js +0 -157
  14. package/dist/__tests__/api-parity.test.js.map +0 -1
  15. package/dist/__tests__/config-sync.test.d.ts +0 -1
  16. package/dist/__tests__/config-sync.test.js +0 -16
  17. package/dist/__tests__/config-sync.test.js.map +0 -1
  18. package/dist/index.d.ts +0 -2
  19. package/dist/lib/api-client.d.ts +0 -35
  20. package/dist/lib/api-client.js +0 -126
  21. package/dist/lib/api-client.js.map +0 -1
  22. package/dist/lib/auth-context.d.ts +0 -17
  23. package/dist/lib/auth-context.js +0 -9
  24. package/dist/lib/auth-context.js.map +0 -1
  25. package/dist/lib/config.d.ts +0 -23
  26. package/dist/lib/config.js +0 -6
  27. package/dist/lib/config.js.map +0 -1
  28. package/dist/lib/format-form.d.ts +0 -2
  29. package/dist/lib/format-form.js +0 -32
  30. package/dist/lib/format-form.js.map +0 -1
  31. package/dist/lib/render-jobs.d.ts +0 -17
  32. package/dist/lib/render-jobs.js +0 -44
  33. package/dist/lib/render-jobs.js.map +0 -1
  34. package/dist/lib/schemas.d.ts +0 -64
  35. package/dist/lib/schemas.js +0 -140
  36. package/dist/lib/schemas.js.map +0 -1
  37. package/dist/lib/session-context.d.ts +0 -1
  38. package/dist/lib/session-context.js +0 -38
  39. package/dist/lib/session-context.js.map +0 -1
  40. package/dist/prompts.d.ts +0 -2
  41. package/dist/prompts.js +0 -272
  42. package/dist/prompts.js.map +0 -1
  43. package/dist/resources.d.ts +0 -2
  44. package/dist/resources.js +0 -336
  45. package/dist/resources.js.map +0 -1
  46. package/dist/server.d.ts +0 -2
  47. package/dist/tools/add-node.d.ts +0 -2
  48. package/dist/tools/add-node.js +0 -48
  49. package/dist/tools/add-node.js.map +0 -1
  50. package/dist/tools/attach-node-audio.d.ts +0 -2
  51. package/dist/tools/attach-node-audio.js +0 -35
  52. package/dist/tools/attach-node-audio.js.map +0 -1
  53. package/dist/tools/check-render.d.ts +0 -2
  54. package/dist/tools/check-render.js +0 -47
  55. package/dist/tools/check-render.js.map +0 -1
  56. package/dist/tools/create-form.d.ts +0 -2
  57. package/dist/tools/create-form.js +0 -199
  58. package/dist/tools/create-form.js.map +0 -1
  59. package/dist/tools/delete-form.d.ts +0 -2
  60. package/dist/tools/delete-form.js +0 -26
  61. package/dist/tools/delete-form.js.map +0 -1
  62. package/dist/tools/delete-node-media.d.ts +0 -2
  63. package/dist/tools/delete-node-media.js +0 -25
  64. package/dist/tools/delete-node-media.js.map +0 -1
  65. package/dist/tools/delete-node.d.ts +0 -2
  66. package/dist/tools/delete-node.js +0 -28
  67. package/dist/tools/delete-node.js.map +0 -1
  68. package/dist/tools/generate-slideshow.d.ts +0 -2
  69. package/dist/tools/generate-slideshow.js +0 -155
  70. package/dist/tools/generate-slideshow.js.map +0 -1
  71. package/dist/tools/generate-tts.d.ts +0 -2
  72. package/dist/tools/generate-tts.js +0 -73
  73. package/dist/tools/generate-tts.js.map +0 -1
  74. package/dist/tools/generate-video.d.ts +0 -2
  75. package/dist/tools/generate-video.js +0 -119
  76. package/dist/tools/generate-video.js.map +0 -1
  77. package/dist/tools/get-form.d.ts +0 -2
  78. package/dist/tools/get-form.js +0 -25
  79. package/dist/tools/get-form.js.map +0 -1
  80. package/dist/tools/get-node-media.d.ts +0 -2
  81. package/dist/tools/get-node-media.js +0 -35
  82. package/dist/tools/get-node-media.js.map +0 -1
  83. package/dist/tools/list-assets.d.ts +0 -2
  84. package/dist/tools/list-assets.js +0 -45
  85. package/dist/tools/list-assets.js.map +0 -1
  86. package/dist/tools/list-compositions.d.ts +0 -2
  87. package/dist/tools/list-compositions.js +0 -34
  88. package/dist/tools/list-compositions.js.map +0 -1
  89. package/dist/tools/list-forms.d.ts +0 -2
  90. package/dist/tools/list-forms.js +0 -86
  91. package/dist/tools/list-forms.js.map +0 -1
  92. package/dist/tools/log-generation.d.ts +0 -2
  93. package/dist/tools/log-generation.js +0 -33
  94. package/dist/tools/log-generation.js.map +0 -1
  95. package/dist/tools/render-composition.d.ts +0 -2
  96. package/dist/tools/render-composition.js +0 -50
  97. package/dist/tools/render-composition.js.map +0 -1
  98. package/dist/tools/search-media.d.ts +0 -2
  99. package/dist/tools/search-media.js +0 -40
  100. package/dist/tools/search-media.js.map +0 -1
  101. package/dist/tools/search-music.d.ts +0 -2
  102. package/dist/tools/search-music.js +0 -40
  103. package/dist/tools/search-music.js.map +0 -1
  104. package/dist/tools/search-news.d.ts +0 -2
  105. package/dist/tools/search-news.js +0 -47
  106. package/dist/tools/search-news.js.map +0 -1
  107. package/dist/tools/set-node-logic.d.ts +0 -2
  108. package/dist/tools/set-node-logic.js +0 -54
  109. package/dist/tools/set-node-logic.js.map +0 -1
  110. package/dist/tools/update-form.d.ts +0 -2
  111. package/dist/tools/update-form.js +0 -155
  112. package/dist/tools/update-form.js.map +0 -1
  113. package/dist/tools/update-node.d.ts +0 -2
  114. package/dist/tools/update-node.js +0 -70
  115. package/dist/tools/update-node.js.map +0 -1
  116. package/dist/tools/upload-node-media.d.ts +0 -2
  117. package/dist/tools/upload-node-media.js +0 -105
  118. package/dist/tools/upload-node-media.js.map +0 -1
@@ -1,126 +0,0 @@
1
- import { getMcpAuth } from "./auth-context.js";
2
- const DASHBOARD_URL = process.env.SERVER_URL || process.env.DASHBOARD_URL || "https://api.clipform.io";
3
- const API_VERSION = "v1";
4
- const INTERNAL_API_URL = process.env.INTERNAL_API_URL || DASHBOARD_URL;
5
- const INTERNAL_SECRET = process.env.INTERNAL_SERVICE_SECRET || "";
6
- let _apiKey;
7
- export function setApiKey(key) {
8
- _apiKey = key;
9
- }
10
- export function getApiKey() {
11
- return _apiKey;
12
- }
13
- export async function callApi(path, options = {}) {
14
- const { method = "GET", body, params } = options;
15
- let url = `${DASHBOARD_URL}/${API_VERSION}${path}`;
16
- if (params) {
17
- const searchParams = new URLSearchParams(params);
18
- url += `?${searchParams.toString()}`;
19
- }
20
- const headers = {
21
- "Content-Type": "application/json",
22
- };
23
- // If the MCP server is running in-process inside the API host AND the
24
- // request has been OAuth-authenticated, forward the end-user identity
25
- // via internal headers instead of propagating the caller's Bearer.
26
- //
27
- // Token passthrough is forbidden by the MCP Authorization spec: the
28
- // token that claude.ai presented was issued for audience `${api}/mcp`
29
- // and must not be replayed against downstream routes like /v1/forms/*.
30
- // Those routes instead trust the INTERNAL_SECRET + X-Mcp-User /
31
- // X-Mcp-Workspace headers set below.
32
- const mcpAuth = getMcpAuth();
33
- if (mcpAuth && INTERNAL_SECRET) {
34
- headers["Authorization"] = `Bearer ${INTERNAL_SECRET}`;
35
- headers["X-Mcp-User"] = mcpAuth.user_id;
36
- headers["X-Mcp-Workspace"] = mcpAuth.workspace_id;
37
- }
38
- else if (_apiKey) {
39
- headers["Authorization"] = `Bearer ${_apiKey}`;
40
- }
41
- const fetchOptions = { method, headers };
42
- if (body && method !== "GET") {
43
- fetchOptions.body = JSON.stringify(body);
44
- }
45
- let response;
46
- try {
47
- response = await fetch(url, fetchOptions);
48
- }
49
- catch (err) {
50
- return {
51
- ok: false,
52
- status: 0,
53
- error: `Failed to connect to dashboard API at ${url}. Make sure the dashboard is running.\n\nError: ${err instanceof Error ? err.message : String(err)}`,
54
- };
55
- }
56
- // 204 No Content — successful delete with no body
57
- if (response.status === 204) {
58
- return { ok: true, data: {} };
59
- }
60
- const data = (await response.json());
61
- if (!response.ok) {
62
- return {
63
- ok: false,
64
- status: response.status,
65
- error: data.error || `API error (${response.status})`,
66
- };
67
- }
68
- return { ok: true, data };
69
- }
70
- /**
71
- * Call an internal API endpoint (formgen, media, etc.)
72
- * Uses INTERNAL_SECRET for auth and INTERNAL_API_URL as base.
73
- */
74
- export async function callInternalApi(path, options = {}) {
75
- const { method = "POST", body, params } = options;
76
- let url = `${INTERNAL_API_URL}${path}`;
77
- if (params) {
78
- const searchParams = new URLSearchParams(params);
79
- url += `?${searchParams.toString()}`;
80
- }
81
- const headers = {
82
- "Content-Type": "application/json",
83
- };
84
- if (INTERNAL_SECRET) {
85
- headers["Authorization"] = `Bearer ${INTERNAL_SECRET}`;
86
- }
87
- const fetchOptions = { method, headers };
88
- if (body && method !== "GET") {
89
- fetchOptions.body = JSON.stringify(body);
90
- }
91
- let response;
92
- try {
93
- response = await fetch(url, fetchOptions);
94
- }
95
- catch (err) {
96
- return {
97
- ok: false,
98
- status: 0,
99
- error: `Failed to connect to internal API at ${url}.\n\nError: ${err instanceof Error ? err.message : String(err)}`,
100
- };
101
- }
102
- if (response.status === 204) {
103
- return { ok: true, data: {} };
104
- }
105
- const data = (await response.json());
106
- if (!response.ok) {
107
- return {
108
- ok: false,
109
- status: response.status,
110
- error: data.error || `Internal API error (${response.status})`,
111
- };
112
- }
113
- return { ok: true, data };
114
- }
115
- export function errorResult(message) {
116
- return {
117
- content: [{ type: "text", text: message }],
118
- isError: true,
119
- };
120
- }
121
- export function textResult(text) {
122
- return {
123
- content: [{ type: "text", text }],
124
- };
125
- }
126
- //# sourceMappingURL=api-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Identity of the end-user a given MCP request is acting on behalf of.
3
- *
4
- * Populated by the in-process host (apps/api) after validating an OAuth
5
- * Bearer on /mcp. The MCP tool layer reads it to decide which workspace
6
- * forms should land in and which plan tier gates apply.
7
- *
8
- * NOT populated when the server runs as a local stdio process (npx) - in
9
- * that mode tools fall back to edit-token based auth.
10
- */
11
- export interface McpAuthContext {
12
- user_id: string;
13
- workspace_id: string;
14
- scopes: string[];
15
- }
16
- export declare function runWithMcpAuth<T>(ctx: McpAuthContext, fn: () => Promise<T> | T): Promise<T> | T;
17
- export declare function getMcpAuth(): McpAuthContext | undefined;
@@ -1,9 +0,0 @@
1
- import { AsyncLocalStorage } from "node:async_hooks";
2
- const storage = new AsyncLocalStorage();
3
- export function runWithMcpAuth(ctx, fn) {
4
- return storage.run(ctx, fn);
5
- }
6
- export function getMcpAuth() {
7
- return storage.getStore();
8
- }
9
- //# sourceMappingURL=auth-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-context.js","sourceRoot":"","sources":["../../src/lib/auth-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAkBrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAExD,MAAM,UAAU,cAAc,CAAI,GAAmB,EAAE,EAAwB;IAC7E,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Re-export from @vid-master/config — single source of truth.
3
- * The MCP server uses NODE_TYPES and CONTACT_FIELDS directly.
4
- */
5
- export { NODE_TYPES, CONTACT_FIELDS } from "@vid-master/config";
6
- export type NodeTypeDefinition = {
7
- label: string;
8
- description: string;
9
- is_active: boolean;
10
- is_system: boolean;
11
- has_options: boolean;
12
- min_options?: number;
13
- max_options?: number;
14
- max_option_length?: number;
15
- config_schema: Record<string, unknown> | null;
16
- };
17
- export type ContactFieldDefinition = {
18
- id: string;
19
- label: string;
20
- type: string;
21
- placeholder: string;
22
- order: number;
23
- };
@@ -1,6 +0,0 @@
1
- /**
2
- * Re-export from @vid-master/config — single source of truth.
3
- * The MCP server uses NODE_TYPES and CONTACT_FIELDS directly.
4
- */
5
- export { NODE_TYPES, CONTACT_FIELDS } from "@vid-master/config";
6
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function formatFormState(data: Record<string, unknown>): string;
2
- export declare function fetchAndFormatFormState(formId: string): Promise<string | null>;
@@ -1,32 +0,0 @@
1
- import { callApi } from "./api-client.js";
2
- export function formatFormState(data) {
3
- const questions = data.questions;
4
- const lines = [
5
- `Form: ${data.title}`,
6
- `Form ID: ${data.form_id}`,
7
- `Published: ${data.is_published}`,
8
- ``,
9
- `Nodes (in order):`,
10
- ];
11
- for (let i = 0; i < questions.length; i++) {
12
- const q = questions[i];
13
- lines.push(` ${i + 1}. [${q.type}] ${q.prompt || "(no prompt)"}`);
14
- lines.push(` Node ID: ${q.id}`);
15
- if (q.required)
16
- lines.push(` Required: yes`);
17
- if (q.config && Object.keys(q.config).length > 0) {
18
- lines.push(` Config: ${JSON.stringify(q.config)}`);
19
- }
20
- if (q.options && q.options.length > 0) {
21
- lines.push(` Options: ${q.options.map((o) => o.content).join(", ")}`);
22
- }
23
- }
24
- return lines.join("\n");
25
- }
26
- export async function fetchAndFormatFormState(formId) {
27
- const result = await callApi(`/forms/${formId}`);
28
- if (!result.ok)
29
- return null;
30
- return formatFormState(result.data);
31
- }
32
- //# sourceMappingURL=format-form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format-form.js","sourceRoot":"","sources":["../../src/lib/format-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,UAAU,eAAe,CAAC,IAA6B;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAQrB,CAAC;IAEH,MAAM,KAAK,GAAa;QACtB,SAAS,IAAI,CAAC,KAAK,EAAE;QACrB,YAAY,IAAI,CAAC,OAAO,EAAE;QAC1B,cAAc,IAAI,CAAC,YAAY,EAAE;QACjC,EAAE;QACF,mBAAmB;KACpB,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CACR,iBAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
@@ -1,17 +0,0 @@
1
- export interface RenderJob {
2
- id: string;
3
- status: "rendering" | "complete" | "failed";
4
- tool: string;
5
- createdAt: number;
6
- result?: Record<string, unknown>;
7
- error?: string;
8
- }
9
- export declare const RENDER_TIMING: {
10
- readonly expectedRange: "15-45 seconds";
11
- readonly pollDelay: "~10 seconds";
12
- };
13
- export declare function createJob(tool: string): RenderJob;
14
- export declare function completeJob(id: string, result: Record<string, unknown>): void;
15
- export declare function failJob(id: string, error: string): void;
16
- export declare function getJob(id: string): RenderJob | undefined;
17
- export declare function pruneJobs(): void;
@@ -1,44 +0,0 @@
1
- import { v4 as uuidv4 } from "uuid";
2
- const jobs = new Map();
3
- const MAX_AGE_MS = 30 * 60 * 1000; // 30 minutes
4
- // Keep in sync with apps/api/src/lib/remotion/render-lambda.ts (framesPerLambda).
5
- // With framesPerLambda=20 and 1000 concurrent Lambdas, renders finish in ~15-45s.
6
- export const RENDER_TIMING = {
7
- expectedRange: "15-45 seconds",
8
- pollDelay: "~10 seconds",
9
- };
10
- export function createJob(tool) {
11
- const job = {
12
- id: uuidv4(),
13
- status: "rendering",
14
- tool,
15
- createdAt: Date.now(),
16
- };
17
- jobs.set(job.id, job);
18
- return job;
19
- }
20
- export function completeJob(id, result) {
21
- const job = jobs.get(id);
22
- if (job) {
23
- job.status = "complete";
24
- job.result = result;
25
- }
26
- }
27
- export function failJob(id, error) {
28
- const job = jobs.get(id);
29
- if (job) {
30
- job.status = "failed";
31
- job.error = error;
32
- }
33
- }
34
- export function getJob(id) {
35
- return jobs.get(id);
36
- }
37
- export function pruneJobs() {
38
- const cutoff = Date.now() - MAX_AGE_MS;
39
- for (const [id, job] of jobs) {
40
- if (job.createdAt < cutoff)
41
- jobs.delete(id);
42
- }
43
- }
44
- //# sourceMappingURL=render-jobs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-jobs.js","sourceRoot":"","sources":["../../src/lib/render-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAWpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE1C,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEhD,kFAAkF;AAClF,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,aAAa;CAChB,CAAC;AAEX,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,GAAG,GAAc;QACrB,EAAE,EAAE,MAAM,EAAE;QACZ,MAAM,EAAE,WAAW;QACnB,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAU,EAAE,MAA+B;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC;QACxB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,KAAa;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;QACtB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAU;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;IACvC,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,SAAS,GAAG,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
@@ -1,64 +0,0 @@
1
- import { z } from "zod";
2
- /** Active, non-system node types — the only types the MCP server exposes */
3
- export declare const ACTIVE_NODE_TYPES: [string, ...string[]];
4
- /** Contact field IDs derived from the config package */
5
- export declare const CONTACT_FIELD_IDS: string[];
6
- /** Per-type description including config hints, auto-generated from NODE_TYPES */
7
- export declare const NODE_TYPES_DESCRIPTION: string;
8
- /** Aggregate config description for Zod .describe() on the config field */
9
- export declare const CONFIG_DESCRIPTION: string;
10
- export declare const OptionSchema: z.ZodObject<{
11
- content: z.ZodString;
12
- score: z.ZodOptional<z.ZodNumber>;
13
- scores: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
14
- }, "strip", z.ZodTypeAny, {
15
- content: string;
16
- score?: number | undefined;
17
- scores?: Record<string, number> | undefined;
18
- }, {
19
- content: string;
20
- score?: number | undefined;
21
- scores?: Record<string, number> | undefined;
22
- }>;
23
- export declare const NodeSchema: z.ZodObject<{
24
- type: z.ZodEnum<[string, ...string[]]>;
25
- prompt: z.ZodString;
26
- label: z.ZodOptional<z.ZodString>;
27
- required: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
28
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
29
- options: z.ZodOptional<z.ZodArray<z.ZodObject<{
30
- content: z.ZodString;
31
- score: z.ZodOptional<z.ZodNumber>;
32
- scores: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
33
- }, "strip", z.ZodTypeAny, {
34
- content: string;
35
- score?: number | undefined;
36
- scores?: Record<string, number> | undefined;
37
- }, {
38
- content: string;
39
- score?: number | undefined;
40
- scores?: Record<string, number> | undefined;
41
- }>, "many">>;
42
- }, "strip", z.ZodTypeAny, {
43
- type: string;
44
- prompt: string;
45
- required: boolean;
46
- options?: {
47
- content: string;
48
- score?: number | undefined;
49
- scores?: Record<string, number> | undefined;
50
- }[] | undefined;
51
- label?: string | undefined;
52
- config?: Record<string, unknown> | undefined;
53
- }, {
54
- type: string;
55
- prompt: string;
56
- options?: {
57
- content: string;
58
- score?: number | undefined;
59
- scores?: Record<string, number> | undefined;
60
- }[] | undefined;
61
- label?: string | undefined;
62
- required?: boolean | undefined;
63
- config?: Record<string, unknown> | undefined;
64
- }>;
@@ -1,140 +0,0 @@
1
- import { z } from "zod";
2
- import { NODE_TYPES, CONTACT_FIELDS } from "./config.js";
3
- // --- Derived constants (zero hardcoded type lists) ---
4
- /** Active, non-system node types — the only types the MCP server exposes */
5
- export const ACTIVE_NODE_TYPES = Object.entries(NODE_TYPES)
6
- .filter(([, def]) => def.is_active && !def.is_system)
7
- .map(([type]) => type); // tuple for z.enum
8
- /** Contact field IDs derived from the config package */
9
- export const CONTACT_FIELD_IDS = CONTACT_FIELDS.map((f) => f.id);
10
- // --- Auto-generated config descriptions ---
11
- /**
12
- * Walk a JSON-Schema-style config_schema and produce a concise one-line summary.
13
- * Handles primitives, enums, nested objects (1 level), and arrays with item shapes.
14
- */
15
- function generateConfigSummary(configSchema, typeKey) {
16
- if (!configSchema?.properties)
17
- return "";
18
- const parts = [];
19
- for (const [key, prop] of Object.entries(configSchema.properties)) {
20
- // Skip internal-only fields the LLM shouldn't set
21
- if (key === "content_media_type")
22
- continue;
23
- if (prop.enum) {
24
- const vals = prop.enum.map((v) => `"${v}"`).join("|");
25
- let s = `${key} (${vals}`;
26
- if (prop.default !== undefined)
27
- s += `, default: "${prop.default}"`;
28
- s += ")";
29
- parts.push(s);
30
- }
31
- else if (prop.type === "boolean") {
32
- let s = `${key} (boolean`;
33
- if (prop.default !== undefined)
34
- s += `, default: ${prop.default}`;
35
- s += ")";
36
- parts.push(s);
37
- }
38
- else if (prop.type === "number") {
39
- let s = `${key} (number`;
40
- if (prop.default !== undefined)
41
- s += `, default: ${prop.default}`;
42
- s += ")";
43
- parts.push(s);
44
- }
45
- else if (prop.type === "string") {
46
- let s = `${key} (string`;
47
- if (prop.default !== undefined)
48
- s += `, default: "${prop.default}"`;
49
- s += ")";
50
- parts.push(s);
51
- }
52
- else if (prop.type === "array" && prop.items?.properties) {
53
- // Array of objects — show item shape
54
- const itemKeys = Object.keys(prop.items.properties).join(", ");
55
- parts.push(`${key} (array of {${itemKeys}})`);
56
- }
57
- else if (prop.type === "array" && prop.items?.enum) {
58
- const vals = prop.items.enum.map((v) => `"${v}"`).join("|");
59
- parts.push(`${key} (array of ${vals})`);
60
- }
61
- else if (prop.type === "object" && prop.properties) {
62
- // Nested object — summarize child keys
63
- const childKeys = Object.keys(prop.properties).join(", ");
64
- parts.push(`${key} ({${childKeys}})`);
65
- }
66
- }
67
- // Special case: for contact type, append available field IDs
68
- if (typeKey === "contact") {
69
- parts.push(`Available field IDs: ${CONTACT_FIELD_IDS.join(", ")}`);
70
- }
71
- return parts.length > 0 ? `Config: ${parts.join(", ")}` : "";
72
- }
73
- /** Per-type description including config hints, auto-generated from NODE_TYPES */
74
- export const NODE_TYPES_DESCRIPTION = (() => {
75
- const lines = ["Node types:"];
76
- for (const type of ACTIVE_NODE_TYPES) {
77
- const def = NODE_TYPES[type];
78
- let line = `- ${type}: ${def.description || def.label}`;
79
- if (def.has_options) {
80
- line += " (supports options array)";
81
- }
82
- const configHint = generateConfigSummary(def.config_schema, type);
83
- if (configHint) {
84
- line += `. ${configHint}`;
85
- }
86
- lines.push(line);
87
- }
88
- return lines.join("\n");
89
- })();
90
- /** Aggregate config description for Zod .describe() on the config field */
91
- export const CONFIG_DESCRIPTION = (() => {
92
- const lines = ["Type-specific configuration. Per-type keys:"];
93
- for (const type of ACTIVE_NODE_TYPES) {
94
- const def = NODE_TYPES[type];
95
- const summary = generateConfigSummary(def.config_schema, type);
96
- if (summary) {
97
- lines.push(` ${type}: ${summary}`);
98
- }
99
- }
100
- return lines.join("\n");
101
- })();
102
- // --- Zod schemas ---
103
- export const OptionSchema = z.object({
104
- content: z.string().describe("Option text"),
105
- score: z.number().optional().describe("Score value for this option (for scored quizzes)"),
106
- scores: z.record(z.number()).optional().describe("Category-based scores keyed by category name (for personality/category quizzes)"),
107
- });
108
- /** Build options description from config - which types need options, min counts, max lengths */
109
- const OPTIONS_DESCRIPTION = (() => {
110
- const hints = ["Answer options."];
111
- for (const type of ACTIVE_NODE_TYPES) {
112
- const def = NODE_TYPES[type];
113
- if (!def.has_options)
114
- continue;
115
- const parts = [`${type}: required`];
116
- if (def.min_options !== undefined)
117
- parts.push(`min ${def.min_options}`);
118
- if (def.max_options !== undefined)
119
- parts.push(`max ${def.max_options}`);
120
- if (def.max_option_length !== undefined)
121
- parts.push(`content max ${def.max_option_length} chars`);
122
- hints.push(parts.join(", "));
123
- }
124
- return hints.join(" ");
125
- })();
126
- export const NodeSchema = z.object({
127
- type: z.enum(ACTIVE_NODE_TYPES),
128
- prompt: z.string().describe("The text shown to the respondent"),
129
- label: z.string().optional().describe("Short label for the node (used in logic builder). Defaults to the prompt text."),
130
- required: z.boolean().optional().default(true),
131
- config: z
132
- .record(z.unknown())
133
- .optional()
134
- .describe(CONFIG_DESCRIPTION),
135
- options: z
136
- .array(OptionSchema)
137
- .optional()
138
- .describe(OPTIONS_DESCRIPTION),
139
- });
140
- //# sourceMappingURL=schemas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/lib/schemas.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function getSessionContext(): Promise<string>;
@@ -1,38 +0,0 @@
1
- import { BUSINESS } from "@vid-master/config";
2
- import { callApi } from "./api-client.js";
3
- export async function getSessionContext() {
4
- const result = await callApi("/me", { method: "GET" });
5
- if (!result.ok)
6
- return "";
7
- const me = result.data;
8
- const plan = me.plan;
9
- const lines = [];
10
- lines.push("## Your Session");
11
- if (me.auth_mode === "oauth") {
12
- lines.push(`Auth: OAuth (connected)`);
13
- lines.push(`Workspace: ${me.workspace?.name ?? "Unknown"} (${me.workspace?.id ?? "?"})`);
14
- lines.push(`User: ${me.user_id ?? "?"}`);
15
- lines.push(`Company: ${me.company_id ?? "none"}`);
16
- }
17
- else {
18
- lines.push("Auth: anonymous (not connected to a Clipform account)");
19
- if (me.workspace) {
20
- lines.push(`Workspace: ${me.workspace.name} (${me.workspace.id})`);
21
- }
22
- }
23
- lines.push(`Plan: ${plan.name} (tier ${plan.tier})`);
24
- if (plan.node_limit !== null) {
25
- lines.push(`Question limit: ${plan.node_limit} per form`);
26
- }
27
- else {
28
- lines.push("Questions: unlimited");
29
- }
30
- if (plan.custom_theme === false) {
31
- lines.push("Custom themes: not available on this plan");
32
- }
33
- if (me.auth_mode !== "oauth") {
34
- lines.push(`\nTo unlock your full plan: connect your Clipform account in Settings > Connectors > ${BUSINESS.urls.mcp}`);
35
- }
36
- return lines.join("\n");
37
- }
38
- //# sourceMappingURL=session-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/lib/session-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAW,CAAC;IAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IACrB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,IAAI,IAAI,SAAS,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACpE,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,UAAU,WAAW,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,EAAE,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,wFAAwF,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1H,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
package/dist/prompts.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function registerPrompts(server: McpServer): void;