@sxl-studio/bridge 1.7.2 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +342 -16
- package/dist/agent-recipes.d.ts +781 -11
- package/dist/agent-recipes.js +886 -13
- package/dist/agent-recipes.js.map +1 -1
- package/dist/agent-runbook.d.ts +50 -0
- package/dist/agent-runbook.js +243 -0
- package/dist/agent-runbook.js.map +1 -0
- package/dist/asset-upload.d.ts +63 -0
- package/dist/asset-upload.js +225 -0
- package/dist/asset-upload.js.map +1 -0
- package/dist/audit-store.d.ts +15 -0
- package/dist/audit-store.js +100 -0
- package/dist/audit-store.js.map +1 -0
- package/dist/audit.d.ts +4 -3
- package/dist/audit.js +37 -4
- package/dist/audit.js.map +1 -1
- package/dist/auth.d.ts +8 -1
- package/dist/auth.js +41 -1
- package/dist/auth.js.map +1 -1
- package/dist/bridge-agent-workflow-validation-cli.d.ts +2 -0
- package/dist/bridge-agent-workflow-validation-cli.js +68 -0
- package/dist/bridge-agent-workflow-validation-cli.js.map +1 -0
- package/dist/bridge-agent-workflow-validation.d.ts +42 -0
- package/dist/bridge-agent-workflow-validation.js +170 -0
- package/dist/bridge-agent-workflow-validation.js.map +1 -0
- package/dist/bridge-contract-audit.d.ts +45 -0
- package/dist/bridge-contract-audit.js +345 -0
- package/dist/bridge-contract-audit.js.map +1 -0
- package/dist/bridge-health-cli.d.ts +2 -0
- package/dist/bridge-health-cli.js +115 -0
- package/dist/bridge-health-cli.js.map +1 -0
- package/dist/bridge-health.d.ts +33 -0
- package/dist/bridge-health.js +594 -0
- package/dist/bridge-health.js.map +1 -0
- package/dist/bridge-live-validation-cli.d.ts +2 -0
- package/dist/bridge-live-validation-cli.js +114 -0
- package/dist/bridge-live-validation-cli.js.map +1 -0
- package/dist/bridge-live-validation.d.ts +39 -0
- package/dist/bridge-live-validation.js +1141 -0
- package/dist/bridge-live-validation.js.map +1 -0
- package/dist/bridge-performance-profile.d.ts +81 -0
- package/dist/bridge-performance-profile.js +227 -0
- package/dist/bridge-performance-profile.js.map +1 -0
- package/dist/bridge-readiness-cli.d.ts +30 -0
- package/dist/bridge-readiness-cli.js +242 -0
- package/dist/bridge-readiness-cli.js.map +1 -0
- package/dist/bridge-runtime-summary.d.ts +50 -0
- package/dist/bridge-runtime-summary.js +112 -0
- package/dist/bridge-runtime-summary.js.map +1 -0
- package/dist/bridge-workflow-smoke-cli.d.ts +2 -0
- package/dist/bridge-workflow-smoke-cli.js +126 -0
- package/dist/bridge-workflow-smoke-cli.js.map +1 -0
- package/dist/bridge-workflow-smoke.d.ts +39 -0
- package/dist/bridge-workflow-smoke.js +431 -0
- package/dist/bridge-workflow-smoke.js.map +1 -0
- package/dist/codeconnect-suggestions.d.ts +74 -0
- package/dist/codeconnect-suggestions.js +398 -0
- package/dist/codeconnect-suggestions.js.map +1 -0
- package/dist/codeconnect-template.d.ts +98 -0
- package/dist/codeconnect-template.js +280 -0
- package/dist/codeconnect-template.js.map +1 -0
- package/dist/command-queue.d.ts +11 -1
- package/dist/command-queue.js +200 -1
- package/dist/command-queue.js.map +1 -1
- package/dist/command-safety.d.ts +13 -0
- package/dist/command-safety.js +59 -0
- package/dist/command-safety.js.map +1 -0
- package/dist/enabled-library-search.d.ts +49 -0
- package/dist/enabled-library-search.js +151 -0
- package/dist/enabled-library-search.js.map +1 -0
- package/dist/figma-mcp-parity.d.ts +49 -0
- package/dist/figma-mcp-parity.js +368 -0
- package/dist/figma-mcp-parity.js.map +1 -0
- package/dist/figma-mcp-skills-parity.d.ts +61 -0
- package/dist/figma-mcp-skills-parity.js +434 -0
- package/dist/figma-mcp-skills-parity.js.map +1 -0
- package/dist/figma-rest-diagnostics.d.ts +50 -0
- package/dist/figma-rest-diagnostics.js +314 -0
- package/dist/figma-rest-diagnostics.js.map +1 -0
- package/dist/figma-rest.d.ts +27 -0
- package/dist/figma-rest.js +116 -0
- package/dist/figma-rest.js.map +1 -0
- package/dist/http-api.d.ts +14 -2
- package/dist/http-api.js +323 -17
- package/dist/http-api.js.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-factory.d.ts +6 -1
- package/dist/mcp-factory.js +23 -4
- package/dist/mcp-factory.js.map +1 -1
- package/dist/mcp-runtime-probe.d.ts +22 -0
- package/dist/mcp-runtime-probe.js +777 -0
- package/dist/mcp-runtime-probe.js.map +1 -0
- package/dist/mcp-server.d.ts +2 -1
- package/dist/mcp-server.js +2 -2
- package/dist/mcp-server.js.map +1 -1
- package/dist/sxl-mcp-instructions.js +97 -25
- package/dist/sxl-mcp-instructions.js.map +1 -1
- package/dist/tools/audit.d.ts +22 -6
- package/dist/tools/audit.js +49 -7
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/capability-matrix.d.ts +22 -0
- package/dist/tools/capability-matrix.js +38 -0
- package/dist/tools/capability-matrix.js.map +1 -0
- package/dist/tools/catalogue-bootstrap.d.ts +1 -0
- package/dist/tools/catalogue-bootstrap.js +665 -30
- package/dist/tools/catalogue-bootstrap.js.map +1 -1
- package/dist/tools/code-connect-context.d.ts +3 -0
- package/dist/tools/code-connect-context.js +319 -0
- package/dist/tools/code-connect-context.js.map +1 -0
- package/dist/tools/code-connect-template.d.ts +3 -0
- package/dist/tools/code-connect-template.js +111 -0
- package/dist/tools/code-connect-template.js.map +1 -0
- package/dist/tools/composition.js +13 -28
- package/dist/tools/composition.js.map +1 -1
- package/dist/tools/compositions-orchestration.d.ts +14 -14
- package/dist/tools/compositions-orchestration.js +2 -2
- package/dist/tools/compositions-orchestration.js.map +1 -1
- package/dist/tools/data.js +839 -27
- package/dist/tools/data.js.map +1 -1
- package/dist/tools/design-context.d.ts +3 -0
- package/dist/tools/design-context.js +197 -0
- package/dist/tools/design-context.js.map +1 -0
- package/dist/tools/destructive-confirmation.d.ts +10 -0
- package/dist/tools/destructive-confirmation.js +22 -0
- package/dist/tools/destructive-confirmation.js.map +1 -0
- package/dist/tools/diagnostics.js +76 -51
- package/dist/tools/diagnostics.js.map +1 -1
- package/dist/tools/figma-mcp-design.d.ts +3 -0
- package/dist/tools/figma-mcp-design.js +377 -0
- package/dist/tools/figma-mcp-design.js.map +1 -0
- package/dist/tools/figma-nodes.js +57 -43
- package/dist/tools/figma-nodes.js.map +1 -1
- package/dist/tools/figma-rc-extended.js +23 -6
- package/dist/tools/figma-rc-extended.js.map +1 -1
- package/dist/tools/figma-rest.d.ts +39 -0
- package/dist/tools/figma-rest.js +279 -0
- package/dist/tools/figma-rest.js.map +1 -0
- package/dist/tools/git.js +11 -7
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/large-data.d.ts +14 -0
- package/dist/tools/large-data.js +189 -0
- package/dist/tools/large-data.js.map +1 -0
- package/dist/tools/meta.d.ts +6 -1
- package/dist/tools/meta.js +89 -11
- package/dist/tools/meta.js.map +1 -1
- package/dist/tools/metadata.d.ts +3 -0
- package/dist/tools/metadata.js +140 -0
- package/dist/tools/metadata.js.map +1 -0
- package/dist/tools/mockup.d.ts +15 -156
- package/dist/tools/mockup.js +54 -121
- package/dist/tools/mockup.js.map +1 -1
- package/dist/tools/orchestration.js +73 -45
- package/dist/tools/orchestration.js.map +1 -1
- package/dist/tools/prompts.d.ts +3 -0
- package/dist/tools/prompts.js +219 -0
- package/dist/tools/prompts.js.map +1 -0
- package/dist/tools/registry.d.ts +19 -1
- package/dist/tools/registry.js +4 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/resources.d.ts +19 -2
- package/dist/tools/resources.js +149 -5
- package/dist/tools/resources.js.map +1 -1
- package/dist/tools/schema-contracts.d.ts +4763 -0
- package/dist/tools/schema-contracts.js +814 -0
- package/dist/tools/schema-contracts.js.map +1 -0
- package/dist/tools/screenshot.d.ts +3 -0
- package/dist/tools/screenshot.js +144 -0
- package/dist/tools/screenshot.js.map +1 -0
- package/dist/tools/shared.d.ts +11 -1
- package/dist/tools/shared.js +55 -2
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/styles-orchestration.d.ts +2 -2
- package/dist/tools/styles-orchestration.js +13 -5
- package/dist/tools/styles-orchestration.js.map +1 -1
- package/dist/tools/styles.js +22 -8
- package/dist/tools/styles.js.map +1 -1
- package/dist/tools/tokens.d.ts +31 -692
- package/dist/tools/tokens.js +175 -135
- package/dist/tools/tokens.js.map +1 -1
- package/dist/tools/variable-defs.d.ts +3 -0
- package/dist/tools/variable-defs.js +338 -0
- package/dist/tools/variable-defs.js.map +1 -0
- package/dist/tools/variables-orchestration.js +13 -5
- package/dist/tools/variables-orchestration.js.map +1 -1
- package/dist/tools/variables.js +18 -15
- package/dist/tools/variables.js.map +1 -1
- package/dist/types.d.ts +53 -0
- package/dist/ultimate-readiness-audit.d.ts +37 -0
- package/dist/ultimate-readiness-audit.js +431 -0
- package/dist/ultimate-readiness-audit.js.map +1 -0
- package/dist/workflow-planner.d.ts +57 -0
- package/dist/workflow-planner.js +464 -0
- package/dist/workflow-planner.js.map +1 -0
- package/dist/ws-server.js +16 -3
- package/dist/ws-server.js.map +1 -1
- package/package.json +18 -2
package/dist/tools/mockup.d.ts
CHANGED
|
@@ -23,153 +23,11 @@
|
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
import type { McpServer } from "../../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js";
|
|
25
25
|
import type { CommandQueue } from "../command-queue.js";
|
|
26
|
-
declare const sizingSpecZod: z.ZodObject<{
|
|
27
|
-
mode: z.ZodOptional<z.ZodEnum<["HUG", "FIXED", "FILL"]>>;
|
|
28
|
-
width: z.ZodOptional<z.ZodNumber>;
|
|
29
|
-
height: z.ZodOptional<z.ZodNumber>;
|
|
30
|
-
}, "strip", z.ZodTypeAny, {
|
|
31
|
-
width?: number | undefined;
|
|
32
|
-
height?: number | undefined;
|
|
33
|
-
mode?: "FIXED" | "HUG" | "FILL" | undefined;
|
|
34
|
-
}, {
|
|
35
|
-
width?: number | undefined;
|
|
36
|
-
height?: number | undefined;
|
|
37
|
-
mode?: "FIXED" | "HUG" | "FILL" | undefined;
|
|
38
|
-
}>;
|
|
39
|
-
declare const layoutSpecZod: z.ZodObject<{
|
|
40
|
-
mode: z.ZodOptional<z.ZodEnum<["VERTICAL", "HORIZONTAL", "WRAP"]>>;
|
|
41
|
-
itemSpacing: z.ZodOptional<z.ZodNumber>;
|
|
42
|
-
counterAxisSpacing: z.ZodOptional<z.ZodNumber>;
|
|
43
|
-
padding: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
|
|
44
|
-
top: z.ZodOptional<z.ZodNumber>;
|
|
45
|
-
right: z.ZodOptional<z.ZodNumber>;
|
|
46
|
-
bottom: z.ZodOptional<z.ZodNumber>;
|
|
47
|
-
left: z.ZodOptional<z.ZodNumber>;
|
|
48
|
-
}, "strip", z.ZodTypeAny, {
|
|
49
|
-
top?: number | undefined;
|
|
50
|
-
right?: number | undefined;
|
|
51
|
-
bottom?: number | undefined;
|
|
52
|
-
left?: number | undefined;
|
|
53
|
-
}, {
|
|
54
|
-
top?: number | undefined;
|
|
55
|
-
right?: number | undefined;
|
|
56
|
-
bottom?: number | undefined;
|
|
57
|
-
left?: number | undefined;
|
|
58
|
-
}>]>>;
|
|
59
|
-
primaryAxis: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]>>;
|
|
60
|
-
counterAxis: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "BASELINE"]>>;
|
|
61
|
-
width: z.ZodOptional<z.ZodNumber>;
|
|
62
|
-
height: z.ZodOptional<z.ZodNumber>;
|
|
63
|
-
background: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
|
64
|
-
hex: z.ZodString;
|
|
65
|
-
}, "strip", z.ZodTypeAny, {
|
|
66
|
-
hex: string;
|
|
67
|
-
}, {
|
|
68
|
-
hex: string;
|
|
69
|
-
}>, z.ZodObject<{
|
|
70
|
-
variableId: z.ZodString;
|
|
71
|
-
}, "strip", z.ZodTypeAny, {
|
|
72
|
-
variableId: string;
|
|
73
|
-
}, {
|
|
74
|
-
variableId: string;
|
|
75
|
-
}>]>>;
|
|
76
|
-
}, "strip", z.ZodTypeAny, {
|
|
77
|
-
width?: number | undefined;
|
|
78
|
-
height?: number | undefined;
|
|
79
|
-
padding?: number | {
|
|
80
|
-
top?: number | undefined;
|
|
81
|
-
right?: number | undefined;
|
|
82
|
-
bottom?: number | undefined;
|
|
83
|
-
left?: number | undefined;
|
|
84
|
-
} | undefined;
|
|
85
|
-
itemSpacing?: number | undefined;
|
|
86
|
-
mode?: "HORIZONTAL" | "VERTICAL" | "WRAP" | undefined;
|
|
87
|
-
counterAxisSpacing?: number | undefined;
|
|
88
|
-
primaryAxis?: "MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN" | undefined;
|
|
89
|
-
counterAxis?: "MIN" | "MAX" | "CENTER" | "BASELINE" | undefined;
|
|
90
|
-
background?: {
|
|
91
|
-
hex: string;
|
|
92
|
-
} | {
|
|
93
|
-
variableId: string;
|
|
94
|
-
} | undefined;
|
|
95
|
-
}, {
|
|
96
|
-
width?: number | undefined;
|
|
97
|
-
height?: number | undefined;
|
|
98
|
-
padding?: number | {
|
|
99
|
-
top?: number | undefined;
|
|
100
|
-
right?: number | undefined;
|
|
101
|
-
bottom?: number | undefined;
|
|
102
|
-
left?: number | undefined;
|
|
103
|
-
} | undefined;
|
|
104
|
-
itemSpacing?: number | undefined;
|
|
105
|
-
mode?: "HORIZONTAL" | "VERTICAL" | "WRAP" | undefined;
|
|
106
|
-
counterAxisSpacing?: number | undefined;
|
|
107
|
-
primaryAxis?: "MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN" | undefined;
|
|
108
|
-
counterAxis?: "MIN" | "MAX" | "CENTER" | "BASELINE" | undefined;
|
|
109
|
-
background?: {
|
|
110
|
-
hex: string;
|
|
111
|
-
} | {
|
|
112
|
-
variableId: string;
|
|
113
|
-
} | undefined;
|
|
114
|
-
}>;
|
|
115
|
-
type MockupItemBase = {
|
|
116
|
-
kind: "instance";
|
|
117
|
-
componentId?: string;
|
|
118
|
-
componentKey?: string;
|
|
119
|
-
componentName?: string;
|
|
120
|
-
name?: string;
|
|
121
|
-
properties?: Record<string, string | boolean>;
|
|
122
|
-
textOverrides?: Array<{
|
|
123
|
-
layerName: string;
|
|
124
|
-
value: string;
|
|
125
|
-
}>;
|
|
126
|
-
fillBindings?: Array<{
|
|
127
|
-
layerName?: string;
|
|
128
|
-
variableId: string;
|
|
129
|
-
paintIndex?: number;
|
|
130
|
-
}>;
|
|
131
|
-
layoutSizing?: {
|
|
132
|
-
mode?: "HUG" | "FIXED" | "FILL";
|
|
133
|
-
width?: number;
|
|
134
|
-
height?: number;
|
|
135
|
-
};
|
|
136
|
-
count?: number;
|
|
137
|
-
} | {
|
|
138
|
-
kind: "spacer";
|
|
139
|
-
size?: number;
|
|
140
|
-
fillContainer?: boolean;
|
|
141
|
-
} | {
|
|
142
|
-
kind: "text";
|
|
143
|
-
value: string;
|
|
144
|
-
name?: string;
|
|
145
|
-
fontSize?: number;
|
|
146
|
-
fontName?: {
|
|
147
|
-
family: string;
|
|
148
|
-
style: string;
|
|
149
|
-
};
|
|
150
|
-
textStyleId?: string;
|
|
151
|
-
fillBindings?: Array<{
|
|
152
|
-
layerName?: string;
|
|
153
|
-
variableId: string;
|
|
154
|
-
paintIndex?: number;
|
|
155
|
-
}>;
|
|
156
|
-
layoutSizing?: {
|
|
157
|
-
mode?: "HUG" | "FIXED" | "FILL";
|
|
158
|
-
width?: number;
|
|
159
|
-
height?: number;
|
|
160
|
-
};
|
|
161
|
-
};
|
|
162
|
-
type MockupItem = MockupItemBase | {
|
|
163
|
-
kind: "section";
|
|
164
|
-
name?: string;
|
|
165
|
-
layout?: z.infer<typeof layoutSpecZod>;
|
|
166
|
-
layoutSizing?: z.infer<typeof sizingSpecZod>;
|
|
167
|
-
items: MockupItem[];
|
|
168
|
-
};
|
|
169
26
|
export declare function registerMockupTools(server: McpServer, queue: CommandQueue): void;
|
|
170
27
|
export declare const __test_only__: {
|
|
171
|
-
mockupItemZod: z.ZodType<
|
|
28
|
+
mockupItemZod: z.ZodType<import("./schema-contracts.js").DesignDslItem, z.ZodTypeDef, import("./schema-contracts.js").DesignDslItem>;
|
|
172
29
|
buildMockupArgs: {
|
|
30
|
+
version: z.ZodOptional<z.ZodLiteral<"1">>;
|
|
173
31
|
name: z.ZodOptional<z.ZodString>;
|
|
174
32
|
targetParentId: z.ZodOptional<z.ZodString>;
|
|
175
33
|
targetRootId: z.ZodOptional<z.ZodString>;
|
|
@@ -213,17 +71,17 @@ export declare const __test_only__: {
|
|
|
213
71
|
}, "strip", z.ZodTypeAny, {
|
|
214
72
|
width?: number | undefined;
|
|
215
73
|
height?: number | undefined;
|
|
74
|
+
mode?: "VERTICAL" | "HORIZONTAL" | "WRAP" | undefined;
|
|
75
|
+
itemSpacing?: number | undefined;
|
|
76
|
+
counterAxisSpacing?: number | undefined;
|
|
216
77
|
padding?: number | {
|
|
217
78
|
top?: number | undefined;
|
|
218
79
|
right?: number | undefined;
|
|
219
80
|
bottom?: number | undefined;
|
|
220
81
|
left?: number | undefined;
|
|
221
82
|
} | undefined;
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
counterAxisSpacing?: number | undefined;
|
|
225
|
-
primaryAxis?: "MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN" | undefined;
|
|
226
|
-
counterAxis?: "MIN" | "MAX" | "CENTER" | "BASELINE" | undefined;
|
|
83
|
+
primaryAxis?: "MIN" | "CENTER" | "MAX" | "SPACE_BETWEEN" | undefined;
|
|
84
|
+
counterAxis?: "MIN" | "CENTER" | "MAX" | "BASELINE" | undefined;
|
|
227
85
|
background?: {
|
|
228
86
|
hex: string;
|
|
229
87
|
} | {
|
|
@@ -232,27 +90,29 @@ export declare const __test_only__: {
|
|
|
232
90
|
}, {
|
|
233
91
|
width?: number | undefined;
|
|
234
92
|
height?: number | undefined;
|
|
93
|
+
mode?: "VERTICAL" | "HORIZONTAL" | "WRAP" | undefined;
|
|
94
|
+
itemSpacing?: number | undefined;
|
|
95
|
+
counterAxisSpacing?: number | undefined;
|
|
235
96
|
padding?: number | {
|
|
236
97
|
top?: number | undefined;
|
|
237
98
|
right?: number | undefined;
|
|
238
99
|
bottom?: number | undefined;
|
|
239
100
|
left?: number | undefined;
|
|
240
101
|
} | undefined;
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
counterAxisSpacing?: number | undefined;
|
|
244
|
-
primaryAxis?: "MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN" | undefined;
|
|
245
|
-
counterAxis?: "MIN" | "MAX" | "CENTER" | "BASELINE" | undefined;
|
|
102
|
+
primaryAxis?: "MIN" | "CENTER" | "MAX" | "SPACE_BETWEEN" | undefined;
|
|
103
|
+
counterAxis?: "MIN" | "CENTER" | "MAX" | "BASELINE" | undefined;
|
|
246
104
|
background?: {
|
|
247
105
|
hex: string;
|
|
248
106
|
} | {
|
|
249
107
|
variableId: string;
|
|
250
108
|
} | undefined;
|
|
251
109
|
}>>;
|
|
252
|
-
items: z.ZodArray<z.ZodType<
|
|
110
|
+
items: z.ZodArray<z.ZodType<import("./schema-contracts.js").DesignDslItem, z.ZodTypeDef, import("./schema-contracts.js").DesignDslItem>, "many">;
|
|
253
111
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
254
112
|
};
|
|
255
113
|
findComponentsArgs: {
|
|
114
|
+
bridgeResponseMode: z.ZodOptional<z.ZodEnum<["auto", "summary", "full"]>>;
|
|
115
|
+
bridgeMaxResponseBytes: z.ZodOptional<z.ZodNumber>;
|
|
256
116
|
query: z.ZodOptional<z.ZodString>;
|
|
257
117
|
prefix: z.ZodOptional<z.ZodString>;
|
|
258
118
|
kind: z.ZodOptional<z.ZodEnum<["COMPONENT", "COMPONENT_SET", "ALL"]>>;
|
|
@@ -320,4 +180,3 @@ export declare const __test_only__: {
|
|
|
320
180
|
dryRun: z.ZodOptional<z.ZodBoolean>;
|
|
321
181
|
};
|
|
322
182
|
};
|
|
323
|
-
export {};
|
package/dist/tools/mockup.js
CHANGED
|
@@ -21,57 +21,10 @@
|
|
|
21
21
|
* bad item.
|
|
22
22
|
*/
|
|
23
23
|
import { z } from "zod";
|
|
24
|
-
import { callPluginCommand } from "./shared.js";
|
|
24
|
+
import { callPluginCommand, callPluginWriteCommand, executePluginCommand, ok } from "./shared.js";
|
|
25
|
+
import { largeDataResponseArgs, normalizeLargeDataResult, } from "./large-data.js";
|
|
26
|
+
import { designDslBuildMockupArgs as buildMockupArgs, designDslFillBindingZod, designDslItemZod as mockupItemZod, designDslPropertiesMapZod, designDslScreenSpecV1Zod, designDslTextOverrideZod, designDslUpdateScreenSpecV1Zod, } from "./schema-contracts.js";
|
|
25
27
|
// ─── Shared building blocks ──────────────────────────────────────────────────
|
|
26
|
-
const propertyValueZod = z.union([z.string(), z.boolean()]);
|
|
27
|
-
const propertiesMapZod = z.record(z.string(), propertyValueZod);
|
|
28
|
-
const textOverrideZod = z.object({
|
|
29
|
-
layerName: z.string().min(1).describe("TEXT layer name inside the instance to receive `value`."),
|
|
30
|
-
value: z.string().describe("New characters to write into that TEXT layer."),
|
|
31
|
-
});
|
|
32
|
-
const fillBindingZod = z.object({
|
|
33
|
-
layerName: z
|
|
34
|
-
.string()
|
|
35
|
-
.min(1)
|
|
36
|
-
.optional()
|
|
37
|
-
.describe("Optional child-layer name to scope the binding. When omitted, the binding applies to the host node itself."),
|
|
38
|
-
variableId: z.string().min(1).describe("Figma Variable id (must resolve to COLOR)."),
|
|
39
|
-
paintIndex: z
|
|
40
|
-
.number()
|
|
41
|
-
.int()
|
|
42
|
-
.min(0)
|
|
43
|
-
.optional()
|
|
44
|
-
.describe("Which existing fill index to bind. Default: 0 (first fill, which is created if absent)."),
|
|
45
|
-
});
|
|
46
|
-
const sizingSpecZod = z.object({
|
|
47
|
-
mode: z.enum(["HUG", "FIXED", "FILL"]).optional(),
|
|
48
|
-
width: z.number().positive().optional(),
|
|
49
|
-
height: z.number().positive().optional(),
|
|
50
|
-
});
|
|
51
|
-
const paddingSpecZod = z.union([
|
|
52
|
-
z.number().min(0),
|
|
53
|
-
z.object({
|
|
54
|
-
top: z.number().min(0).optional(),
|
|
55
|
-
right: z.number().min(0).optional(),
|
|
56
|
-
bottom: z.number().min(0).optional(),
|
|
57
|
-
left: z.number().min(0).optional(),
|
|
58
|
-
}),
|
|
59
|
-
]);
|
|
60
|
-
const layoutBackgroundZod = z.union([
|
|
61
|
-
z.object({ hex: z.string().regex(/^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/, "hex must be #rrggbb[aa]") }),
|
|
62
|
-
z.object({ variableId: z.string().min(1) }),
|
|
63
|
-
]);
|
|
64
|
-
const layoutSpecZod = z.object({
|
|
65
|
-
mode: z.enum(["VERTICAL", "HORIZONTAL", "WRAP"]).optional(),
|
|
66
|
-
itemSpacing: z.number().min(0).optional(),
|
|
67
|
-
counterAxisSpacing: z.number().min(0).optional(),
|
|
68
|
-
padding: paddingSpecZod.optional(),
|
|
69
|
-
primaryAxis: z.enum(["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]).optional(),
|
|
70
|
-
counterAxis: z.enum(["MIN", "CENTER", "MAX", "BASELINE"]).optional(),
|
|
71
|
-
width: z.number().positive().optional(),
|
|
72
|
-
height: z.number().positive().optional(),
|
|
73
|
-
background: layoutBackgroundZod.optional(),
|
|
74
|
-
});
|
|
75
28
|
// ─── find_components ─────────────────────────────────────────────────────────
|
|
76
29
|
const findComponentsArgs = {
|
|
77
30
|
query: z
|
|
@@ -99,78 +52,14 @@ const findComponentsArgs = {
|
|
|
99
52
|
.describe("Also include library components instantiated in this file (deduplicated by main id). Default: false."),
|
|
100
53
|
limit: z.number().int().positive().max(200).optional().describe("Max entries returned. Default: 50."),
|
|
101
54
|
cursor: z.string().optional().describe("Opaque pagination cursor returned by previous call."),
|
|
102
|
-
|
|
103
|
-
const mockupItemZod = z.lazy(() => z.discriminatedUnion("kind", [
|
|
104
|
-
z.object({
|
|
105
|
-
kind: z.literal("instance"),
|
|
106
|
-
componentId: z.string().min(1).optional(),
|
|
107
|
-
componentKey: z.string().min(1).optional(),
|
|
108
|
-
componentName: z.string().min(1).optional(),
|
|
109
|
-
name: z.string().optional().describe("Override the resulting instance.name."),
|
|
110
|
-
properties: propertiesMapZod.optional().describe("Component property overrides keyed by base name (e.g. `size`, `variant`). The plugin resolves the internal `name#defId` suffix."),
|
|
111
|
-
textOverrides: z.array(textOverrideZod).optional(),
|
|
112
|
-
fillBindings: z.array(fillBindingZod).optional(),
|
|
113
|
-
layoutSizing: sizingSpecZod.optional(),
|
|
114
|
-
count: z
|
|
115
|
-
.number()
|
|
116
|
-
.int()
|
|
117
|
-
.positive()
|
|
118
|
-
.max(500)
|
|
119
|
-
.optional()
|
|
120
|
-
.describe("Repeat the same instance N times (HUG layouts wrap automatically). Default: 1."),
|
|
121
|
-
}),
|
|
122
|
-
z.object({
|
|
123
|
-
kind: z.literal("spacer"),
|
|
124
|
-
size: z.number().min(0).optional().describe("Square size when fillContainer is false. Default: 8."),
|
|
125
|
-
fillContainer: z.boolean().optional().describe("Stretch along the parent's primary axis."),
|
|
126
|
-
}),
|
|
127
|
-
z.object({
|
|
128
|
-
kind: z.literal("text"),
|
|
129
|
-
value: z.string(),
|
|
130
|
-
name: z.string().optional(),
|
|
131
|
-
fontSize: z.number().positive().optional(),
|
|
132
|
-
fontName: z
|
|
133
|
-
.object({ family: z.string(), style: z.string() })
|
|
134
|
-
.optional()
|
|
135
|
-
.describe("Defaults to Inter Regular (loaded with safe fallback)."),
|
|
136
|
-
textStyleId: z.string().optional(),
|
|
137
|
-
fillBindings: z.array(fillBindingZod).optional(),
|
|
138
|
-
layoutSizing: sizingSpecZod.optional(),
|
|
139
|
-
}),
|
|
140
|
-
z.object({
|
|
141
|
-
kind: z.literal("section"),
|
|
142
|
-
name: z.string().optional(),
|
|
143
|
-
layout: layoutSpecZod.optional(),
|
|
144
|
-
layoutSizing: sizingSpecZod.optional(),
|
|
145
|
-
items: z.array(mockupItemZod).min(1),
|
|
146
|
-
}),
|
|
147
|
-
]));
|
|
148
|
-
const buildMockupArgs = {
|
|
149
|
-
name: z
|
|
150
|
-
.string()
|
|
151
|
-
.optional()
|
|
152
|
-
.describe("Container name (default: `Mockup <ISO timestamp>`)."),
|
|
153
|
-
targetParentId: z
|
|
154
|
-
.string()
|
|
155
|
-
.optional()
|
|
156
|
-
.describe("Parent frame id where the new container is created. Mutually exclusive with targetRootId."),
|
|
157
|
-
targetRootId: z
|
|
158
|
-
.string()
|
|
159
|
-
.optional()
|
|
160
|
-
.describe("Existing FRAME id — items are appended into it instead of creating a new container."),
|
|
161
|
-
layout: layoutSpecZod.optional(),
|
|
162
|
-
items: z.array(mockupItemZod).min(1),
|
|
163
|
-
dryRun: z
|
|
164
|
-
.boolean()
|
|
165
|
-
.optional()
|
|
166
|
-
.describe("If true, returns the resolved plan + would-be overrides without touching the canvas."),
|
|
55
|
+
...largeDataResponseArgs,
|
|
167
56
|
};
|
|
168
57
|
// ─── apply_mockup_dataset ────────────────────────────────────────────────────
|
|
169
58
|
const datasetRowZod = z.object({
|
|
170
59
|
name: z.string().optional(),
|
|
171
|
-
properties:
|
|
172
|
-
textOverrides: z.array(
|
|
173
|
-
fillBindings: z.array(
|
|
60
|
+
properties: designDslPropertiesMapZod.optional(),
|
|
61
|
+
textOverrides: z.array(designDslTextOverrideZod).optional(),
|
|
62
|
+
fillBindings: z.array(designDslFillBindingZod).optional(),
|
|
174
63
|
});
|
|
175
64
|
const applyMockupDatasetArgs = {
|
|
176
65
|
templateNodeId: z
|
|
@@ -193,9 +82,53 @@ const applyMockupDatasetArgs = {
|
|
|
193
82
|
};
|
|
194
83
|
// ─── Registration ────────────────────────────────────────────────────────────
|
|
195
84
|
export function registerMockupTools(server, queue) {
|
|
196
|
-
server.tool("
|
|
197
|
-
|
|
198
|
-
|
|
85
|
+
server.tool("inspect_design_system", "READ-ONLY: aggregate the design-system context an agent needs before building screens: components, local variables, local styles, token config, and composition index. This is the Bridge equivalent of the discovery phase in Figma generate-design/generate-library workflows.", {
|
|
86
|
+
componentQuery: z.string().optional(),
|
|
87
|
+
componentPrefix: z.string().optional(),
|
|
88
|
+
includeRemoteInstances: z.boolean().optional(),
|
|
89
|
+
componentLimit: z.number().int().positive().max(200).optional(),
|
|
90
|
+
...largeDataResponseArgs,
|
|
91
|
+
}, async ({ componentQuery, componentPrefix, includeRemoteInstances, componentLimit, ...controls }) => {
|
|
92
|
+
const [components, variables, styles, tokenConfig, compositions] = await Promise.all([
|
|
93
|
+
executePluginCommand(queue, "find_components", {
|
|
94
|
+
...(componentQuery ? { query: componentQuery } : {}),
|
|
95
|
+
...(componentPrefix ? { prefix: componentPrefix } : {}),
|
|
96
|
+
includeRemoteInstances: includeRemoteInstances === true,
|
|
97
|
+
includeProperties: true,
|
|
98
|
+
limit: componentLimit ?? 100,
|
|
99
|
+
}),
|
|
100
|
+
executePluginCommand(queue, "get_variables", {}),
|
|
101
|
+
executePluginCommand(queue, "get_local_styles", {}),
|
|
102
|
+
executePluginCommand(queue, "get_tokens_config", {}).catch((error) => ({ ok: false, error: String(error) })),
|
|
103
|
+
executePluginCommand(queue, "list_compositions", {}).catch((error) => ({ ok: false, error: String(error) })),
|
|
104
|
+
]);
|
|
105
|
+
const result = {
|
|
106
|
+
ok: true,
|
|
107
|
+
components,
|
|
108
|
+
variables,
|
|
109
|
+
styles,
|
|
110
|
+
tokenConfig,
|
|
111
|
+
compositions,
|
|
112
|
+
};
|
|
113
|
+
return ok(normalizeLargeDataResult("inspect_design_system", controls, result));
|
|
114
|
+
});
|
|
115
|
+
server.tool("validate_screen_spec", "READ-ONLY: validate Design DSL v1 before writing to Figma. Use this before build_screen/update_screen when an agent composed a screen spec from natural language.", { spec: designDslScreenSpecV1Zod }, async ({ spec }) => ok({ ok: true, dryRun: true, spec }));
|
|
116
|
+
server.tool("build_screen", "Build a real editable Figma screen using Design DSL v1. This is an agent-friendly wrapper over build_mockup; prefer it for natural-language screen/documentation requests after inspect_design_system + validate_screen_spec.", { spec: designDslScreenSpecV1Zod }, async ({ spec }) => callPluginWriteCommand(queue, "build_mockup", { ...spec }, {
|
|
117
|
+
okFalseErrorCode: "SXL_MOCKUP_WRITE_FAILED",
|
|
118
|
+
}));
|
|
119
|
+
server.tool("update_screen", "Update an existing Figma screen/frame with Design DSL v1 by appending/applying items to targetRootId. This avoids recreating the whole file and uses the same engine as build_mockup.", {
|
|
120
|
+
targetRootId: z.string().min(1),
|
|
121
|
+
spec: designDslUpdateScreenSpecV1Zod,
|
|
122
|
+
}, async ({ targetRootId, spec }) => callPluginWriteCommand(queue, "update_screen", { ...spec, targetRootId }, {
|
|
123
|
+
okFalseErrorCode: "SXL_MOCKUP_WRITE_FAILED",
|
|
124
|
+
}));
|
|
125
|
+
server.tool("find_components", "READ-ONLY (Phase D, mockup): paginated catalogue of local Figma COMPONENT / COMPONENT_SET nodes plus, optionally, library components instantiated in this file. Returns id, key, name, parent set, default variant, and componentPropertyDefinitions so the agent can build override payloads for build_mockup without round-tripping use_figma. Use this BEFORE build_mockup to discover correct ids/keys instead of guessing names.", findComponentsArgs, async (args) => callPluginCommand(queue, "find_components", { ...args }, { largeData: true }));
|
|
126
|
+
server.tool("build_mockup", "Phase D: assemble a Figma auto-layout mockup from a declarative item tree. Items: `instance` (component override + text + fill bindings), `section` (recursive auto-layout frame), `spacer` (rigid or stretchy), `text`. Component resolution: `componentId` (any) → `componentKey` (library import) → `componentName` (local exact match). Property overrides accept the human key (`size`, `variant`); the plugin maps to the internal `name#defId` suffix. `fillBindings` bind COLOR variables to SOLID paints (creates a SOLID if missing). Run with `dryRun: true` first to preview the resolved plan. NEVER hand-write use_figma scripts for this — read sxl://agent/recipes/mockup-builder.", buildMockupArgs, async (args) => callPluginWriteCommand(queue, "build_mockup", { ...args }, {
|
|
127
|
+
okFalseErrorCode: "SXL_MOCKUP_WRITE_FAILED",
|
|
128
|
+
}));
|
|
129
|
+
server.tool("apply_mockup_dataset", "Phase D: clone a template scene node once per row and apply row-specific overrides (properties, text, fill bindings). Use this when the user wants to render N cards / list rows from a structured dataset. `removeTemplate: true` deletes the original after cloning (handy when the template was a placeholder). `dryRun: true` previews without touching the canvas. Per-row failures are reported but never abort the run.", applyMockupDatasetArgs, async (args) => callPluginWriteCommand(queue, "apply_mockup_dataset", { ...args }, {
|
|
130
|
+
okFalseErrorCode: "SXL_MOCKUP_WRITE_FAILED",
|
|
131
|
+
}));
|
|
199
132
|
}
|
|
200
133
|
export const __test_only__ = {
|
|
201
134
|
mockupItemZod,
|
package/dist/tools/mockup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockup.js","sourceRoot":"","sources":["../../src/tools/mockup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"mockup.js","sourceRoot":"","sources":["../../src/tools/mockup.ts"],"names":[],"mappings":"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"}
|