unframer 4.0.5 → 4.1.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 (217) hide show
  1. package/dist/cli-readonly-server-api.test.d.ts +2 -0
  2. package/dist/cli-readonly-server-api.test.d.ts.map +1 -0
  3. package/dist/cli-readonly-server-api.test.js +96 -0
  4. package/dist/cli-readonly-server-api.test.js.map +1 -0
  5. package/dist/cli.d.ts +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +240 -86
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config.d.ts +18 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/{lib/config.js → config.js} +1 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/example-code.test.js +53 -53
  14. package/dist/example-code.test.js.map +1 -1
  15. package/dist/framer-client.server.d.ts +4 -0
  16. package/dist/framer-client.server.d.ts.map +1 -0
  17. package/dist/framer-client.server.js +45 -0
  18. package/dist/framer-client.server.js.map +1 -0
  19. package/dist/framer.js +2014 -581
  20. package/dist/plugin-mcp-dist/lib/client-websocket.d.ts +5 -0
  21. package/dist/plugin-mcp-dist/lib/client-websocket.d.ts.map +1 -0
  22. package/dist/plugin-mcp-dist/lib/client-websocket.js +103 -0
  23. package/dist/plugin-mcp-dist/lib/client-websocket.js.map +1 -0
  24. package/dist/plugin-mcp-dist/lib/cms.d.ts +10 -0
  25. package/dist/plugin-mcp-dist/lib/cms.d.ts.map +1 -0
  26. package/dist/plugin-mcp-dist/lib/cms.js +58 -0
  27. package/dist/plugin-mcp-dist/lib/cms.js.map +1 -0
  28. package/dist/plugin-mcp-dist/lib/errors.d.ts +5 -0
  29. package/dist/plugin-mcp-dist/lib/errors.d.ts.map +1 -0
  30. package/dist/plugin-mcp-dist/lib/errors.js +48 -0
  31. package/dist/plugin-mcp-dist/lib/errors.js.map +1 -0
  32. package/dist/plugin-mcp-dist/lib/framer-client.d.ts +2 -0
  33. package/dist/plugin-mcp-dist/lib/framer-client.d.ts.map +1 -0
  34. package/dist/plugin-mcp-dist/lib/framer-client.js +4 -0
  35. package/dist/plugin-mcp-dist/lib/framer-client.js.map +1 -0
  36. package/dist/plugin-mcp-dist/lib/framer-client.server.d.ts +2 -0
  37. package/dist/plugin-mcp-dist/lib/framer-client.server.d.ts.map +1 -0
  38. package/dist/plugin-mcp-dist/lib/framer-client.server.js +4 -0
  39. package/dist/plugin-mcp-dist/lib/framer-client.server.js.map +1 -0
  40. package/dist/plugin-mcp-dist/lib/framer.d.ts +36 -0
  41. package/dist/plugin-mcp-dist/lib/framer.d.ts.map +1 -0
  42. package/dist/plugin-mcp-dist/lib/framer.js +1000 -0
  43. package/dist/plugin-mcp-dist/lib/framer.js.map +1 -0
  44. package/dist/plugin-mcp-dist/lib/hooks.d.ts +6 -0
  45. package/dist/plugin-mcp-dist/lib/hooks.d.ts.map +1 -0
  46. package/dist/plugin-mcp-dist/lib/hooks.js +46 -0
  47. package/dist/plugin-mcp-dist/lib/hooks.js.map +1 -0
  48. package/dist/plugin-mcp-dist/lib/mcp-client.d.ts +141 -0
  49. package/dist/plugin-mcp-dist/lib/mcp-client.d.ts.map +1 -0
  50. package/dist/plugin-mcp-dist/lib/mcp-client.js +40 -0
  51. package/dist/plugin-mcp-dist/lib/mcp-client.js.map +1 -0
  52. package/dist/plugin-mcp-dist/lib/mcp-handlers.d.ts +378 -0
  53. package/dist/plugin-mcp-dist/lib/mcp-handlers.d.ts.map +1 -0
  54. package/dist/plugin-mcp-dist/lib/mcp-handlers.js +1807 -0
  55. package/dist/plugin-mcp-dist/lib/mcp-handlers.js.map +1 -0
  56. package/dist/plugin-mcp-dist/lib/mcp-tools.d.ts +5 -0
  57. package/dist/plugin-mcp-dist/lib/mcp-tools.d.ts.map +1 -0
  58. package/dist/plugin-mcp-dist/lib/mcp-tools.js +5 -0
  59. package/dist/plugin-mcp-dist/lib/mcp-tools.js.map +1 -0
  60. package/dist/plugin-mcp-dist/lib/mcp-websocket.d.ts +10 -0
  61. package/dist/plugin-mcp-dist/lib/mcp-websocket.d.ts.map +1 -0
  62. package/dist/plugin-mcp-dist/lib/mcp-websocket.js +88 -0
  63. package/dist/plugin-mcp-dist/lib/mcp-websocket.js.map +1 -0
  64. package/dist/plugin-mcp-dist/lib/mcp.test.d.ts +2 -0
  65. package/dist/plugin-mcp-dist/lib/mcp.test.d.ts.map +1 -0
  66. package/dist/plugin-mcp-dist/lib/mcp.test.js +1315 -0
  67. package/dist/plugin-mcp-dist/lib/mcp.test.js.map +1 -0
  68. package/dist/plugin-mcp-dist/lib/plugin-websocket.d.ts +5 -0
  69. package/dist/plugin-mcp-dist/lib/plugin-websocket.d.ts.map +1 -0
  70. package/dist/plugin-mcp-dist/lib/plugin-websocket.js +168 -0
  71. package/dist/plugin-mcp-dist/lib/plugin-websocket.js.map +1 -0
  72. package/dist/plugin-mcp-dist/lib/react-export.d.ts +51 -0
  73. package/dist/plugin-mcp-dist/lib/react-export.d.ts.map +1 -0
  74. package/dist/plugin-mcp-dist/lib/react-export.js +340 -0
  75. package/dist/plugin-mcp-dist/lib/react-export.js.map +1 -0
  76. package/dist/plugin-mcp-dist/lib/schema.d.ts +261 -0
  77. package/dist/plugin-mcp-dist/lib/schema.d.ts.map +1 -0
  78. package/dist/plugin-mcp-dist/lib/schema.js +871 -0
  79. package/dist/plugin-mcp-dist/lib/schema.js.map +1 -0
  80. package/dist/plugin-mcp-dist/lib/store.d.ts +2 -0
  81. package/dist/plugin-mcp-dist/lib/store.d.ts.map +1 -0
  82. package/dist/plugin-mcp-dist/lib/store.js +8 -0
  83. package/dist/plugin-mcp-dist/lib/store.js.map +1 -0
  84. package/dist/plugin-mcp-dist/lib/tree-utils.d.ts +6 -0
  85. package/dist/plugin-mcp-dist/lib/tree-utils.d.ts.map +1 -0
  86. package/dist/plugin-mcp-dist/lib/tree-utils.js +141 -0
  87. package/dist/plugin-mcp-dist/lib/tree-utils.js.map +1 -0
  88. package/dist/plugin-mcp-dist/lib/types.d.ts +110 -0
  89. package/dist/plugin-mcp-dist/lib/types.d.ts.map +1 -0
  90. package/dist/plugin-mcp-dist/lib/types.js +188 -0
  91. package/dist/plugin-mcp-dist/lib/types.js.map +1 -0
  92. package/dist/plugin-mcp-dist/lib/utils.d.ts +21 -0
  93. package/dist/plugin-mcp-dist/lib/utils.d.ts.map +1 -0
  94. package/dist/plugin-mcp-dist/lib/utils.js +53 -0
  95. package/dist/plugin-mcp-dist/lib/utils.js.map +1 -0
  96. package/dist/plugin-mcp-dist/lib/websocket-server.d.ts +10 -0
  97. package/dist/plugin-mcp-dist/lib/websocket-server.d.ts.map +1 -0
  98. package/dist/plugin-mcp-dist/lib/websocket-server.js +88 -0
  99. package/dist/plugin-mcp-dist/lib/websocket-server.js.map +1 -0
  100. package/dist/plugin-mcp-dist/lib/xml.d.ts +10 -0
  101. package/dist/plugin-mcp-dist/lib/xml.d.ts.map +1 -0
  102. package/dist/plugin-mcp-dist/lib/xml.js +395 -0
  103. package/dist/plugin-mcp-dist/lib/xml.js.map +1 -0
  104. package/dist/plugin-mcp-dist/lib/xml.test.d.ts +2 -0
  105. package/dist/plugin-mcp-dist/lib/xml.test.d.ts.map +1 -0
  106. package/dist/plugin-mcp-dist/lib/xml.test.js +1030 -0
  107. package/dist/plugin-mcp-dist/lib/xml.test.js.map +1 -0
  108. package/dist/version.d.ts +1 -1
  109. package/dist/version.js +1 -1
  110. package/package.json +12 -4
  111. package/src/cli-readonly-server-api.test.ts +152 -0
  112. package/src/cli.ts +309 -94
  113. package/src/{lib/config.ts → config.ts} +11 -9
  114. package/src/example-code.test.ts +53 -53
  115. package/src/framer-client.server.ts +97 -0
  116. package/src/framer.js +2014 -581
  117. package/src/plugin-mcp-dist/lib/client-websocket.d.ts +6 -0
  118. package/src/plugin-mcp-dist/lib/client-websocket.d.ts.map +1 -0
  119. package/src/plugin-mcp-dist/lib/client-websocket.js +102 -0
  120. package/src/plugin-mcp-dist/lib/client-websocket.js.map +1 -0
  121. package/src/plugin-mcp-dist/lib/cms.d.ts +7 -0
  122. package/src/plugin-mcp-dist/lib/cms.d.ts.map +1 -0
  123. package/src/plugin-mcp-dist/lib/cms.js +57 -0
  124. package/src/plugin-mcp-dist/lib/cms.js.map +1 -0
  125. package/src/plugin-mcp-dist/lib/errors.d.ts +5 -0
  126. package/src/plugin-mcp-dist/lib/errors.d.ts.map +1 -0
  127. package/src/plugin-mcp-dist/lib/errors.js +47 -0
  128. package/src/plugin-mcp-dist/lib/errors.js.map +1 -0
  129. package/src/plugin-mcp-dist/lib/framer-client.d.ts +2 -0
  130. package/src/plugin-mcp-dist/lib/framer-client.d.ts.map +1 -0
  131. package/src/plugin-mcp-dist/lib/framer-client.js +3 -0
  132. package/src/plugin-mcp-dist/lib/framer-client.js.map +1 -0
  133. package/src/plugin-mcp-dist/lib/framer-client.server.d.ts +2 -0
  134. package/src/plugin-mcp-dist/lib/framer-client.server.d.ts.map +1 -0
  135. package/src/plugin-mcp-dist/lib/framer-client.server.js +3 -0
  136. package/src/plugin-mcp-dist/lib/framer-client.server.js.map +1 -0
  137. package/src/plugin-mcp-dist/lib/framer.d.ts +69 -0
  138. package/src/plugin-mcp-dist/lib/framer.d.ts.map +1 -0
  139. package/src/plugin-mcp-dist/lib/framer.js +999 -0
  140. package/src/plugin-mcp-dist/lib/framer.js.map +1 -0
  141. package/src/plugin-mcp-dist/lib/hooks.d.ts +6 -0
  142. package/src/plugin-mcp-dist/lib/hooks.d.ts.map +1 -0
  143. package/src/plugin-mcp-dist/lib/hooks.js +45 -0
  144. package/src/plugin-mcp-dist/lib/hooks.js.map +1 -0
  145. package/src/plugin-mcp-dist/lib/mcp-client.d.ts +50 -0
  146. package/src/plugin-mcp-dist/lib/mcp-client.d.ts.map +1 -0
  147. package/src/plugin-mcp-dist/lib/mcp-client.js +39 -0
  148. package/src/plugin-mcp-dist/lib/mcp-client.js.map +1 -0
  149. package/src/plugin-mcp-dist/lib/mcp-handlers.d.ts +375 -0
  150. package/src/plugin-mcp-dist/lib/mcp-handlers.d.ts.map +1 -0
  151. package/src/plugin-mcp-dist/lib/mcp-handlers.js +1806 -0
  152. package/src/plugin-mcp-dist/lib/mcp-handlers.js.map +1 -0
  153. package/src/plugin-mcp-dist/lib/mcp-tools.d.ts.map +1 -0
  154. package/src/plugin-mcp-dist/lib/mcp-tools.js +4 -0
  155. package/src/plugin-mcp-dist/lib/mcp-tools.js.map +1 -0
  156. package/src/plugin-mcp-dist/lib/mcp-websocket.d.ts +21 -0
  157. package/src/plugin-mcp-dist/lib/mcp-websocket.d.ts.map +1 -0
  158. package/src/plugin-mcp-dist/lib/mcp-websocket.js +87 -0
  159. package/src/plugin-mcp-dist/lib/mcp-websocket.js.map +1 -0
  160. package/src/plugin-mcp-dist/lib/mcp.test.d.ts +2 -0
  161. package/src/plugin-mcp-dist/lib/mcp.test.d.ts.map +1 -0
  162. package/src/plugin-mcp-dist/lib/mcp.test.js +1314 -0
  163. package/src/plugin-mcp-dist/lib/mcp.test.js.map +1 -0
  164. package/src/plugin-mcp-dist/lib/plugin-websocket.d.ts +6 -0
  165. package/src/plugin-mcp-dist/lib/plugin-websocket.d.ts.map +1 -0
  166. package/src/plugin-mcp-dist/lib/plugin-websocket.js +167 -0
  167. package/src/plugin-mcp-dist/lib/plugin-websocket.js.map +1 -0
  168. package/src/plugin-mcp-dist/lib/react-export.d.ts +101 -0
  169. package/src/plugin-mcp-dist/lib/react-export.d.ts.map +1 -0
  170. package/src/plugin-mcp-dist/lib/react-export.js +339 -0
  171. package/src/plugin-mcp-dist/lib/react-export.js.map +1 -0
  172. package/src/plugin-mcp-dist/lib/schema.d.ts +358 -0
  173. package/src/plugin-mcp-dist/lib/schema.d.ts.map +1 -0
  174. package/src/plugin-mcp-dist/lib/schema.js +870 -0
  175. package/src/plugin-mcp-dist/lib/schema.js.map +1 -0
  176. package/src/plugin-mcp-dist/lib/snapshots/add-frame-to-section.patch +1 -0
  177. package/src/plugin-mcp-dist/lib/snapshots/code-file-insert-info.md +1 -0
  178. package/src/plugin-mcp-dist/lib/snapshots/component-insert-info.md +1 -0
  179. package/src/plugin-mcp-dist/lib/snapshots/component.html +1 -0
  180. package/src/plugin-mcp-dist/lib/snapshots/create-nodes-with-layout.patch +1 -0
  181. package/src/plugin-mcp-dist/lib/snapshots/page.html +1 -0
  182. package/src/plugin-mcp-dist/lib/snapshots/project.html +1 -0
  183. package/src/plugin-mcp-dist/lib/snapshots/tools-schema.yaml +908 -0
  184. package/src/plugin-mcp-dist/lib/snapshots/tools.jsonc +906 -0
  185. package/src/plugin-mcp-dist/lib/store.d.ts +8 -0
  186. package/src/plugin-mcp-dist/lib/store.d.ts.map +1 -0
  187. package/src/plugin-mcp-dist/lib/store.js +7 -0
  188. package/src/plugin-mcp-dist/lib/store.js.map +1 -0
  189. package/src/plugin-mcp-dist/lib/tree-utils.d.ts +18 -0
  190. package/src/plugin-mcp-dist/lib/tree-utils.d.ts.map +1 -0
  191. package/src/plugin-mcp-dist/lib/tree-utils.js +140 -0
  192. package/src/plugin-mcp-dist/lib/tree-utils.js.map +1 -0
  193. package/src/plugin-mcp-dist/lib/types.d.ts +139 -0
  194. package/src/plugin-mcp-dist/lib/types.d.ts.map +1 -0
  195. package/src/plugin-mcp-dist/lib/types.js +187 -0
  196. package/src/plugin-mcp-dist/lib/types.js.map +1 -0
  197. package/src/plugin-mcp-dist/lib/utils.d.ts +23 -0
  198. package/src/plugin-mcp-dist/lib/utils.d.ts.map +1 -0
  199. package/src/plugin-mcp-dist/lib/utils.js +52 -0
  200. package/src/plugin-mcp-dist/lib/utils.js.map +1 -0
  201. package/src/plugin-mcp-dist/lib/websocket-server.d.ts +21 -0
  202. package/src/plugin-mcp-dist/lib/websocket-server.d.ts.map +1 -0
  203. package/src/plugin-mcp-dist/lib/websocket-server.js +87 -0
  204. package/src/plugin-mcp-dist/lib/websocket-server.js.map +1 -0
  205. package/src/plugin-mcp-dist/lib/xml.d.ts +33 -0
  206. package/src/plugin-mcp-dist/lib/xml.d.ts.map +1 -0
  207. package/src/plugin-mcp-dist/lib/xml.js +394 -0
  208. package/src/plugin-mcp-dist/lib/xml.js.map +1 -0
  209. package/src/plugin-mcp-dist/lib/xml.test.d.ts +2 -0
  210. package/src/plugin-mcp-dist/lib/xml.test.d.ts.map +1 -0
  211. package/src/plugin-mcp-dist/lib/xml.test.js +1029 -0
  212. package/src/plugin-mcp-dist/lib/xml.test.js.map +1 -0
  213. package/src/styles/framer.css +7 -7
  214. package/src/version.ts +1 -1
  215. package/dist/lib/config.d.ts +0 -17
  216. package/dist/lib/config.d.ts.map +0 -1
  217. package/dist/lib/config.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli-readonly-server-api.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-readonly-server-api.test.d.ts","sourceRoot":"","sources":["../src/cli-readonly-server-api.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ // Read-only integration checks for server-api CLI commands and reconnect latency.
2
+ import childProcess from 'node:child_process';
3
+ import process from 'node:process';
4
+ import util from 'node:util';
5
+ import { expect, test } from 'vitest';
6
+ const execFile = util.promisify(childProcess.execFile);
7
+ const defaultProjectUrl = 'https://framer.com/projects/Framer-MCP-project-Designor-Framer-Template-copy--lfAw10qcrLpLLEznmZmo-irrP1?node=CpFAHygNJ';
8
+ const hasApiKey = Boolean(process.env.FRAMER_API_KEY);
9
+ function sleep({ ms }) {
10
+ return new Promise((resolve) => {
11
+ setTimeout(() => {
12
+ resolve();
13
+ }, ms);
14
+ });
15
+ }
16
+ async function runServerApiCliReadOnly({ args, timeoutMs = 180_000, }) {
17
+ const projectUrl = process.env.FRAMER_PROJECT_URL || defaultProjectUrl;
18
+ const startMs = performance.now();
19
+ const { stdout, stderr } = await execFile('pnpm', ['tsx', 'src/bin.ts', ...args, '--project', projectUrl], {
20
+ cwd: process.cwd(),
21
+ env: process.env,
22
+ timeout: timeoutMs,
23
+ maxBuffer: 8 * 1024 * 1024,
24
+ });
25
+ return {
26
+ stdout,
27
+ stderr,
28
+ durationMs: performance.now() - startMs,
29
+ };
30
+ }
31
+ async function runServerApiCliReadOnlyWithRetry({ args, timeoutMs = 180_000, attempt = 1, maxAttempts = 3, }) {
32
+ try {
33
+ return await runServerApiCliReadOnly({ args, timeoutMs });
34
+ }
35
+ catch (error) {
36
+ if (attempt >= maxAttempts) {
37
+ throw error;
38
+ }
39
+ await sleep({ ms: 1_000 * attempt });
40
+ return runServerApiCliReadOnlyWithRetry({
41
+ args,
42
+ timeoutMs,
43
+ attempt: attempt + 1,
44
+ maxAttempts,
45
+ });
46
+ }
47
+ }
48
+ function extractJsonFromCliOutput({ output }) {
49
+ const jsonStart = output.indexOf('{');
50
+ if (jsonStart < 0) {
51
+ throw new Error(`Could not find JSON in CLI output:\n${output}`);
52
+ }
53
+ return JSON.parse(output.slice(jsonStart));
54
+ }
55
+ test.skipIf(!hasApiKey)('server-api read-only cli commands return expected output', async () => {
56
+ const websiteRun = await runServerApiCliReadOnly({
57
+ args: ['mcp', 'getProjectWebsiteUrl'],
58
+ });
59
+ const website = extractJsonFromCliOutput({ output: websiteRun.stdout });
60
+ expect(Object.keys(website).length).toBeGreaterThan(0);
61
+ const websiteJson = JSON.stringify(website);
62
+ expect(websiteJson.includes('https://')).toBe(true);
63
+ expect(websiteRun.stderr.includes('Running getProjectWebsiteUrl')).toBe(true);
64
+ const xmlRun = await runServerApiCliReadOnly({
65
+ args: ['mcp', 'getProjectXml'],
66
+ });
67
+ expect(xmlRun.stdout.includes('# Project structure:')).toBe(true);
68
+ expect(xmlRun.stdout.includes('<Project>')).toBe(true);
69
+ expect(xmlRun.stderr.includes('Running getProjectXml')).toBe(true);
70
+ const selectedNodesRun = await runServerApiCliReadOnly({
71
+ args: ['mcp', 'getSelectedNodesXml'],
72
+ });
73
+ expect(selectedNodesRun.stdout.includes('No nodes are currently selected.')).toBe(true);
74
+ const focusedNodeMatch = xmlRun.stdout.match(/currently focused [^`]* ID is: `([^`]+)`/);
75
+ const focusedNodeId = focusedNodeMatch?.[1];
76
+ expect(Boolean(focusedNodeId)).toBe(true);
77
+ const zoomRun = await runServerApiCliReadOnly({
78
+ args: ['mcp', 'zoomIntoView', '--nodeId', focusedNodeId || ''],
79
+ });
80
+ expect(zoomRun.stdout.includes('Zoomed into view for node')).toBe(true);
81
+ }, 180_000);
82
+ test.skipIf(!hasApiKey)('server-api reconnects cleanly for repeated read-only calls', async () => {
83
+ const firstRun = await runServerApiCliReadOnly({
84
+ args: ['mcp', 'getProjectWebsiteUrl'],
85
+ });
86
+ const secondRun = await runServerApiCliReadOnlyWithRetry({
87
+ args: ['mcp', 'getProjectWebsiteUrl'],
88
+ });
89
+ expect(firstRun.durationMs).toBeGreaterThan(0);
90
+ expect(secondRun.durationMs).toBeGreaterThan(0);
91
+ expect(firstRun.durationMs).toBeLessThan(120_000);
92
+ expect(secondRun.durationMs).toBeLessThan(120_000);
93
+ const reconnectDeltaMs = secondRun.durationMs - firstRun.durationMs;
94
+ console.info(`getProjectWebsiteUrl latency ms: first=${firstRun.durationMs.toFixed(0)}, second=${secondRun.durationMs.toFixed(0)}, delta=${reconnectDeltaMs.toFixed(0)}`);
95
+ }, 240_000);
96
+ //# sourceMappingURL=cli-readonly-server-api.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-readonly-server-api.test.js","sourceRoot":"","sources":["../src/cli-readonly-server-api.test.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import './sentry.js';
2
2
  import { StyleToken } from './exporter.js';
3
3
  import { BreakpointSizes } from './css.js';
4
- export declare const cli: import("@xmorse/cac").CAC;
4
+ export declare const cli: import("goke").Goke;
5
5
  export type Config = {
6
6
  jsx?: boolean;
7
7
  components: {
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAKA,OAAO,aAAa,CAAA;AAGpB,OAAO,EAAU,UAAU,EAA8B,MAAM,eAAe,CAAA;AAU9E,OAAO,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAA;AAmBlE,eAAO,MAAM,GAAG,2BAAkB,CAAA;AA+WlC,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,UAAU,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;IACD,oBAAoB,CAAC,EAAE;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,CAAA;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IAEH,OAAO,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B,EAAE,uBAAuB,EAAE,CAAA;IACxD,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAE/B,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IAEjB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,eAAe,CAAC,EAClC,SAAS,EACT,gBAAiC,EACjC,WAAmB,EACnB,KAAU,EACV,MAAwC,EAC3C;;;;;;CAAA;;;;GAyHA"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,OAAO,aAAa,CAAA;AAGpB,OAAO,EAAU,UAAU,EAA8B,MAAM,eAAe,CAAA;AAU9E,OAAO,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAA;AAsBlE,eAAO,MAAM,GAAG,qBAAmB,CAAA;AAkkBnC,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,UAAU,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;IACD,oBAAoB,CAAC,EAAE;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,CAAA;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IAEH,OAAO,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B,EAAE,uBAAuB,EAAE,CAAA;IACxD,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAE/B,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IAEjB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,eAAe,CAAC,EAClC,SAAS,EACT,gBAAiC,EACjC,WAAmB,EACnB,KAAU,EACV,MAAwC,EAC3C;;;;;;CAAA;;;;GAyHA"}
package/dist/cli.js CHANGED
@@ -1,14 +1,15 @@
1
+ import { z } from 'zod';
1
2
  import { setMaxListeners } from 'events';
2
3
  import pkg from '../package.json' with { type: 'json' };
3
4
  import pico from 'picocolors';
4
5
  const { blue, bgBlue, green } = pico;
5
6
  import { fetch } from 'undici';
6
7
  import './sentry.js';
7
- import { input } from '@inquirer/prompts';
8
+ import { input, select, password } from '@inquirer/prompts';
8
9
  import { bundle, createExampleComponentCode } from './exporter.js';
9
10
  import { createClient } from './generated/api-client.js';
10
11
  import { generateStackblitzFiles } from './stackblitz.js';
11
- import { cac } from '@xmorse/cac';
12
+ import { goke, wrapJsonSchema } from 'goke';
12
13
  import { exec } from 'child_process';
13
14
  import { promisify } from 'util';
14
15
  import fs from 'fs';
@@ -18,27 +19,22 @@ import { componentNameToPath, dedent, isTruthy, logger, sleep, spinner, } from '
18
19
  import { getPackageManager } from './package-manager.js';
19
20
  import { notifyError } from './sentry.js';
20
21
  import { dispatcher } from './undici-dispatcher.js';
21
- import { loadConfig, saveConfig, getConfigPath } from './lib/config.js';
22
- import { addMcpCommands } from 'mcpcac';
23
- import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
22
+ import { loadConfig, saveConfig, getConfigPath, } from './config.js';
23
+ import { addMcpCommands } from '@goke/mcp';
24
24
  const configNames = ['unframer.config.json', 'unframer.json'];
25
- export const cli = cac('unframer');
25
+ export const cli = goke('unframer');
26
26
  let defaultOutDir = 'framer';
27
27
  cli.command('[projectId]', 'Run unframer with optional project ID')
28
- .option('--outDir <dir>', 'Output directory', { default: defaultOutDir })
29
- .option('--external [package]', 'Make some package external, do not pass a package name to make all packages external', {
30
- default: true,
31
- })
32
- .option('--watch', 'Watch for changes and rebuild', { default: false })
33
- .option('--jsx', 'Output jsx code instead of minified .js code', {
34
- default: true,
35
- })
36
- .option('--debug', 'Enable debug logging', { default: false })
37
- .option('--metafile', 'Generate meta.json file with build metadata', {
38
- default: false,
39
- })
28
+ .option('--outDir <dir>', 'Output directory')
29
+ .option('--external [package]', 'Make some package external, do not pass a package name to make all packages external')
30
+ .option('--watch', 'Watch for changes and rebuild')
31
+ .option('--jsx', 'Output jsx code instead of minified .js code')
32
+ .option('--debug', 'Enable debug logging')
33
+ .option('--metafile', 'Generate meta.json file with build metadata')
40
34
  .action(async function main(projectId, options) {
41
- const external_ = options.external;
35
+ const outDir = options.outDir || defaultOutDir;
36
+ const jsx = options.jsx ?? true;
37
+ const external_ = options.external ?? true;
42
38
  const allExternal = external_ === true;
43
39
  const externalPackages = Array.isArray(external_)
44
40
  ? external_.filter((x) => x.trim())
@@ -49,7 +45,6 @@ cli.command('[projectId]', 'Run unframer with optional project ID')
49
45
  if (options.debug) {
50
46
  logger.debug = true;
51
47
  }
52
- const outDir = options.outDir;
53
48
  const controller = new AbortController();
54
49
  const signal = controller.signal;
55
50
  const watch = options.watch;
@@ -60,7 +55,6 @@ cli.command('[projectId]', 'Run unframer with optional project ID')
60
55
  outDir,
61
56
  projectId,
62
57
  });
63
- let jsx = options.jsx;
64
58
  const { rebuild, buildContext } = await bundle({
65
59
  config: {
66
60
  jsx,
@@ -149,16 +143,14 @@ function fixOldUnframerPath() {
149
143
  const version = pkg.version;
150
144
  cli.version(version).help();
151
145
  cli.command('example-app <projectId>', 'Create an example app with Framer components')
152
- .option('--outDir <dir>', 'Output directory', {
153
- default: 'example-unframer-app',
154
- })
146
+ .option('--outDir <dir>', 'Output directory')
155
147
  .action(async (projectId, options) => {
156
148
  if (!projectId?.trim()) {
157
149
  console.log(`unframer example-app requires a project id positional param`);
158
150
  process.exit(1);
159
151
  }
160
152
  try {
161
- const outDir = options.outDir;
153
+ const outDir = options.outDir || 'example-unframer-app';
162
154
  console.log(`Creating example app in ${outDir}`);
163
155
  // Create the output directory
164
156
  const absoluteOutDir = path.resolve(process.cwd(), outDir);
@@ -257,76 +249,238 @@ cli.command('example-app <projectId>', 'Create an example app with Framer compon
257
249
  throw error;
258
250
  }
259
251
  });
260
- cli.command('mcp login [url]', 'Login by pasting your Framer MCP URL. Get the URL from Framer MCP plugin (Cmd/Ctrl+K > "MCP"). After login, run "unframer mcp skill" to see all available commands then. This cli will let you control Framer MCP via cli commands like `unframer mcp getProjectXml`').action(async (url) => {
261
- // Prompt for URL if not provided, avoids shell escaping issues with & in URLs
262
- if (!url) {
263
- const shortcut = process.platform === 'darwin' ? 'Cmd+K' : 'Ctrl+K';
264
- console.log('\nTo get your MCP URL:');
265
- console.log(' 1. Go to https://framer.com and open your project');
266
- console.log(` 2. Press ${shortcut} and search for "MCP" plugin`);
267
- console.log(' 3. Copy the URL shown in the plugin\n');
268
- }
269
- let mcpUrl = url;
270
- if (!mcpUrl) {
271
- try {
272
- mcpUrl = await input({ message: 'Paste MCP URL:' });
252
+ cli.command('mcp login [url]', 'Login to Framer MCP. Choose between plugin mode (requires Framer open) or server API mode (works headlessly with API key).').action(async (url) => {
253
+ try {
254
+ // If URL is passed directly, use plugin mode
255
+ if (url) {
256
+ saveConfig({ mode: 'plugin', mcpUrl: url });
257
+ console.log(`MCP URL saved to ${getConfigPath()}`);
258
+ console.log(`Run \`unframer --help\` to see all available MCP commands`);
259
+ return;
273
260
  }
274
- catch (error) {
275
- // Handle Ctrl+C gracefully
276
- if (error instanceof Error && error.name === 'ExitPromptError') {
277
- process.exit(0);
261
+ // Show mode selection dropdown
262
+ const mode = await select({
263
+ message: 'Select authentication mode:',
264
+ choices: [
265
+ {
266
+ value: 'plugin',
267
+ name: 'MCP Plugin (Recommended)',
268
+ description: 'Requires Framer to be open with MCP plugin running. Paste URL from plugin.',
269
+ },
270
+ {
271
+ value: 'server-api',
272
+ name: 'Server API',
273
+ description: 'Works without Framer open. Requires API key from project settings.',
274
+ },
275
+ ],
276
+ });
277
+ if (mode === 'plugin') {
278
+ const shortcut = process.platform === 'darwin' ? 'Cmd+K' : 'Ctrl+K';
279
+ console.log('\nTo get your MCP URL:');
280
+ console.log(' 1. Go to https://framer.com and open your project');
281
+ console.log(` 2. Press ${shortcut} and search for "MCP" plugin`);
282
+ console.log(' 3. Copy the URL shown in the plugin\n');
283
+ const mcpUrl = await input({ message: 'Paste MCP URL:' });
284
+ if (!mcpUrl) {
285
+ console.error('MCP URL is required');
286
+ process.exit(1);
278
287
  }
279
- throw error;
288
+ saveConfig({ mode: 'plugin', mcpUrl });
289
+ console.log(`\nMCP URL saved to ${getConfigPath()}`);
290
+ console.log(`Run \`unframer --help\` to see all available MCP commands`);
291
+ }
292
+ else {
293
+ // Server API mode
294
+ console.log('\nTo get your API key:');
295
+ console.log(' 1. Open your Framer project at https://framer.com/projects');
296
+ console.log(' 2. Go to Project Settings > API');
297
+ console.log(' 3. Generate or copy your API key\n');
298
+ const apiKey = await password({ message: 'Enter Framer API key:', mask: '*' });
299
+ if (!apiKey) {
300
+ console.error('API key is required');
301
+ process.exit(1);
302
+ }
303
+ console.log('\nTo get your project URL:');
304
+ console.log(' Copy the URL from your browser when viewing the project');
305
+ console.log(' Example: https://framer.com/projects/MyProject--abc123\n');
306
+ const projectUrl = await input({
307
+ message: 'Enter Framer project URL (optional, can use --project later):',
308
+ });
309
+ saveConfig({
310
+ mode: 'server-api',
311
+ framerApiKey: apiKey,
312
+ framerProjectUrl: projectUrl || undefined,
313
+ });
314
+ console.log(`\nServer API credentials saved to ${getConfigPath()}`);
315
+ console.log(`\nUsage:`);
316
+ if (projectUrl) {
317
+ console.log(` unframer mcp getProjectXml`);
318
+ }
319
+ else {
320
+ console.log(` unframer mcp getProjectXml --project "https://framer.com/projects/..."`);
321
+ }
322
+ console.log(`\nOr set FRAMER_PROJECT_URL environment variable`);
280
323
  }
281
324
  }
282
- if (!mcpUrl) {
283
- console.error('MCP URL is required');
284
- process.exit(1);
325
+ catch (error) {
326
+ if (error instanceof Error && error.name === 'ExitPromptError') {
327
+ process.exit(0);
328
+ }
329
+ throw error;
285
330
  }
286
- saveConfig({ mcpUrl });
287
- console.log(`MCP URL saved to ${getConfigPath()}`);
288
- console.log(`Now you must run \`unframer mcp skill\` to see how to unframer CLI. Every Framer MCP command is exposed as a cli command`);
289
331
  });
290
- cli.command('mcp skill', 'Show detailed help for all MCP commands with their options.').action(() => {
291
- const config = loadConfig();
292
- if (!config.mcpUrl) {
293
- console.log('No MCP URL configured. Run "unframer mcp login" first to connect to a Framer project.');
294
- return;
295
- }
296
- const mcpCommands = cli.commands.filter((cmd) => cmd.name.startsWith('mcp ') && cmd.name !== 'mcp login' && cmd.name !== 'mcp skill');
297
- if (mcpCommands.length === 0) {
298
- console.log('No MCP commands available. Run "unframer mcp login" first and paste there the Framer MCP url.');
332
+ // Add MCP tool commands
333
+ const config = loadConfig();
334
+ const cliArgs = process.argv.slice(2);
335
+ const hasMcpCommand = cliArgs.includes('mcp');
336
+ const hasProjectOption = cliArgs.some((arg) => {
337
+ return arg === '--project' || arg.startsWith('--project=');
338
+ });
339
+ const shouldUseServerApiForProjectOption = hasMcpCommand && hasProjectOption;
340
+ const mcpMode = shouldUseServerApiForProjectOption
341
+ ? 'server-api'
342
+ : config.mode || (config.mcpUrl ? 'plugin' : undefined);
343
+ if (mcpMode === 'server-api') {
344
+ // Server API mode - use framer-api directly
345
+ // Commands are registered via registerServerApiCommands below
346
+ await registerServerApiCommands();
347
+ }
348
+ else {
349
+ // Plugin mode - use MCP transport
350
+ await addMcpCommands({
351
+ cli,
352
+ commandPrefix: 'mcp',
353
+ getMcpTransport: async (sessionId) => {
354
+ const { StreamableHTTPClientTransport } = await import('@modelcontextprotocol/sdk/client/streamableHttp.js');
355
+ // UNFRAMER_MCP_URL env var overrides config file (contains full URL with auth)
356
+ const mcpUrl = process.env.UNFRAMER_MCP_URL || loadConfig().mcpUrl;
357
+ if (!mcpUrl) {
358
+ return null;
359
+ }
360
+ const url = new URL(mcpUrl);
361
+ // Use /mcp endpoint for StreamableHTTP
362
+ if (url.pathname.endsWith('/sse')) {
363
+ url.pathname = url.pathname.replace(/\/sse$/, '/mcp');
364
+ }
365
+ return new StreamableHTTPClientTransport(url, { sessionId });
366
+ },
367
+ loadCache: () => {
368
+ return loadConfig().cachedMcpTools;
369
+ },
370
+ saveCache: (cache) => {
371
+ const configNow = loadConfig();
372
+ saveConfig({ ...configNow, cachedMcpTools: cache });
373
+ },
374
+ }).catch((e) => console.error(e));
375
+ }
376
+ /**
377
+ * Register MCP commands for server-api mode using framer-api directly.
378
+ * This bypasses the MCP transport and calls handlers directly.
379
+ */
380
+ async function registerServerApiCommands() {
381
+ // Dynamic import to avoid loading framer-api in plugin mode
382
+ const { connect } = await import('framer-api');
383
+ // Import tool definitions and handler from plugin-mcp
384
+ // Note: Run `pnpm --filter plugin-mcp build && pnpm --filter plugin-mcp gen-unframer` first
385
+ const { mcpTools, mcpToolHandler } = await import('./plugin-mcp-dist/lib/mcp-handlers.js');
386
+ if (!mcpTools || !mcpToolHandler) {
299
387
  return;
300
388
  }
301
- for (const cmd of mcpCommands) {
302
- cmd.outputHelp();
303
- console.log('');
304
- }
305
- });
306
- // Add MCP tool commands - only registered if transport is available
307
- await addMcpCommands({
308
- cli,
309
- commandPrefix: 'mcp',
310
- getMcpTransport: (sessionId) => {
311
- const config = loadConfig();
312
- if (!config.mcpUrl) {
313
- return null;
314
- }
315
- const url = new URL(config.mcpUrl);
316
- // Use /mcp endpoint for StreamableHTTP
317
- if (url.pathname.endsWith('/sse')) {
318
- url.pathname = url.pathname.replace(/\/sse$/, '/mcp');
389
+ // Register a command for each MCP tool
390
+ for (const [toolName, toolDef] of Object.entries(mcpTools)) {
391
+ const cmd = cli.command(`mcp ${toolName}`, toolDef.description.split('\n')[0]);
392
+ cmd.option('--project <url>', 'Framer project URL. Uses server-api mode (framer-api headless). Works alongside plugin mode login, pass --project to switch to server-api for a single command. Also reads FRAMER_PROJECT_URL env var.');
393
+ // Add options based on tool input schema, using zod v4 native JSON Schema conversion
394
+ const inputSchema = toolDef.input;
395
+ if (inputSchema) {
396
+ const jsonSchema = z.toJSONSchema(inputSchema);
397
+ const properties = jsonSchema.properties || {};
398
+ const required = new Set(jsonSchema.required || []);
399
+ for (const [key, prop] of Object.entries(properties)) {
400
+ const isRequired = required.has(key);
401
+ const isBooleanType = prop.type === 'boolean';
402
+ const optionName = isBooleanType
403
+ ? `--${key}`
404
+ : `--${key} <value>`;
405
+ const optionDescription = [
406
+ prop.description || key,
407
+ isRequired ? '(required)' : '',
408
+ ]
409
+ .filter(Boolean)
410
+ .join(' ');
411
+ if (isBooleanType && prop.default === undefined) {
412
+ cmd.option(optionName, optionDescription);
413
+ continue;
414
+ }
415
+ cmd.option(optionName, wrapJsonSchema({
416
+ ...prop,
417
+ description: optionDescription,
418
+ }));
419
+ }
319
420
  }
320
- return new StreamableHTTPClientTransport(url, { sessionId });
321
- },
322
- loadCache: () => {
323
- return loadConfig().cachedMcpTools;
324
- },
325
- saveCache: (cache) => {
326
- const config = loadConfig();
327
- saveConfig({ ...config, cachedMcpTools: cache });
328
- },
329
- }).catch(e => console.error(e));
421
+ cmd.action(async (options) => {
422
+ const projectOption = typeof options.project === 'string'
423
+ ? options.project
424
+ : undefined;
425
+ const projectUrl = projectOption ||
426
+ process.env.FRAMER_PROJECT_URL ||
427
+ loadConfig().framerProjectUrl;
428
+ const apiKey = process.env.FRAMER_API_KEY || loadConfig().framerApiKey;
429
+ if (!projectUrl) {
430
+ console.error('Project URL required. Use --project option, FRAMER_PROJECT_URL env var, or set during login.');
431
+ process.exit(1);
432
+ }
433
+ if (!apiKey) {
434
+ console.error('API key required. Set FRAMER_API_KEY env var or run `unframer mcp login` first.');
435
+ process.exit(1);
436
+ }
437
+ // Remove CLI-specific options from input
438
+ const toolInput = Object.fromEntries(Object.entries(options).filter(([key]) => {
439
+ return key !== 'project';
440
+ }));
441
+ const globalWithFramer = globalThis;
442
+ let framerClient = undefined;
443
+ let actionError = undefined;
444
+ try {
445
+ spinner.start(`Connecting to Framer...`);
446
+ framerClient = await connect(projectUrl, apiKey);
447
+ // Set global framer for utility functions that use it
448
+ globalWithFramer.framer = framerClient;
449
+ spinner.start(`Running ${toolName}...`);
450
+ const result = await mcpToolHandler({
451
+ type: toolName,
452
+ input: toolInput,
453
+ });
454
+ spinner.stop('');
455
+ // Output result
456
+ if (typeof result === 'string') {
457
+ console.log(result);
458
+ }
459
+ else {
460
+ console.log(JSON.stringify(result, null, 2));
461
+ }
462
+ }
463
+ catch (error) {
464
+ actionError = error;
465
+ }
466
+ finally {
467
+ if (framerClient) {
468
+ try {
469
+ await framerClient.disconnect();
470
+ }
471
+ catch (disconnectError) {
472
+ logger.error('Failed disconnecting from Framer:', disconnectError);
473
+ }
474
+ }
475
+ delete globalWithFramer.framer;
476
+ }
477
+ if (actionError) {
478
+ spinner.error(`Failed: ${actionError instanceof Error ? actionError.message : String(actionError)}`);
479
+ process.exit(1);
480
+ }
481
+ });
482
+ }
483
+ }
330
484
  export async function configFromFetch({ projectId, externalPackages = [], allExternal = false, agent = '', outDir = undefined, }) {
331
485
  logger.log(`Fetching config for project ${projectId}`);
332
486
  const url = process.env.UNFRAMER_SERVER_URL;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { CachedMcpTools } from '@goke/mcp';
2
+ export type McpMode = 'plugin' | 'server-api';
3
+ export interface UnframerConfig {
4
+ /** MCP mode: 'plugin' uses WebSocket tunnel, 'server-api' uses framer-api directly */
5
+ mode?: McpMode;
6
+ /** MCP URL for plugin mode (from Framer MCP plugin) */
7
+ mcpUrl?: string;
8
+ /** Framer API key for server-api mode */
9
+ framerApiKey?: string;
10
+ /** Default Framer project URL for server-api mode */
11
+ framerProjectUrl?: string;
12
+ /** Cached MCP tools schema */
13
+ cachedMcpTools?: CachedMcpTools;
14
+ }
15
+ export declare function loadConfig(): UnframerConfig;
16
+ export declare function saveConfig(config: UnframerConfig): void;
17
+ export declare function getConfigPath(): string;
18
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAK/C,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAA;AAE7C,MAAM,WAAW,cAAc;IAC3B,sFAAsF;IACtF,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAA;CAClC;AAED,wBAAgB,UAAU,IAAI,cAAc,CAS3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAKvD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}