better-design 0.31.0 → 0.31.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.
package/dist/index.js CHANGED
@@ -1185,6 +1185,238 @@ var init_advertised_schema = __esm({
1185
1185
  }
1186
1186
  });
1187
1187
 
1188
+ // ../shared/src/mcp/tool-names.ts
1189
+ function measurementToolFamilyV1(tool) {
1190
+ const current = MCP_TOOL_NAMES_V1.find((candidate) => candidate === tool);
1191
+ const renamed = MCP_TOOL_RENAMES_V1.find(([retired]) => retired === tool);
1192
+ const canonical = current ?? renamed?.[1];
1193
+ if (!canonical) return null;
1194
+ return Object.freeze([
1195
+ canonical,
1196
+ ...MCP_TOOL_RENAMES_V1.filter(
1197
+ ([, successor]) => successor === canonical
1198
+ ).map(([retired]) => retired)
1199
+ ]);
1200
+ }
1201
+ function measurementToolFamily(tool) {
1202
+ const current = MCP_TOOL_NAMES.find((candidate) => candidate === tool);
1203
+ const renamed = MCP_TOOL_RENAMES.find(([retired]) => retired === tool);
1204
+ const canonical = current ?? renamed?.[1];
1205
+ if (!canonical) return null;
1206
+ return [
1207
+ canonical,
1208
+ ...MCP_TOOL_RENAMES.filter(([, successor]) => successor === canonical).map(
1209
+ ([retired]) => retired
1210
+ )
1211
+ ];
1212
+ }
1213
+ function canonicalMcpToolName(tool) {
1214
+ return MCP_TRACE_TOOL_NAMES.find((registeredTool) => registeredTool === tool) ?? UNKNOWN_MCP_TOOL_NAME;
1215
+ }
1216
+ var MCP_TOOL_NAMES, MCP_TOOL_NAMES_V1, HISTORICAL_MCP_TOOL_NAMES, UNKNOWN_MCP_TOOL_NAME, MCP_TRACE_TOOL_NAMES, MCP_TOOL_RENAMES, MCP_TOOL_RENAMES_V1, MCP_MEASURABLE_TOOL_NAMES_V1, MCP_MEASURABLE_TOOL_NAMES;
1217
+ var init_tool_names = __esm({
1218
+ "../shared/src/mcp/tool-names.ts"() {
1219
+ "use strict";
1220
+ MCP_TOOL_NAMES = [
1221
+ "build-feature-map",
1222
+ "check-comprehension",
1223
+ "create-design-system",
1224
+ "create-figma-prototype",
1225
+ "detect-icon-library",
1226
+ "extract-design-system",
1227
+ "extract-from-url",
1228
+ "finalize-dashboard-review",
1229
+ "find-design-system",
1230
+ "find-icon-library",
1231
+ "find-icons",
1232
+ "get-design-config",
1233
+ "get-design-system-kit",
1234
+ "get-design-system-status",
1235
+ "get-jig-guide",
1236
+ "get-motion-guide",
1237
+ "get-react-native-guide",
1238
+ "get-review-rules",
1239
+ "get-sales-principle",
1240
+ "get-shopify-guide",
1241
+ "get-swiftui-guide",
1242
+ "get-team-rules",
1243
+ "get-three-js-guide",
1244
+ "get-ui-principle",
1245
+ "get-ux-principle",
1246
+ "get-widget-guide",
1247
+ "inspect-spacing",
1248
+ "install-icons",
1249
+ "preview-design-system",
1250
+ "read-feature-map",
1251
+ "review-dashboard-structure",
1252
+ "review-illustration",
1253
+ "review-ui-code",
1254
+ "set-design-config",
1255
+ "update-feature-map"
1256
+ ];
1257
+ MCP_TOOL_NAMES_V1 = Object.freeze([
1258
+ "build-feature-map",
1259
+ "check-comprehension",
1260
+ "create-design-system",
1261
+ "create-figma-prototype",
1262
+ "detect-icon-library",
1263
+ "extract-design-system",
1264
+ "extract-from-url",
1265
+ "finalize-dashboard-review",
1266
+ "find-design-system",
1267
+ "find-icon-library",
1268
+ "find-icons",
1269
+ "get-design-config",
1270
+ "get-design-system-kit",
1271
+ "get-design-system-status",
1272
+ "get-jig-guide",
1273
+ "get-motion-guide",
1274
+ "get-react-native-guide",
1275
+ "get-review-rules",
1276
+ "get-sales-principle",
1277
+ "get-shopify-guide",
1278
+ "get-swiftui-guide",
1279
+ "get-team-rules",
1280
+ "get-three-js-guide",
1281
+ "get-ui-principle",
1282
+ "get-ux-principle",
1283
+ "get-widget-guide",
1284
+ "inspect-spacing",
1285
+ "install-icons",
1286
+ "preview-design-system",
1287
+ "read-feature-map",
1288
+ "review-dashboard-structure",
1289
+ "review-illustration",
1290
+ "review-ui-code",
1291
+ "set-design-config",
1292
+ "update-feature-map"
1293
+ ]);
1294
+ HISTORICAL_MCP_TOOL_NAMES = [
1295
+ "build-ui-app",
1296
+ "check-design-system-status",
1297
+ "find-design",
1298
+ "get-design-system-docs",
1299
+ "get-design-system-html",
1300
+ "resolve-design-system",
1301
+ "resolve-icon-library",
1302
+ "search-icons"
1303
+ ];
1304
+ UNKNOWN_MCP_TOOL_NAME = "unknown-tool";
1305
+ MCP_TRACE_TOOL_NAMES = [
1306
+ ...MCP_TOOL_NAMES,
1307
+ ...HISTORICAL_MCP_TOOL_NAMES,
1308
+ UNKNOWN_MCP_TOOL_NAME
1309
+ ];
1310
+ MCP_TOOL_RENAMES = [
1311
+ ["find-design", "find-design-system"],
1312
+ ["resolve-design-system", "find-design-system"],
1313
+ ["check-design-system-status", "get-design-system-status"],
1314
+ ["resolve-icon-library", "find-icon-library"],
1315
+ ["search-icons", "find-icons"]
1316
+ ];
1317
+ MCP_TOOL_RENAMES_V1 = Object.freeze([
1318
+ Object.freeze(["find-design", "find-design-system"]),
1319
+ Object.freeze(["resolve-design-system", "find-design-system"]),
1320
+ Object.freeze([
1321
+ "check-design-system-status",
1322
+ "get-design-system-status"
1323
+ ]),
1324
+ Object.freeze(["resolve-icon-library", "find-icon-library"]),
1325
+ Object.freeze(["search-icons", "find-icons"])
1326
+ ]);
1327
+ MCP_MEASURABLE_TOOL_NAMES_V1 = Object.freeze([
1328
+ ...MCP_TOOL_NAMES_V1,
1329
+ ...MCP_TOOL_RENAMES_V1.map(([retired]) => retired)
1330
+ ]);
1331
+ MCP_MEASURABLE_TOOL_NAMES = [
1332
+ ...MCP_TOOL_NAMES,
1333
+ ...MCP_TOOL_RENAMES.map(([retired]) => retired)
1334
+ ];
1335
+ }
1336
+ });
1337
+
1338
+ // ../shared/src/mcp/directory-listing.ts
1339
+ import { z as z3 } from "zod";
1340
+ function directoryDescription(name) {
1341
+ const tool = MCP_TOOL_NAMES.find((known) => known === name);
1342
+ if (tool === void 0) {
1343
+ throw new Error(`Tool "${name}" is not in MCP_TOOL_NAMES, so it has no directory description.`);
1344
+ }
1345
+ return DIRECTORY_TOOL_DESCRIPTIONS[tool];
1346
+ }
1347
+ function withoutContextArg(schema) {
1348
+ const asksForContext = schema instanceof z3.ZodObject && schema.keyof().options.includes("context");
1349
+ return asksForContext ? schema.omit({ context: true }) : schema;
1350
+ }
1351
+ function declareDirectoryListing(server) {
1352
+ const register = server.registerTool.bind(server);
1353
+ const registerForDirectory = (name, config, handler) => register(
1354
+ name,
1355
+ {
1356
+ ...config,
1357
+ description: directoryDescription(name),
1358
+ inputSchema: withoutContextArg(config.inputSchema),
1359
+ // The directory reads the listing name from annotations.title, not the top-level title.
1360
+ annotations: { ...config.annotations, title: config.annotations?.title ?? config.title }
1361
+ },
1362
+ handler
1363
+ );
1364
+ server.registerTool = registerForDirectory;
1365
+ }
1366
+ var DIRECTORY_INSTRUCTIONS, DIRECTORY_TOOL_DESCRIPTIONS;
1367
+ var init_directory_listing = __esm({
1368
+ "../shared/src/mcp/directory-listing.ts"() {
1369
+ "use strict";
1370
+ init_tool_names();
1371
+ DIRECTORY_INSTRUCTIONS = `# Better Design
1372
+
1373
+ Better Design provides design systems, design principles and UI review checks for building interfaces.
1374
+
1375
+ - find-design-system searches the catalog. preview-design-system shows one system. get-design-system-kit returns its install command or CSS kit.
1376
+ - create-design-system generates a custom system. get-design-system-status reports its progress.
1377
+ - get-ui-principle, get-ux-principle and the platform guides return design principles and best practices on a topic.
1378
+ - get-review-rules, check-comprehension, inspect-spacing and review-dashboard-structure check finished interfaces.
1379
+ - find-icon-library, find-icons and install-icons return icon component files.`;
1380
+ DIRECTORY_TOOL_DESCRIPTIONS = {
1381
+ "get-ui-principle": "Returns Better Design's visual design principles on a topic: hierarchy, spacing and layout, typography, color, depth, images, accessibility, polish and animation. Pass `topic` for one principle, `query` to search by situation, or nothing for the index of topics. Use it when the user wants to know how an interface should look. `maxTokens` limits the length of the response.",
1382
+ "get-ux-principle": "Returns Better Design's UX principles on a topic: forms, navigation, notifications, errors, dialogs, search, onboarding, microcopy, positioning, commerce flows, behavior change and cognitive laws. Pass `topic` for one principle, `query` to search by situation, or nothing for the index of topics. Use it when the user wants to know how an interface should behave or what its copy should say. `maxTokens` limits the length of the response.",
1383
+ "get-sales-principle": "Returns Better Design's sales principles: handling objections, preparing a champion and mapping features to value. Pass `topic` for one principle, `query` to search by situation, or nothing for the index of topics. Use it when the user prepares a sales conversation or writes a sales asset.",
1384
+ "get-react-native-guide": "Returns best practices and TypeScript recipes for React Native and Expo apps: setup, components and styling, Expo Router, data and authentication, native UI, animation, notifications, EAS builds, testing and store submission. It includes the official Expo skills (MIT) under topics that start with `official-`. Pass `topic`, `query`, or nothing for the index of topics.",
1385
+ "get-three-js-guide": "Returns best practices and code recipes for Three.js and React Three Fiber scenes: fundamentals, materials, lights, models, particles, physics, performance, postprocessing, WebGPU, shaders and auditing an existing scene. Pass `topic`, `query`, or nothing for the index of topics.",
1386
+ "get-shopify-guide": "Returns Better Design's best practices for Shopify Liquid and Online Store 2.0 themes: theme architecture, Liquid objects and filters, section schema, localization, accessibility, performance and Theme Check validation, with links to Shopify's documentation. Pass `topic`, `query`, or nothing for the index of topics.",
1387
+ "get-motion-guide": "Returns best practices and components for building a product demo or promo video in code with Remotion: the brief, brand and motion tokens, format profiles, captions, pacing, rendering and review. `scaffold: true` returns a complete Remotion starter project. `component` returns one video component's source and install command, and no arguments lists the components. The components come from snapcn (MIT) through the Better Design registry.",
1388
+ "get-swiftui-guide": "Returns best practices and Swift examples for SwiftUI interfaces: layout and view composition, animation and gestures, Metal shader effects and the platform APIs they use. Pass `topic`, `query`, or nothing for the index of topics.",
1389
+ "get-review-rules": "Returns Better Design's review rules for UI code, each with a severity: accessibility (WCAG 2.1), visual design, animation, content, comprehension and AI features. Pass `category` for one group. Use it when the user wants UI code reviewed. `maxTokens` limits the length of the response.",
1390
+ "get-widget-guide": "Returns a build brief for an interactive widget on an article or landing page, such as a calculator, estimator, converter, quiz or checklist. Pass what is known about the widget. The response lists any details still missing, and once the details are complete it returns the brief with rules for calculation accuracy, form behavior, search visibility, performance and privacy.",
1391
+ "check-comprehension": "Checks interface copy for clarity with three tests: whether a person outside the team understands it, whether the screen can be explained in 15 seconds, and whether a screenshot alone says what the screen does. Pass the headline, body and action labels, or the markup. Returns each finding with a severity and a suggested fix. `knownTerms` lists words the audience already knows. Better Design runs the checks itself and calls no other API.",
1392
+ "review-dashboard-structure": "Reviews the source of a dashboard or overview page against a fixed rubric: complete source, unchanged data, supported claims, hierarchy, scan order and use of the installed Sidebar, StatCard and Table components. Pass the page source, the data fixture, its interpretation and the component sources. Returns PASS, or FAIL with every finding as a tool error.",
1393
+ "finalize-dashboard-review": "Captures a deployed dashboard at a public HTTPS URL in Better Design's own browser at 390, 1440 and 1728 pixels wide, compares it with the submitted source, data and components, and returns a receipt tied to that deployment. The receipt reports hierarchy, component, copy and spacing faults and any hidden data fields.",
1394
+ "find-icon-library": `Searches icon libraries by style, mood or use case, such as "minimal clean professional", and returns the closest matches with a note on each library's style.`,
1395
+ "find-icons": 'Searches one icon library for icons by concept and returns icon names that exist in that library. A single noun, such as "inbox", ranks best. `variant` lists the names that have that variant first. Takes a `libraryId` from find-icon-library.',
1396
+ "install-icons": "Fetches the named icons from the public Iconify API and returns one React component file per icon, plus an index.ts barrel, as text for the caller to save. It writes no files. Takes a `libraryId` and icon names from find-icons.",
1397
+ "detect-icon-library": "Reads the contents of the `.library.json` file that an earlier icon install left in a project and returns the icon library the project uses and the icons it has installed, or reports that none is recorded.",
1398
+ "find-design-system": "Searches Better Design's catalog of design systems by industry, personality or a description of the interface, and returns ranked matches with a preview link for each. Use it when the user wants a design system or a visual direction for an app, site, page, dashboard or presentation.",
1399
+ "get-design-system-kit": "Returns the build kit for a catalog design system or a generated project. `target` picks the format: `react` returns one shadcn install command for every component and the tokens, `html` returns framework-free token and component CSS for inline canvases, `react-native` and `swiftui` return mobile kits, `shopify` returns Liquid theme files, and `dtcg` returns a W3C Design Tokens document. `component` narrows the React install to one component.",
1400
+ "create-design-system": "Starts generating a custom design system from a description of the product and its look, and returns the project id and project URL at once. Generation runs in the background and typically takes 1 to 3 minutes. get-design-system-status reports progress and returns the install command when it finishes. `baseDesignSystemId` starts from a catalog system, and `brandCss` builds from an existing brand token sheet, such as the output of extract-design-system. Each call uses one credit from the user's Better Design account. Anyone with the registry or preview URL can view the generated source and previews.",
1401
+ "get-design-system-status": "Reports the progress of a design system started with create-design-system. While generation runs it returns the current stage. When generation finishes it returns the live preview URL and the `npx shadcn add` install command.",
1402
+ "preview-design-system": "Returns a visual preview of a catalog design system: its palette, typography, buttons, card, input and badge, with a link to the full live showcase. Takes an id from find-design-system.",
1403
+ "get-design-config": "Returns the design config saved on a generated project: exact color tokens, radius, fonts and icon library, including values the user tuned on the project page.",
1404
+ "set-design-config": "Saves exact design token values (colors, radius, fonts and icon library) onto a generated project, merged over its current config. The saved values replace the earlier ones, and anyone with the project's config URL can read them.",
1405
+ "get-jig-guide": "Returns setup code for a jig. Kind `tune-in-place` returns a control panel to wire to taste-based values in the interface being built, such as animation timing, gradients or shadows, so the user can tune them by eye. Kind `standalone-tool` returns the Toolcraft starter kit (MIT) for a reusable custom tool, such as a generator or a shader playground. `framework` picks React, vanilla JavaScript or React Native.",
1406
+ "extract-design-system": "Reads design tokens from CSS the caller passes in and returns the semantic palette, radius, fonts and shadow scale, with a token sheet that converts every color to `oklch()`. It accepts hex, rgb, hsl, named and oklch colors across `:root`, `.dark` and `@theme` blocks. `sources` merges several inputs, including a sample of computed styles from a live page. The server cannot read files, so the caller passes the text.",
1407
+ "extract-from-url": "Fetches a public web page, reads its stylesheets and renders it in a headless browser to sample the colors, fonts and radii of its body, headings, links, buttons, inputs and cards, then returns the brand as an oklch token sheet. It reads the page the way a browser does and calls no other API. A call takes about 10 to 45 seconds.",
1408
+ "review-illustration": "Renders an SVG illustration in a browser and returns its visible faults against Better Design's illustration principles, such as open shapes, floating parts, inconsistent light and contents outside their container. Pass the SVG and what it is meant to show. Pass the returned `reviewToken` back to review the same drawing again. SVG that carries scripts, event handlers or remote references is refused.",
1409
+ "inspect-spacing": "Measures spacing in a rendered interface from DOM geometry and returns the spacing faults with a correction for each. The first call returns a read-only capture script to run in the page. The second call takes the captured states, such as viewport widths or hover and focus states, and returns the measurements and findings.",
1410
+ "build-feature-map": "Drafts a map of a product's features and flows from its repository file list and returns it as JSON for .better-design/feature-map.json. Routes become screens, nested routes become flows, and components, API routes and hooks join the step they share a name with. Pass every path from `git ls-files` as `files`.",
1411
+ "read-feature-map": "Returns the flows in a feature map that match a flow name, a feature or a file path, with the screen, route, components and data files of every step. Pass the contents of .better-design/feature-map.json as `map`. With no filter it lists every flow.",
1412
+ "update-feature-map": "Applies one change to a feature map, such as adding, renaming or removing a feature, or setting, renaming or removing a flow, and returns the updated map.",
1413
+ "get-team-rules": "Returns the Markdown rules the user's Better Design team wrote for how their product is built and reviewed, or a note that the team has none yet.",
1414
+ "review-ui-code": "Reviews React component source and CSS and returns findings with line numbers and fixes: native elements that bypass the installed design system, undefined font variables, hardcoded colors and raw palette classes, generated-UI patterns, and WCAG faults such as missing alt text or accessible names. The same input always returns the same findings.",
1415
+ "create-figma-prototype": "Reads a frame from the Figma file that has the Better Design plugin open and returns it as one HTML page built from the design system's components, with a report of every layer that could not be mapped. Name a frame, or omit the name to use the current selection."
1416
+ };
1417
+ }
1418
+ });
1419
+
1188
1420
  // ../shared/src/mcp/presentation-runtime.ts
1189
1421
  var PRESENTATION_RUNTIME_RULE;
1190
1422
  var init_presentation_runtime = __esm({
@@ -1469,7 +1701,7 @@ var init_presentation = __esm({
1469
1701
  });
1470
1702
 
1471
1703
  // ../shared/src/mcp/selected-icon-handoff.ts
1472
- import { z as z3 } from "zod";
1704
+ import { z as z4 } from "zod";
1473
1705
  async function catalogKitIcons(metadata, provider) {
1474
1706
  if (CATALOG_ICON_LIBRARY_ASSIGNMENTS[metadata.id]) return resolveDesignSystemIcons({ id: metadata.id });
1475
1707
  if (!metadata.iconLibraryId) return void 0;
@@ -1505,11 +1737,11 @@ var init_selected_icon_handoff = __esm({
1505
1737
  "../shared/src/mcp/selected-icon-handoff.ts"() {
1506
1738
  "use strict";
1507
1739
  init_presentation();
1508
- selectedIconSchema = z3.object({
1509
- id: z3.string().min(1),
1510
- name: z3.string().min(1).optional(),
1511
- prefix: z3.string().min(1),
1512
- variant: z3.string().min(1)
1740
+ selectedIconSchema = z4.object({
1741
+ id: z4.string().min(1),
1742
+ name: z4.string().min(1).optional(),
1743
+ prefix: z4.string().min(1),
1744
+ variant: z4.string().min(1)
1513
1745
  });
1514
1746
  }
1515
1747
  });
@@ -1622,7 +1854,7 @@ var init_session_guidance = __esm({
1622
1854
 
1623
1855
  // ../shared/src/mcp/tools/shared.ts
1624
1856
  import { createHash } from "crypto";
1625
- import { z as z4 } from "zod";
1857
+ import { z as z5 } from "zod";
1626
1858
  function mcpClientName(server) {
1627
1859
  try {
1628
1860
  return server.server.getClientVersion?.()?.name || void 0;
@@ -1643,33 +1875,33 @@ function buildKitOutputSchema(enableShopifyKit = true) {
1643
1875
  const base = PREVIEW_OUTPUT_SCHEMA.extend({
1644
1876
  buildInstructions: BUILD_INSTRUCTIONS_FIELD,
1645
1877
  iconLibrary: selectedIconSchema.optional().describe("The design system's existing icon family and variant. Reuse it; do not select another pack."),
1646
- iconSelectionStatus: z4.enum(["selected", "unverified"]).optional().describe("Selected means identity is known, not that rendered icon use was reviewed."),
1647
- iconInstructions: z4.string().optional().describe("Instructions for exact selected-icon lookup, or an explicit missing-selection warning."),
1648
- requiredWrapperClass: z4.literal("ds").optional().describe(`${shared} The artifact or snippet root must retain this class exactly.`),
1649
- requiredComponentClassPrefix: z4.literal("ds-").optional().describe(`${shared} Interactive components must retain classes with this prefix; never rename it.`),
1650
- customCssScope: z4.literal("layout-only").optional().describe(`${shared} Custom classes may arrange layout but must not replace kit component styling.`),
1651
- hoverPolicy: z4.string().min(1).optional().describe(`${shared} Mandatory pointer-safe hover contract to verify before presenting.`),
1652
- hostIsolationCssTemplate: z4.string().min(1).optional().describe("HTML target only. Replace APP_ROOT with the artifact root selector and paste after host/base CSS so semantic text cannot inherit the host's light/dark colors."),
1653
- minimumTextContrast: z4.literal("4.5:1").optional().describe(`${shared} Minimum contrast for normal visible text against its computed background.`),
1654
- textColorPolicy: z4.string().min(1).optional().describe(`${shared} Mandatory semantic foreground-token contract; surface tokens and opacity must not be used to mute text.`),
1655
- hierarchyPolicy: z4.string().min(1).optional().describe("HTML target only. Mandatory first-view hierarchy, progressive-disclosure, and information-budget contract."),
1656
- compositionPolicy: z4.string().min(1).optional().describe("HTML target only. Mandatory layout-density and container-restraint policy."),
1657
- componentCss: z4.string().min(1).optional().describe("HTML target only. Paste this token-driven ds-* component stylesheet verbatim."),
1658
- componentMaterialCss: z4.string().optional().describe("HTML target only. Paste this design-system-specific material override after componentCss."),
1659
- componentExampleHtml: z4.string().min(1).optional().describe("HTML target only. Starter markup that demonstrates the required .ds wrapper and ds-* component classes."),
1660
- tokensJson: z4.string().min(1).optional().describe("DTCG target only. The design tokens as a W3C Design Tokens (DTCG) document. Write it to tokens.json; every token tool reads this format, including Style Dictionary, Tokens Studio, Terrazzo, and the Figma plugins that create variables."),
1661
- nativeFiles: z4.array(z4.object({ path: z4.string().min(1), content: z4.string().min(1) })).optional().describe("React Native and SwiftUI targets only. Write each file verbatim at its path: this system's stored theme and material, and the primitives that read it."),
1662
- unsupportedTokens: z4.array(z4.object({
1663
- name: z4.string().min(1),
1664
- value: z4.string().min(1),
1665
- mode: z4.enum(["light", "dark"])
1878
+ iconSelectionStatus: z5.enum(["selected", "unverified"]).optional().describe("Selected means identity is known, not that rendered icon use was reviewed."),
1879
+ iconInstructions: z5.string().optional().describe("Instructions for exact selected-icon lookup, or an explicit missing-selection warning."),
1880
+ requiredWrapperClass: z5.literal("ds").optional().describe(`${shared} The artifact or snippet root must retain this class exactly.`),
1881
+ requiredComponentClassPrefix: z5.literal("ds-").optional().describe(`${shared} Interactive components must retain classes with this prefix; never rename it.`),
1882
+ customCssScope: z5.literal("layout-only").optional().describe(`${shared} Custom classes may arrange layout but must not replace kit component styling.`),
1883
+ hoverPolicy: z5.string().min(1).optional().describe(`${shared} Mandatory pointer-safe hover contract to verify before presenting.`),
1884
+ hostIsolationCssTemplate: z5.string().min(1).optional().describe("HTML target only. Replace APP_ROOT with the artifact root selector and paste after host/base CSS so semantic text cannot inherit the host's light/dark colors."),
1885
+ minimumTextContrast: z5.literal("4.5:1").optional().describe(`${shared} Minimum contrast for normal visible text against its computed background.`),
1886
+ textColorPolicy: z5.string().min(1).optional().describe(`${shared} Mandatory semantic foreground-token contract; surface tokens and opacity must not be used to mute text.`),
1887
+ hierarchyPolicy: z5.string().min(1).optional().describe("HTML target only. Mandatory first-view hierarchy, progressive-disclosure, and information-budget contract."),
1888
+ compositionPolicy: z5.string().min(1).optional().describe("HTML target only. Mandatory layout-density and container-restraint policy."),
1889
+ componentCss: z5.string().min(1).optional().describe("HTML target only. Paste this token-driven ds-* component stylesheet verbatim."),
1890
+ componentMaterialCss: z5.string().optional().describe("HTML target only. Paste this design-system-specific material override after componentCss."),
1891
+ componentExampleHtml: z5.string().min(1).optional().describe("HTML target only. Starter markup that demonstrates the required .ds wrapper and ds-* component classes."),
1892
+ tokensJson: z5.string().min(1).optional().describe("DTCG target only. The design tokens as a W3C Design Tokens (DTCG) document. Write it to tokens.json; every token tool reads this format, including Style Dictionary, Tokens Studio, Terrazzo, and the Figma plugins that create variables."),
1893
+ nativeFiles: z5.array(z5.object({ path: z5.string().min(1), content: z5.string().min(1) })).optional().describe("React Native and SwiftUI targets only. Write each file verbatim at its path: this system's stored theme and material, and the primitives that read it."),
1894
+ unsupportedTokens: z5.array(z5.object({
1895
+ name: z5.string().min(1),
1896
+ value: z5.string().min(1),
1897
+ mode: z5.enum(["light", "dark"])
1666
1898
  })).optional().describe("React Native and SwiftUI targets only. Tokens that need a browser to resolve, a calc(), a var(), or a relative oklch(), so they carry no native value. Set them by hand if the screen needs them. A token whose mode is dark matters more: the dark palette inherits the light value for any key it does not set, so a dropped dark override reads as the light colour on a dark screen.")
1667
1899
  });
1668
1900
  if (!enableShopifyKit) return base;
1669
1901
  return base.extend({
1670
- supportedInstallationScope: z4.literal("full-storefront-only").optional().describe("Shopify full kit is not page-scoped. Withhold installation for a page-only task until isolated files and styles exist."),
1671
- iconMaterialStatus: z4.enum(["current", "legacy-unverified"]).optional().describe("Shopify stored glyph metadata is current, or legacy and unverified. This is not rendered review evidence."),
1672
- themeFiles: z4.array(z4.object({ path: z4.string().min(1), content: z4.string().min(1) })).optional().describe("Shopify target only. Theme files to write verbatim at each path: the per-system CSS asset, the Liquid snippets, and the theme editor sections.")
1902
+ supportedInstallationScope: z5.literal("full-storefront-only").optional().describe("Shopify full kit is not page-scoped. Withhold installation for a page-only task until isolated files and styles exist."),
1903
+ iconMaterialStatus: z5.enum(["current", "legacy-unverified"]).optional().describe("Shopify stored glyph metadata is current, or legacy and unverified. This is not rendered review evidence."),
1904
+ themeFiles: z5.array(z5.object({ path: z5.string().min(1), content: z5.string().min(1) })).optional().describe("Shopify target only. Theme files to write verbatim at each path: the per-system CSS asset, the Liquid snippets, and the theme editor sections.")
1673
1905
  });
1674
1906
  }
1675
1907
  async function loadSessionGuidance(provider, userId, clientName, now = Date.now()) {
@@ -1882,21 +2114,21 @@ Composition is also pass/fail. Keep one visible identity block per level and siz
1882
2114
 
1883
2115
  The UI copy inside the screen follows the same restraint: short headlines (about 6 words), supporting lines about 15 words and at most one per section, no filler adjectives, no exclamation marks, and no emoji as icons. Every visible text fragment needs one job: context, outcome, next action, real doubt, or legal/security. Do not add template footer, provenance, helper, or slogan copy. If deletion does not hurt meaning, action clarity, safety, compliance, or tone, keep it deleted. Never place an eyebrow, kicker, category, or status label immediately above an \`h1\`, \`h2\`, or \`h3\`; start with the title and put essential context in the supporting line or after the title. Avoid the template shapes (gradient hero with an uppercase eyebrow pill, centered three-card feature grid, left-border callout boxes) unless the user asks. After writing the UI, call \`get-review-rules\`. For dashboards, run \`review-dashboard-structure\`, \`check-comprehension\`, and \`inspect-spacing\`, deploy the exact source to a public HTTPS preview, then call \`finalize-dashboard-review\` with its URL, the exact source, installed component source, and unchanged fixture. Better Design captures the PNG, visible text, and measured DOM itself at 390, 1440, and 1728, then content-addresses the live deployment. A missing trusted capture, invalid deployment revision, invalid geometry, or hidden fixture field means incomplete. Only a VALID final receipt permits presentation; any later source or deployment edit voids it. For other UI, fix every critical or serious review, comprehension, and spacing finding before presenting. Screenshot desktop and mobile and squint-test each viewport; on a commerce or product page, only the product image, price, and primary CTA may dominate.`;
1884
2116
  CODING_HOST_RE = /claude[- ]?code|cursor|windsurf|devin|antigravity|cline|continue|codeium|codex|zed|vs[- ]?code|vscode|jetbrains|intellij|webstorm|pycharm|goland|rider|neovim|nvim/i;
1885
- PREVIEW_OUTPUT_SCHEMA = z4.object({
1886
- status: z4.string().describe("completed | error | pending | generating | selected"),
1887
- name: z4.string().describe("Display name of the design system or project."),
1888
- viewUrl: z4.string().optional().describe("Owner-facing Better Design page (the human 'Open' link). May require login."),
1889
- previewUrl: z4.string().optional().describe("Public, cookieless showcase URL used to generate preview assets. Falls back to viewUrl."),
1890
- shotUrl: z4.string().optional().describe("Real screenshot of the showcase page for the self-contained preview widget."),
1891
- installCommand: z4.string().optional().describe("shadcn install command, when complete."),
1892
- installLibrary: z4.enum(["base-ui", "radix", "mixed"]).optional().describe("Actual component library flavor installed by installCommand."),
1893
- installNote: z4.string().optional().describe("Important install flavor or fallback note for clients that read only structuredContent."),
1894
- step: z4.string().optional().describe("Current generation step, while generating."),
1895
- tokensCss: z4.string().describe("CSS custom-property stylesheet for the system's tokens.")
2117
+ PREVIEW_OUTPUT_SCHEMA = z5.object({
2118
+ status: z5.string().describe("completed | error | pending | generating | selected"),
2119
+ name: z5.string().describe("Display name of the design system or project."),
2120
+ viewUrl: z5.string().optional().describe("Owner-facing Better Design page (the human 'Open' link). May require login."),
2121
+ previewUrl: z5.string().optional().describe("Public, cookieless showcase URL used to generate preview assets. Falls back to viewUrl."),
2122
+ shotUrl: z5.string().optional().describe("Real screenshot of the showcase page for the self-contained preview widget."),
2123
+ installCommand: z5.string().optional().describe("shadcn install command, when complete."),
2124
+ installLibrary: z5.enum(["base-ui", "radix", "mixed"]).optional().describe("Actual component library flavor installed by installCommand."),
2125
+ installNote: z5.string().optional().describe("Important install flavor or fallback note for clients that read only structuredContent."),
2126
+ step: z5.string().optional().describe("Current generation step, while generating."),
2127
+ tokensCss: z5.string().describe("CSS custom-property stylesheet for the system's tokens.")
1896
2128
  });
1897
- BUILD_INSTRUCTIONS_FIELD = z4.string().min(1).optional().describe("Required design-choice guidance and any target-specific build/review steps for clients that read only structuredContent.");
2129
+ BUILD_INSTRUCTIONS_FIELD = z5.string().min(1).optional().describe("Required design-choice guidance and any target-specific build/review steps for clients that read only structuredContent.");
1898
2130
  BUILD_KIT_OUTPUT_SCHEMA = buildKitOutputSchema();
1899
- CONTEXT_ARG = z4.string().max(280).optional().describe(
2131
+ CONTEXT_ARG = z5.string().max(280).optional().describe(
1900
2132
  "Optional. One sentence on WHY you are calling this and what the user asked for (e.g. 'adding nav icons for the fintech dashboard'). Used only for usage analytics; does not change the result."
1901
2133
  );
1902
2134
  READ_ONLY_TOOL_ANNOTATIONS = {
@@ -4025,36 +4257,6 @@ var init_topic_utils = __esm({
4025
4257
  }
4026
4258
  });
4027
4259
 
4028
- // ../shared/src/foundational-docs/public-paths.ts
4029
- function isExcludedPublicPrincipleSource(sourceFile) {
4030
- return sourceFile?.startsWith(EXCLUDED_PUBLIC_PRINCIPLE_SOURCE_PREFIX) ?? false;
4031
- }
4032
- function hasPublicPrinciplePage(sourceFile) {
4033
- return Boolean(sourceFile) && !isExcludedPublicPrincipleSource(sourceFile);
4034
- }
4035
- function principleAreaPath(area) {
4036
- return `${PRINCIPLES_PATH}/${area}`;
4037
- }
4038
- function principlePath(area, topic) {
4039
- return `${principleAreaPath(area)}/${topic}`;
4040
- }
4041
- function principleReferralUrl(origin, area, topic) {
4042
- const path6 = topic ? principlePath(area, topic) : principleAreaPath(area);
4043
- return `${origin.replace(/\/$/, "")}${path6}?ref=mcp`;
4044
- }
4045
- function reviewRulesReferralUrl(origin) {
4046
- return `${origin.replace(/\/$/, "")}${REVIEW_RULES_PATH}?ref=mcp`;
4047
- }
4048
- var PRINCIPLES_PATH, REVIEW_RULES_PATH, EXCLUDED_PUBLIC_PRINCIPLE_SOURCE_PREFIX;
4049
- var init_public_paths = __esm({
4050
- "../shared/src/foundational-docs/public-paths.ts"() {
4051
- "use strict";
4052
- PRINCIPLES_PATH = "/principles";
4053
- REVIEW_RULES_PATH = `${PRINCIPLES_PATH}/review`;
4054
- EXCLUDED_PUBLIC_PRINCIPLE_SOURCE_PREFIX = "docs/react-native/expo-skills/";
4055
- }
4056
- });
4057
-
4058
4260
  // ../shared/src/mcp/tools/review-rules-description.ts
4059
4261
  var REVIEW_RULE_CATEGORIES, REVIEW_RULES_DESCRIPTION;
4060
4262
  var init_review_rules_description = __esm({
@@ -4121,7 +4323,7 @@ Use maxTokens to limit rule content (recommended: 5000\u201310000). Required wor
4121
4323
  });
4122
4324
 
4123
4325
  // ../shared/src/mcp/tools/team-rules-tools.ts
4124
- import { z as z5 } from "zod";
4326
+ import { z as z6 } from "zod";
4125
4327
  async function loadTeamRules(provider, userId) {
4126
4328
  if (!provider.getTeamRules) return "";
4127
4329
  let timer;
@@ -4160,7 +4362,7 @@ function registerTeamRulesTools({ server, provider, track, userId }) {
4160
4362
  description: `Read the rules this account's team wrote for how agents should build and review their product. Call it at the start of a task, then follow the rules in everything you build. get-review-rules already checks work against them.
4161
4363
 
4162
4364
  Returns the team's own Markdown document, or a note that the team has none yet.`,
4163
- inputSchema: z5.object({ context: CONTEXT_ARG }),
4365
+ inputSchema: z6.object({ context: CONTEXT_ARG }),
4164
4366
  annotations: READ_ONLY_TOOL_ANNOTATIONS
4165
4367
  },
4166
4368
  async ({ context }) => {
@@ -4196,35 +4398,12 @@ This account has no team rules yet. Paste them at ${APP_BASE_URL}/dashboard/sett
4196
4398
  });
4197
4399
 
4198
4400
  // ../shared/src/mcp/tools/principle-tools.ts
4199
- import { z as z6 } from "zod";
4401
+ import { z as z7 } from "zod";
4200
4402
  function principleTopic(principle) {
4201
4403
  return principle.topic ?? principle.id.replace("principle-", "");
4202
4404
  }
4203
- function principlePageUrl(area, topic) {
4204
- return principleReferralUrl(APP_BASE_URL, area, topic);
4205
- }
4206
- function publishedPrinciplePageUrl(area, principle) {
4207
- return hasPublicPrinciplePage(principle.sourceFile) ? principlePageUrl(area, principle.topic) : principlePageUrl(area);
4208
- }
4209
- function principleLinkFooter(lines) {
4210
- const uniqueLines = [...new Set(lines)];
4211
- return `
4212
-
4213
- ---
4214
-
4215
- ${uniqueLines.map((line2) => `Full principle: ${line2}`).join("\n")}`;
4216
- }
4217
- function principleErrorResponse(message, area) {
4218
- return {
4219
- content: [{
4220
- type: "text",
4221
- text: `Error: ${message}${principleLinkFooter([principlePageUrl(area)])}`
4222
- }]
4223
- };
4224
- }
4225
- function withoutPrincipleFooter(text3) {
4226
- const footerIndex = text3.lastIndexOf(PRINCIPLE_FOOTER_SEPARATOR);
4227
- return footerIndex < 0 ? text3 : text3.slice(0, footerIndex).trimEnd();
4405
+ function principleErrorResponse(message) {
4406
+ return { content: [{ type: "text", text: `Error: ${message}` }] };
4228
4407
  }
4229
4408
  function formatSearchResultContent(content) {
4230
4409
  if (content.length <= SEARCH_RESULT_PREVIEW_CHARS) return content;
@@ -4297,24 +4476,18 @@ function appendReviewNudge(response, session2) {
4297
4476
  if (!nudge) return response;
4298
4477
  const [first, ...rest] = response.content;
4299
4478
  if (!first) return response;
4300
- const footerIndex = first.text.lastIndexOf(PRINCIPLE_FOOTER_SEPARATOR);
4301
- const text3 = footerIndex < 0 ? `${first.text}
4302
-
4303
- ${nudge}` : `${first.text.slice(0, footerIndex)}
4304
-
4305
- ${nudge}${first.text.slice(footerIndex)}`;
4306
4479
  return {
4307
4480
  ...response,
4308
- content: [{ ...first, text: text3 }, ...rest]
4481
+ content: [{ ...first, text: `${first.text}
4482
+
4483
+ ${nudge}` }, ...rest]
4309
4484
  };
4310
4485
  }
4311
4486
  async function runPrincipleTool(provider, area, label, toolName, args) {
4312
4487
  const { topic, query, maxTokens } = args;
4313
4488
  const resourceLabel = GUIDE_AREAS.has(area) ? "Guides" : "Principles";
4314
- const finish = (text3, capture, links = [principlePageUrl(area)]) => ({
4315
- response: {
4316
- content: [{ type: "text", text: `${text3}${principleLinkFooter(links)}` }]
4317
- },
4489
+ const finish = (text3, capture) => ({
4490
+ response: { content: [{ type: "text", text: text3 }] },
4318
4491
  capture
4319
4492
  });
4320
4493
  if (topic && query) {
@@ -4345,8 +4518,7 @@ ${principle.content}`;
4345
4518
  text3,
4346
4519
  // Normalize aliases to their canonical topic so analytics and scrape
4347
4520
  // coverage count one resource no matter which supported name was used.
4348
- { topic: principle.topic ?? topic, topResults: [{ id: principle.id }] },
4349
- [publishedPrinciplePageUrl(area, principle)]
4521
+ { topic: principle.topic ?? topic, topResults: [{ id: principle.id }] }
4350
4522
  );
4351
4523
  }
4352
4524
  if (query) {
@@ -4367,8 +4539,7 @@ ${formatSearchResultContent(result.content)}`
4367
4539
 
4368
4540
  ${formatted}`;
4369
4541
  if (maxTokens) text3 = truncateToTokens(text3, maxTokens);
4370
- const links = results.map((result) => publishedPrinciplePageUrl(result.area ?? area, result));
4371
- return finish(text3, { query, topResults }, links);
4542
+ return finish(text3, { query, topResults });
4372
4543
  }
4373
4544
  const principles = await provider.listPrinciples(area);
4374
4545
  if (principles.length === 0) {
@@ -4409,10 +4580,10 @@ You can either:
4409
4580
  3. Get index of all principles: get-ui-principle({})
4410
4581
 
4411
4582
  Use maxTokens to keep responses focused (recommended: 5000\u201310000).`,
4412
- inputSchema: z6.object({
4413
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific UI topic or alias to load, e.g. spacing, gestalt, hierarchy, blur test, accessibility, color, depth, animation, product-pages, product-imagery."),
4414
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language search query to find relevant principles."),
4415
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4583
+ inputSchema: z7.object({
4584
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific UI topic or alias to load, e.g. spacing, gestalt, hierarchy, blur test, accessibility, color, depth, animation, product-pages, product-imagery."),
4585
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language search query to find relevant principles."),
4586
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4416
4587
  context: CONTEXT_ARG
4417
4588
  }),
4418
4589
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4428,7 +4599,7 @@ Use maxTokens to keep responses focused (recommended: 5000\u201310000).`,
4428
4599
  "get-ui-principle",
4429
4600
  { query, topic, topResults: [], context },
4430
4601
  start,
4431
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "ui"),
4602
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4432
4603
  true,
4433
4604
  error instanceof Error ? error.message : String(error)
4434
4605
  );
@@ -4450,10 +4621,10 @@ You can either:
4450
4621
  4. Get index of all UX principles: get-ux-principle({})
4451
4622
 
4452
4623
  Use maxTokens to keep responses focused (recommended: 5000\u201310000).`,
4453
- inputSchema: z6.object({
4454
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific UX topic or alias to load, e.g. forms, navigation, microcopy, positioning, value proposition, reward design, behavior-change, clarity audit, motion brief, design-process, cognitive-laws, psychology, commerce-catalog, commerce-checkout, brand-in-sparse-interfaces."),
4455
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language search query to find relevant UX principles."),
4456
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4624
+ inputSchema: z7.object({
4625
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific UX topic or alias to load, e.g. forms, navigation, microcopy, positioning, value proposition, reward design, behavior-change, clarity audit, motion brief, design-process, cognitive-laws, psychology, commerce-catalog, commerce-checkout, brand-in-sparse-interfaces."),
4626
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language search query to find relevant UX principles."),
4627
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4457
4628
  context: CONTEXT_ARG
4458
4629
  }),
4459
4630
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4469,7 +4640,7 @@ Use maxTokens to keep responses focused (recommended: 5000\u201310000).`,
4469
4640
  "get-ux-principle",
4470
4641
  { query, topic, topResults: [], context },
4471
4642
  start,
4472
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "ux"),
4643
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4473
4644
  true,
4474
4645
  error instanceof Error ? error.message : String(error)
4475
4646
  );
@@ -4490,10 +4661,10 @@ You can either:
4490
4661
  3. Get the index of all sales principles: get-sales-principle({})
4491
4662
 
4492
4663
  Use maxTokens to keep responses focused (recommended: 5000\u201310000).`,
4493
- inputSchema: z6.object({
4494
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific sales topic or alias, e.g. sales-principles, ACERS, objection handling, champion enablement, or feature value."),
4495
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language description of the sales conversation, objection, or asset."),
4496
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4664
+ inputSchema: z7.object({
4665
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific sales topic or alias, e.g. sales-principles, ACERS, objection handling, champion enablement, or feature value."),
4666
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language description of the sales conversation, objection, or asset."),
4667
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4497
4668
  context: CONTEXT_ARG
4498
4669
  }),
4499
4670
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4521,7 +4692,7 @@ Use maxTokens to keep responses focused (recommended: 5000\u201310000).`,
4521
4692
  "get-sales-principle",
4522
4693
  { query, topic, topResults: [], context },
4523
4694
  start,
4524
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "sales"),
4695
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4525
4696
  true,
4526
4697
  error instanceof Error ? error.message : String(error)
4527
4698
  );
@@ -4548,10 +4719,10 @@ You can either:
4548
4719
  4. Get the full topic index: get-react-native-guide({})
4549
4720
 
4550
4721
  Prefer query search when you do not know the topic name. Use maxTokens to keep responses focused (recommended: 5000\u201310000).`,
4551
- inputSchema: z6.object({
4552
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific React Native topic or alias, e.g. auth-session-recipes, chat-component-recipes, development-builds, official-expo-native-ui, official-eas-app-stores."),
4553
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language description of the React Native task or problem."),
4554
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4722
+ inputSchema: z7.object({
4723
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific React Native topic or alias, e.g. auth-session-recipes, chat-component-recipes, development-builds, official-expo-native-ui, official-eas-app-stores."),
4724
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language description of the React Native task or problem."),
4725
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4555
4726
  context: CONTEXT_ARG
4556
4727
  }),
4557
4728
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4581,7 +4752,7 @@ Prefer query search when you do not know the topic name. Use maxTokens to keep r
4581
4752
  "get-react-native-guide",
4582
4753
  { query, topic, topResults: [], context },
4583
4754
  start,
4584
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "react-native"),
4755
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4585
4756
  true,
4586
4757
  error instanceof Error ? error.message : String(error)
4587
4758
  );
@@ -4608,10 +4779,10 @@ You can either:
4608
4779
  5. Get the full topic index: get-three-js-guide({})
4609
4780
 
4610
4781
  Prefer query search when you do not know the topic name. Use maxTokens to keep responses focused (recommended: 5000-10000).`,
4611
- inputSchema: z6.object({
4612
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific Three.js topic or alias, e.g. fundamentals, shader-effects-recipes, drei-catalog, webgpu-and-tsl."),
4613
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language description of the Three.js or React Three Fiber task or problem."),
4614
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4782
+ inputSchema: z7.object({
4783
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific Three.js topic or alias, e.g. fundamentals, shader-effects-recipes, drei-catalog, webgpu-and-tsl."),
4784
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language description of the Three.js or React Three Fiber task or problem."),
4785
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4615
4786
  context: CONTEXT_ARG
4616
4787
  }),
4617
4788
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4641,7 +4812,7 @@ Prefer query search when you do not know the topic name. Use maxTokens to keep r
4641
4812
  "get-three-js-guide",
4642
4813
  { query, topic, topResults: [], context },
4643
4814
  start,
4644
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "three-js"),
4815
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4645
4816
  true,
4646
4817
  error instanceof Error ? error.message : String(error)
4647
4818
  );
@@ -4665,10 +4836,10 @@ You can either:
4665
4836
  4. Get the full topic index: get-shopify-guide({})
4666
4837
 
4667
4838
  Prefer query search when you do not know the topic name. Run Shopify Theme Check after writing files. Use maxTokens to keep responses focused (recommended: 5000-10000).`,
4668
- inputSchema: z6.object({
4669
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific Shopify topic or alias, e.g. shopify-theme-architecture, shopify-liquid-language, shopify-sales-page, section-schema, localization, or theme-check."),
4670
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language description of the Shopify theme task, API, or validation error."),
4671
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4839
+ inputSchema: z7.object({
4840
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific Shopify topic or alias, e.g. shopify-theme-architecture, shopify-liquid-language, shopify-sales-page, section-schema, localization, or theme-check."),
4841
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language description of the Shopify theme task, API, or validation error."),
4842
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4672
4843
  context: CONTEXT_ARG
4673
4844
  }),
4674
4845
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4698,7 +4869,7 @@ Prefer query search when you do not know the topic name. Run Shopify Theme Check
4698
4869
  "get-shopify-guide",
4699
4870
  { query, topic, topResults: [], context },
4700
4871
  start,
4701
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "shopify"),
4872
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4702
4873
  true,
4703
4874
  error instanceof Error ? error.message : String(error)
4704
4875
  );
@@ -4733,12 +4904,12 @@ You can either:
4733
4904
  6. Get the full topic and component index: get-motion-guide({})
4734
4905
 
4735
4906
  Prefer query search when you do not know the topic name. Use maxTokens to keep responses focused (recommended: 5000-10000).`,
4736
- inputSchema: z6.object({
4737
- scaffold: z6.boolean().optional().describe("Return a complete brand-aware Remotion product-demo project, as files to write. Start here when building a video."),
4738
- component: z6.string().trim().min(1).max(80).optional().describe("A video component name, e.g. answer-stream, prompt-zoom, terminal-simulator, phone-frame, laptop-frame, text-reveal, word-captions, logo-assemble, follower-rush. Returns its source files, prop defaults, natural length and install command."),
4739
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific motion topic or alias, e.g. video-design-system, product-demo-brief, formats-and-safe-areas, product-interactions, captions-and-accessibility, remotion-resources, video-components, verifying-a-render."),
4740
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language description of the video or animation task or problem."),
4741
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return for guidance and the index. Truncates content to fit. Recommended: 5000-10000. Ignored by scaffold and component, which always return whole files."),
4907
+ inputSchema: z7.object({
4908
+ scaffold: z7.boolean().optional().describe("Return a complete brand-aware Remotion product-demo project, as files to write. Start here when building a video."),
4909
+ component: z7.string().trim().min(1).max(80).optional().describe("A video component name, e.g. answer-stream, prompt-zoom, terminal-simulator, phone-frame, laptop-frame, text-reveal, word-captions, logo-assemble, follower-rush. Returns its source files, prop defaults, natural length and install command."),
4910
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific motion topic or alias, e.g. video-design-system, product-demo-brief, formats-and-safe-areas, product-interactions, captions-and-accessibility, remotion-resources, video-components, verifying-a-render."),
4911
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language description of the video or animation task or problem."),
4912
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return for guidance and the index. Truncates content to fit. Recommended: 5000-10000. Ignored by scaffold and component, which always return whole files."),
4742
4913
  context: CONTEXT_ARG
4743
4914
  }),
4744
4915
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4763,7 +4934,7 @@ This call also passed ${skipped.join(" and ")}. Only component was answered. Cal
4763
4934
  {
4764
4935
  content: [{
4765
4936
  type: "text",
4766
- text: `${text3}${principleLinkFooter([principlePageUrl("motion")])}`
4937
+ text: text3
4767
4938
  }]
4768
4939
  }
4769
4940
  );
@@ -4786,7 +4957,7 @@ ${file.contents}`
4786
4957
 
4787
4958
  ${MOTION_SCAFFOLD_STEPS}
4788
4959
 
4789
- ${files}${principleLinkFooter([principlePageUrl("motion")])}`
4960
+ ${files}`
4790
4961
  }
4791
4962
  ]
4792
4963
  }
@@ -4803,10 +4974,10 @@ ${files}${principleLinkFooter([principlePageUrl("motion")])}`
4803
4974
  { topic, query, maxTokens }
4804
4975
  );
4805
4976
  if (!topic && !query) {
4806
- const joined = response.content.map((block) => withoutPrincipleFooter(block.text)).concat(formatVideoComponentIndex()).join("\n\n");
4977
+ const joined = response.content.map((block) => block.text).concat(formatVideoComponentIndex()).join("\n\n");
4807
4978
  response.content = [{
4808
4979
  type: "text",
4809
- text: `${fitTokens(joined, maxTokens)}${principleLinkFooter([principlePageUrl("motion")])}`
4980
+ text: fitTokens(joined, maxTokens)
4810
4981
  }];
4811
4982
  }
4812
4983
  return trackSearch(track, "get-motion-guide", { ...capture, context }, start, response);
@@ -4816,7 +4987,7 @@ ${files}${principleLinkFooter([principlePageUrl("motion")])}`
4816
4987
  "get-motion-guide",
4817
4988
  { query, topic, topResults: [], context },
4818
4989
  start,
4819
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "motion"),
4990
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4820
4991
  true,
4821
4992
  error instanceof Error ? error.message : String(error)
4822
4993
  );
@@ -4840,10 +5011,10 @@ You can either:
4840
5011
  4. Get the full topic index: get-swiftui-guide({})
4841
5012
 
4842
5013
  Prefer query search when you do not know the topic name. Use maxTokens to keep responses focused (recommended: 5000-10000).`,
4843
- inputSchema: z6.object({
4844
- topic: z6.string().trim().min(1).max(120).optional().describe("Specific SwiftUI topic or alias, e.g. swiftui-ripple-refraction."),
4845
- query: z6.string().trim().min(1).max(500).optional().describe("Natural language description of the SwiftUI task or problem."),
4846
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
5014
+ inputSchema: z7.object({
5015
+ topic: z7.string().trim().min(1).max(120).optional().describe("Specific SwiftUI topic or alias, e.g. swiftui-ripple-refraction."),
5016
+ query: z7.string().trim().min(1).max(500).optional().describe("Natural language description of the SwiftUI task or problem."),
5017
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
4847
5018
  context: CONTEXT_ARG
4848
5019
  }),
4849
5020
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4873,7 +5044,7 @@ Prefer query search when you do not know the topic name. Use maxTokens to keep r
4873
5044
  "get-swiftui-guide",
4874
5045
  { query, topic, topResults: [], context },
4875
5046
  start,
4876
- principleErrorResponse(error instanceof Error ? error.message : "Unknown error", "swiftui"),
5047
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4877
5048
  true,
4878
5049
  error instanceof Error ? error.message : String(error)
4879
5050
  );
@@ -4885,9 +5056,9 @@ Prefer query search when you do not know the topic name. Use maxTokens to keep r
4885
5056
  {
4886
5057
  title: "Get Code Review Rules",
4887
5058
  description: REVIEW_RULES_DESCRIPTION,
4888
- inputSchema: z6.object({
4889
- category: z6.enum(REVIEW_RULE_CATEGORIES).optional().describe("Filter rules by category (defaults to 'all')"),
4890
- maxTokens: z6.number().min(500).max(5e4).optional().describe("Maximum tokens of rule content. Required workflow guidance is returned in full outside this budget. Recommended: 5000\u201310000."),
5059
+ inputSchema: z7.object({
5060
+ category: z7.enum(REVIEW_RULE_CATEGORIES).optional().describe("Filter rules by category (defaults to 'all')"),
5061
+ maxTokens: z7.number().min(500).max(5e4).optional().describe("Maximum tokens of rule content. Required workflow guidance is returned in full outside this budget. Recommended: 5000\u201310000."),
4891
5062
  context: CONTEXT_ARG
4892
5063
  }),
4893
5064
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -4914,7 +5085,7 @@ Prefer query search when you do not know the topic name. Use maxTokens to keep r
4914
5085
  type: "text",
4915
5086
  text: `${RENDERED_REVIEW_DIRECTIVE}
4916
5087
 
4917
- No review rules found. Rule retrieval is incomplete; do not report a passed review.${teamSection}${principleLinkFooter([reviewRulesReferralUrl(APP_BASE_URL)])}`
5088
+ No review rules found. Rule retrieval is incomplete; do not report a passed review.${teamSection}`
4918
5089
  }]
4919
5090
  }
4920
5091
  );
@@ -4924,14 +5095,13 @@ No review rules found. Rule retrieval is incomplete; do not report a passed revi
4924
5095
  ${rule.content}`).join("\n\n---\n\n");
4925
5096
  const preamble = guidancePreamble(session2.topics, "the build", sections);
4926
5097
  const ruleContent = maxTokens ? truncateToTokens(rulesOutput, maxTokens) : rulesOutput;
4927
- let text3 = `# Code Review Rules
5098
+ const text3 = `# Code Review Rules
4928
5099
 
4929
5100
  ${preamble ? `${preamble}
4930
5101
 
4931
5102
  ` : ""}${RENDERED_REVIEW_DIRECTIVE}
4932
5103
 
4933
5104
  ${ruleContent}${teamSection}`;
4934
- text3 += principleLinkFooter([reviewRulesReferralUrl(APP_BASE_URL)]);
4935
5105
  return trackSearch(
4936
5106
  track,
4937
5107
  "get-review-rules",
@@ -4945,12 +5115,7 @@ ${ruleContent}${teamSection}`;
4945
5115
  "get-review-rules",
4946
5116
  { query: category, topic: category, topResults: [], context },
4947
5117
  start,
4948
- {
4949
- content: [{
4950
- type: "text",
4951
- text: `Error: ${error instanceof Error ? error.message : "Unknown error"}${principleLinkFooter([reviewRulesReferralUrl(APP_BASE_URL)])}`
4952
- }]
4953
- },
5118
+ principleErrorResponse(error instanceof Error ? error.message : "Unknown error"),
4954
5119
  true,
4955
5120
  error instanceof Error ? error.message : String(error)
4956
5121
  );
@@ -4958,14 +5123,13 @@ ${ruleContent}${teamSection}`;
4958
5123
  }
4959
5124
  );
4960
5125
  }
4961
- var SEARCH_RESULT_PREVIEW_CHARS, GUIDE_AREAS, PRINCIPLE_FOOTER_SEPARATOR, fitTokens, RENDERED_REVIEW_DIRECTIVE;
5126
+ var SEARCH_RESULT_PREVIEW_CHARS, GUIDE_AREAS, fitTokens, RENDERED_REVIEW_DIRECTIVE;
4962
5127
  var init_principle_tools = __esm({
4963
5128
  "../shared/src/mcp/tools/principle-tools.ts"() {
4964
5129
  "use strict";
4965
5130
  init_motion_scaffold();
4966
5131
  init_video_components();
4967
5132
  init_topic_utils();
4968
- init_public_paths();
4969
5133
  init_review_rules_description();
4970
5134
  init_shared();
4971
5135
  init_team_rules_tools();
@@ -4979,7 +5143,6 @@ var init_principle_tools = __esm({
4979
5143
  "swiftui",
4980
5144
  "three-js"
4981
5145
  ]);
4982
- PRINCIPLE_FOOTER_SEPARATOR = "\n\n---\n\nFull principle:";
4983
5146
  fitTokens = (text3, maxTokens) => maxTokens ? truncateToTokens(text3, maxTokens) : text3;
4984
5147
  RENDERED_REVIEW_DIRECTIVE = `${REDESIGN_SCOPE_CONTRACT}
4985
5148
 
@@ -5025,6 +5188,15 @@ function redactSecrets(value) {
5025
5188
  for (const pattern of PHONE_PATTERNS) out = out.replace(pattern, "[redacted-phone]");
5026
5189
  return out;
5027
5190
  }
5191
+ function redactUrl(raw) {
5192
+ try {
5193
+ const u = new URL(raw);
5194
+ if (u.protocol !== "http:" && u.protocol !== "https:") return "[redacted]";
5195
+ return `${u.origin}${u.pathname}`;
5196
+ } catch {
5197
+ return "[redacted]";
5198
+ }
5199
+ }
5028
5200
  var SECRET_PATTERNS, EMAIL_PATTERN, CARD_CANDIDATE_PATTERN, PHONE_PATTERNS;
5029
5201
  var init_redact = __esm({
5030
5202
  "../shared/src/redact.ts"() {
@@ -5053,7 +5225,7 @@ var init_redact = __esm({
5053
5225
  // Authorization headers separate the scheme from the token with a space.
5054
5226
  /\b(?:bearer|basic|token)\s+[A-Za-z0-9._~+/-]{12,}=*/gi
5055
5227
  ];
5056
- EMAIL_PATTERN = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g;
5228
+ EMAIL_PATTERN = /(?<![A-Za-z0-9._%+-])[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g;
5057
5229
  CARD_CANDIDATE_PATTERN = /\b(?:\d[ -]?){12,18}\d\b/g;
5058
5230
  PHONE_PATTERNS = [
5059
5231
  /\+\d[\d\s().-]{7,17}\d/g,
@@ -5063,7 +5235,7 @@ var init_redact = __esm({
5063
5235
  });
5064
5236
 
5065
5237
  // ../shared/src/review-capture.ts
5066
- import { z as z7 } from "zod";
5238
+ import { z as z8 } from "zod";
5067
5239
  function toRedactedJson(args) {
5068
5240
  const text3 = JSON.stringify(args, (_key, value) => isString(value) ? redactSecrets(value) : value);
5069
5241
  return jsonObject.parse(JSON.parse(text3));
@@ -5074,7 +5246,7 @@ var init_review_capture = __esm({
5074
5246
  "use strict";
5075
5247
  init_guards();
5076
5248
  init_redact();
5077
- jsonObject = z7.record(z7.string(), z7.json());
5249
+ jsonObject = z8.record(z8.string(), z8.json());
5078
5250
  }
5079
5251
  });
5080
5252
 
@@ -5552,7 +5724,7 @@ var init_comprehension = __esm({
5552
5724
  });
5553
5725
 
5554
5726
  // ../shared/src/mcp/tools/comprehension-tools.ts
5555
- import { z as z8 } from "zod";
5727
+ import { z as z9 } from "zod";
5556
5728
  function registerComprehensionTools({ server, provider, track, userId }) {
5557
5729
  server.registerTool(
5558
5730
  "check-comprehension",
@@ -5572,13 +5744,13 @@ Pass either the copy or the markup:
5572
5744
  - check-comprehension({ screen: "Billing page", code: "<section>\u2026the JSX you wrote\u2026</section>" })
5573
5745
 
5574
5746
  Use knownTerms for words your audience genuinely knows, so the check stops flagging them. Fix every critical and serious finding, then call this again on the rewritten copy.`,
5575
- inputSchema: z8.object({
5576
- screen: z8.string().trim().min(1).max(120).describe("What this screen is, e.g. 'lesson end card', 'billing page'."),
5577
- headline: z8.string().trim().max(300).optional().describe("The screen's title, if you are passing copy rather than markup."),
5578
- body: z8.array(z8.string().trim().min(1).max(2e3)).max(50).optional().describe("Supporting copy, one string per visible line or paragraph."),
5579
- actions: z8.array(z8.string().trim().min(1).max(120)).max(20).optional().describe("Visible button and link labels, e.g. ['Claim badge', 'Not now']."),
5580
- code: z8.string().max(6e4).optional().describe("JSX, TSX or HTML for the screen. Copy is extracted from it when headline/body/actions are omitted."),
5581
- knownTerms: z8.array(z8.string().trim().min(1).max(60)).max(50).optional().describe("Words this audience already knows, so they are not flagged as insider language."),
5747
+ inputSchema: z9.object({
5748
+ screen: z9.string().trim().min(1).max(120).describe("What this screen is, e.g. 'lesson end card', 'billing page'."),
5749
+ headline: z9.string().trim().max(300).optional().describe("The screen's title, if you are passing copy rather than markup."),
5750
+ body: z9.array(z9.string().trim().min(1).max(2e3)).max(50).optional().describe("Supporting copy, one string per visible line or paragraph."),
5751
+ actions: z9.array(z9.string().trim().min(1).max(120)).max(20).optional().describe("Visible button and link labels, e.g. ['Claim badge', 'Not now']."),
5752
+ code: z9.string().max(6e4).optional().describe("JSX, TSX or HTML for the screen. Copy is extracted from it when headline/body/actions are omitted."),
5753
+ knownTerms: z9.array(z9.string().trim().min(1).max(60)).max(50).optional().describe("Words this audience already knows, so they are not flagged as insider language."),
5582
5754
  context: CONTEXT_ARG
5583
5755
  }),
5584
5756
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -5769,7 +5941,7 @@ var init_icon_installer = __esm({
5769
5941
  });
5770
5942
 
5771
5943
  // ../shared/src/mcp/tools/icon-tools.ts
5772
- import { z as z9 } from "zod";
5944
+ import { z as z10 } from "zod";
5773
5945
  function registerIconTools({ server, provider, tracked, track }) {
5774
5946
  const iconLibraryConfig = {
5775
5947
  title: "Find Icon Library",
@@ -5784,8 +5956,8 @@ Examples:
5784
5956
  - "minimal clean professional" \u2192 Iconoir, Feather Icons
5785
5957
  - "friendly rounded warm" \u2192 Phosphor, MingCute
5786
5958
  - "bold technical enterprise" \u2192 Tabler, Carbon`,
5787
- inputSchema: z9.object({
5788
- query: z9.string().describe("Style description or personality traits to match.")
5959
+ inputSchema: z10.object({
5960
+ query: z10.string().describe("Style description or personality traits to match.")
5789
5961
  }),
5790
5962
  annotations: READ_ONLY_TOOL_ANNOTATIONS
5791
5963
  };
@@ -5858,10 +6030,10 @@ Examples:
5858
6030
  - find-icons({ query: "settings", libraryId: "tabler" })
5859
6031
 
5860
6032
  Every name returned exists in the library, so pass them to \`install-icons\` verbatim. A \`variant\` only re-orders the results, putting the names that carry that variant first; it never rewrites a name.`,
5861
- inputSchema: z9.object({
5862
- query: z9.string().describe("What icon you need (e.g., 'home', 'settings', 'user')"),
5863
- libraryId: z9.string().describe("The icon library ID from find-icon-library"),
5864
- variant: z9.string().optional().describe("Optional variant style (e.g., 'bold', 'outline', 'duotone').")
6033
+ inputSchema: z10.object({
6034
+ query: z10.string().describe("What icon you need (e.g., 'home', 'settings', 'user')"),
6035
+ libraryId: z10.string().describe("The icon library ID from find-icon-library"),
6036
+ variant: z10.string().optional().describe("Optional variant style (e.g., 'bold', 'outline', 'duotone').")
5865
6037
  }),
5866
6038
  // Searches the public Iconify API; it does not change the icon catalog.
5867
6039
  annotations: READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS
@@ -5940,12 +6112,12 @@ import { HomeIcon } from "@/components/icons";
5940
6112
  \`\`\`
5941
6113
 
5942
6114
  If \`components/icons/index.ts\` already exists in the project, MERGE the new exports into it rather than overwriting.`,
5943
- inputSchema: z9.object({
5944
- libraryId: z9.string().describe("Icon library ID from find-icon-library (e.g. 'tabler', 'phosphor')."),
5945
- names: z9.array(z9.string()).min(1).describe("Icon names to install. May be bare (e.g. 'home') or prefixed (e.g. 'tabler:home')."),
5946
- targetDir: z9.string().optional().describe("Directory inside the project to write into. Defaults to 'components/icons'."),
5947
- format: z9.enum(["tsx", "svg"]).optional().describe("Output format. 'tsx' (default) generates React components; 'svg' generates raw .svg files."),
5948
- variant: z9.string().optional().describe("Optional library variant (e.g. 'outline', 'filled')."),
6115
+ inputSchema: z10.object({
6116
+ libraryId: z10.string().describe("Icon library ID from find-icon-library (e.g. 'tabler', 'phosphor')."),
6117
+ names: z10.array(z10.string()).min(1).describe("Icon names to install. May be bare (e.g. 'home') or prefixed (e.g. 'tabler:home')."),
6118
+ targetDir: z10.string().optional().describe("Directory inside the project to write into. Defaults to 'components/icons'."),
6119
+ format: z10.enum(["tsx", "svg"]).optional().describe("Output format. 'tsx' (default) generates React components; 'svg' generates raw .svg files."),
6120
+ variant: z10.string().optional().describe("Optional library variant (e.g. 'outline', 'filled')."),
5949
6121
  context: CONTEXT_ARG
5950
6122
  }),
5951
6123
  // Fetching Iconify SVGs and returning file text has no stored effect.
@@ -6151,8 +6323,8 @@ Call this BEFORE find-icon-library / install-icons. If a library is already lock
6151
6323
  Returns either:
6152
6324
  - The locked library info + installed icon list, with a hint to call install-icons using that libraryId, OR
6153
6325
  - A "no library detected" response, prompting the agent to call find-icon-library normally.`,
6154
- inputSchema: z9.object({
6155
- manifestContent: z9.string().optional().describe("Contents of the project's components/icons/.library.json file, if it exists. The agent should attempt to read this file from disk and pass it here. If the file doesn't exist or can't be read, omit this field."),
6326
+ inputSchema: z10.object({
6327
+ manifestContent: z10.string().optional().describe("Contents of the project's components/icons/.library.json file, if it exists. The agent should attempt to read this file from disk and pass it here. If the file doesn't exist or can't be read, omit this field."),
6156
6328
  context: CONTEXT_ARG
6157
6329
  }),
6158
6330
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -7320,7 +7492,7 @@ var init_dtcg = __esm({
7320
7492
  });
7321
7493
 
7322
7494
  // ../shared/src/mcp/mobile-primitives.ts
7323
- import { z as z10 } from "zod";
7495
+ import { z as z11 } from "zod";
7324
7496
  function parseMobilePrimitiveSet(value) {
7325
7497
  const parsed = mobilePrimitiveSetSchema.safeParse(value);
7326
7498
  return parsed.success ? parsed.data : null;
@@ -7330,41 +7502,41 @@ var init_mobile_primitives = __esm({
7330
7502
  "../shared/src/mcp/mobile-primitives.ts"() {
7331
7503
  "use strict";
7332
7504
  MOBILE_PRIMITIVE_CONTRACT_VERSION = 1;
7333
- mobileTargetSchema = z10.enum(["react-native", "swiftui"]);
7334
- nativeShadowSchema = z10.object({
7335
- shadowColor: z10.string().min(1),
7336
- shadowOffset: z10.object({ width: z10.number(), height: z10.number() }),
7337
- shadowOpacity: z10.number().min(0).max(1),
7338
- shadowRadius: z10.number().min(0),
7505
+ mobileTargetSchema = z11.enum(["react-native", "swiftui"]);
7506
+ nativeShadowSchema = z11.object({
7507
+ shadowColor: z11.string().min(1),
7508
+ shadowOffset: z11.object({ width: z11.number(), height: z11.number() }),
7509
+ shadowOpacity: z11.number().min(0).max(1),
7510
+ shadowRadius: z11.number().min(0),
7339
7511
  /** Android paints elevation instead of a shadow; SwiftUI ignores it. */
7340
- elevation: z10.number().min(0)
7512
+ elevation: z11.number().min(0)
7341
7513
  });
7342
- nativeValueSchema = z10.union([z10.number(), z10.string(), nativeShadowSchema]);
7343
- identityDeclarationSchema = z10.object({
7344
- component: z10.string().min(1),
7345
- variant: z10.string().optional(),
7346
- property: z10.string().min(1),
7514
+ nativeValueSchema = z11.union([z11.number(), z11.string(), nativeShadowSchema]);
7515
+ identityDeclarationSchema = z11.object({
7516
+ component: z11.string().min(1),
7517
+ variant: z11.string().optional(),
7518
+ property: z11.string().min(1),
7347
7519
  value: nativeValueSchema
7348
7520
  });
7349
- mobileFileSchema = z10.object({
7350
- path: z10.string().min(1),
7351
- content: z10.string().min(1)
7521
+ mobileFileSchema = z11.object({
7522
+ path: z11.string().min(1),
7523
+ content: z11.string().min(1)
7352
7524
  });
7353
- mobilePrimitiveSetSchema = z10.object({
7354
- contractVersion: z10.literal(MOBILE_PRIMITIVE_CONTRACT_VERSION),
7525
+ mobilePrimitiveSetSchema = z11.object({
7526
+ contractVersion: z11.literal(MOBILE_PRIMITIVE_CONTRACT_VERSION),
7355
7527
  target: mobileTargetSchema,
7356
7528
  /** The token sheet the set compiled from, kept so a reviewer can diff it. */
7357
- tokensCss: z10.string().min(1),
7529
+ tokensCss: z11.string().min(1),
7358
7530
  /** The system's own material, lifted from its component source. */
7359
- identity: z10.array(identityDeclarationSchema),
7531
+ identity: z11.array(identityDeclarationSchema),
7360
7532
  /** Web primitives the extraction could carry, mirroring the Shopify field. */
7361
- coveredSourcePrimitives: z10.array(z10.string()),
7533
+ coveredSourcePrimitives: z11.array(z11.string()),
7362
7534
  /** Tokens the compiler could not carry to a phone, with the scheme they came from. */
7363
- unsupportedTokens: z10.array(
7364
- z10.object({ name: z10.string(), value: z10.string(), mode: z10.enum(["light", "dark"]) })
7535
+ unsupportedTokens: z11.array(
7536
+ z11.object({ name: z11.string(), value: z11.string(), mode: z11.enum(["light", "dark"]) })
7365
7537
  ),
7366
7538
  /** The files a developer takes away, read verbatim on request. */
7367
- files: z10.array(mobileFileSchema).min(1)
7539
+ files: z11.array(mobileFileSchema).min(1)
7368
7540
  });
7369
7541
  }
7370
7542
  });
@@ -13137,7 +13309,7 @@ var init_shopify_accordion = __esm({
13137
13309
  });
13138
13310
 
13139
13311
  // ../shared/src/mcp/shopify-primitives.ts
13140
- import { z as z11 } from "zod";
13312
+ import { z as z12 } from "zod";
13141
13313
  function exportedStringConstants(files) {
13142
13314
  const constants2 = /* @__PURE__ */ new Map();
13143
13315
  const declaration = /export\s+const\s+([A-Za-z_$][\w$]*)(?:\s*:[^=;]+)?\s*=\s*([\s\S]*?);/g;
@@ -13252,41 +13424,41 @@ var init_shopify_primitives = __esm({
13252
13424
  init_shopify_icons();
13253
13425
  SHOPIFY_PRIMITIVE_CONTRACT_VERSION = 1;
13254
13426
  SHOPIFY_ICON_MATERIAL_VERSION = 2;
13255
- shopifyThemeFileSchema = z11.object({
13256
- path: z11.string().min(1),
13257
- content: z11.string().min(1)
13427
+ shopifyThemeFileSchema = z12.object({
13428
+ path: z12.string().min(1),
13429
+ content: z12.string().min(1)
13258
13430
  });
13259
13431
  primitiveFields = {
13260
- tokensCss: z11.string().min(1),
13261
- componentMaterialCss: z11.string(),
13262
- coveredSourcePrimitives: z11.array(z11.string()),
13263
- sourcePrimitivesWithShopifyAdapters: z11.array(z11.string()),
13264
- themeFiles: z11.array(shopifyThemeFileSchema).min(1)
13265
- };
13266
- iconLibrarySchema = z11.object({
13267
- id: z11.string().min(1),
13268
- name: z11.string().min(1),
13269
- prefix: z11.string().min(1),
13270
- variant: z11.string().min(1),
13271
- provenance: z11.enum(["explicit", "iconify-source", "fallback"]),
13272
- conflict: z11.object({ declared: z11.string(), detected: z11.string() }).optional()
13432
+ tokensCss: z12.string().min(1),
13433
+ componentMaterialCss: z12.string(),
13434
+ coveredSourcePrimitives: z12.array(z12.string()),
13435
+ sourcePrimitivesWithShopifyAdapters: z12.array(z12.string()),
13436
+ themeFiles: z12.array(shopifyThemeFileSchema).min(1)
13437
+ };
13438
+ iconLibrarySchema = z12.object({
13439
+ id: z12.string().min(1),
13440
+ name: z12.string().min(1),
13441
+ prefix: z12.string().min(1),
13442
+ variant: z12.string().min(1),
13443
+ provenance: z12.enum(["explicit", "iconify-source", "fallback"]),
13444
+ conflict: z12.object({ declared: z12.string(), detected: z12.string() }).optional()
13273
13445
  });
13274
- currentShopifyPrimitiveSetSchema = z11.object({
13446
+ currentShopifyPrimitiveSetSchema = z12.object({
13275
13447
  ...primitiveFields,
13276
- contractVersion: z11.literal(SHOPIFY_PRIMITIVE_CONTRACT_VERSION),
13277
- iconMaterialVersion: z11.literal(SHOPIFY_ICON_MATERIAL_VERSION),
13448
+ contractVersion: z12.literal(SHOPIFY_PRIMITIVE_CONTRACT_VERSION),
13449
+ iconMaterialVersion: z12.literal(SHOPIFY_ICON_MATERIAL_VERSION),
13278
13450
  iconLibrary: iconLibrarySchema
13279
13451
  });
13280
- shopifyPrimitiveSetSchema = z11.union([
13452
+ shopifyPrimitiveSetSchema = z12.union([
13281
13453
  currentShopifyPrimitiveSetSchema,
13282
- z11.object({ ...primitiveFields, contractVersion: z11.literal(1), iconMaterialVersion: z11.undefined().optional(), iconLibrary: z11.undefined().optional() })
13454
+ z12.object({ ...primitiveFields, contractVersion: z12.literal(1), iconMaterialVersion: z12.undefined().optional(), iconLibrary: z12.undefined().optional() })
13283
13455
  ]);
13284
13456
  localImport = /(^|\n)(\s*import\s*\{([^}]*)\}\s*from\s*["']\.\.?\/[^"']+["'];?)/g;
13285
13457
  }
13286
13458
  });
13287
13459
 
13288
13460
  // ../shared/src/mcp/catalog-tokens.ts
13289
- import { z as z12 } from "zod";
13461
+ import { z as z13 } from "zod";
13290
13462
  function inventoryFromRegistryDependencies(dependencies) {
13291
13463
  const inventory = { components: [], foundations: [] };
13292
13464
  for (const dependency of dependencies) {
@@ -13358,16 +13530,16 @@ var init_catalog_tokens = __esm({
13358
13530
  "use strict";
13359
13531
  init_preview_html();
13360
13532
  init_shared();
13361
- REGISTRY_ITEM_SCHEMA = z12.object({
13362
- cssVars: z12.object({
13363
- light: z12.record(z12.string(), z12.string()).optional(),
13364
- dark: z12.record(z12.string(), z12.string()).optional(),
13365
- theme: z12.record(z12.string(), z12.string()).optional()
13533
+ REGISTRY_ITEM_SCHEMA = z13.object({
13534
+ cssVars: z13.object({
13535
+ light: z13.record(z13.string(), z13.string()).optional(),
13536
+ dark: z13.record(z13.string(), z13.string()).optional(),
13537
+ theme: z13.record(z13.string(), z13.string()).optional()
13366
13538
  }).optional(),
13367
- files: z12.array(z12.object({ path: z12.string().optional(), content: z12.string().optional() })).optional()
13539
+ files: z13.array(z13.object({ path: z13.string().optional(), content: z13.string().optional() })).optional()
13368
13540
  });
13369
- REGISTRY_ALL_SCHEMA = z12.object({
13370
- registryDependencies: z12.array(z12.string())
13541
+ REGISTRY_ALL_SCHEMA = z13.object({
13542
+ registryDependencies: z13.array(z13.string())
13371
13543
  });
13372
13544
  FOUNDATION_ENTRY = /^(?:_shared|globals|utils|use-.+|.+-utils|sonner|toaster|sound-provider|haptics-provider|stagger-fade-in)$/;
13373
13545
  CATALOG_KIT_COMPONENTS = ["button", "input", "card", "badge", "switch"];
@@ -13375,7 +13547,7 @@ var init_catalog_tokens = __esm({
13375
13547
  });
13376
13548
 
13377
13549
  // ../shared/src/mcp/tools/design-system-tools.ts
13378
- import { z as z13 } from "zod";
13550
+ import { z as z14 } from "zod";
13379
13551
  function installCommandWithInit(installCommand) {
13380
13552
  return `${SHADCN_INIT_IF_MISSING}
13381
13553
 
@@ -13502,8 +13674,8 @@ function registerDesignSystemTools({
13502
13674
  authContext,
13503
13675
  apiFetch = globalThis.fetch
13504
13676
  }, { enableShopifyKit = true, enableMobileKits = true } = {}) {
13505
- const searchInputSchema = z13.object({
13506
- query: z13.string().describe(
13677
+ const searchInputSchema = z14.object({
13678
+ query: z14.string().describe(
13507
13679
  "The user's app, UI, industry, or visual direction. Examples: 'World Cup betting app for friends', 'warm editorial ecommerce', or 'professional fintech dashboard'."
13508
13680
  )
13509
13681
  });
@@ -13981,9 +14153,9 @@ existing setup; otherwise use the default Base UI. Both flavors install to the
13981
14153
  same components/ui/ paths.
13982
14154
 
13983
14155
  ${BUILD_TARGET_RULE}`,
13984
- inputSchema: z13.object({
14156
+ inputSchema: z14.object({
13985
14157
  // Off-pilot callers must not see the target at all, not merely be refused it.
13986
- target: z13.enum(
14158
+ target: z14.enum(
13987
14159
  // SAFETY: at least the three open targets are always present.
13988
14160
  [
13989
14161
  "react",
@@ -13993,10 +14165,10 @@ ${BUILD_TARGET_RULE}`,
13993
14165
  ...enableMobileKits ? ["react-native", "swiftui"] : []
13994
14166
  ]
13995
14167
  ).describe(`Required build target. Use "react" for any host with filesystem + terminal; use "html" only for inline chat canvases/artifacts.${enableShopifyKit ? ' Use "shopify" for Shopify stores and themes.' : ""} Use "dtcg" to hand the tokens to a design tool: it returns a W3C Design Tokens document for Style Dictionary, Tokens Studio, Terrazzo, or a Figma plugin that creates variables. ${enableMobileKits ? ` Use "react-native" for a React Native or Expo app and "swiftui" for an iOS app: each returns this system's stored mobile kit, its own material on native primitives, plus the handoff to the matching guide.` : ""}`),
13996
- designSystemId: z13.string().min(1).optional().describe(`Catalog design system ID from find-design-system. Required for target react; for every other target pass this or projectId.`),
13997
- projectId: z13.string().min(1).optional().describe(`Generated project ID from create-design-system / get-design-system-status. Supported with every target but react.`),
13998
- component: z13.union([z13.string(), z13.array(z13.string())]).optional().describe("React target only. Pass only when the user asks to inspect specific component source code. Omit to scaffold the entire design system."),
13999
- library: z13.enum(["radix", "base-ui"]).optional().describe('React target only, default "base-ui". Pass "radix" when the project already uses Radix primitives.'),
14168
+ designSystemId: z14.string().min(1).optional().describe(`Catalog design system ID from find-design-system. Required for target react; for every other target pass this or projectId.`),
14169
+ projectId: z14.string().min(1).optional().describe(`Generated project ID from create-design-system / get-design-system-status. Supported with every target but react.`),
14170
+ component: z14.union([z14.string(), z14.array(z14.string())]).optional().describe("React target only. Pass only when the user asks to inspect specific component source code. Omit to scaffold the entire design system."),
14171
+ library: z14.enum(["radix", "base-ui"]).optional().describe('React target only, default "base-ui". Pass "radix" when the project already uses Radix primitives.'),
14000
14172
  context: CONTEXT_ARG
14001
14173
  }),
14002
14174
  outputSchema: buildKitOutputSchema(enableShopifyKit),
@@ -14246,10 +14418,10 @@ How it works:
14246
14418
  3. Call \`get-design-system-status\` with the returned project id (wait ~60 seconds first) to get the live preview URL and the final \`npx shadcn add <registry-url>\` install command once it completes.
14247
14419
 
14248
14420
  Share the project URL with the user right away so they can watch the generation live. Generated source, tokens, and previews are accessible without signing in to anyone with their registry or preview URL.`,
14249
- inputSchema: z13.object({
14250
- prompt: z13.string().min(1).max(1e4).describe("Describe the design system the user wants. E.g. 'A warm, minimal design system for a personal finance app, soft pastels, rounded corners' or 'A brutalist developer tool aesthetic with sharp edges and monospace type'."),
14251
- baseDesignSystemId: z13.string().optional().describe("Optional. The catalog id the USER picked from the `find-design-system` matches you showed them, used to bias generation toward that aesthetic (e.g. a theme tweak on top of Linear). Leave empty only when the user chose fully custom."),
14252
- brandCss: z13.string().max(5e4).optional().describe("Optional. The user's extracted brand token sheet, verbatim: the fenced css block from extract-design-system / extract-from-url (`:root { --background: ...; }` plus optional `.dark { ... }`). When set, generation builds FROM this brand instead of a catalog look-alike, and baseDesignSystemId is ignored (a catalog base would leak its identity past the brand tokens).")
14421
+ inputSchema: z14.object({
14422
+ prompt: z14.string().min(1).max(1e4).describe("Describe the design system the user wants. E.g. 'A warm, minimal design system for a personal finance app, soft pastels, rounded corners' or 'A brutalist developer tool aesthetic with sharp edges and monospace type'."),
14423
+ baseDesignSystemId: z14.string().optional().describe("Optional. The catalog id the USER picked from the `find-design-system` matches you showed them, used to bias generation toward that aesthetic (e.g. a theme tweak on top of Linear). Leave empty only when the user chose fully custom."),
14424
+ brandCss: z14.string().max(5e4).optional().describe("Optional. The user's extracted brand token sheet, verbatim: the fenced css block from extract-design-system / extract-from-url (`:root { --background: ...; }` plus optional `.dark { ... }`). When set, generation builds FROM this brand instead of a catalog look-alike, and baseDesignSystemId is ignored (a catalog base would leak its identity past the brand tokens).")
14253
14425
  }),
14254
14426
  // Each call starts a new generation and returns a new project id, so it
14255
14427
  // writes and is not idempotent. It only adds a project, never replaces or
@@ -14421,8 +14593,8 @@ Check again in ~30 seconds. Watch it live on the project page: ${projectUrl}` }]
14421
14593
  const statusConfig = {
14422
14594
  title: "Get Design System Generation Status",
14423
14595
  description: `Check on a design system generation started with 'create-design-system'. Returns progress while generating, and the live preview URL + the \`npx shadcn add\` install command once complete. Generation typically takes 1-3 minutes; poll every ~30 seconds until it reports ready. Once ready, ask the user what's next (icon library, install, or build) instead of stopping.`,
14424
- inputSchema: z13.object({
14425
- projectId: z13.string().min(1).describe("The project id returned by create-design-system."),
14596
+ inputSchema: z14.object({
14597
+ projectId: z14.string().min(1).describe("The project id returned by create-design-system."),
14426
14598
  context: CONTEXT_ARG
14427
14599
  }),
14428
14600
  outputSchema: PREVIEW_OUTPUT_SCHEMA.extend({
@@ -14447,8 +14619,8 @@ Check again in ~30 seconds. Watch it live on the project page: ${projectUrl}` }]
14447
14619
  {
14448
14620
  title: "Preview a Design System",
14449
14621
  description: `Show the user a visual preview of a design system from the catalog (use the id from 'find-design-system'). Returns a token-true HTML preview: palette, typography, buttons, card, input, badge, plus a link to the full live showcase. Use this when the user wants to SEE a design system before installing it.`,
14450
- inputSchema: z13.object({
14451
- designSystemId: z13.string().min(1).describe("Design system id from find-design-system, e.g. 'linear', 'editorial-warm'."),
14622
+ inputSchema: z14.object({
14623
+ designSystemId: z14.string().min(1).describe("Design system id from find-design-system, e.g. 'linear', 'editorial-warm'."),
14452
14624
  context: CONTEXT_ARG
14453
14625
  }),
14454
14626
  outputSchema: PREVIEW_OUTPUT_SCHEMA,
@@ -14522,13 +14694,13 @@ var init_design_system_tools = __esm({
14522
14694
  init_catalog_tokens();
14523
14695
  SHADCN_INIT_IF_MISSING = "[ -f components.json ] || npx shadcn@latest init -d -y";
14524
14696
  SAFE_COMPONENT_NAME_RE = /^[a-z0-9][a-z0-9-]*$/i;
14525
- DS_INDEX_SCHEMA = z13.object({
14526
- baseComponents: z13.array(z13.object({ name: z13.string() })).optional()
14697
+ DS_INDEX_SCHEMA = z14.object({
14698
+ baseComponents: z14.array(z14.object({ name: z14.string() })).optional()
14527
14699
  });
14528
14700
  }
14529
14701
  });
14530
14702
 
14531
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/entity.js
14703
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/entity.js
14532
14704
  function is(value, type) {
14533
14705
  if (!value || typeof value !== "object") {
14534
14706
  return false;
@@ -14554,16 +14726,16 @@ function is(value, type) {
14554
14726
  }
14555
14727
  var entityKind;
14556
14728
  var init_entity = __esm({
14557
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/entity.js"() {
14729
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/entity.js"() {
14558
14730
  "use strict";
14559
14731
  entityKind = /* @__PURE__ */ Symbol.for("drizzle:entityKind");
14560
14732
  }
14561
14733
  });
14562
14734
 
14563
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/column.js
14735
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/column.js
14564
14736
  var Column;
14565
14737
  var init_column = __esm({
14566
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/column.js"() {
14738
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/column.js"() {
14567
14739
  "use strict";
14568
14740
  init_entity();
14569
14741
  Column = class {
@@ -14618,10 +14790,10 @@ var init_column = __esm({
14618
14790
  }
14619
14791
  });
14620
14792
 
14621
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/column-builder.js
14793
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/column-builder.js
14622
14794
  var ColumnBuilder;
14623
14795
  var init_column_builder = __esm({
14624
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/column-builder.js"() {
14796
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/column-builder.js"() {
14625
14797
  "use strict";
14626
14798
  init_entity();
14627
14799
  ColumnBuilder = class {
@@ -14728,19 +14900,19 @@ var init_column_builder = __esm({
14728
14900
  }
14729
14901
  });
14730
14902
 
14731
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/table.utils.js
14903
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/table.utils.js
14732
14904
  var TableName;
14733
14905
  var init_table_utils = __esm({
14734
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/table.utils.js"() {
14906
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/table.utils.js"() {
14735
14907
  "use strict";
14736
14908
  TableName = /* @__PURE__ */ Symbol.for("drizzle:Name");
14737
14909
  }
14738
14910
  });
14739
14911
 
14740
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/foreign-keys.js
14912
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/foreign-keys.js
14741
14913
  var ForeignKeyBuilder, ForeignKey;
14742
14914
  var init_foreign_keys = __esm({
14743
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/foreign-keys.js"() {
14915
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/foreign-keys.js"() {
14744
14916
  "use strict";
14745
14917
  init_entity();
14746
14918
  init_table_utils();
@@ -14802,17 +14974,17 @@ var init_foreign_keys = __esm({
14802
14974
  }
14803
14975
  });
14804
14976
 
14805
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/tracing-utils.js
14977
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/tracing-utils.js
14806
14978
  function iife(fn, ...args) {
14807
14979
  return fn(...args);
14808
14980
  }
14809
14981
  var init_tracing_utils = __esm({
14810
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/tracing-utils.js"() {
14982
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/tracing-utils.js"() {
14811
14983
  "use strict";
14812
14984
  }
14813
14985
  });
14814
14986
 
14815
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/unique-constraint.js
14987
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/unique-constraint.js
14816
14988
  function unique(name) {
14817
14989
  return new UniqueOnConstraintBuilder(name);
14818
14990
  }
@@ -14821,7 +14993,7 @@ function uniqueKeyName(table, columns) {
14821
14993
  }
14822
14994
  var UniqueConstraintBuilder, UniqueOnConstraintBuilder, UniqueConstraint;
14823
14995
  var init_unique_constraint = __esm({
14824
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/unique-constraint.js"() {
14996
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/unique-constraint.js"() {
14825
14997
  "use strict";
14826
14998
  init_entity();
14827
14999
  init_table_utils();
@@ -14873,7 +15045,7 @@ var init_unique_constraint = __esm({
14873
15045
  }
14874
15046
  });
14875
15047
 
14876
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/utils/array.js
15048
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/utils/array.js
14877
15049
  function parsePgArrayValue(arrayString, startFrom, inQuotes) {
14878
15050
  for (let i = startFrom; i < arrayString.length; i++) {
14879
15051
  const char2 = arrayString[i];
@@ -14949,15 +15121,15 @@ function makePgArray(array) {
14949
15121
  }).join(",")}}`;
14950
15122
  }
14951
15123
  var init_array = __esm({
14952
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/utils/array.js"() {
15124
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/utils/array.js"() {
14953
15125
  "use strict";
14954
15126
  }
14955
15127
  });
14956
15128
 
14957
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/common.js
15129
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/common.js
14958
15130
  var PgColumnBuilder, PgColumn, ExtraConfigColumn, IndexedColumn, PgArrayBuilder, PgArray;
14959
15131
  var init_common = __esm({
14960
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/common.js"() {
15132
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/common.js"() {
14961
15133
  "use strict";
14962
15134
  init_column_builder();
14963
15135
  init_column();
@@ -15151,7 +15323,7 @@ var init_common = __esm({
15151
15323
  }
15152
15324
  });
15153
15325
 
15154
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/enum.js
15326
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/enum.js
15155
15327
  function isPgEnum(obj) {
15156
15328
  return !!obj && typeof obj === "function" && isPgEnumSym in obj && obj[isPgEnumSym] === true;
15157
15329
  }
@@ -15184,7 +15356,7 @@ function pgEnumObjectWithSchema(enumName, values, schema) {
15184
15356
  }
15185
15357
  var PgEnumObjectColumnBuilder, PgEnumObjectColumn, isPgEnumSym, PgEnumColumnBuilder, PgEnumColumn;
15186
15358
  var init_enum = __esm({
15187
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/enum.js"() {
15359
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/enum.js"() {
15188
15360
  "use strict";
15189
15361
  init_entity();
15190
15362
  init_common();
@@ -15244,10 +15416,10 @@ var init_enum = __esm({
15244
15416
  }
15245
15417
  });
15246
15418
 
15247
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/subquery.js
15419
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/subquery.js
15248
15420
  var Subquery, WithSubquery;
15249
15421
  var init_subquery = __esm({
15250
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/subquery.js"() {
15422
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/subquery.js"() {
15251
15423
  "use strict";
15252
15424
  init_entity();
15253
15425
  Subquery = class {
@@ -15272,19 +15444,19 @@ var init_subquery = __esm({
15272
15444
  }
15273
15445
  });
15274
15446
 
15275
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/version.js
15447
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/version.js
15276
15448
  var version;
15277
15449
  var init_version = __esm({
15278
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/version.js"() {
15450
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/version.js"() {
15279
15451
  "use strict";
15280
15452
  version = "0.45.2";
15281
15453
  }
15282
15454
  });
15283
15455
 
15284
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/tracing.js
15456
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/tracing.js
15285
15457
  var otel, rawTracer, tracer;
15286
15458
  var init_tracing = __esm({
15287
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/tracing.js"() {
15459
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/tracing.js"() {
15288
15460
  "use strict";
15289
15461
  init_tracing_utils();
15290
15462
  init_version();
@@ -15322,16 +15494,16 @@ var init_tracing = __esm({
15322
15494
  }
15323
15495
  });
15324
15496
 
15325
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/view-common.js
15497
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/view-common.js
15326
15498
  var ViewBaseConfig;
15327
15499
  var init_view_common = __esm({
15328
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/view-common.js"() {
15500
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/view-common.js"() {
15329
15501
  "use strict";
15330
15502
  ViewBaseConfig = /* @__PURE__ */ Symbol.for("drizzle:ViewBaseConfig");
15331
15503
  }
15332
15504
  });
15333
15505
 
15334
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/table.js
15506
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/table.js
15335
15507
  function isTable(table) {
15336
15508
  return typeof table === "object" && table !== null && IsDrizzleTable in table;
15337
15509
  }
@@ -15343,7 +15515,7 @@ function getTableUniqueName(table) {
15343
15515
  }
15344
15516
  var Schema, Columns, ExtraConfigColumns, OriginalName, BaseName, IsAlias, ExtraConfigBuilder, IsDrizzleTable, Table;
15345
15517
  var init_table = __esm({
15346
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/table.js"() {
15518
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/table.js"() {
15347
15519
  "use strict";
15348
15520
  init_entity();
15349
15521
  init_table_utils();
@@ -15404,7 +15576,7 @@ var init_table = __esm({
15404
15576
  }
15405
15577
  });
15406
15578
 
15407
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/sql.js
15579
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/sql.js
15408
15580
  function isSQLWrapper(value) {
15409
15581
  return value !== null && value !== void 0 && typeof value.getSQL === "function";
15410
15582
  }
@@ -15440,7 +15612,7 @@ function isView(view) {
15440
15612
  }
15441
15613
  var FakePrimitiveParam, StringChunk, SQL, Name, noopDecoder, noopEncoder, noopMapper, Param, Placeholder, IsDrizzleView, View;
15442
15614
  var init_sql = __esm({
15443
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/sql.js"() {
15615
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/sql.js"() {
15444
15616
  "use strict";
15445
15617
  init_entity();
15446
15618
  init_enum();
@@ -15797,7 +15969,7 @@ var init_sql = __esm({
15797
15969
  }
15798
15970
  });
15799
15971
 
15800
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/alias.js
15972
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/alias.js
15801
15973
  function aliasedTable(table, tableAlias) {
15802
15974
  return new Proxy(table, new TableAliasProxyHandler(tableAlias, false));
15803
15975
  }
@@ -15826,7 +15998,7 @@ function mapColumnsInSQLToAlias(query, alias) {
15826
15998
  }
15827
15999
  var ColumnAliasProxyHandler, TableAliasProxyHandler, RelationTableAliasProxyHandler;
15828
16000
  var init_alias = __esm({
15829
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/alias.js"() {
16001
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/alias.js"() {
15830
16002
  "use strict";
15831
16003
  init_column();
15832
16004
  init_entity();
@@ -15904,20 +16076,20 @@ var init_alias = __esm({
15904
16076
  }
15905
16077
  });
15906
16078
 
15907
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/alias.js
16079
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/alias.js
15908
16080
  var init_alias2 = __esm({
15909
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/alias.js"() {
16081
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/alias.js"() {
15910
16082
  "use strict";
15911
16083
  }
15912
16084
  });
15913
16085
 
15914
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/checks.js
16086
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/checks.js
15915
16087
  function check(name, value) {
15916
16088
  return new CheckBuilder(name, value);
15917
16089
  }
15918
16090
  var CheckBuilder, Check;
15919
16091
  var init_checks = __esm({
15920
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/checks.js"() {
16092
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/checks.js"() {
15921
16093
  "use strict";
15922
16094
  init_entity();
15923
16095
  CheckBuilder = class {
@@ -15945,7 +16117,7 @@ var init_checks = __esm({
15945
16117
  }
15946
16118
  });
15947
16119
 
15948
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/utils.js
16120
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/utils.js
15949
16121
  function orderSelectedFields(fields, pathPrefix) {
15950
16122
  return Object.entries(fields).reduce((result, [name, field]) => {
15951
16123
  if (typeof name !== "string") {
@@ -16017,7 +16189,7 @@ function getColumnNameAndConfig(a, b) {
16017
16189
  }
16018
16190
  var textDecoder;
16019
16191
  var init_utils = __esm({
16020
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/utils.js"() {
16192
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/utils.js"() {
16021
16193
  "use strict";
16022
16194
  init_column();
16023
16195
  init_entity();
@@ -16029,10 +16201,10 @@ var init_utils = __esm({
16029
16201
  }
16030
16202
  });
16031
16203
 
16032
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/int.common.js
16204
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/int.common.js
16033
16205
  var PgIntColumnBaseBuilder;
16034
16206
  var init_int_common = __esm({
16035
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/int.common.js"() {
16207
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/int.common.js"() {
16036
16208
  "use strict";
16037
16209
  init_entity();
16038
16210
  init_common();
@@ -16076,7 +16248,7 @@ var init_int_common = __esm({
16076
16248
  }
16077
16249
  });
16078
16250
 
16079
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/bigint.js
16251
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/bigint.js
16080
16252
  function bigint(a, b) {
16081
16253
  const { name, config } = getColumnNameAndConfig(a, b);
16082
16254
  if (config.mode === "number") {
@@ -16086,7 +16258,7 @@ function bigint(a, b) {
16086
16258
  }
16087
16259
  var PgBigInt53Builder, PgBigInt53, PgBigInt64Builder, PgBigInt64;
16088
16260
  var init_bigint = __esm({
16089
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/bigint.js"() {
16261
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/bigint.js"() {
16090
16262
  "use strict";
16091
16263
  init_entity();
16092
16264
  init_utils();
@@ -16140,7 +16312,7 @@ var init_bigint = __esm({
16140
16312
  }
16141
16313
  });
16142
16314
 
16143
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/bigserial.js
16315
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/bigserial.js
16144
16316
  function bigserial(a, b) {
16145
16317
  const { name, config } = getColumnNameAndConfig(a, b);
16146
16318
  if (config.mode === "number") {
@@ -16150,7 +16322,7 @@ function bigserial(a, b) {
16150
16322
  }
16151
16323
  var PgBigSerial53Builder, PgBigSerial53, PgBigSerial64Builder, PgBigSerial64;
16152
16324
  var init_bigserial = __esm({
16153
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/bigserial.js"() {
16325
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/bigserial.js"() {
16154
16326
  "use strict";
16155
16327
  init_entity();
16156
16328
  init_utils();
@@ -16209,13 +16381,13 @@ var init_bigserial = __esm({
16209
16381
  }
16210
16382
  });
16211
16383
 
16212
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/boolean.js
16384
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/boolean.js
16213
16385
  function boolean(name) {
16214
16386
  return new PgBooleanBuilder(name ?? "");
16215
16387
  }
16216
16388
  var PgBooleanBuilder, PgBoolean;
16217
16389
  var init_boolean = __esm({
16218
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/boolean.js"() {
16390
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/boolean.js"() {
16219
16391
  "use strict";
16220
16392
  init_entity();
16221
16393
  init_common();
@@ -16238,14 +16410,14 @@ var init_boolean = __esm({
16238
16410
  }
16239
16411
  });
16240
16412
 
16241
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/char.js
16413
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/char.js
16242
16414
  function char(a, b = {}) {
16243
16415
  const { name, config } = getColumnNameAndConfig(a, b);
16244
16416
  return new PgCharBuilder(name, config);
16245
16417
  }
16246
16418
  var PgCharBuilder, PgChar;
16247
16419
  var init_char = __esm({
16248
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/char.js"() {
16420
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/char.js"() {
16249
16421
  "use strict";
16250
16422
  init_entity();
16251
16423
  init_utils();
@@ -16276,13 +16448,13 @@ var init_char = __esm({
16276
16448
  }
16277
16449
  });
16278
16450
 
16279
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/cidr.js
16451
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/cidr.js
16280
16452
  function cidr(name) {
16281
16453
  return new PgCidrBuilder(name ?? "");
16282
16454
  }
16283
16455
  var PgCidrBuilder, PgCidr;
16284
16456
  var init_cidr = __esm({
16285
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/cidr.js"() {
16457
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/cidr.js"() {
16286
16458
  "use strict";
16287
16459
  init_entity();
16288
16460
  init_common();
@@ -16305,7 +16477,7 @@ var init_cidr = __esm({
16305
16477
  }
16306
16478
  });
16307
16479
 
16308
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/custom.js
16480
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/custom.js
16309
16481
  function customType(customTypeParams) {
16310
16482
  return (a, b) => {
16311
16483
  const { name, config } = getColumnNameAndConfig(a, b);
@@ -16314,7 +16486,7 @@ function customType(customTypeParams) {
16314
16486
  }
16315
16487
  var PgCustomColumnBuilder, PgCustomColumn;
16316
16488
  var init_custom = __esm({
16317
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/custom.js"() {
16489
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/custom.js"() {
16318
16490
  "use strict";
16319
16491
  init_entity();
16320
16492
  init_utils();
@@ -16358,10 +16530,10 @@ var init_custom = __esm({
16358
16530
  }
16359
16531
  });
16360
16532
 
16361
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/date.common.js
16533
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/date.common.js
16362
16534
  var PgDateColumnBaseBuilder;
16363
16535
  var init_date_common = __esm({
16364
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/date.common.js"() {
16536
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/date.common.js"() {
16365
16537
  "use strict";
16366
16538
  init_entity();
16367
16539
  init_sql();
@@ -16375,7 +16547,7 @@ var init_date_common = __esm({
16375
16547
  }
16376
16548
  });
16377
16549
 
16378
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/date.js
16550
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/date.js
16379
16551
  function date(a, b) {
16380
16552
  const { name, config } = getColumnNameAndConfig(a, b);
16381
16553
  if (config?.mode === "date") {
@@ -16385,7 +16557,7 @@ function date(a, b) {
16385
16557
  }
16386
16558
  var PgDateBuilder, PgDate, PgDateStringBuilder, PgDateString;
16387
16559
  var init_date = __esm({
16388
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/date.js"() {
16560
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/date.js"() {
16389
16561
  "use strict";
16390
16562
  init_entity();
16391
16563
  init_utils();
@@ -16440,13 +16612,13 @@ var init_date = __esm({
16440
16612
  }
16441
16613
  });
16442
16614
 
16443
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/double-precision.js
16615
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/double-precision.js
16444
16616
  function doublePrecision(name) {
16445
16617
  return new PgDoublePrecisionBuilder(name ?? "");
16446
16618
  }
16447
16619
  var PgDoublePrecisionBuilder, PgDoublePrecision;
16448
16620
  var init_double_precision = __esm({
16449
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/double-precision.js"() {
16621
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/double-precision.js"() {
16450
16622
  "use strict";
16451
16623
  init_entity();
16452
16624
  init_common();
@@ -16478,13 +16650,13 @@ var init_double_precision = __esm({
16478
16650
  }
16479
16651
  });
16480
16652
 
16481
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/inet.js
16653
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/inet.js
16482
16654
  function inet(name) {
16483
16655
  return new PgInetBuilder(name ?? "");
16484
16656
  }
16485
16657
  var PgInetBuilder, PgInet;
16486
16658
  var init_inet = __esm({
16487
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/inet.js"() {
16659
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/inet.js"() {
16488
16660
  "use strict";
16489
16661
  init_entity();
16490
16662
  init_common();
@@ -16507,13 +16679,13 @@ var init_inet = __esm({
16507
16679
  }
16508
16680
  });
16509
16681
 
16510
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/integer.js
16682
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/integer.js
16511
16683
  function integer(name) {
16512
16684
  return new PgIntegerBuilder(name ?? "");
16513
16685
  }
16514
16686
  var PgIntegerBuilder, PgInteger;
16515
16687
  var init_integer = __esm({
16516
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/integer.js"() {
16688
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/integer.js"() {
16517
16689
  "use strict";
16518
16690
  init_entity();
16519
16691
  init_common();
@@ -16543,14 +16715,14 @@ var init_integer = __esm({
16543
16715
  }
16544
16716
  });
16545
16717
 
16546
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/interval.js
16718
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/interval.js
16547
16719
  function interval(a, b = {}) {
16548
16720
  const { name, config } = getColumnNameAndConfig(a, b);
16549
16721
  return new PgIntervalBuilder(name, config);
16550
16722
  }
16551
16723
  var PgIntervalBuilder, PgInterval;
16552
16724
  var init_interval = __esm({
16553
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/interval.js"() {
16725
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/interval.js"() {
16554
16726
  "use strict";
16555
16727
  init_entity();
16556
16728
  init_utils();
@@ -16579,13 +16751,13 @@ var init_interval = __esm({
16579
16751
  }
16580
16752
  });
16581
16753
 
16582
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/json.js
16754
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/json.js
16583
16755
  function json(name) {
16584
16756
  return new PgJsonBuilder(name ?? "");
16585
16757
  }
16586
16758
  var PgJsonBuilder, PgJson;
16587
16759
  var init_json = __esm({
16588
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/json.js"() {
16760
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/json.js"() {
16589
16761
  "use strict";
16590
16762
  init_entity();
16591
16763
  init_common();
@@ -16624,13 +16796,13 @@ var init_json = __esm({
16624
16796
  }
16625
16797
  });
16626
16798
 
16627
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/jsonb.js
16799
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/jsonb.js
16628
16800
  function jsonb(name) {
16629
16801
  return new PgJsonbBuilder(name ?? "");
16630
16802
  }
16631
16803
  var PgJsonbBuilder, PgJsonb;
16632
16804
  var init_jsonb = __esm({
16633
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/jsonb.js"() {
16805
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/jsonb.js"() {
16634
16806
  "use strict";
16635
16807
  init_entity();
16636
16808
  init_common();
@@ -16669,7 +16841,7 @@ var init_jsonb = __esm({
16669
16841
  }
16670
16842
  });
16671
16843
 
16672
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/line.js
16844
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/line.js
16673
16845
  function line(a, b) {
16674
16846
  const { name, config } = getColumnNameAndConfig(a, b);
16675
16847
  if (!config?.mode || config.mode === "tuple") {
@@ -16679,7 +16851,7 @@ function line(a, b) {
16679
16851
  }
16680
16852
  var PgLineBuilder, PgLineTuple, PgLineABCBuilder, PgLineABC;
16681
16853
  var init_line = __esm({
16682
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/line.js"() {
16854
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/line.js"() {
16683
16855
  "use strict";
16684
16856
  init_entity();
16685
16857
  init_utils();
@@ -16739,13 +16911,13 @@ var init_line = __esm({
16739
16911
  }
16740
16912
  });
16741
16913
 
16742
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/macaddr.js
16914
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/macaddr.js
16743
16915
  function macaddr(name) {
16744
16916
  return new PgMacaddrBuilder(name ?? "");
16745
16917
  }
16746
16918
  var PgMacaddrBuilder, PgMacaddr;
16747
16919
  var init_macaddr = __esm({
16748
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/macaddr.js"() {
16920
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/macaddr.js"() {
16749
16921
  "use strict";
16750
16922
  init_entity();
16751
16923
  init_common();
@@ -16768,13 +16940,13 @@ var init_macaddr = __esm({
16768
16940
  }
16769
16941
  });
16770
16942
 
16771
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/macaddr8.js
16943
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/macaddr8.js
16772
16944
  function macaddr8(name) {
16773
16945
  return new PgMacaddr8Builder(name ?? "");
16774
16946
  }
16775
16947
  var PgMacaddr8Builder, PgMacaddr8;
16776
16948
  var init_macaddr8 = __esm({
16777
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/macaddr8.js"() {
16949
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/macaddr8.js"() {
16778
16950
  "use strict";
16779
16951
  init_entity();
16780
16952
  init_common();
@@ -16797,7 +16969,7 @@ var init_macaddr8 = __esm({
16797
16969
  }
16798
16970
  });
16799
16971
 
16800
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/numeric.js
16972
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/numeric.js
16801
16973
  function numeric(a, b) {
16802
16974
  const { name, config } = getColumnNameAndConfig(a, b);
16803
16975
  const mode = config?.mode;
@@ -16805,7 +16977,7 @@ function numeric(a, b) {
16805
16977
  }
16806
16978
  var PgNumericBuilder, PgNumeric, PgNumericNumberBuilder, PgNumericNumber, PgNumericBigIntBuilder, PgNumericBigInt;
16807
16979
  var init_numeric = __esm({
16808
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/numeric.js"() {
16980
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/numeric.js"() {
16809
16981
  "use strict";
16810
16982
  init_entity();
16811
16983
  init_utils();
@@ -16923,7 +17095,7 @@ var init_numeric = __esm({
16923
17095
  }
16924
17096
  });
16925
17097
 
16926
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/point.js
17098
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/point.js
16927
17099
  function point(a, b) {
16928
17100
  const { name, config } = getColumnNameAndConfig(a, b);
16929
17101
  if (!config?.mode || config.mode === "tuple") {
@@ -16933,7 +17105,7 @@ function point(a, b) {
16933
17105
  }
16934
17106
  var PgPointTupleBuilder, PgPointTuple, PgPointObjectBuilder, PgPointObject;
16935
17107
  var init_point = __esm({
16936
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/point.js"() {
17108
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/point.js"() {
16937
17109
  "use strict";
16938
17110
  init_entity();
16939
17111
  init_utils();
@@ -16999,7 +17171,7 @@ var init_point = __esm({
16999
17171
  }
17000
17172
  });
17001
17173
 
17002
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/postgis_extension/utils.js
17174
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/postgis_extension/utils.js
17003
17175
  function hexToBytes(hex) {
17004
17176
  const bytes = [];
17005
17177
  for (let c = 0; c < hex.length; c += 2) {
@@ -17038,12 +17210,12 @@ function parseEWKB(hex) {
17038
17210
  throw new Error("Unsupported geometry type");
17039
17211
  }
17040
17212
  var init_utils2 = __esm({
17041
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/postgis_extension/utils.js"() {
17213
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/postgis_extension/utils.js"() {
17042
17214
  "use strict";
17043
17215
  }
17044
17216
  });
17045
17217
 
17046
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.js
17218
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.js
17047
17219
  function geometry(a, b) {
17048
17220
  const { name, config } = getColumnNameAndConfig(a, b);
17049
17221
  if (!config?.mode || config.mode === "tuple") {
@@ -17053,7 +17225,7 @@ function geometry(a, b) {
17053
17225
  }
17054
17226
  var PgGeometryBuilder, PgGeometry, PgGeometryObjectBuilder, PgGeometryObject;
17055
17227
  var init_geometry = __esm({
17056
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.js"() {
17228
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/postgis_extension/geometry.js"() {
17057
17229
  "use strict";
17058
17230
  init_entity();
17059
17231
  init_utils();
@@ -17113,13 +17285,13 @@ var init_geometry = __esm({
17113
17285
  }
17114
17286
  });
17115
17287
 
17116
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/real.js
17288
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/real.js
17117
17289
  function real(name) {
17118
17290
  return new PgRealBuilder(name ?? "");
17119
17291
  }
17120
17292
  var PgRealBuilder, PgReal;
17121
17293
  var init_real = __esm({
17122
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/real.js"() {
17294
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/real.js"() {
17123
17295
  "use strict";
17124
17296
  init_entity();
17125
17297
  init_common();
@@ -17152,13 +17324,13 @@ var init_real = __esm({
17152
17324
  }
17153
17325
  });
17154
17326
 
17155
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/serial.js
17327
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/serial.js
17156
17328
  function serial(name) {
17157
17329
  return new PgSerialBuilder(name ?? "");
17158
17330
  }
17159
17331
  var PgSerialBuilder, PgSerial;
17160
17332
  var init_serial = __esm({
17161
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/serial.js"() {
17333
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/serial.js"() {
17162
17334
  "use strict";
17163
17335
  init_entity();
17164
17336
  init_common();
@@ -17183,13 +17355,13 @@ var init_serial = __esm({
17183
17355
  }
17184
17356
  });
17185
17357
 
17186
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/smallint.js
17358
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/smallint.js
17187
17359
  function smallint(name) {
17188
17360
  return new PgSmallIntBuilder(name ?? "");
17189
17361
  }
17190
17362
  var PgSmallIntBuilder, PgSmallInt;
17191
17363
  var init_smallint = __esm({
17192
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/smallint.js"() {
17364
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/smallint.js"() {
17193
17365
  "use strict";
17194
17366
  init_entity();
17195
17367
  init_common();
@@ -17219,13 +17391,13 @@ var init_smallint = __esm({
17219
17391
  }
17220
17392
  });
17221
17393
 
17222
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/smallserial.js
17394
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/smallserial.js
17223
17395
  function smallserial(name) {
17224
17396
  return new PgSmallSerialBuilder(name ?? "");
17225
17397
  }
17226
17398
  var PgSmallSerialBuilder, PgSmallSerial;
17227
17399
  var init_smallserial = __esm({
17228
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/smallserial.js"() {
17400
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/smallserial.js"() {
17229
17401
  "use strict";
17230
17402
  init_entity();
17231
17403
  init_common();
@@ -17253,14 +17425,14 @@ var init_smallserial = __esm({
17253
17425
  }
17254
17426
  });
17255
17427
 
17256
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/text.js
17428
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/text.js
17257
17429
  function text(a, b = {}) {
17258
17430
  const { name, config } = getColumnNameAndConfig(a, b);
17259
17431
  return new PgTextBuilder(name, config);
17260
17432
  }
17261
17433
  var PgTextBuilder, PgText;
17262
17434
  var init_text = __esm({
17263
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/text.js"() {
17435
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/text.js"() {
17264
17436
  "use strict";
17265
17437
  init_entity();
17266
17438
  init_utils();
@@ -17286,14 +17458,14 @@ var init_text = __esm({
17286
17458
  }
17287
17459
  });
17288
17460
 
17289
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/time.js
17461
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/time.js
17290
17462
  function time(a, b = {}) {
17291
17463
  const { name, config } = getColumnNameAndConfig(a, b);
17292
17464
  return new PgTimeBuilder(name, config.withTimezone ?? false, config.precision);
17293
17465
  }
17294
17466
  var PgTimeBuilder, PgTime;
17295
17467
  var init_time = __esm({
17296
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/time.js"() {
17468
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/time.js"() {
17297
17469
  "use strict";
17298
17470
  init_entity();
17299
17471
  init_utils();
@@ -17330,7 +17502,7 @@ var init_time = __esm({
17330
17502
  }
17331
17503
  });
17332
17504
 
17333
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/timestamp.js
17505
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/timestamp.js
17334
17506
  function timestamp(a, b = {}) {
17335
17507
  const { name, config } = getColumnNameAndConfig(a, b);
17336
17508
  if (config?.mode === "string") {
@@ -17340,7 +17512,7 @@ function timestamp(a, b = {}) {
17340
17512
  }
17341
17513
  var PgTimestampBuilder, PgTimestamp, PgTimestampStringBuilder, PgTimestampString;
17342
17514
  var init_timestamp = __esm({
17343
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/timestamp.js"() {
17515
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/timestamp.js"() {
17344
17516
  "use strict";
17345
17517
  init_entity();
17346
17518
  init_utils();
@@ -17421,13 +17593,13 @@ var init_timestamp = __esm({
17421
17593
  }
17422
17594
  });
17423
17595
 
17424
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/uuid.js
17596
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/uuid.js
17425
17597
  function uuid(name) {
17426
17598
  return new PgUUIDBuilder(name ?? "");
17427
17599
  }
17428
17600
  var PgUUIDBuilder, PgUUID;
17429
17601
  var init_uuid = __esm({
17430
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/uuid.js"() {
17602
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/uuid.js"() {
17431
17603
  "use strict";
17432
17604
  init_entity();
17433
17605
  init_sql();
@@ -17457,14 +17629,14 @@ var init_uuid = __esm({
17457
17629
  }
17458
17630
  });
17459
17631
 
17460
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/varchar.js
17632
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/varchar.js
17461
17633
  function varchar(a, b = {}) {
17462
17634
  const { name, config } = getColumnNameAndConfig(a, b);
17463
17635
  return new PgVarcharBuilder(name, config);
17464
17636
  }
17465
17637
  var PgVarcharBuilder, PgVarchar;
17466
17638
  var init_varchar = __esm({
17467
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/varchar.js"() {
17639
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/varchar.js"() {
17468
17640
  "use strict";
17469
17641
  init_entity();
17470
17642
  init_utils();
@@ -17495,14 +17667,14 @@ var init_varchar = __esm({
17495
17667
  }
17496
17668
  });
17497
17669
 
17498
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.js
17670
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.js
17499
17671
  function bit(a, b) {
17500
17672
  const { name, config } = getColumnNameAndConfig(a, b);
17501
17673
  return new PgBinaryVectorBuilder(name, config);
17502
17674
  }
17503
17675
  var PgBinaryVectorBuilder, PgBinaryVector;
17504
17676
  var init_bit = __esm({
17505
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.js"() {
17677
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/bit.js"() {
17506
17678
  "use strict";
17507
17679
  init_entity();
17508
17680
  init_utils();
@@ -17531,14 +17703,14 @@ var init_bit = __esm({
17531
17703
  }
17532
17704
  });
17533
17705
 
17534
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.js
17706
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.js
17535
17707
  function halfvec(a, b) {
17536
17708
  const { name, config } = getColumnNameAndConfig(a, b);
17537
17709
  return new PgHalfVectorBuilder(name, config);
17538
17710
  }
17539
17711
  var PgHalfVectorBuilder, PgHalfVector;
17540
17712
  var init_halfvec = __esm({
17541
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.js"() {
17713
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/halfvec.js"() {
17542
17714
  "use strict";
17543
17715
  init_entity();
17544
17716
  init_utils();
@@ -17573,14 +17745,14 @@ var init_halfvec = __esm({
17573
17745
  }
17574
17746
  });
17575
17747
 
17576
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.js
17748
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.js
17577
17749
  function sparsevec(a, b) {
17578
17750
  const { name, config } = getColumnNameAndConfig(a, b);
17579
17751
  return new PgSparseVectorBuilder(name, config);
17580
17752
  }
17581
17753
  var PgSparseVectorBuilder, PgSparseVector;
17582
17754
  var init_sparsevec = __esm({
17583
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.js"() {
17755
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/sparsevec.js"() {
17584
17756
  "use strict";
17585
17757
  init_entity();
17586
17758
  init_utils();
@@ -17609,14 +17781,14 @@ var init_sparsevec = __esm({
17609
17781
  }
17610
17782
  });
17611
17783
 
17612
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.js
17784
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.js
17613
17785
  function vector(a, b) {
17614
17786
  const { name, config } = getColumnNameAndConfig(a, b);
17615
17787
  return new PgVectorBuilder(name, config);
17616
17788
  }
17617
17789
  var PgVectorBuilder, PgVector;
17618
17790
  var init_vector = __esm({
17619
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.js"() {
17791
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/vector_extension/vector.js"() {
17620
17792
  "use strict";
17621
17793
  init_entity();
17622
17794
  init_utils();
@@ -17651,9 +17823,9 @@ var init_vector = __esm({
17651
17823
  }
17652
17824
  });
17653
17825
 
17654
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/index.js
17826
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/index.js
17655
17827
  var init_columns = __esm({
17656
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/index.js"() {
17828
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/index.js"() {
17657
17829
  "use strict";
17658
17830
  init_bigint();
17659
17831
  init_bigserial();
@@ -17693,10 +17865,10 @@ var init_columns = __esm({
17693
17865
  }
17694
17866
  });
17695
17867
 
17696
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/query-promise.js
17868
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/query-promise.js
17697
17869
  var QueryPromise;
17698
17870
  var init_query_promise = __esm({
17699
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/query-promise.js"() {
17871
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/query-promise.js"() {
17700
17872
  "use strict";
17701
17873
  init_entity();
17702
17874
  QueryPromise = class {
@@ -17724,10 +17896,10 @@ var init_query_promise = __esm({
17724
17896
  }
17725
17897
  });
17726
17898
 
17727
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/selection-proxy.js
17899
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/selection-proxy.js
17728
17900
  var SelectionProxyHandler;
17729
17901
  var init_selection_proxy = __esm({
17730
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/selection-proxy.js"() {
17902
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/selection-proxy.js"() {
17731
17903
  "use strict";
17732
17904
  init_alias();
17733
17905
  init_column();
@@ -17804,7 +17976,7 @@ var init_selection_proxy = __esm({
17804
17976
  }
17805
17977
  });
17806
17978
 
17807
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/all.js
17979
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/all.js
17808
17980
  function getPgColumnBuilders() {
17809
17981
  return {
17810
17982
  bigint,
@@ -17842,7 +18014,7 @@ function getPgColumnBuilders() {
17842
18014
  };
17843
18015
  }
17844
18016
  var init_all = __esm({
17845
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/columns/all.js"() {
18017
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/columns/all.js"() {
17846
18018
  "use strict";
17847
18019
  init_bigint();
17848
18020
  init_bigserial();
@@ -17879,7 +18051,7 @@ var init_all = __esm({
17879
18051
  }
17880
18052
  });
17881
18053
 
17882
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/table.js
18054
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/table.js
17883
18055
  function pgTableWithSchema(name, columns, extraConfig, schema, baseName = name) {
17884
18056
  const rawTable = new PgTable(name, schema, baseName);
17885
18057
  const parsedColumns = typeof columns === "function" ? columns(getPgColumnBuilders()) : columns;
@@ -17915,7 +18087,7 @@ function pgTableWithSchema(name, columns, extraConfig, schema, baseName = name)
17915
18087
  }
17916
18088
  var InlineForeignKeys, EnableRLS, PgTable, pgTable;
17917
18089
  var init_table2 = __esm({
17918
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/table.js"() {
18090
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/table.js"() {
17919
18091
  "use strict";
17920
18092
  init_entity();
17921
18093
  init_table();
@@ -17944,7 +18116,7 @@ var init_table2 = __esm({
17944
18116
  }
17945
18117
  });
17946
18118
 
17947
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/indexes.js
18119
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/indexes.js
17948
18120
  function index(name) {
17949
18121
  return new IndexBuilderOn(false, name);
17950
18122
  }
@@ -17953,7 +18125,7 @@ function uniqueIndex(name) {
17953
18125
  }
17954
18126
  var IndexBuilderOn, IndexBuilder, Index;
17955
18127
  var init_indexes = __esm({
17956
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/indexes.js"() {
18128
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/indexes.js"() {
17957
18129
  "use strict";
17958
18130
  init_sql();
17959
18131
  init_entity();
@@ -18065,10 +18237,10 @@ var init_indexes = __esm({
18065
18237
  }
18066
18238
  });
18067
18239
 
18068
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/policies.js
18240
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/policies.js
18069
18241
  var PgPolicy;
18070
18242
  var init_policies = __esm({
18071
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/policies.js"() {
18243
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/policies.js"() {
18072
18244
  "use strict";
18073
18245
  init_entity();
18074
18246
  PgPolicy = class {
@@ -18098,7 +18270,7 @@ var init_policies = __esm({
18098
18270
  }
18099
18271
  });
18100
18272
 
18101
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/primary-keys.js
18273
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/primary-keys.js
18102
18274
  function primaryKey(...config) {
18103
18275
  if (config[0].columns) {
18104
18276
  return new PrimaryKeyBuilder(config[0].columns, config[0].name);
@@ -18107,7 +18279,7 @@ function primaryKey(...config) {
18107
18279
  }
18108
18280
  var PrimaryKeyBuilder, PrimaryKey;
18109
18281
  var init_primary_keys = __esm({
18110
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/primary-keys.js"() {
18282
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/primary-keys.js"() {
18111
18283
  "use strict";
18112
18284
  init_entity();
18113
18285
  init_table2();
@@ -18142,16 +18314,16 @@ var init_primary_keys = __esm({
18142
18314
  }
18143
18315
  });
18144
18316
 
18145
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/view-common.js
18317
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/view-common.js
18146
18318
  var PgViewConfig;
18147
18319
  var init_view_common2 = __esm({
18148
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/view-common.js"() {
18320
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/view-common.js"() {
18149
18321
  "use strict";
18150
18322
  PgViewConfig = /* @__PURE__ */ Symbol.for("drizzle:PgViewConfig");
18151
18323
  }
18152
18324
  });
18153
18325
 
18154
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/casing.js
18326
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/casing.js
18155
18327
  function toSnakeCase(input) {
18156
18328
  const words2 = input.replace(/['\u2019]/g, "").match(/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g) ?? [];
18157
18329
  return words2.map((word) => word.toLowerCase()).join("_");
@@ -18168,7 +18340,7 @@ function noopCase(input) {
18168
18340
  }
18169
18341
  var CasingCache;
18170
18342
  var init_casing = __esm({
18171
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/casing.js"() {
18343
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/casing.js"() {
18172
18344
  "use strict";
18173
18345
  init_entity();
18174
18346
  init_table();
@@ -18211,10 +18383,10 @@ var init_casing = __esm({
18211
18383
  }
18212
18384
  });
18213
18385
 
18214
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/errors.js
18386
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/errors.js
18215
18387
  var DrizzleError, DrizzleQueryError, TransactionRollbackError;
18216
18388
  var init_errors = __esm({
18217
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/errors.js"() {
18389
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/errors.js"() {
18218
18390
  "use strict";
18219
18391
  init_entity();
18220
18392
  DrizzleError = class extends Error {
@@ -18245,7 +18417,7 @@ params: ${params}`);
18245
18417
  }
18246
18418
  });
18247
18419
 
18248
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/expressions/conditions.js
18420
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/expressions/conditions.js
18249
18421
  function bindIfParam(value, column) {
18250
18422
  if (isDriverValueEncoder(column) && !isSQLWrapper(value) && !is(value, Param) && !is(value, Placeholder) && !is(value, Column) && !is(value, Table) && !is(value, View)) {
18251
18423
  return new Param(value, column);
@@ -18343,7 +18515,7 @@ function notIlike(column, value) {
18343
18515
  }
18344
18516
  var eq, ne, gt, gte, lt, lte;
18345
18517
  var init_conditions = __esm({
18346
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/expressions/conditions.js"() {
18518
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/expressions/conditions.js"() {
18347
18519
  "use strict";
18348
18520
  init_column();
18349
18521
  init_entity();
@@ -18370,7 +18542,7 @@ var init_conditions = __esm({
18370
18542
  }
18371
18543
  });
18372
18544
 
18373
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/expressions/select.js
18545
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/expressions/select.js
18374
18546
  function asc(column) {
18375
18547
  return sql`${column} asc`;
18376
18548
  }
@@ -18378,22 +18550,22 @@ function desc(column) {
18378
18550
  return sql`${column} desc`;
18379
18551
  }
18380
18552
  var init_select = __esm({
18381
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/expressions/select.js"() {
18553
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/expressions/select.js"() {
18382
18554
  "use strict";
18383
18555
  init_sql();
18384
18556
  }
18385
18557
  });
18386
18558
 
18387
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/expressions/index.js
18559
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/expressions/index.js
18388
18560
  var init_expressions = __esm({
18389
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/expressions/index.js"() {
18561
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/expressions/index.js"() {
18390
18562
  "use strict";
18391
18563
  init_conditions();
18392
18564
  init_select();
18393
18565
  }
18394
18566
  });
18395
18567
 
18396
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/relations.js
18568
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/relations.js
18397
18569
  function getOperators() {
18398
18570
  return {
18399
18571
  and,
@@ -18530,7 +18702,7 @@ function mapRelationalRow(tablesConfig, tableConfig, row, buildQueryResultSelect
18530
18702
  }
18531
18703
  var Relation, Relations, One, Many;
18532
18704
  var init_relations = __esm({
18533
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/relations.js"() {
18705
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/relations.js"() {
18534
18706
  "use strict";
18535
18707
  init_table();
18536
18708
  init_column();
@@ -18592,32 +18764,32 @@ var init_relations = __esm({
18592
18764
  }
18593
18765
  });
18594
18766
 
18595
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/functions/aggregate.js
18767
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/functions/aggregate.js
18596
18768
  var init_aggregate = __esm({
18597
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/functions/aggregate.js"() {
18769
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/functions/aggregate.js"() {
18598
18770
  "use strict";
18599
18771
  }
18600
18772
  });
18601
18773
 
18602
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/functions/vector.js
18774
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/functions/vector.js
18603
18775
  var init_vector2 = __esm({
18604
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/functions/vector.js"() {
18776
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/functions/vector.js"() {
18605
18777
  "use strict";
18606
18778
  }
18607
18779
  });
18608
18780
 
18609
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/functions/index.js
18781
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/functions/index.js
18610
18782
  var init_functions = __esm({
18611
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/functions/index.js"() {
18783
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/functions/index.js"() {
18612
18784
  "use strict";
18613
18785
  init_aggregate();
18614
18786
  init_vector2();
18615
18787
  }
18616
18788
  });
18617
18789
 
18618
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/index.js
18790
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/index.js
18619
18791
  var init_sql2 = __esm({
18620
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/sql/index.js"() {
18792
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/sql/index.js"() {
18621
18793
  "use strict";
18622
18794
  init_expressions();
18623
18795
  init_functions();
@@ -18625,10 +18797,10 @@ var init_sql2 = __esm({
18625
18797
  }
18626
18798
  });
18627
18799
 
18628
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/view-base.js
18800
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/view-base.js
18629
18801
  var PgViewBase;
18630
18802
  var init_view_base = __esm({
18631
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/view-base.js"() {
18803
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/view-base.js"() {
18632
18804
  "use strict";
18633
18805
  init_entity();
18634
18806
  init_sql();
@@ -18638,10 +18810,10 @@ var init_view_base = __esm({
18638
18810
  }
18639
18811
  });
18640
18812
 
18641
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/dialect.js
18813
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/dialect.js
18642
18814
  var PgDialect;
18643
18815
  var init_dialect = __esm({
18644
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/dialect.js"() {
18816
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/dialect.js"() {
18645
18817
  "use strict";
18646
18818
  init_alias();
18647
18819
  init_casing();
@@ -19764,10 +19936,10 @@ var init_dialect = __esm({
19764
19936
  }
19765
19937
  });
19766
19938
 
19767
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/query-builders/query-builder.js
19939
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/query-builders/query-builder.js
19768
19940
  var TypedQueryBuilder;
19769
19941
  var init_query_builder = __esm({
19770
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/query-builders/query-builder.js"() {
19942
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/query-builders/query-builder.js"() {
19771
19943
  "use strict";
19772
19944
  init_entity();
19773
19945
  TypedQueryBuilder = class {
@@ -19780,7 +19952,7 @@ var init_query_builder = __esm({
19780
19952
  }
19781
19953
  });
19782
19954
 
19783
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/select.js
19955
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/select.js
19784
19956
  function createSetOperator(type, isAll) {
19785
19957
  return (leftSelect, rightSelect, ...restSelects) => {
19786
19958
  const setOperators = [rightSelect, ...restSelects].map((select) => ({
@@ -19800,7 +19972,7 @@ function createSetOperator(type, isAll) {
19800
19972
  }
19801
19973
  var PgSelectBuilder, PgSelectQueryBuilderBase, PgSelectBase, getPgSetOperators, union, unionAll, intersect, intersectAll, except, exceptAll;
19802
19974
  var init_select2 = __esm({
19803
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/select.js"() {
19975
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/select.js"() {
19804
19976
  "use strict";
19805
19977
  init_entity();
19806
19978
  init_view_base();
@@ -20615,10 +20787,10 @@ var init_select2 = __esm({
20615
20787
  }
20616
20788
  });
20617
20789
 
20618
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/query-builder.js
20790
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/query-builder.js
20619
20791
  var QueryBuilder;
20620
20792
  var init_query_builder2 = __esm({
20621
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/query-builder.js"() {
20793
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/query-builder.js"() {
20622
20794
  "use strict";
20623
20795
  init_entity();
20624
20796
  init_dialect();
@@ -20713,7 +20885,7 @@ var init_query_builder2 = __esm({
20713
20885
  }
20714
20886
  });
20715
20887
 
20716
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/view.js
20888
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/view.js
20717
20889
  function pgViewWithSchema(name, selection, schema) {
20718
20890
  if (selection) {
20719
20891
  return new ManualViewBuilder(name, selection, schema);
@@ -20728,7 +20900,7 @@ function pgMaterializedViewWithSchema(name, selection, schema) {
20728
20900
  }
20729
20901
  var DefaultViewBuilderCore, ViewBuilder, ManualViewBuilder, MaterializedViewBuilderCore, MaterializedViewBuilder, ManualMaterializedViewBuilder, PgView, PgMaterializedViewConfig, PgMaterializedView;
20730
20902
  var init_view = __esm({
20731
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/view.js"() {
20903
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/view.js"() {
20732
20904
  "use strict";
20733
20905
  init_entity();
20734
20906
  init_selection_proxy();
@@ -20963,7 +21135,7 @@ var init_view = __esm({
20963
21135
  }
20964
21136
  });
20965
21137
 
20966
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/utils.js
21138
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/utils.js
20967
21139
  function extractUsedTable(table) {
20968
21140
  if (is(table, PgTable)) {
20969
21141
  return [table[Schema] ? `${table[Schema]}.${table[Table.Symbol.BaseName]}` : table[Table.Symbol.BaseName]];
@@ -20977,7 +21149,7 @@ function extractUsedTable(table) {
20977
21149
  return [];
20978
21150
  }
20979
21151
  var init_utils3 = __esm({
20980
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/utils.js"() {
21152
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/utils.js"() {
20981
21153
  "use strict";
20982
21154
  init_entity();
20983
21155
  init_table2();
@@ -20987,10 +21159,10 @@ var init_utils3 = __esm({
20987
21159
  }
20988
21160
  });
20989
21161
 
20990
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/delete.js
21162
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/delete.js
20991
21163
  var PgDeleteBase;
20992
21164
  var init_delete = __esm({
20993
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/delete.js"() {
21165
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/delete.js"() {
20994
21166
  "use strict";
20995
21167
  init_entity();
20996
21168
  init_query_promise();
@@ -21096,10 +21268,10 @@ var init_delete = __esm({
21096
21268
  }
21097
21269
  });
21098
21270
 
21099
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/insert.js
21271
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/insert.js
21100
21272
  var PgInsertBuilder, PgInsertBase;
21101
21273
  var init_insert = __esm({
21102
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/insert.js"() {
21274
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/insert.js"() {
21103
21275
  "use strict";
21104
21276
  init_entity();
21105
21277
  init_query_promise();
@@ -21304,10 +21476,10 @@ var init_insert = __esm({
21304
21476
  }
21305
21477
  });
21306
21478
 
21307
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.js
21479
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.js
21308
21480
  var PgRefreshMaterializedView;
21309
21481
  var init_refresh_materialized_view = __esm({
21310
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.js"() {
21482
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.js"() {
21311
21483
  "use strict";
21312
21484
  init_entity();
21313
21485
  init_query_promise();
@@ -21367,17 +21539,17 @@ var init_refresh_materialized_view = __esm({
21367
21539
  }
21368
21540
  });
21369
21541
 
21370
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/select.types.js
21542
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/select.types.js
21371
21543
  var init_select_types = __esm({
21372
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/select.types.js"() {
21544
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/select.types.js"() {
21373
21545
  "use strict";
21374
21546
  }
21375
21547
  });
21376
21548
 
21377
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/update.js
21549
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/update.js
21378
21550
  var PgUpdateBuilder, PgUpdateBase;
21379
21551
  var init_update = __esm({
21380
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/update.js"() {
21552
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/update.js"() {
21381
21553
  "use strict";
21382
21554
  init_entity();
21383
21555
  init_table2();
@@ -21602,9 +21774,9 @@ var init_update = __esm({
21602
21774
  }
21603
21775
  });
21604
21776
 
21605
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/index.js
21777
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/index.js
21606
21778
  var init_query_builders = __esm({
21607
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/index.js"() {
21779
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/index.js"() {
21608
21780
  "use strict";
21609
21781
  init_delete();
21610
21782
  init_insert();
@@ -21616,10 +21788,10 @@ var init_query_builders = __esm({
21616
21788
  }
21617
21789
  });
21618
21790
 
21619
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/count.js
21791
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/count.js
21620
21792
  var PgCountBuilder;
21621
21793
  var init_count = __esm({
21622
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/count.js"() {
21794
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/count.js"() {
21623
21795
  "use strict";
21624
21796
  init_entity();
21625
21797
  init_sql();
@@ -21675,10 +21847,10 @@ var init_count = __esm({
21675
21847
  }
21676
21848
  });
21677
21849
 
21678
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/query.js
21850
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/query.js
21679
21851
  var RelationalQueryBuilder, PgRelationalQuery;
21680
21852
  var init_query = __esm({
21681
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/query.js"() {
21853
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/query.js"() {
21682
21854
  "use strict";
21683
21855
  init_entity();
21684
21856
  init_query_promise();
@@ -21798,10 +21970,10 @@ var init_query = __esm({
21798
21970
  }
21799
21971
  });
21800
21972
 
21801
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/raw.js
21973
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/raw.js
21802
21974
  var PgRaw;
21803
21975
  var init_raw = __esm({
21804
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/query-builders/raw.js"() {
21976
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/query-builders/raw.js"() {
21805
21977
  "use strict";
21806
21978
  init_entity();
21807
21979
  init_query_promise();
@@ -21835,10 +22007,10 @@ var init_raw = __esm({
21835
22007
  }
21836
22008
  });
21837
22009
 
21838
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/db.js
22010
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/db.js
21839
22011
  var PgDatabase;
21840
22012
  var init_db = __esm({
21841
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/db.js"() {
22013
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/db.js"() {
21842
22014
  "use strict";
21843
22015
  init_entity();
21844
22016
  init_query_builders();
@@ -22129,10 +22301,10 @@ var init_db = __esm({
22129
22301
  }
22130
22302
  });
22131
22303
 
22132
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/roles.js
22304
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/roles.js
22133
22305
  var PgRole;
22134
22306
  var init_roles = __esm({
22135
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/roles.js"() {
22307
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/roles.js"() {
22136
22308
  "use strict";
22137
22309
  init_entity();
22138
22310
  PgRole = class {
@@ -22161,13 +22333,13 @@ var init_roles = __esm({
22161
22333
  }
22162
22334
  });
22163
22335
 
22164
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/sequence.js
22336
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/sequence.js
22165
22337
  function pgSequenceWithSchema(name, options, schema) {
22166
22338
  return new PgSequence(name, options, schema);
22167
22339
  }
22168
22340
  var PgSequence;
22169
22341
  var init_sequence = __esm({
22170
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/sequence.js"() {
22342
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/sequence.js"() {
22171
22343
  "use strict";
22172
22344
  init_entity();
22173
22345
  PgSequence = class {
@@ -22181,10 +22353,10 @@ var init_sequence = __esm({
22181
22353
  }
22182
22354
  });
22183
22355
 
22184
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/schema.js
22356
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/schema.js
22185
22357
  var PgSchema;
22186
22358
  var init_schema = __esm({
22187
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/schema.js"() {
22359
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/schema.js"() {
22188
22360
  "use strict";
22189
22361
  init_entity();
22190
22362
  init_sql();
@@ -22226,7 +22398,7 @@ var init_schema = __esm({
22226
22398
  }
22227
22399
  });
22228
22400
 
22229
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/cache/core/cache.js
22401
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/cache/core/cache.js
22230
22402
  async function hashQuery(sql2, params) {
22231
22403
  const dataToHash = `${sql2}-${JSON.stringify(params)}`;
22232
22404
  const encoder = new TextEncoder();
@@ -22238,7 +22410,7 @@ async function hashQuery(sql2, params) {
22238
22410
  }
22239
22411
  var Cache, NoopCache;
22240
22412
  var init_cache = __esm({
22241
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/cache/core/cache.js"() {
22413
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/cache/core/cache.js"() {
22242
22414
  "use strict";
22243
22415
  init_entity();
22244
22416
  Cache = class {
@@ -22260,10 +22432,10 @@ var init_cache = __esm({
22260
22432
  }
22261
22433
  });
22262
22434
 
22263
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/session.js
22435
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/session.js
22264
22436
  var PgPreparedQuery, PgSession, PgTransaction;
22265
22437
  var init_session = __esm({
22266
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/session.js"() {
22438
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/session.js"() {
22267
22439
  "use strict";
22268
22440
  init_cache();
22269
22441
  init_entity();
@@ -22432,24 +22604,24 @@ var init_session = __esm({
22432
22604
  }
22433
22605
  });
22434
22606
 
22435
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/subquery.js
22607
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/subquery.js
22436
22608
  var init_subquery2 = __esm({
22437
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/subquery.js"() {
22609
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/subquery.js"() {
22438
22610
  "use strict";
22439
22611
  }
22440
22612
  });
22441
22613
 
22442
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/utils/index.js
22614
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/utils/index.js
22443
22615
  var init_utils4 = __esm({
22444
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/utils/index.js"() {
22616
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/utils/index.js"() {
22445
22617
  "use strict";
22446
22618
  init_array();
22447
22619
  }
22448
22620
  });
22449
22621
 
22450
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/index.js
22622
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/index.js
22451
22623
  var init_pg_core = __esm({
22452
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/pg-core/index.js"() {
22624
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/pg-core/index.js"() {
22453
22625
  "use strict";
22454
22626
  init_alias2();
22455
22627
  init_checks();
@@ -22475,10 +22647,10 @@ var init_pg_core = __esm({
22475
22647
  }
22476
22648
  });
22477
22649
 
22478
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/logger.js
22650
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/logger.js
22479
22651
  var ConsoleLogWriter, DefaultLogger, NoopLogger;
22480
22652
  var init_logger = __esm({
22481
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/logger.js"() {
22653
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/logger.js"() {
22482
22654
  "use strict";
22483
22655
  init_entity();
22484
22656
  ConsoleLogWriter = class {
@@ -22513,16 +22685,16 @@ var init_logger = __esm({
22513
22685
  }
22514
22686
  });
22515
22687
 
22516
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/operations.js
22688
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/operations.js
22517
22689
  var init_operations = __esm({
22518
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/operations.js"() {
22690
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/operations.js"() {
22519
22691
  "use strict";
22520
22692
  }
22521
22693
  });
22522
22694
 
22523
- // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/index.js
22695
+ // ../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/index.js
22524
22696
  var init_drizzle_orm = __esm({
22525
- "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+945f291b04950af1-0eeb79c238070935/node_modules/drizzle-orm/index.js"() {
22697
+ "../../../../../.bun/install/cache/links/drizzle-orm@0.45.2+0e77e15670334f72-6b5b2d415608327f/node_modules/drizzle-orm/index.js"() {
22526
22698
  "use strict";
22527
22699
  init_alias();
22528
22700
  init_column_builder();
@@ -22541,8 +22713,8 @@ var init_drizzle_orm = __esm({
22541
22713
  }
22542
22714
  });
22543
22715
 
22544
- // ../../../../../.bun/install/cache/links/drizzle-zod@0.7.1+b82be57366b14e0b-a78b00726e90c984/node_modules/drizzle-zod/index.mjs
22545
- import { z as z14 } from "zod";
22716
+ // ../../../../../.bun/install/cache/links/drizzle-zod@0.7.1+2b3f80f9e7a856f9-60f0bf5b170413db/node_modules/drizzle-zod/index.mjs
22717
+ import { z as z15 } from "zod";
22546
22718
  function isColumnType(column, columnTypes) {
22547
22719
  return columnTypes.includes(column.columnType);
22548
22720
  }
@@ -22550,7 +22722,7 @@ function isWithEnum(column) {
22550
22722
  return "enumValues" in column && Array.isArray(column.enumValues) && column.enumValues.length > 0;
22551
22723
  }
22552
22724
  function columnToSchema(column, factory) {
22553
- const z$1 = factory?.zodInstance ?? z14;
22725
+ const z$1 = factory?.zodInstance ?? z15;
22554
22726
  const coerce = factory?.coerce ?? {};
22555
22727
  let schema;
22556
22728
  if (isWithEnum(column)) {
@@ -22600,7 +22772,7 @@ function columnToSchema(column, factory) {
22600
22772
  }
22601
22773
  return schema;
22602
22774
  }
22603
- function numberColumnToSchema(column, z34, coerce) {
22775
+ function numberColumnToSchema(column, z35, coerce) {
22604
22776
  let unsigned = column.getSQLType().includes("unsigned");
22605
22777
  let min;
22606
22778
  let max;
@@ -22668,20 +22840,20 @@ function numberColumnToSchema(column, z34, coerce) {
22668
22840
  min = Number.MIN_SAFE_INTEGER;
22669
22841
  max = Number.MAX_SAFE_INTEGER;
22670
22842
  }
22671
- let schema = coerce === true || coerce?.number ? z34.coerce.number() : z34.number();
22843
+ let schema = coerce === true || coerce?.number ? z35.coerce.number() : z35.number();
22672
22844
  schema = schema.min(min).max(max);
22673
22845
  return integer2 ? schema.int() : schema;
22674
22846
  }
22675
- function bigintColumnToSchema(column, z34, coerce) {
22847
+ function bigintColumnToSchema(column, z35, coerce) {
22676
22848
  const unsigned = column.getSQLType().includes("unsigned");
22677
22849
  const min = unsigned ? 0n : CONSTANTS.INT64_MIN;
22678
22850
  const max = unsigned ? CONSTANTS.INT64_UNSIGNED_MAX : CONSTANTS.INT64_MAX;
22679
- const schema = coerce === true || coerce?.bigint ? z34.coerce.bigint() : z34.bigint();
22851
+ const schema = coerce === true || coerce?.bigint ? z35.coerce.bigint() : z35.bigint();
22680
22852
  return schema.min(min).max(max);
22681
22853
  }
22682
- function stringColumnToSchema(column, z34, coerce) {
22854
+ function stringColumnToSchema(column, z35, coerce) {
22683
22855
  if (isColumnType(column, ["PgUUID"])) {
22684
- return z34.string().uuid();
22856
+ return z35.string().uuid();
22685
22857
  }
22686
22858
  let max;
22687
22859
  let regex;
@@ -22713,7 +22885,7 @@ function stringColumnToSchema(column, z34, coerce) {
22713
22885
  regex = /^[01]+$/;
22714
22886
  max = column.dimensions;
22715
22887
  }
22716
- let schema = coerce === true || coerce?.string ? z34.coerce.string() : z34.string();
22888
+ let schema = coerce === true || coerce?.string ? z35.coerce.string() : z35.string();
22717
22889
  schema = regex ? schema.regex(regex) : schema;
22718
22890
  return max && fixed ? schema.length(max) : max ? schema.max(max) : schema;
22719
22891
  }
@@ -22734,7 +22906,7 @@ function handleColumns(columns, refinements, conditions, factory) {
22734
22906
  continue;
22735
22907
  }
22736
22908
  const column = is(selected, Column) ? selected : void 0;
22737
- const schema = column ? columnToSchema(column, factory) : z14.any();
22909
+ const schema = column ? columnToSchema(column, factory) : z15.any();
22738
22910
  const refined = typeof refinement === "function" ? refinement(schema) : schema;
22739
22911
  if (conditions.never(column)) {
22740
22912
  continue;
@@ -22750,15 +22922,15 @@ function handleColumns(columns, refinements, conditions, factory) {
22750
22922
  }
22751
22923
  }
22752
22924
  }
22753
- return z14.object(columnSchemas);
22925
+ return z15.object(columnSchemas);
22754
22926
  }
22755
22927
  function handleEnum(enum_, factory) {
22756
- const zod = factory?.zodInstance ?? z14;
22928
+ const zod = factory?.zodInstance ?? z15;
22757
22929
  return zod.enum(enum_.enumValues);
22758
22930
  }
22759
22931
  var CONSTANTS, isPgEnum2, literalSchema, jsonSchema, bufferSchema, selectConditions, insertConditions, createSelectSchema, createInsertSchema;
22760
22932
  var init_drizzle_zod = __esm({
22761
- "../../../../../.bun/install/cache/links/drizzle-zod@0.7.1+b82be57366b14e0b-a78b00726e90c984/node_modules/drizzle-zod/index.mjs"() {
22933
+ "../../../../../.bun/install/cache/links/drizzle-zod@0.7.1+2b3f80f9e7a856f9-60f0bf5b170413db/node_modules/drizzle-zod/index.mjs"() {
22762
22934
  "use strict";
22763
22935
  init_drizzle_orm();
22764
22936
  CONSTANTS = {
@@ -22782,9 +22954,9 @@ var init_drizzle_zod = __esm({
22782
22954
  INT64_UNSIGNED_MAX: 18446744073709551615n
22783
22955
  };
22784
22956
  isPgEnum2 = isWithEnum;
22785
- literalSchema = z14.union([z14.string(), z14.number(), z14.boolean(), z14.null()]);
22786
- jsonSchema = z14.union([literalSchema, z14.record(z14.any()), z14.array(z14.any())]);
22787
- bufferSchema = z14.custom((v) => v instanceof Buffer);
22957
+ literalSchema = z15.union([z15.string(), z15.number(), z15.boolean(), z15.null()]);
22958
+ jsonSchema = z15.union([literalSchema, z15.record(z15.any()), z15.array(z15.any())]);
22959
+ bufferSchema = z15.custom((v) => v instanceof Buffer);
22788
22960
  selectConditions = {
22789
22961
  never: () => false,
22790
22962
  optional: () => false,
@@ -22810,7 +22982,7 @@ var init_drizzle_zod = __esm({
22810
22982
  });
22811
22983
 
22812
22984
  // ../shared/src/schema.ts
22813
- import { z as z15 } from "zod";
22985
+ import { z as z16 } from "zod";
22814
22986
  var vector2, messageRoleEnum, messageTypeEnum, designSystemStatusEnum, onboardingPathValues, onboardingPathSchema, onboardingPathSqlValues, mcpIssueCategoryValues, mcpIssueStatusValues, mcpIssueImprovementStatusValues, mcpIssueImprovementVerdictValues, mcpIssueImprovementStatusSchema, mcpIssueImprovementVerdictSchema, mcpIssueImprovementStatusSqlValues, mcpIssueImprovementVerdictSqlValues, designConfigSchema, projectMemoryDataSchema, projects, messages, projectMemory, fragments, usage, scrapeBlock, resourceAccess, user, signupAlertDeliveries, billingAlertDeliveries, TEAM_RULES_MAX_BYTES, teamRules, billingSubscription, githubInstallationClaim, githubInstallation, featureAccess, session, account, verification, jwks, oauthClient, oauthRefreshToken, oauthAccessToken, oauthConsent, designSystems, designSystemComponents, foundationalDocs, apiKeys, emailCampaignSends, emailCampaignSteps, projectEvents, iconLibraries, dsSearchQueries, mcpToolCalls, mcpClientConnections, evalVerdicts, generationInputs, mcpIssues, mcpIssueImprovements, projectsRelations, projectMemoryRelations, mcpIssuesRelations, mcpIssueImprovementsRelations, messagesRelations, fragmentsRelations, designSystemsRelations, designSystemComponentsRelations, insertProjectSchema, selectProjectSchema, insertMessageSchema, selectMessageSchema, insertFragmentSchema, selectFragmentSchema, insertProjectMemorySchema, selectProjectMemorySchema, insertDesignSystemSchema, selectDesignSystemSchema, insertDesignSystemComponentSchema, selectDesignSystemComponentSchema, insertFoundationalDocSchema, selectFoundationalDocSchema, insertIconLibrarySchema, selectIconLibrarySchema, insertApiKeySchema, selectApiKeySchema, insertUserSchema, selectUserSchema, insertSignupAlertDeliverySchema, selectSignupAlertDeliverySchema, insertEmailCampaignSendSchema, selectEmailCampaignSendSchema, insertEmailCampaignStepSchema, selectEmailCampaignStepSchema, insertMcpIssueImprovementSchema, selectMcpIssueImprovementSchema, pluginAuthNonces;
22815
22987
  var init_schema2 = __esm({
22816
22988
  "../shared/src/schema.ts"() {
@@ -22845,7 +23017,7 @@ var init_schema2 = __esm({
22845
23017
  "skip",
22846
23018
  "legacy"
22847
23019
  ];
22848
- onboardingPathSchema = z15.enum(onboardingPathValues);
23020
+ onboardingPathSchema = z16.enum(onboardingPathValues);
22849
23021
  onboardingPathSqlValues = sql.raw(
22850
23022
  onboardingPathValues.map((path6) => `'${path6}'`).join(", ")
22851
23023
  );
@@ -22868,10 +23040,10 @@ var init_schema2 = __esm({
22868
23040
  "not_improved",
22869
23041
  "inconclusive"
22870
23042
  ];
22871
- mcpIssueImprovementStatusSchema = z15.enum(
23043
+ mcpIssueImprovementStatusSchema = z16.enum(
22872
23044
  mcpIssueImprovementStatusValues
22873
23045
  );
22874
- mcpIssueImprovementVerdictSchema = z15.enum(
23046
+ mcpIssueImprovementVerdictSchema = z16.enum(
22875
23047
  mcpIssueImprovementVerdictValues
22876
23048
  );
22877
23049
  mcpIssueImprovementStatusSqlValues = sql.raw(
@@ -22880,38 +23052,38 @@ var init_schema2 = __esm({
22880
23052
  mcpIssueImprovementVerdictSqlValues = sql.raw(
22881
23053
  mcpIssueImprovementVerdictValues.map((verdict) => `'${verdict}'`).join(", ")
22882
23054
  );
22883
- designConfigSchema = z15.object({
22884
- colors: z15.object({
22885
- primary: z15.string(),
22886
- secondary: z15.string(),
22887
- accent: z15.string(),
22888
- muted: z15.string(),
22889
- destructive: z15.string(),
22890
- background: z15.string(),
22891
- foreground: z15.string(),
22892
- card: z15.string(),
22893
- cardForeground: z15.string(),
22894
- popover: z15.string(),
22895
- popoverForeground: z15.string(),
22896
- border: z15.string(),
22897
- input: z15.string(),
22898
- ring: z15.string()
23055
+ designConfigSchema = z16.object({
23056
+ colors: z16.object({
23057
+ primary: z16.string(),
23058
+ secondary: z16.string(),
23059
+ accent: z16.string(),
23060
+ muted: z16.string(),
23061
+ destructive: z16.string(),
23062
+ background: z16.string(),
23063
+ foreground: z16.string(),
23064
+ card: z16.string(),
23065
+ cardForeground: z16.string(),
23066
+ popover: z16.string(),
23067
+ popoverForeground: z16.string(),
23068
+ border: z16.string(),
23069
+ input: z16.string(),
23070
+ ring: z16.string()
22899
23071
  }).partial(),
22900
- radius: z15.string(),
22901
- font: z15.object({
22902
- sans: z15.string(),
22903
- mono: z15.string()
23072
+ radius: z16.string(),
23073
+ font: z16.object({
23074
+ sans: z16.string(),
23075
+ mono: z16.string()
22904
23076
  }).partial(),
22905
- icons: z15.object({
22906
- libraryId: z15.string(),
22907
- variant: z15.string().nullable()
23077
+ icons: z16.object({
23078
+ libraryId: z16.string(),
23079
+ variant: z16.string().nullable()
22908
23080
  }).partial()
22909
23081
  }).partial();
22910
- projectMemoryDataSchema = z15.object({
22911
- lockedIn: z15.array(z15.string()),
22912
- rejected: z15.array(z15.string()),
22913
- tone: z15.string().nullable(),
22914
- notes: z15.string().nullable()
23082
+ projectMemoryDataSchema = z16.object({
23083
+ lockedIn: z16.array(z16.string()),
23084
+ rejected: z16.array(z16.string()),
23085
+ tone: z16.string().nullable(),
23086
+ notes: z16.string().nullable()
22915
23087
  });
22916
23088
  projects = pgTable("projects", {
22917
23089
  id: uuid("id").primaryKey().defaultRandom(),
@@ -23963,7 +24135,7 @@ var init_schema2 = __esm({
23963
24135
  });
23964
24136
 
23965
24137
  // ../shared/src/mcp/tools/design-config-tools.ts
23966
- import { z as z16 } from "zod";
24138
+ import { z as z17 } from "zod";
23967
24139
  function registerDesignConfigTools({
23968
24140
  server,
23969
24141
  tracked,
@@ -24014,7 +24186,7 @@ function registerDesignConfigTools({
24014
24186
  {
24015
24187
  title: "Get a Project's Tuned Design Config",
24016
24188
  description: `Read the user-tuned design config (exact color tokens, radius, fonts, icon library) of a generated project. Call this BEFORE building or restyling UI for the project, and again after the user tunes values on the project page, so you apply their exact numbers instead of guessing from adjectives.`,
24017
- inputSchema: z16.object({
24189
+ inputSchema: z17.object({
24018
24190
  projectId: PROJECT_ID_ARG,
24019
24191
  context: CONTEXT_ARG
24020
24192
  }),
@@ -24043,7 +24215,7 @@ function registerDesignConfigTools({
24043
24215
  {
24044
24216
  title: "Set a Project's Design Config",
24045
24217
  description: `Write exact design-token values (colors, radius, fonts, icon library) onto a generated project. Use this when the user states concrete values ("make primary oklch(0.62 0.11 45)", "radius 12px"). It merges over the current config and persists, so the change survives restarts and every later get-design-config returns it. Saved config is publicly readable by anyone with the fragment config URL. For vague direction ("warmer", "more playful"), iterate with the user toward concrete values first; do not invent numbers on their behalf.`,
24046
- inputSchema: z16.object({
24218
+ inputSchema: z17.object({
24047
24219
  projectId: PROJECT_ID_ARG,
24048
24220
  config: CONFIG_ARG,
24049
24221
  context: CONTEXT_ARG
@@ -24094,7 +24266,7 @@ var init_design_config_tools = __esm({
24094
24266
  "use strict";
24095
24267
  init_schema2();
24096
24268
  init_shared();
24097
- PROJECT_ID_ARG = z16.string().min(1).describe("The project id returned by create-design-system.");
24269
+ PROJECT_ID_ARG = z17.string().min(1).describe("The project id returned by create-design-system.");
24098
24270
  CONFIG_ARG = designConfigSchema.describe(
24099
24271
  "Partial design config to merge over the current one. Only pass the fields the user changed. Colors are oklch() strings (e.g. 'oklch(0.62 0.11 45)'); radius is a CSS length (e.g. '0.75rem'); fonts are family names."
24100
24272
  );
@@ -24102,16 +24274,16 @@ var init_design_config_tools = __esm({
24102
24274
  });
24103
24275
 
24104
24276
  // ../shared/src/mcp/tools/jig-tools.ts
24105
- import { z as z17 } from "zod";
24277
+ import { z as z18 } from "zod";
24106
24278
  function registerJigTools({ server, tracked }) {
24107
24279
  server.registerTool(
24108
24280
  "get-jig-guide",
24109
24281
  {
24110
24282
  title: "Get a Jig for Parameter Work",
24111
24283
  description: `Return the setup for a "jig", the tool you build to make the real thing precisely. Two kinds, both here. Use kind "tune-in-place" (default) when you are about to hard-code taste-based values in UI you are building: animation duration/easing/springs/stagger, particles, canvas physics, blur/glow/grain, gradient stops, shadow recipes, parallax speeds. It returns a control panel to wire to those parameters so the USER tunes by eye and you hard-code what they copy back. Use kind "standalone-tool" when the user wants a reusable custom tool instead: a generator, an image effect, a shader playground, an asset maker. That returns the Toolcraft starter kit (MIT), which ships a canvas and an export flow, with optional layers and a timeline. Tuning setups: React recommends DialKit (MIT, no re-render lag) with a dependency-free fallback; "vanilla" and "react-native" get dependency-free scaffolds.`,
24112
- inputSchema: z17.object({
24113
- kind: z17.enum(["tune-in-place", "standalone-tool"]).default("tune-in-place").describe("What the user needs. 'tune-in-place' (default): a control panel for parameters in the UI you are building. 'standalone-tool': a separate reusable design tool, scaffolded with Toolcraft."),
24114
- framework: z17.enum(["react", "vanilla", "react-native"]).optional().describe("Which tune-in-place setup to return. 'react' (default) for React/Next web projects; 'vanilla' for plain DOM or canvas work; 'react-native' for RN/Expo apps. Ignored when kind is 'standalone-tool'."),
24284
+ inputSchema: z18.object({
24285
+ kind: z18.enum(["tune-in-place", "standalone-tool"]).default("tune-in-place").describe("What the user needs. 'tune-in-place' (default): a control panel for parameters in the UI you are building. 'standalone-tool': a separate reusable design tool, scaffolded with Toolcraft."),
24286
+ framework: z18.enum(["react", "vanilla", "react-native"]).optional().describe("Which tune-in-place setup to return. 'react' (default) for React/Next web projects; 'vanilla' for plain DOM or canvas work; 'react-native' for RN/Expo apps. Ignored when kind is 'standalone-tool'."),
24115
24287
  context: CONTEXT_ARG
24116
24288
  }),
24117
24289
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -24943,20 +25115,12 @@ var init_brand_sources = __esm({
24943
25115
  });
24944
25116
 
24945
25117
  // ../shared/src/mcp/tools/extract-tools.ts
24946
- import { z as z18 } from "zod";
25118
+ import { z as z19 } from "zod";
24947
25119
  function authHeaders2(authContext) {
24948
25120
  if (!authContext) return {};
24949
25121
  const bearer = authContext.kind === "api-key" ? authContext.apiKey : authContext.accessToken;
24950
25122
  return { Authorization: `Bearer ${bearer}` };
24951
25123
  }
24952
- function redactUrl(raw) {
24953
- try {
24954
- const u = new URL(raw);
24955
- return `${u.origin}${u.pathname}`;
24956
- } catch {
24957
- return "[redacted]";
24958
- }
24959
- }
24960
25124
  function fitSheet(text3, maxTokens) {
24961
25125
  if (!maxTokens) return text3;
24962
25126
  return truncateToTokens(text3, Math.max(0, maxTokens - NOTE_TOKENS));
@@ -24988,15 +25152,15 @@ JSON.stringify(${buildRoleSampleScript()})
24988
25152
  - kind "tokens": a design-tokens JSON export ($value entries, W3C format or the Figma variables API shape with 0..1 rgb floats).
24989
25153
 
24990
25154
  Common vendor names (Shopify's --color-button family) are mapped into empty semantic slots automatically and the mapping is reported in the output.`,
24991
- inputSchema: z18.object({
24992
- css: z18.string().trim().min(1).max(2e5).optional().describe("Full contents of the project's globals.css (or any CSS holding the design tokens / CSS custom properties). Optional when `sources` is given."),
24993
- sources: z18.array(z18.object({
24994
- name: z18.string().trim().min(1).max(120).describe("Label for this source, e.g. 'globals.css', 'live site sample', 'figma variables'."),
24995
- kind: z18.enum(["css", "computed", "tokens"]).optional().describe("Omit to infer: JSON with $value entries is tokens, JSON keyed by UI roles is computed, anything else is CSS."),
24996
- content: z18.string().trim().min(1).max(2e5)
25155
+ inputSchema: z19.object({
25156
+ css: z19.string().trim().min(1).max(2e5).optional().describe("Full contents of the project's globals.css (or any CSS holding the design tokens / CSS custom properties). Optional when `sources` is given."),
25157
+ sources: z19.array(z19.object({
25158
+ name: z19.string().trim().min(1).max(120).describe("Label for this source, e.g. 'globals.css', 'live site sample', 'figma variables'."),
25159
+ kind: z19.enum(["css", "computed", "tokens"]).optional().describe("Omit to infer: JSON with $value entries is tokens, JSON keyed by UI roles is computed, anything else is CSS."),
25160
+ content: z19.string().trim().min(1).max(2e5)
24997
25161
  })).max(10).optional().describe("Any mix of brand sources, merged in order (later sources win). See the tool description for how to gather each kind."),
24998
- name: z18.string().trim().min(1).max(120).optional().describe("Optional label for the extracted system, e.g. the app or repo name."),
24999
- maxTokens: z18.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates the token sheet to fit.")
25162
+ name: z19.string().trim().min(1).max(120).optional().describe("Optional label for the extracted system, e.g. the app or repo name."),
25163
+ maxTokens: z19.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates the token sheet to fit.")
25000
25164
  }),
25001
25165
  annotations: READ_ONLY_TOOL_ANNOTATIONS
25002
25166
  },
@@ -25027,10 +25191,10 @@ Common vendor names (Shopify's --color-button family) are mapped into empty sema
25027
25191
  Use this when the user names their site ("match uclips.eu", "use our website's style") or hands you any public URL whose look should be reused. Server side, Better Design fetches the page's stylesheets AND renders the page in a headless browser to sample what role elements actually look like (body, heading, link, button, input, card), then merges both, rendered truth last. That reads the brand even when the site's variable names are unrecognizable.
25028
25192
 
25029
25193
  Slow by nature (a real browser loads the page): expect 10 to 45 seconds. For CSS the user already has locally, prefer extract-design-system, which is instant.`,
25030
- inputSchema: z18.object({
25031
- url: z18.string().trim().min(8).max(2048).describe("Public http(s) URL of the page to read, usually the homepage."),
25032
- name: z18.string().trim().min(1).max(120).optional().describe("Optional label for the extracted system. Defaults to the site's hostname."),
25033
- maxTokens: z18.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates the token sheet to fit.")
25194
+ inputSchema: z19.object({
25195
+ url: z19.string().trim().min(8).max(2048).describe("Public http(s) URL of the page to read, usually the homepage."),
25196
+ name: z19.string().trim().min(1).max(120).optional().describe("Optional label for the extracted system. Defaults to the site's hostname."),
25197
+ maxTokens: z19.number().min(500).max(5e4).optional().describe("Maximum tokens to return. Truncates the token sheet to fit.")
25034
25198
  }),
25035
25199
  // Reads any public page the user names, so the set of hosts it reaches is
25036
25200
  // the open web, not Better Design's catalog. It stores nothing. [BD-316]
@@ -25067,6 +25231,7 @@ var init_extract_tools = __esm({
25067
25231
  "use strict";
25068
25232
  init_shared();
25069
25233
  init_extract_design_system();
25234
+ init_redact();
25070
25235
  init_brand_sources();
25071
25236
  REFERENCE_NOTE = [
25072
25237
  "What this sheet does not carry: an oversized blurred gradient, a frosted panel, a glow, a stagger on load, an easing curve.",
@@ -25079,7 +25244,7 @@ var init_extract_tools = __esm({
25079
25244
  });
25080
25245
 
25081
25246
  // ../shared/src/mcp/tools/illustration-tools.ts
25082
- import { z as z19 } from "zod";
25247
+ import { z as z20 } from "zod";
25083
25248
  function fail(message) {
25084
25249
  return {
25085
25250
  content: [{ type: "text", text: message }],
@@ -25125,11 +25290,11 @@ How to call it:
25125
25290
  4. Stop when \`faults\` is empty.
25126
25291
 
25127
25292
  Markup carrying script, event handlers, remote references, or styles that reach outside the drawing is refused rather than cleaned, so the drawing you fix is the drawing you sent.`,
25128
- inputSchema: z19.object({
25129
- svg: z19.string().min(1).describe("The complete svg element you drew."),
25130
- intent: z19.string().min(1).describe('What it is meant to be, in plain words. For example "an open inbox tray with letters".'),
25131
- animated: z19.boolean().optional().describe("Set when the drawing was meant to move, so the motion checks apply."),
25132
- reviewToken: z19.string().optional().describe("The token from a previous review of this drawing. Reviews it again free.")
25293
+ inputSchema: z20.object({
25294
+ svg: z20.string().min(1).describe("The complete svg element you drew."),
25295
+ intent: z20.string().min(1).describe('What it is meant to be, in plain words. For example "an open inbox tray with letters".'),
25296
+ animated: z20.boolean().optional().describe("Set when the drawing was meant to move, so the motion checks apply."),
25297
+ reviewToken: z20.string().optional().describe("The token from a previous review of this drawing. Reviews it again free.")
25133
25298
  }),
25134
25299
  outputSchema: REVIEW_OUTPUT_SCHEMA,
25135
25300
  // A review without a valid reviewToken passes the paywall, so it spends
@@ -25208,16 +25373,16 @@ var init_illustration_tools = __esm({
25208
25373
  init_shared();
25209
25374
  REVIEW_OUTPUT_SCHEMA = {
25210
25375
  /** Empty when nothing is visibly wrong. */
25211
- faults: z19.array(z19.string()),
25376
+ faults: z20.array(z20.string()),
25212
25377
  /** Group ids in paint order, the parts an animation can target. */
25213
- layers: z19.array(z19.string()),
25378
+ layers: z20.array(z20.string()),
25214
25379
  /** False when the markup was refused; faults says why. */
25215
- reviewed: z19.boolean(),
25380
+ reviewed: z20.boolean(),
25216
25381
  /** True when the drawing could not be rendered, so only structure was checked. */
25217
- unseen: z19.boolean(),
25382
+ unseen: z20.boolean(),
25218
25383
  /** Pass this back to review the same drawing again without spending another credit. */
25219
- reviewToken: z19.string(),
25220
- message: z19.string()
25384
+ reviewToken: z20.string(),
25385
+ message: z20.string()
25221
25386
  };
25222
25387
  }
25223
25388
  });
@@ -26579,7 +26744,7 @@ ul.evidence { padding-inline-start: 1rem; }
26579
26744
  });
26580
26745
 
26581
26746
  // ../shared/src/mcp/tools/inspection-tools.ts
26582
- import { z as z20 } from "zod";
26747
+ import { z as z21 } from "zod";
26583
26748
  function coversRecommendedWidth(states, width) {
26584
26749
  return states.some(
26585
26750
  (state) => Math.abs(state.viewport.width - width) <= WIDTH_TOLERANCE
@@ -26641,30 +26806,30 @@ Workflow:
26641
26806
  3. Call again with the captured states and the project's spacing scale when known. The layout counts as measured only when this second call returns status \`completed\`; reading the snapshot yourself is not a measurement. The report and summary start with the highest-priority correction. Read structuredContent.findings or use detail: "full" for every returned finding, measurement, and fix. Structured evidence retains captured geometry and optional screenshots for report renderers.
26642
26807
 
26643
26808
  The capture reads visible layout geometry, computed spacing, corner radii, surface styles, the number of line boxes each text block rendered, and short accessible labels for interactive controls. It does not collect source code, cookies, form values, or network data. Add data-bd-inspect-label, data-bd-symmetry, data-bd-group, data-bd-compare-size, data-bd-align-group, and data-bd-align-edge attributes when the intended relationship cannot be inferred safely.`,
26644
- inputSchema: z20.object({
26645
- states: z20.array(spacingStateSchema).min(1).max(6).optional().describe("Rendered layout states from the capture script. Omit on the first call to receive the script."),
26646
- spacingScale: z20.array(finiteNumber.positive()).min(2).max(32).optional().describe("Project spacing tokens in CSS pixels. Defaults to 4, 8, 12, 16, 24, 32, 48, 64, 96, 128."),
26809
+ inputSchema: z21.object({
26810
+ states: z21.array(spacingStateSchema).min(1).max(6).optional().describe("Rendered layout states from the capture script. Omit on the first call to receive the script."),
26811
+ spacingScale: z21.array(finiteNumber.positive()).min(2).max(32).optional().describe("Project spacing tokens in CSS pixels. Defaults to 4, 8, 12, 16, 24, 32, 48, 64, 96, 128."),
26647
26812
  tolerance: finiteNumber.min(0).max(4).optional().describe("Pixel tolerance for grouping measurements. Defaults to 1px."),
26648
- detail: z20.enum(["summary", "full"]).default("summary").describe("Defaults to a short summary alongside the inline report. Use full for the capture script or all findings and measurements in text-only clients."),
26813
+ detail: z21.enum(["summary", "full"]).default("summary").describe("Defaults to a short summary alongside the inline report. Use full for the capture script or all findings and measurements in text-only clients."),
26649
26814
  context: CONTEXT_ARG
26650
26815
  }),
26651
- outputSchema: z20.object({
26652
- status: z20.enum(["needs-capture", "completed"]),
26653
- score: z20.number().optional(),
26654
- summary: z20.object({
26655
- critical: z20.number(),
26656
- serious: z20.number(),
26657
- moderate: z20.number(),
26658
- total: z20.number(),
26659
- truncated: z20.number().optional()
26816
+ outputSchema: z21.object({
26817
+ status: z21.enum(["needs-capture", "completed"]),
26818
+ score: z21.number().optional(),
26819
+ summary: z21.object({
26820
+ critical: z21.number(),
26821
+ serious: z21.number(),
26822
+ moderate: z21.number(),
26823
+ total: z21.number(),
26824
+ truncated: z21.number().optional()
26660
26825
  }).optional(),
26661
- findings: z20.array(findingSchema).optional(),
26662
- capturedWidths: z20.array(z20.number()).optional(),
26663
- missingWidths: z20.array(z20.number()).optional(),
26664
- states: z20.array(overlayStateSchema).optional(),
26665
- rubric: z20.array(z20.object({ id: z20.string(), title: z20.string() })).optional(),
26666
- rubricStatus: z20.enum(["loaded", "unavailable"]).optional(),
26667
- captureScript: z20.string().optional()
26826
+ findings: z21.array(findingSchema).optional(),
26827
+ capturedWidths: z21.array(z21.number()).optional(),
26828
+ missingWidths: z21.array(z21.number()).optional(),
26829
+ states: z21.array(overlayStateSchema).optional(),
26830
+ rubric: z21.array(z21.object({ id: z21.string(), title: z21.string() })).optional(),
26831
+ rubricStatus: z21.enum(["loaded", "unavailable"]).optional(),
26832
+ captureScript: z21.string().optional()
26668
26833
  }),
26669
26834
  annotations: READ_ONLY_TOOL_ANNOTATIONS,
26670
26835
  _meta: {
@@ -26749,67 +26914,67 @@ var init_inspection_tools = __esm({
26749
26914
  init_finding_copy();
26750
26915
  init_spacing_inspection_html();
26751
26916
  init_shared();
26752
- finiteNumber = z20.number().finite();
26753
- rectSchema = z20.object({
26917
+ finiteNumber = z21.number().finite();
26918
+ rectSchema = z21.object({
26754
26919
  x: finiteNumber,
26755
26920
  y: finiteNumber,
26756
26921
  width: finiteNumber.nonnegative(),
26757
26922
  height: finiteNumber.nonnegative()
26758
26923
  });
26759
- edgesSchema = z20.object({
26924
+ edgesSchema = z21.object({
26760
26925
  top: finiteNumber,
26761
26926
  right: finiteNumber,
26762
26927
  bottom: finiteNumber,
26763
26928
  left: finiteNumber
26764
26929
  });
26765
- cornerRadiusAxesSchema = z20.object({
26930
+ cornerRadiusAxesSchema = z21.object({
26766
26931
  horizontal: finiteNumber.nonnegative(),
26767
26932
  vertical: finiteNumber.nonnegative()
26768
26933
  });
26769
- cornerRadiusSchema = z20.union([
26934
+ cornerRadiusSchema = z21.union([
26770
26935
  cornerRadiusAxesSchema,
26771
26936
  finiteNumber.nonnegative().transform((value) => ({
26772
26937
  horizontal: value,
26773
26938
  vertical: value
26774
26939
  }))
26775
26940
  ]);
26776
- cornerRadiiSchema = z20.object({
26941
+ cornerRadiiSchema = z21.object({
26777
26942
  topLeft: cornerRadiusSchema,
26778
26943
  topRight: cornerRadiusSchema,
26779
26944
  bottomRight: cornerRadiusSchema,
26780
26945
  bottomLeft: cornerRadiusSchema
26781
26946
  });
26782
- styleSchema = z20.object({
26783
- display: z20.string().max(60).optional(),
26784
- position: z20.string().max(60).optional(),
26785
- flexDirection: z20.string().max(60).optional(),
26786
- flexWrap: z20.string().max(60).optional(),
26787
- alignItems: z20.string().max(60).optional(),
26788
- justifyContent: z20.string().max(60).optional(),
26947
+ styleSchema = z21.object({
26948
+ display: z21.string().max(60).optional(),
26949
+ position: z21.string().max(60).optional(),
26950
+ flexDirection: z21.string().max(60).optional(),
26951
+ flexWrap: z21.string().max(60).optional(),
26952
+ alignItems: z21.string().max(60).optional(),
26953
+ justifyContent: z21.string().max(60).optional(),
26789
26954
  rowGap: finiteNumber.optional(),
26790
26955
  columnGap: finiteNumber.optional(),
26791
26956
  padding: edgesSchema.optional(),
26792
26957
  margin: edgesSchema.optional(),
26793
- overflowX: z20.string().max(60).optional(),
26794
- overflowY: z20.string().max(60).optional(),
26958
+ overflowX: z21.string().max(60).optional(),
26959
+ overflowY: z21.string().max(60).optional(),
26795
26960
  borderRadius: cornerRadiiSchema.optional(),
26796
- backgroundColor: z20.string().max(160).optional(),
26797
- backgroundImage: z20.string().max(1e3).optional(),
26798
- boxShadow: z20.string().max(1e3).optional()
26961
+ backgroundColor: z21.string().max(160).optional(),
26962
+ backgroundImage: z21.string().max(1e3).optional(),
26963
+ boxShadow: z21.string().max(1e3).optional()
26799
26964
  });
26800
- elementSchema = z20.object({
26801
- id: z20.string().min(1).max(300),
26802
- selector: z20.string().max(500).optional(),
26803
- tag: z20.string().max(80).optional(),
26804
- role: z20.string().max(80).optional(),
26805
- label: z20.string().max(160).optional(),
26806
- parentId: z20.string().max(300).optional(),
26807
- groupId: z20.string().max(300).optional(),
26808
- alignmentGroup: z20.string().max(300).optional(),
26809
- alignmentEdge: z20.enum(["left", "right", "top", "bottom", "center-x", "center-y"]).optional(),
26810
- expectedSymmetry: z20.enum(["horizontal", "vertical", "both"]).optional(),
26811
- compareSize: z20.enum(["width", "height", "both"]).optional(),
26812
- interactive: z20.boolean().optional(),
26965
+ elementSchema = z21.object({
26966
+ id: z21.string().min(1).max(300),
26967
+ selector: z21.string().max(500).optional(),
26968
+ tag: z21.string().max(80).optional(),
26969
+ role: z21.string().max(80).optional(),
26970
+ label: z21.string().max(160).optional(),
26971
+ parentId: z21.string().max(300).optional(),
26972
+ groupId: z21.string().max(300).optional(),
26973
+ alignmentGroup: z21.string().max(300).optional(),
26974
+ alignmentEdge: z21.enum(["left", "right", "top", "bottom", "center-x", "center-y"]).optional(),
26975
+ expectedSymmetry: z21.enum(["horizontal", "vertical", "both"]).optional(),
26976
+ compareSize: z21.enum(["width", "height", "both"]).optional(),
26977
+ interactive: z21.boolean().optional(),
26813
26978
  rect: rectSchema,
26814
26979
  style: styleSchema.optional(),
26815
26980
  lineCount: finiteNumber.int().positive().optional(),
@@ -26818,41 +26983,41 @@ var init_inspection_tools = __esm({
26818
26983
  scrollWidth: finiteNumber.nonnegative().optional(),
26819
26984
  scrollHeight: finiteNumber.nonnegative().optional()
26820
26985
  });
26821
- screenshotSchema = z20.string().max(5e6).regex(/^data:image\/(?:png|jpeg|webp);base64,/, "Use a PNG, JPEG, or WebP data URL.");
26822
- spacingStateSchema = z20.object({
26823
- name: z20.string().min(1).max(100),
26824
- viewport: z20.object({
26986
+ screenshotSchema = z21.string().max(5e6).regex(/^data:image\/(?:png|jpeg|webp);base64,/, "Use a PNG, JPEG, or WebP data URL.");
26987
+ spacingStateSchema = z21.object({
26988
+ name: z21.string().min(1).max(100),
26989
+ viewport: z21.object({
26825
26990
  width: finiteNumber.positive().max(2e4),
26826
26991
  height: finiteNumber.positive().max(2e4),
26827
26992
  devicePixelRatio: finiteNumber.positive().max(10).optional()
26828
26993
  }),
26829
- elements: z20.array(elementSchema).max(1500),
26994
+ elements: z21.array(elementSchema).max(1500),
26830
26995
  screenshotDataUrl: screenshotSchema.optional().describe("Optional browser screenshot as a data URL. It remains in the structured evidence for report renderers and is not persisted.")
26831
26996
  });
26832
- evidenceSchema = z20.object({
26833
- label: z20.string(),
26834
- value: z20.union([z20.number(), z20.string()]),
26835
- unit: z20.enum(["px", "count"]).optional()
26997
+ evidenceSchema = z21.object({
26998
+ label: z21.string(),
26999
+ value: z21.union([z21.number(), z21.string()]),
27000
+ unit: z21.enum(["px", "count"]).optional()
26836
27001
  });
26837
- findingSchema = z20.object({
26838
- id: z20.string(),
26839
- ruleId: z20.string(),
26840
- state: z20.string(),
26841
- severity: z20.enum(["critical", "serious", "moderate"]),
26842
- message: z20.string(),
26843
- fix: z20.string(),
26844
- elementIds: z20.array(z20.string()),
26845
- evidence: z20.array(evidenceSchema)
27002
+ findingSchema = z21.object({
27003
+ id: z21.string(),
27004
+ ruleId: z21.string(),
27005
+ state: z21.string(),
27006
+ severity: z21.enum(["critical", "serious", "moderate"]),
27007
+ message: z21.string(),
27008
+ fix: z21.string(),
27009
+ elementIds: z21.array(z21.string()),
27010
+ evidence: z21.array(evidenceSchema)
26846
27011
  });
26847
- overlayStateSchema = z20.object({
26848
- name: z20.string(),
26849
- viewport: z20.object({
26850
- width: z20.number(),
26851
- height: z20.number(),
26852
- devicePixelRatio: z20.number().optional()
27012
+ overlayStateSchema = z21.object({
27013
+ name: z21.string(),
27014
+ viewport: z21.object({
27015
+ width: z21.number(),
27016
+ height: z21.number(),
27017
+ devicePixelRatio: z21.number().optional()
26853
27018
  }),
26854
- elements: z20.array(z20.object({ id: z20.string(), label: z20.string().optional(), rect: rectSchema })),
26855
- screenshotDataUrl: z20.string().optional()
27019
+ elements: z21.array(z21.object({ id: z21.string(), label: z21.string().optional(), rect: rectSchema })),
27020
+ screenshotDataUrl: z21.string().optional()
26856
27021
  });
26857
27022
  RECOMMENDED_VIEWPORT_WIDTHS = [390, 1440, 1728];
26858
27023
  WIDTH_TOLERANCE = 40;
@@ -26894,7 +27059,7 @@ var init_inspection_resource = __esm({
26894
27059
  });
26895
27060
 
26896
27061
  // ../shared/src/mcp/tools/dashboard-review-tools.ts
26897
- import { z as z21 } from "zod";
27062
+ import { z as z22 } from "zod";
26898
27063
  function finding(id, severity, message, fix) {
26899
27064
  return { id, severity, message, fix };
26900
27065
  }
@@ -27401,11 +27566,11 @@ function registerDashboardReviewTools({ server, track }) {
27401
27566
  Pass the complete page module source, the unchanged fixture, the factual interpretation, and the installed Sidebar, StatCard, and Table source files. Never summarize, reconstruct, or submit only the overview component. The tool derives the overview contract from the fixture. It fails incomplete source, rewritten copy, unsupported claims, weak hierarchy, missing or under-composed installed components, raw aside/table markup, the wrong scan order, action color on every rate, and stepper rails on short flows.
27402
27567
 
27403
27568
  FAIL is blocking and returns an MCP tool error. Fix every finding and call the tool again until PASS. Then run check-comprehension and inspect-spacing, and call finalize-dashboard-review. Only its VALID source-bound receipt permits presentation.`,
27404
- inputSchema: z21.object({
27405
- screen: z21.string().trim().min(1).max(120).describe("What this dashboard is, e.g. 'funnel report overview'."),
27406
- source: z21.string().min(1).max(12e4).describe("Complete TSX or JSX source for the dashboard page."),
27569
+ inputSchema: z22.object({
27570
+ screen: z22.string().trim().min(1).max(120).describe("What this dashboard is, e.g. 'funnel report overview'."),
27571
+ source: z22.string().min(1).max(12e4).describe("Complete TSX or JSX source for the dashboard page."),
27407
27572
  fixture: dashboardFixtureSchema.describe("The request's unchanged fixture object. The first step is the overview; remaining steps are dependent task screens."),
27408
- interpretation: z21.string().trim().min(1).max(2e3).describe("Exact supplied or factually derived takeaway that must appear after records."),
27573
+ interpretation: z22.string().trim().min(1).max(2e3).describe("Exact supplied or factually derived takeaway that must appear after records."),
27409
27574
  componentSources: dashboardComponentSourcesSchema.optional().describe("Installed Sidebar, StatCard, and Table source files for compound-composition review."),
27410
27575
  context: CONTEXT_ARG
27411
27576
  }),
@@ -27453,34 +27618,34 @@ var init_dashboard_review_tools = __esm({
27453
27618
  "use strict";
27454
27619
  init_review_capture();
27455
27620
  init_shared();
27456
- dashboardFixtureSchema = z21.object({
27457
- stats: z21.array(z21.object({
27458
- label: z21.string().trim().min(1).max(300),
27459
- value: z21.string().trim().min(1).max(300)
27621
+ dashboardFixtureSchema = z22.object({
27622
+ stats: z22.array(z22.object({
27623
+ label: z22.string().trim().min(1).max(300),
27624
+ value: z22.string().trim().min(1).max(300)
27460
27625
  })).max(100).optional(),
27461
- records: z21.array(z21.object({
27462
- title: z21.string().trim().min(1).max(300),
27463
- detail: z21.string().trim().min(1).max(1e3),
27464
- meta: z21.string().trim().min(1).max(300),
27465
- status: z21.string().trim().min(1).max(300)
27626
+ records: z22.array(z22.object({
27627
+ title: z22.string().trim().min(1).max(300),
27628
+ detail: z22.string().trim().min(1).max(1e3),
27629
+ meta: z22.string().trim().min(1).max(300),
27630
+ status: z22.string().trim().min(1).max(300)
27466
27631
  })).max(100).optional(),
27467
- steps: z21.array(z21.object({
27468
- title: z21.string().trim().min(1).max(300),
27469
- description: z21.string().trim().min(1).max(1e3),
27470
- action: z21.string().trim().min(1).max(200)
27632
+ steps: z22.array(z22.object({
27633
+ title: z22.string().trim().min(1).max(300),
27634
+ description: z22.string().trim().min(1).max(1e3),
27635
+ action: z22.string().trim().min(1).max(200)
27471
27636
  })).min(2).max(50)
27472
27637
  });
27473
- dashboardComponentSourcesSchema = z21.object({
27474
- sidebar: z21.string().min(1).max(12e4),
27475
- statCard: z21.string().min(1).max(12e4),
27476
- table: z21.string().min(1).max(12e4)
27638
+ dashboardComponentSourcesSchema = z22.object({
27639
+ sidebar: z22.string().min(1).max(12e4),
27640
+ statCard: z22.string().min(1).max(12e4),
27641
+ table: z22.string().min(1).max(12e4)
27477
27642
  });
27478
27643
  }
27479
27644
  });
27480
27645
 
27481
27646
  // ../shared/src/mcp/tools/final-ui-review-tools.ts
27482
27647
  import { createHash as createHash2 } from "crypto";
27483
- import { z as z22 } from "zod";
27648
+ import { z as z23 } from "zod";
27484
27649
  function digest(value) {
27485
27650
  return createHash2("sha256").update(value).digest("hex");
27486
27651
  }
@@ -27892,15 +28057,15 @@ function registerFinalUiReviewTools({
27892
28057
  description: `Issue a source-bound receipt for a completed dashboard.
27893
28058
 
27894
28059
  Submit the public HTTPS preview plus exact source, unchanged data, and installed components. Better Design's own browser captures the deployed page at 390, 1440, and 1728 pixels and content-addresses the live deployment. No trusted browser capture means incomplete. The review blocks weak hierarchy, under-composed components, hidden fixture fields, unclear copy, spacing defects, unsupported interpretations, or source edits.`,
27895
- inputSchema: z22.object({
27896
- screen: z22.string().trim().min(1).max(120),
27897
- previewUrl: z22.string().url().max(2048).refine((value) => new URL(value).protocol === "https:", {
28060
+ inputSchema: z23.object({
28061
+ screen: z23.string().trim().min(1).max(120),
28062
+ previewUrl: z23.string().url().max(2048).refine((value) => new URL(value).protocol === "https:", {
27898
28063
  message: "Use a public HTTPS preview URL."
27899
28064
  }).describe("Public HTTPS URL for the exact deployed dashboard route."),
27900
- source: z22.string().min(1).max(24e4).describe(
28065
+ source: z23.string().min(1).max(24e4).describe(
27901
28066
  "Complete TSX or JSX page source, including its default export."
27902
28067
  ),
27903
- visibleSource: z22.string().min(1).max(12e4).describe(
28068
+ visibleSource: z23.string().min(1).max(12e4).describe(
27904
28069
  "Exact visible screen component copied unchanged from source."
27905
28070
  ),
27906
28071
  fixture: dashboardFixtureSchema.describe(
@@ -27909,7 +28074,7 @@ Submit the public HTTPS preview plus exact source, unchanged data, and installed
27909
28074
  componentSources: dashboardComponentSourcesSchema.describe(
27910
28075
  "Exact installed Sidebar, StatCard, and Table component source files."
27911
28076
  ),
27912
- knownTerms: z22.array(z22.string().trim().min(1).max(60)).max(50).optional(),
28077
+ knownTerms: z23.array(z23.string().trim().min(1).max(60)).max(50).optional(),
27913
28078
  context: CONTEXT_ARG
27914
28079
  }),
27915
28080
  annotations: READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS
@@ -27980,7 +28145,7 @@ var init_final_ui_review_tools = __esm({
27980
28145
  });
27981
28146
 
27982
28147
  // ../shared/src/mcp/tools/widget-tools.ts
27983
- import { z as z23 } from "zod";
28148
+ import { z as z24 } from "zod";
27984
28149
  function hasIntake(args) {
27985
28150
  return Boolean(args.widgetType || INTAKE_FIELDS.some(({ key }) => args[key]));
27986
28151
  }
@@ -28103,16 +28268,16 @@ var init_widget_tools = __esm({
28103
28268
  WIDGET_GUIDE_TOPIC = "better-widgets";
28104
28269
  WIDGET_GUIDE_TOOL = "get-widget-guide";
28105
28270
  MINIMUM_CONTRACT_HEADING = "## Minimum build contract";
28106
- WIDGET_GUIDE_INPUT_SCHEMA = z23.object({
28107
- widgetType: z23.enum(BETTER_WIDGET_TYPES).optional().describe("Widget kind: calculator, estimator, converter, generator, quiz, or checklist."),
28108
- userGoal: z23.string().trim().min(1).max(500).optional().describe("Who will use the widget and the decision or task it helps them complete."),
28109
- inputs: z23.string().trim().min(1).max(1e3).optional().describe("Required inputs, including units, allowed ranges, and defaults."),
28110
- interaction: z23.string().trim().min(1).max(750).optional().describe("How readers tune inputs and see feedback, including presets, custom controls, direct manipulation, and exact-value entry."),
28111
- transformation: z23.string().trim().min(1).max(1500).optional().describe("Formula, scoring rule, conversion, or transformation that produces the result."),
28112
- result: z23.string().trim().min(1).max(750).optional().describe("What the result shows, explains, and lets the user do next."),
28113
- hostFramework: z23.string().trim().min(1).max(300).optional().describe("The host framework and the page or component that will contain the widget."),
28114
- visualContext: z23.string().trim().min(1).max(750).optional().describe("Existing design tokens, components, or brand reference the widget must match."),
28115
- maxTokens: z23.number().min(2e3).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
28271
+ WIDGET_GUIDE_INPUT_SCHEMA = z24.object({
28272
+ widgetType: z24.enum(BETTER_WIDGET_TYPES).optional().describe("Widget kind: calculator, estimator, converter, generator, quiz, or checklist."),
28273
+ userGoal: z24.string().trim().min(1).max(500).optional().describe("Who will use the widget and the decision or task it helps them complete."),
28274
+ inputs: z24.string().trim().min(1).max(1e3).optional().describe("Required inputs, including units, allowed ranges, and defaults."),
28275
+ interaction: z24.string().trim().min(1).max(750).optional().describe("How readers tune inputs and see feedback, including presets, custom controls, direct manipulation, and exact-value entry."),
28276
+ transformation: z24.string().trim().min(1).max(1500).optional().describe("Formula, scoring rule, conversion, or transformation that produces the result."),
28277
+ result: z24.string().trim().min(1).max(750).optional().describe("What the result shows, explains, and lets the user do next."),
28278
+ hostFramework: z24.string().trim().min(1).max(300).optional().describe("The host framework and the page or component that will contain the widget."),
28279
+ visualContext: z24.string().trim().min(1).max(750).optional().describe("Existing design tokens, components, or brand reference the widget must match."),
28280
+ maxTokens: z24.number().min(2e3).max(5e4).optional().describe("Maximum tokens to return. Truncates content to fit. Recommended: 5000-10000."),
28116
28281
  context: CONTEXT_ARG
28117
28282
  });
28118
28283
  INTAKE_FIELDS = [
@@ -28166,7 +28331,7 @@ The completed response combines a scoped build brief with Better Design's stable
28166
28331
  });
28167
28332
 
28168
28333
  // ../shared/src/mcp/feature-map/schema.ts
28169
- import { z as z24 } from "zod";
28334
+ import { z as z25 } from "zod";
28170
28335
  function oneLine(text3) {
28171
28336
  return text3.replace(/\s+/g, " ").trim();
28172
28337
  }
@@ -28201,38 +28366,38 @@ var init_schema3 = __esm({
28201
28366
  "use strict";
28202
28367
  FEATURE_MAP_PATH = ".better-design/feature-map.json";
28203
28368
  FEATURE_MAP_LIMITS = { features: 200, flows: 100, steps: 50, paths: 200, name: 120 };
28204
- NAME = z24.string().trim().min(1).max(FEATURE_MAP_LIMITS.name);
28205
- PATHS = z24.array(z24.string().trim().min(1).max(500)).max(FEATURE_MAP_LIMITS.paths).default([]);
28206
- featureMapStepSchema = z24.object({
28369
+ NAME = z25.string().trim().min(1).max(FEATURE_MAP_LIMITS.name);
28370
+ PATHS = z25.array(z25.string().trim().min(1).max(500)).max(FEATURE_MAP_LIMITS.paths).default([]);
28371
+ featureMapStepSchema = z25.object({
28207
28372
  name: NAME,
28208
28373
  /** URL path such as `/settings/billing`. Absent for a dialog or an email. */
28209
- route: z24.string().trim().max(300).optional(),
28374
+ route: z25.string().trim().max(300).optional(),
28210
28375
  /** The file that renders the step, such as the route's page file. */
28211
- screen: z24.string().trim().max(500).optional(),
28376
+ screen: z25.string().trim().max(500).optional(),
28212
28377
  /** What the user does here, such as "confirms the cancellation". */
28213
- action: z24.string().trim().max(300).optional(),
28378
+ action: z25.string().trim().max(300).optional(),
28214
28379
  components: PATHS,
28215
28380
  /** API routes, server actions, hooks and queries the step reads or writes. */
28216
28381
  data: PATHS
28217
28382
  });
28218
- featureMapFlowSchema = z24.object({
28383
+ featureMapFlowSchema = z25.object({
28219
28384
  id: NAME,
28220
28385
  name: NAME,
28221
- description: z24.string().trim().max(500).optional(),
28222
- steps: z24.array(featureMapStepSchema).min(1).max(FEATURE_MAP_LIMITS.steps)
28386
+ description: z25.string().trim().max(500).optional(),
28387
+ steps: z25.array(featureMapStepSchema).min(1).max(FEATURE_MAP_LIMITS.steps)
28223
28388
  });
28224
- featureMapFeatureSchema = z24.object({
28389
+ featureMapFeatureSchema = z25.object({
28225
28390
  id: NAME,
28226
28391
  name: NAME,
28227
- description: z24.string().trim().max(500).optional(),
28228
- flows: z24.array(featureMapFlowSchema).max(FEATURE_MAP_LIMITS.flows),
28392
+ description: z25.string().trim().max(500).optional(),
28393
+ flows: z25.array(featureMapFlowSchema).max(FEATURE_MAP_LIMITS.flows),
28229
28394
  /** Components that belong to the feature but to no single step. */
28230
28395
  components: PATHS
28231
28396
  });
28232
- featureMapSchema = z24.object({
28233
- version: z24.literal(1),
28234
- product: z24.string().trim().max(120).optional(),
28235
- features: z24.array(featureMapFeatureSchema).max(FEATURE_MAP_LIMITS.features)
28397
+ featureMapSchema = z25.object({
28398
+ version: z25.literal(1),
28399
+ product: z25.string().trim().max(120).optional(),
28400
+ features: z25.array(featureMapFeatureSchema).max(FEATURE_MAP_LIMITS.features)
28236
28401
  });
28237
28402
  }
28238
28403
  });
@@ -28510,7 +28675,7 @@ var init_read = __esm({
28510
28675
  });
28511
28676
 
28512
28677
  // ../shared/src/mcp/feature-map/update.ts
28513
- import { z as z25 } from "zod";
28678
+ import { z as z26 } from "zod";
28514
28679
  function find(items, ref) {
28515
28680
  const r = ref.trim();
28516
28681
  const index2 = items.findIndex((i) => i.id === r || i.name.toLowerCase() === r.toLowerCase());
@@ -28573,21 +28738,21 @@ var init_update2 = __esm({
28573
28738
  "../shared/src/mcp/feature-map/update.ts"() {
28574
28739
  "use strict";
28575
28740
  init_schema3();
28576
- NAME2 = z25.string().trim().min(1).max(120);
28577
- REF = z25.string().trim().min(1).max(120).describe("The id or exact name of an existing feature or flow.");
28741
+ NAME2 = z26.string().trim().min(1).max(120);
28742
+ REF = z26.string().trim().min(1).max(120).describe("The id or exact name of an existing feature or flow.");
28578
28743
  FLOW_INPUT = featureMapFlowSchema.omit({ id: true });
28579
- featureMapChangeSchema = z25.discriminatedUnion("op", [
28580
- z25.object({
28581
- op: z25.literal("add-feature"),
28744
+ featureMapChangeSchema = z26.discriminatedUnion("op", [
28745
+ z26.object({
28746
+ op: z26.literal("add-feature"),
28582
28747
  name: NAME2,
28583
- description: z25.string().trim().max(500).optional(),
28584
- flows: z25.array(FLOW_INPUT).max(100).optional()
28748
+ description: z26.string().trim().max(500).optional(),
28749
+ flows: z26.array(FLOW_INPUT).max(100).optional()
28585
28750
  }),
28586
- z25.object({ op: z25.literal("rename-feature"), feature: REF, name: NAME2 }),
28587
- z25.object({ op: z25.literal("remove-feature"), feature: REF }),
28588
- z25.object({ op: z25.literal("set-flow"), feature: REF, flow: FLOW_INPUT }),
28589
- z25.object({ op: z25.literal("rename-flow"), feature: REF, flow: REF, name: NAME2 }),
28590
- z25.object({ op: z25.literal("remove-flow"), feature: REF, flow: REF })
28751
+ z26.object({ op: z26.literal("rename-feature"), feature: REF, name: NAME2 }),
28752
+ z26.object({ op: z26.literal("remove-feature"), feature: REF }),
28753
+ z26.object({ op: z26.literal("set-flow"), feature: REF, flow: FLOW_INPUT }),
28754
+ z26.object({ op: z26.literal("rename-flow"), feature: REF, flow: REF, name: NAME2 }),
28755
+ z26.object({ op: z26.literal("remove-flow"), feature: REF, flow: REF })
28591
28756
  ]);
28592
28757
  idTaken = (items, id, except2) => items.some((item, i) => item.id === id && i !== except2);
28593
28758
  toFlow = (f) => ({ id: slugify(f.name), ...f });
@@ -28606,7 +28771,7 @@ var init_feature_map = __esm({
28606
28771
  });
28607
28772
 
28608
28773
  // ../shared/src/mcp/tools/feature-map-tools.ts
28609
- import { z as z26 } from "zod";
28774
+ import { z as z27 } from "zod";
28610
28775
  function registerFeatureMapTools({ server, tracked }) {
28611
28776
  server.registerTool(
28612
28777
  "build-feature-map",
@@ -28617,9 +28782,9 @@ function registerFeatureMapTools({ server, tracked }) {
28617
28782
  Run \`git ls-files\` in the repository and pass every path as \`files\`. Routes become screens (Next.js app and pages routers, Remix and React Router flat routes, SvelteKit, Nuxt), each chain of nested routes becomes a flow (/settings/billing/cancel is Settings \u2192 Billing \u2192 Cancel), and components, API routes, hooks and server actions join the step whose name they share.
28618
28783
 
28619
28784
  The result is a first draft. Write it to ${FEATURE_MAP_PATH}, show the user the flows, and ask which steps are missing: a dialog, an email or a background job has no route, so add those with update-feature-map (op "set-flow").`,
28620
- inputSchema: z26.object({
28621
- files: z26.array(z26.string().max(500)).min(1).max(5e4).describe("Every file path in the repository, relative to its root, as printed by `git ls-files`."),
28622
- product: z26.string().trim().max(120).optional().describe("The product's name, stored at the top of the map."),
28785
+ inputSchema: z27.object({
28786
+ files: z27.array(z27.string().max(500)).min(1).max(5e4).describe("Every file path in the repository, relative to its root, as printed by `git ls-files`."),
28787
+ product: z27.string().trim().max(120).optional().describe("The product's name, stored at the top of the map."),
28623
28788
  context: CONTEXT_ARG
28624
28789
  }),
28625
28790
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -28649,11 +28814,11 @@ ${serializeFeatureMap(map).trimEnd()}
28649
28814
  description: `Find the flows a change touches, with the screen, route, components and data files of every step. ${WHEN_TO_USE}
28650
28815
 
28651
28816
  Pass \`flow\` ("cancel account"), \`feature\` ("billing") or \`file\` (a path you are about to edit) to narrow it. With no query it lists every flow.`,
28652
- inputSchema: z26.object({
28817
+ inputSchema: z27.object({
28653
28818
  map: MAP_ARG,
28654
- feature: z26.string().trim().max(120).optional().describe("A feature id or part of its name."),
28655
- flow: z26.string().trim().max(120).optional().describe("A flow id or part of its name."),
28656
- file: z26.string().trim().max(500).optional().describe("A file path or route; returns every flow that uses it."),
28819
+ feature: z27.string().trim().max(120).optional().describe("A feature id or part of its name."),
28820
+ flow: z27.string().trim().max(120).optional().describe("A flow id or part of its name."),
28821
+ file: z27.string().trim().max(500).optional().describe("A file path or route; returns every flow that uses it."),
28657
28822
  context: CONTEXT_ARG
28658
28823
  }),
28659
28824
  annotations: READ_ONLY_TOOL_ANNOTATIONS
@@ -28679,7 +28844,7 @@ Changes, one per call:
28679
28844
  - { op: "remove-flow", feature, flow }
28680
28845
 
28681
28846
  \`feature\` and \`flow\` take an id or an exact name. Write the returned file to ${FEATURE_MAP_PATH}.`,
28682
- inputSchema: z26.object({
28847
+ inputSchema: z27.object({
28683
28848
  map: MAP_ARG,
28684
28849
  change: featureMapChangeSchema,
28685
28850
  context: CONTEXT_ARG
@@ -28701,7 +28866,7 @@ var init_feature_map_tools = __esm({
28701
28866
  "use strict";
28702
28867
  init_feature_map();
28703
28868
  init_shared();
28704
- MAP_ARG = z26.string().min(1).max(2e6).describe(`The exact contents of ${FEATURE_MAP_PATH}.`);
28869
+ MAP_ARG = z27.string().min(1).max(2e6).describe(`The exact contents of ${FEATURE_MAP_PATH}.`);
28705
28870
  text2 = (body, isError = false) => ({
28706
28871
  content: [{ type: "text", text: body }],
28707
28872
  isError
@@ -28781,157 +28946,7 @@ var MCP_IMPLEMENTATION_VERSION;
28781
28946
  var init_version2 = __esm({
28782
28947
  "../shared/src/mcp/version.ts"() {
28783
28948
  "use strict";
28784
- MCP_IMPLEMENTATION_VERSION = "0.31.0";
28785
- }
28786
- });
28787
-
28788
- // ../shared/src/mcp/tool-names.ts
28789
- function measurementToolFamilyV1(tool) {
28790
- const current = MCP_TOOL_NAMES_V1.find((candidate) => candidate === tool);
28791
- const renamed = MCP_TOOL_RENAMES_V1.find(([retired]) => retired === tool);
28792
- const canonical = current ?? renamed?.[1];
28793
- if (!canonical) return null;
28794
- return Object.freeze([
28795
- canonical,
28796
- ...MCP_TOOL_RENAMES_V1.filter(
28797
- ([, successor]) => successor === canonical
28798
- ).map(([retired]) => retired)
28799
- ]);
28800
- }
28801
- function measurementToolFamily(tool) {
28802
- const current = MCP_TOOL_NAMES.find((candidate) => candidate === tool);
28803
- const renamed = MCP_TOOL_RENAMES.find(([retired]) => retired === tool);
28804
- const canonical = current ?? renamed?.[1];
28805
- if (!canonical) return null;
28806
- return [
28807
- canonical,
28808
- ...MCP_TOOL_RENAMES.filter(([, successor]) => successor === canonical).map(
28809
- ([retired]) => retired
28810
- )
28811
- ];
28812
- }
28813
- function canonicalMcpToolName(tool) {
28814
- return MCP_TRACE_TOOL_NAMES.find((registeredTool) => registeredTool === tool) ?? UNKNOWN_MCP_TOOL_NAME;
28815
- }
28816
- var MCP_TOOL_NAMES, MCP_TOOL_NAMES_V1, HISTORICAL_MCP_TOOL_NAMES, UNKNOWN_MCP_TOOL_NAME, MCP_TRACE_TOOL_NAMES, MCP_TOOL_RENAMES, MCP_TOOL_RENAMES_V1, MCP_MEASURABLE_TOOL_NAMES_V1, MCP_MEASURABLE_TOOL_NAMES;
28817
- var init_tool_names = __esm({
28818
- "../shared/src/mcp/tool-names.ts"() {
28819
- "use strict";
28820
- MCP_TOOL_NAMES = [
28821
- "build-feature-map",
28822
- "check-comprehension",
28823
- "create-design-system",
28824
- "create-figma-prototype",
28825
- "detect-icon-library",
28826
- "extract-design-system",
28827
- "extract-from-url",
28828
- "finalize-dashboard-review",
28829
- "find-design-system",
28830
- "find-icon-library",
28831
- "find-icons",
28832
- "get-design-config",
28833
- "get-design-system-kit",
28834
- "get-design-system-status",
28835
- "get-jig-guide",
28836
- "get-motion-guide",
28837
- "get-react-native-guide",
28838
- "get-review-rules",
28839
- "get-sales-principle",
28840
- "get-shopify-guide",
28841
- "get-swiftui-guide",
28842
- "get-team-rules",
28843
- "get-three-js-guide",
28844
- "get-ui-principle",
28845
- "get-ux-principle",
28846
- "get-widget-guide",
28847
- "inspect-spacing",
28848
- "install-icons",
28849
- "preview-design-system",
28850
- "read-feature-map",
28851
- "review-dashboard-structure",
28852
- "review-illustration",
28853
- "review-ui-code",
28854
- "set-design-config",
28855
- "update-feature-map"
28856
- ];
28857
- MCP_TOOL_NAMES_V1 = Object.freeze([
28858
- "build-feature-map",
28859
- "check-comprehension",
28860
- "create-design-system",
28861
- "create-figma-prototype",
28862
- "detect-icon-library",
28863
- "extract-design-system",
28864
- "extract-from-url",
28865
- "finalize-dashboard-review",
28866
- "find-design-system",
28867
- "find-icon-library",
28868
- "find-icons",
28869
- "get-design-config",
28870
- "get-design-system-kit",
28871
- "get-design-system-status",
28872
- "get-jig-guide",
28873
- "get-motion-guide",
28874
- "get-react-native-guide",
28875
- "get-review-rules",
28876
- "get-sales-principle",
28877
- "get-shopify-guide",
28878
- "get-swiftui-guide",
28879
- "get-team-rules",
28880
- "get-three-js-guide",
28881
- "get-ui-principle",
28882
- "get-ux-principle",
28883
- "get-widget-guide",
28884
- "inspect-spacing",
28885
- "install-icons",
28886
- "preview-design-system",
28887
- "read-feature-map",
28888
- "review-dashboard-structure",
28889
- "review-illustration",
28890
- "review-ui-code",
28891
- "set-design-config",
28892
- "update-feature-map"
28893
- ]);
28894
- HISTORICAL_MCP_TOOL_NAMES = [
28895
- "build-ui-app",
28896
- "check-design-system-status",
28897
- "find-design",
28898
- "get-design-system-docs",
28899
- "get-design-system-html",
28900
- "resolve-design-system",
28901
- "resolve-icon-library",
28902
- "search-icons"
28903
- ];
28904
- UNKNOWN_MCP_TOOL_NAME = "unknown-tool";
28905
- MCP_TRACE_TOOL_NAMES = [
28906
- ...MCP_TOOL_NAMES,
28907
- ...HISTORICAL_MCP_TOOL_NAMES,
28908
- UNKNOWN_MCP_TOOL_NAME
28909
- ];
28910
- MCP_TOOL_RENAMES = [
28911
- ["find-design", "find-design-system"],
28912
- ["resolve-design-system", "find-design-system"],
28913
- ["check-design-system-status", "get-design-system-status"],
28914
- ["resolve-icon-library", "find-icon-library"],
28915
- ["search-icons", "find-icons"]
28916
- ];
28917
- MCP_TOOL_RENAMES_V1 = Object.freeze([
28918
- Object.freeze(["find-design", "find-design-system"]),
28919
- Object.freeze(["resolve-design-system", "find-design-system"]),
28920
- Object.freeze([
28921
- "check-design-system-status",
28922
- "get-design-system-status"
28923
- ]),
28924
- Object.freeze(["resolve-icon-library", "find-icon-library"]),
28925
- Object.freeze(["search-icons", "find-icons"])
28926
- ]);
28927
- MCP_MEASURABLE_TOOL_NAMES_V1 = Object.freeze([
28928
- ...MCP_TOOL_NAMES_V1,
28929
- ...MCP_TOOL_RENAMES_V1.map(([retired]) => retired)
28930
- ]);
28931
- MCP_MEASURABLE_TOOL_NAMES = [
28932
- ...MCP_TOOL_NAMES,
28933
- ...MCP_TOOL_RENAMES.map(([retired]) => retired)
28934
- ];
28949
+ MCP_IMPLEMENTATION_VERSION = "0.31.1";
28935
28950
  }
28936
28951
  });
28937
28952
 
@@ -28940,6 +28955,8 @@ var mcp_exports = {};
28940
28955
  __export(mcp_exports, {
28941
28956
  ADVERTISED_JSON_SCHEMA_DIALECT: () => ADVERTISED_JSON_SCHEMA_DIALECT,
28942
28957
  BUILD_TARGET_RULE: () => BUILD_TARGET_RULE,
28958
+ DIRECTORY_INSTRUCTIONS: () => DIRECTORY_INSTRUCTIONS,
28959
+ DIRECTORY_TOOL_DESCRIPTIONS: () => DIRECTORY_TOOL_DESCRIPTIONS,
28943
28960
  DRAFT_7_ONLY_KEYWORDS: () => DRAFT_7_ONLY_KEYWORDS,
28944
28961
  GUIDANCE_TOOLS: () => GUIDANCE_TOOLS,
28945
28962
  HISTORICAL_MCP_TOOL_NAMES: () => HISTORICAL_MCP_TOOL_NAMES,
@@ -28993,12 +29010,13 @@ function createMcpServer(options) {
28993
29010
  enableMobileKits = true,
28994
29011
  apiFetch = globalThis.fetch,
28995
29012
  userId,
28996
- captureDashboardBrowser: captureDashboardBrowser2
29013
+ captureDashboardBrowser: captureDashboardBrowser2,
29014
+ directoryListing = false
28997
29015
  } = options;
28998
29016
  const server = new McpServer(
28999
29017
  { name, version: version2 },
29000
29018
  {
29001
- instructions: getMcpInstructions({
29019
+ instructions: directoryListing ? DIRECTORY_INSTRUCTIONS : getMcpInstructions({
29002
29020
  enableReactNativeGuide,
29003
29021
  enableThreeJsGuide,
29004
29022
  enableShopifyKit
@@ -29006,6 +29024,7 @@ function createMcpServer(options) {
29006
29024
  }
29007
29025
  );
29008
29026
  declareAdvertisedSchemaDialect(server);
29027
+ if (directoryListing) declareDirectoryListing(server);
29009
29028
  registerAllTools(
29010
29029
  server,
29011
29030
  provider,
@@ -29027,10 +29046,12 @@ var init_mcp = __esm({
29027
29046
  "../shared/src/mcp/index.ts"() {
29028
29047
  "use strict";
29029
29048
  init_advertised_schema();
29049
+ init_directory_listing();
29030
29050
  init_instructions();
29031
29051
  init_tools();
29032
29052
  init_version2();
29033
29053
  init_tools();
29054
+ init_directory_listing();
29034
29055
  init_advertised_schema();
29035
29056
  init_tool_names();
29036
29057
  init_principle_tools();
@@ -31070,7 +31091,7 @@ var init_engine = __esm({
31070
31091
  });
31071
31092
 
31072
31093
  // ../shared/src/lint/config.ts
31073
- import { z as z27 } from "zod";
31094
+ import { z as z28 } from "zod";
31074
31095
  function mergeReviewConfig(override) {
31075
31096
  if (!override) return DEFAULT_REVIEW_CONFIG;
31076
31097
  return {
@@ -31128,47 +31149,47 @@ var init_config = __esm({
31128
31149
  semanticTokens: { enabled: true }
31129
31150
  }
31130
31151
  };
31131
- reviewFlowStepSchema = z27.discriminatedUnion("action", [
31132
- z27.object({ action: z27.literal("click"), selector: z27.string() }),
31133
- z27.object({ action: z27.literal("type"), selector: z27.string(), value: z27.string() }),
31134
- z27.object({ action: z27.literal("press"), key: z27.string() }),
31135
- z27.object({ action: z27.literal("wait"), milliseconds: z27.number().finite().nonnegative() })
31152
+ reviewFlowStepSchema = z28.discriminatedUnion("action", [
31153
+ z28.object({ action: z28.literal("click"), selector: z28.string() }),
31154
+ z28.object({ action: z28.literal("type"), selector: z28.string(), value: z28.string() }),
31155
+ z28.object({ action: z28.literal("press"), key: z28.string() }),
31156
+ z28.object({ action: z28.literal("wait"), milliseconds: z28.number().finite().nonnegative() })
31136
31157
  ]);
31137
- visualReviewConfigSchema = z27.object({
31138
- enabled: z27.boolean().optional(),
31139
- model: z27.object({
31140
- enabled: z27.boolean().optional(),
31141
- maxScreenshots: z27.number().int().nonnegative().optional()
31158
+ visualReviewConfigSchema = z28.object({
31159
+ enabled: z28.boolean().optional(),
31160
+ model: z28.object({
31161
+ enabled: z28.boolean().optional(),
31162
+ maxScreenshots: z28.number().int().nonnegative().optional()
31142
31163
  }).optional(),
31143
- routes: z27.array(z27.string()).optional(),
31144
- viewports: z27.array(z27.enum(["desktop", "mobile", "reflow"])).optional(),
31145
- flows: z27.array(z27.object({
31146
- name: z27.string(),
31147
- persona: z27.string(),
31148
- path: z27.string().optional(),
31149
- steps: z27.array(reviewFlowStepSchema)
31164
+ routes: z28.array(z28.string()).optional(),
31165
+ viewports: z28.array(z28.enum(["desktop", "mobile", "reflow"])).optional(),
31166
+ flows: z28.array(z28.object({
31167
+ name: z28.string(),
31168
+ persona: z28.string(),
31169
+ path: z28.string().optional(),
31170
+ steps: z28.array(reviewFlowStepSchema)
31150
31171
  })).optional(),
31151
- componentGallery: z27.object({
31152
- enabled: z27.boolean().optional(),
31153
- componentSelector: z27.string().optional(),
31154
- canvasSelector: z27.string().optional(),
31155
- labelSelector: z27.string().optional(),
31156
- maxComponents: z27.number().int().nonnegative().optional()
31172
+ componentGallery: z28.object({
31173
+ enabled: z28.boolean().optional(),
31174
+ componentSelector: z28.string().optional(),
31175
+ canvasSelector: z28.string().optional(),
31176
+ labelSelector: z28.string().optional(),
31177
+ maxComponents: z28.number().int().nonnegative().optional()
31157
31178
  }).optional()
31158
31179
  });
31159
- reviewConfigOverrideSchema = z27.object({
31160
- designSystem: z27.string().optional(),
31180
+ reviewConfigOverrideSchema = z28.object({
31181
+ designSystem: z28.string().optional(),
31161
31182
  visual: visualReviewConfigSchema.optional(),
31162
- rules: z27.object({
31163
- elements: z27.record(z27.string(), z27.object({ use: z27.string(), from: z27.string() })).optional(),
31164
- tokens: z27.record(z27.string(), z27.string()).optional(),
31165
- wcag: z27.object({
31166
- enabled: z27.boolean().optional(),
31167
- severity: z27.enum(["all", "critical+serious"]).optional()
31183
+ rules: z28.object({
31184
+ elements: z28.record(z28.string(), z28.object({ use: z28.string(), from: z28.string() })).optional(),
31185
+ tokens: z28.record(z28.string(), z28.string()).optional(),
31186
+ wcag: z28.object({
31187
+ enabled: z28.boolean().optional(),
31188
+ severity: z28.enum(["all", "critical+serious"]).optional()
31168
31189
  }).optional(),
31169
- slop: z27.object({ enabled: z27.boolean().optional() }).optional(),
31170
- copy: z27.object({ enabled: z27.boolean().optional() }).optional(),
31171
- semanticTokens: z27.object({ enabled: z27.boolean().optional() }).optional()
31190
+ slop: z28.object({ enabled: z28.boolean().optional() }).optional(),
31191
+ copy: z28.object({ enabled: z28.boolean().optional() }).optional(),
31192
+ semanticTokens: z28.object({ enabled: z28.boolean().optional() }).optional()
31172
31193
  }).optional()
31173
31194
  });
31174
31195
  }
@@ -31544,7 +31565,7 @@ __export(review_tool_exports, {
31544
31565
  isReviewableSourcePath: () => isReviewableSourcePath,
31545
31566
  registerReviewTool: () => registerReviewTool
31546
31567
  });
31547
- import { z as z28 } from "zod";
31568
+ import { z as z29 } from "zod";
31548
31569
  function isReviewableSourcePath(path6) {
31549
31570
  return /\.(tsx|jsx|ts|js|css)$/i.test(path6);
31550
31571
  }
@@ -31568,11 +31589,11 @@ get-review-rules gives you the judgment rules to apply yourself. This tool is th
31568
31589
  This source reviewer cannot judge rendered hierarchy or semantic color roles. After it passes, inspect the rendered dashboard and confirm title \u2192 metrics \u2192 records \u2192 interpretation, distinct action and status colors, and that a stepper begins only after a task starts.
31569
31590
 
31570
31591
  Fix every critical and serious finding, then call it again on the fixed source. Findings feed the same loop as a human code review: read, fix, re-check.`,
31571
- inputSchema: z28.object({
31572
- files: z28.array(
31573
- z28.object({
31574
- path: z28.string().trim().min(1).max(400).describe("Repo-relative file path, e.g. components/signup-form.tsx."),
31575
- content: z28.string().max(MAX_FILE_CHARS).describe("The file's full source.")
31592
+ inputSchema: z29.object({
31593
+ files: z29.array(
31594
+ z29.object({
31595
+ path: z29.string().trim().min(1).max(400).describe("Repo-relative file path, e.g. components/signup-form.tsx."),
31596
+ content: z29.string().max(MAX_FILE_CHARS).describe("The file's full source.")
31576
31597
  })
31577
31598
  ).min(1).max(MAX_FILES).describe("The .tsx, .jsx, .ts, .js, and .css files to review, as written."),
31578
31599
  context: CONTEXT_ARG
@@ -31633,7 +31654,7 @@ review-ui-code({ files: [{ path: "components/signup-form.tsx", content: "..." },
31633
31654
  });
31634
31655
 
31635
31656
  // ../shared/src/mcp/figma-prototype.ts
31636
- import { z as z29 } from "zod";
31657
+ import { z as z30 } from "zod";
31637
31658
  function escapeHtml(value) {
31638
31659
  return value.replace(/[&<>"]/g, (char2) => ESCAPES.get(char2) ?? char2);
31639
31660
  }
@@ -31667,63 +31688,63 @@ var colorSchema, paintSchema, sizingSchema, baseSchema, prototypeNodeSchema, pro
31667
31688
  var init_figma_prototype = __esm({
31668
31689
  "../shared/src/mcp/figma-prototype.ts"() {
31669
31690
  "use strict";
31670
- colorSchema = z29.object({ r: z29.number(), g: z29.number(), b: z29.number(), a: z29.number() });
31671
- paintSchema = z29.object({ variable: z29.string().optional(), color: colorSchema.optional() });
31672
- sizingSchema = z29.enum(["FIXED", "HUG", "FILL"]);
31673
- baseSchema = z29.object({
31674
- name: z29.string(),
31675
- width: z29.number(),
31676
- height: z29.number(),
31677
- x: z29.number(),
31678
- y: z29.number(),
31679
- sizing: z29.object({ horizontal: sizingSchema, vertical: sizingSchema }).optional(),
31680
- absolute: z29.boolean().optional(),
31681
- opacity: z29.number().optional()
31691
+ colorSchema = z30.object({ r: z30.number(), g: z30.number(), b: z30.number(), a: z30.number() });
31692
+ paintSchema = z30.object({ variable: z30.string().optional(), color: colorSchema.optional() });
31693
+ sizingSchema = z30.enum(["FIXED", "HUG", "FILL"]);
31694
+ baseSchema = z30.object({
31695
+ name: z30.string(),
31696
+ width: z30.number(),
31697
+ height: z30.number(),
31698
+ x: z30.number(),
31699
+ y: z30.number(),
31700
+ sizing: z30.object({ horizontal: sizingSchema, vertical: sizingSchema }).optional(),
31701
+ absolute: z30.boolean().optional(),
31702
+ opacity: z30.number().optional()
31682
31703
  });
31683
- prototypeNodeSchema = z29.lazy(() => z29.discriminatedUnion("kind", [
31704
+ prototypeNodeSchema = z30.lazy(() => z30.discriminatedUnion("kind", [
31684
31705
  baseSchema.extend({
31685
- kind: z29.literal("instance"),
31686
- auditKey: z29.string(),
31687
- systemId: z29.string(),
31688
- texts: z29.array(z29.string()),
31689
- mainTexts: z29.array(z29.string())
31706
+ kind: z30.literal("instance"),
31707
+ auditKey: z30.string(),
31708
+ systemId: z30.string(),
31709
+ texts: z30.array(z30.string()),
31710
+ mainTexts: z30.array(z30.string())
31690
31711
  }),
31691
31712
  baseSchema.extend({
31692
- kind: z29.literal("frame"),
31693
- layout: z29.object({
31694
- direction: z29.enum(["HORIZONTAL", "VERTICAL"]),
31695
- gap: z29.number(),
31696
- padding: z29.tuple([z29.number(), z29.number(), z29.number(), z29.number()]),
31697
- primary: z29.enum(["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]),
31698
- counter: z29.enum(["MIN", "CENTER", "MAX", "BASELINE"]),
31699
- wrap: z29.boolean().optional()
31713
+ kind: z30.literal("frame"),
31714
+ layout: z30.object({
31715
+ direction: z30.enum(["HORIZONTAL", "VERTICAL"]),
31716
+ gap: z30.number(),
31717
+ padding: z30.tuple([z30.number(), z30.number(), z30.number(), z30.number()]),
31718
+ primary: z30.enum(["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]),
31719
+ counter: z30.enum(["MIN", "CENTER", "MAX", "BASELINE"]),
31720
+ wrap: z30.boolean().optional()
31700
31721
  }).optional(),
31701
31722
  fill: paintSchema.optional(),
31702
- stroke: z29.object({ paint: paintSchema, weight: z29.number() }).optional(),
31703
- radius: z29.number().optional(),
31704
- clips: z29.boolean().optional(),
31705
- children: z29.array(prototypeNodeSchema)
31723
+ stroke: z30.object({ paint: paintSchema, weight: z30.number() }).optional(),
31724
+ radius: z30.number().optional(),
31725
+ clips: z30.boolean().optional(),
31726
+ children: z30.array(prototypeNodeSchema)
31706
31727
  }),
31707
31728
  baseSchema.extend({
31708
- kind: z29.literal("text"),
31709
- characters: z29.string(),
31710
- fontSize: z29.number(),
31711
- fontWeight: z29.number(),
31712
- lineHeight: z29.number().optional(),
31713
- letterSpacing: z29.number().optional(),
31714
- fontFamily: z29.string().optional(),
31715
- align: z29.enum(["LEFT", "CENTER", "RIGHT", "JUSTIFIED"]),
31729
+ kind: z30.literal("text"),
31730
+ characters: z30.string(),
31731
+ fontSize: z30.number(),
31732
+ fontWeight: z30.number(),
31733
+ lineHeight: z30.number().optional(),
31734
+ letterSpacing: z30.number().optional(),
31735
+ fontFamily: z30.string().optional(),
31736
+ align: z30.enum(["LEFT", "CENTER", "RIGHT", "JUSTIFIED"]),
31716
31737
  fill: paintSchema.optional()
31717
31738
  }),
31718
31739
  baseSchema.extend({
31719
- kind: z29.literal("shape"),
31720
- svg: z29.string(),
31721
- reason: z29.string()
31740
+ kind: z30.literal("shape"),
31741
+ svg: z30.string(),
31742
+ reason: z30.string()
31722
31743
  })
31723
31744
  ]));
31724
- prototypeRequestSchema = z29.object({
31725
- type: z29.literal("better-design-figma-prototype"),
31726
- id: z29.string(),
31745
+ prototypeRequestSchema = z30.object({
31746
+ type: z30.literal("better-design-figma-prototype"),
31747
+ id: z30.string(),
31727
31748
  frame: prototypeNodeSchema
31728
31749
  });
31729
31750
  ESCAPES = /* @__PURE__ */ new Map([["&", "&amp;"], ["<", "&lt;"], [">", "&gt;"], ['"', "&quot;"]]);
@@ -31909,7 +31930,7 @@ var init_figma_model_prompt = __esm({
31909
31930
  });
31910
31931
 
31911
31932
  // ../shared/src/mcp/figma-model.ts
31912
- import { z as z30 } from "zod";
31933
+ import { z as z31 } from "zod";
31913
31934
  function fenced(text3, language) {
31914
31935
  const match = text3.match(new RegExp("```" + language + "[^\\n]*\\n([\\s\\S]*?)```", "i"));
31915
31936
  return match ? match[1] : null;
@@ -32115,8 +32136,8 @@ var init_figma_model = __esm({
32115
32136
  init_figma_prototype();
32116
32137
  init_html_kit();
32117
32138
  init_preview_html();
32118
- unplacedSchema = z30.object({
32119
- unplaced: z30.array(z30.object({ name: z30.string(), reason: z30.string() }))
32139
+ unplacedSchema = z31.object({
32140
+ unplaced: z31.array(z31.object({ name: z31.string(), reason: z31.string() }))
32120
32141
  });
32121
32142
  UNSAFE_BLOCKS = /<(script|iframe|object|embed|noscript)\b[\s\S]*?(<\/\1[^>]*>|$)/gi;
32122
32143
  UNSAFE_TAGS = /<\/?(meta|link|base|form|style)\b[^>]*(>|$)/gi;
@@ -32217,7 +32238,7 @@ var init_figma_model_handoff = __esm({
32217
32238
  });
32218
32239
 
32219
32240
  // ../shared/src/mcp/figma-model-providers.ts
32220
- import { z as z31 } from "zod";
32241
+ import { z as z32 } from "zod";
32221
32242
  function serverLabel(url) {
32222
32243
  try {
32223
32244
  const parsed = new URL(url);
@@ -32310,19 +32331,19 @@ var init_figma_model_providers = __esm({
32310
32331
  DEFAULT_LOCAL_MODEL = "gemma4:latest";
32311
32332
  DEFAULT_LOCAL_BASE_URL = "http://localhost:11434/v1";
32312
32333
  MAX_OUTPUT_TOKENS = 16e3;
32313
- chatReplySchema = z31.object({
32314
- choices: z31.array(z31.object({
32315
- message: z31.object({ content: z31.string().nullable().optional() }),
32316
- finish_reason: z31.string().nullable().optional()
32334
+ chatReplySchema = z32.object({
32335
+ choices: z32.array(z32.object({
32336
+ message: z32.object({ content: z32.string().nullable().optional() }),
32337
+ finish_reason: z32.string().nullable().optional()
32317
32338
  })).min(1),
32318
- usage: z31.object({ prompt_tokens: z31.number(), completion_tokens: z31.number() }).optional()
32339
+ usage: z32.object({ prompt_tokens: z32.number(), completion_tokens: z32.number() }).optional()
32319
32340
  });
32320
- errorCodeSchema = z31.object({ code: z31.string() });
32341
+ errorCodeSchema = z32.object({ code: z32.string() });
32321
32342
  }
32322
32343
  });
32323
32344
 
32324
32345
  // ../shared/src/mcp/figma-relay.ts
32325
- import { z as z32 } from "zod";
32346
+ import { z as z33 } from "zod";
32326
32347
  function noPluginMessage() {
32327
32348
  return "No Figma plugin is connected. Open the Figma file, run Plugins, Development, Better Design, and leave the panel open.";
32328
32349
  }
@@ -32336,35 +32357,35 @@ var init_figma_relay = __esm({
32336
32357
  "use strict";
32337
32358
  init_figma_prototype();
32338
32359
  FIGMA_RELAY_PORT = 4397;
32339
- relayRequestSchema = z32.object({
32340
- id: z32.string(),
32360
+ relayRequestSchema = z33.object({
32361
+ id: z33.string(),
32341
32362
  /** A frame name as it reads in Figma. Omitted means the current selection. */
32342
- frame: z32.string().optional(),
32363
+ frame: z33.string().optional(),
32343
32364
  /**
32344
32365
  * `model` asks for the serialized frame and its PNG instead of a rendered
32345
32366
  * page, so a model can rebuild a frame that holds no library component.
32346
32367
  * Omitted means the library path, unchanged. [BD-866]
32347
32368
  */
32348
- mode: z32.enum(["library", "model"]).optional()
32369
+ mode: z33.enum(["library", "model"]).optional()
32349
32370
  });
32350
- relayResultSchema = z32.object({
32351
- id: z32.string(),
32352
- html: z32.string().optional(),
32353
- error: z32.string().optional(),
32354
- components: z32.number().optional(),
32355
- report: z32.array(z32.object({ name: z32.string(), reason: z32.string() })).default([]),
32356
- frame: z32.string().optional(),
32371
+ relayResultSchema = z33.object({
32372
+ id: z33.string(),
32373
+ html: z33.string().optional(),
32374
+ error: z33.string().optional(),
32375
+ components: z33.number().optional(),
32376
+ report: z33.array(z33.object({ name: z33.string(), reason: z33.string() })).default([]),
32377
+ frame: z33.string().optional(),
32357
32378
  /** The frames the plugin found, so a missing name can say what is there. */
32358
- frames: z32.array(z32.string()).optional(),
32379
+ frames: z33.array(z33.string()).optional(),
32359
32380
  /** Model mode: the serialized frame, for the model to rebuild. */
32360
32381
  tree: prototypeNodeSchema.optional(),
32361
32382
  /** Model mode: the frame's PNG export, base64. */
32362
- png: z32.string().optional()
32383
+ png: z33.string().optional()
32363
32384
  });
32364
- relayHelloSchema = z32.object({
32365
- file: z32.string(),
32385
+ relayHelloSchema = z33.object({
32386
+ file: z33.string(),
32366
32387
  /** The design system the file holds, when the plugin knows it. */
32367
- system: z32.string().optional()
32388
+ system: z33.string().optional()
32368
32389
  });
32369
32390
  POLL_HOLD_MS = 25e3;
32370
32391
  REQUEST_TIMEOUT_MS = 3e5;
@@ -32532,7 +32553,7 @@ __export(figma_prototype_tool_exports, {
32532
32553
  });
32533
32554
  import { mkdir as mkdir2, readFile, stat, writeFile as writeFile2 } from "fs/promises";
32534
32555
  import { dirname as dirname3, resolve as resolve2 } from "path";
32535
- import { z as z33 } from "zod";
32556
+ import { z as z34 } from "zod";
32536
32557
  async function ensureRelay() {
32537
32558
  if (relay) return relay;
32538
32559
  starting ??= startFigmaRelay().then((started) => {
@@ -32592,30 +32613,30 @@ function registerFigmaPrototypeTool(server) {
32592
32613
  "yourself: the tool returns a prompt file and the frame's image, you write the answer to a file, and",
32593
32614
  "you call this tool again with frameId and answerPath so it checks the page and reports what is missing."
32594
32615
  ].join(" "),
32595
- inputSchema: z33.object({
32596
- frame: z33.string().optional().describe("The frame's name as it reads in Figma. Omit to use the current selection."),
32597
- outputPath: z33.string().optional().describe("Where to write the HTML. Relative paths resolve against the working directory."),
32598
- mode: z33.enum(["library", "model"]).optional().describe(
32616
+ inputSchema: z34.object({
32617
+ frame: z34.string().optional().describe("The frame's name as it reads in Figma. Omit to use the current selection."),
32618
+ outputPath: z34.string().optional().describe("Where to write the HTML. Relative paths resolve against the working directory."),
32619
+ mode: z34.enum(["library", "model"]).optional().describe(
32599
32620
  "library (the default) maps components from a Better Design library. model asks a model to rebuild a frame from any file."
32600
32621
  ),
32601
- system: z33.string().optional().describe("Model mode: the catalog design system to build with, as find-design-system names it."),
32602
- provider: z33.enum(["agent", "openai-compatible"]).optional().describe(
32622
+ system: z34.string().optional().describe("Model mode: the catalog design system to build with, as find-design-system names it."),
32623
+ provider: z34.enum(["agent", "openai-compatible"]).optional().describe(
32603
32624
  "Model mode: agent (the default) hands the frame to you to rebuild; openai-compatible calls a local server, Ollama by default."
32604
32625
  ),
32605
- model: z33.string().optional().describe(`Model mode with openai-compatible: the local model id. Defaults to ${DEFAULT_LOCAL_MODEL}.`),
32606
- frameId: z33.string().optional().describe("Model mode, second call: the frameId the first call returned."),
32607
- answerPath: z33.string().optional().describe("Model mode, second call: the file holding your answer, as the prompt file asks.")
32626
+ model: z34.string().optional().describe(`Model mode with openai-compatible: the local model id. Defaults to ${DEFAULT_LOCAL_MODEL}.`),
32627
+ frameId: z34.string().optional().describe("Model mode, second call: the frameId the first call returned."),
32628
+ answerPath: z34.string().optional().describe("Model mode, second call: the file holding your answer, as the prompt file asks.")
32608
32629
  }),
32609
- outputSchema: z33.object({
32610
- status: z33.enum(["completed", "failed", "needs-answer"]),
32611
- message: z33.string(),
32612
- frameId: z33.string().optional(),
32613
- promptPath: z33.string().optional(),
32614
- imagePath: z33.string().optional(),
32615
- path: z33.string().optional(),
32616
- components: z33.number().optional(),
32617
- report: z33.array(z33.object({ name: z33.string(), reason: z33.string() })).optional(),
32618
- model: z33.string().optional()
32630
+ outputSchema: z34.object({
32631
+ status: z34.enum(["completed", "failed", "needs-answer"]),
32632
+ message: z34.string(),
32633
+ frameId: z34.string().optional(),
32634
+ promptPath: z34.string().optional(),
32635
+ imagePath: z34.string().optional(),
32636
+ path: z34.string().optional(),
32637
+ components: z34.number().optional(),
32638
+ report: z34.array(z34.object({ name: z34.string(), reason: z34.string() })).optional(),
32639
+ model: z34.string().optional()
32619
32640
  }),
32620
32641
  annotations: { readOnlyHint: false, openWorldHint: true }
32621
32642
  },