@sit-onyx/modelcontextprotocol 0.2.0 → 0.3.0-dev-20260715101730

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
@@ -19,14 +19,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
19
19
  var __getOwnPropNames = Object.getOwnPropertyNames;
20
20
  var __getProtoOf = Object.getPrototypeOf;
21
21
  var __hasOwnProp = Object.prototype.hasOwnProperty;
22
- var __esmMin = (fn, res, err) => () => {
23
- if (err) throw err[0];
24
- try {
25
- return fn && (res = fn(fn = 0)), res;
26
- } catch (e) {
27
- throw err = [e], e;
28
- }
29
- };
22
+ var __esmMin = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
30
23
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
31
24
  var __exportAll = (all, no_symbols) => {
32
25
  let target = {};
@@ -52,7 +45,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
52
45
  enumerable: true
53
46
  }) : target, mod));
54
47
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
55
- var __require = /* #__PURE__ */ (() => createRequire(import.meta.url))();
48
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
56
49
  var package_default = {
57
50
  name: "@sit-onyx/modelcontextprotocol",
58
51
  version: "0.2.0",
@@ -103,30 +96,44 @@ var package_default = {
103
96
  };
104
97
  //#endregion
105
98
  //#region src/resources/skills/onyx-components/SKILL.md
99
+ var SKILL_exports$3 = /* @__PURE__ */ __exportAll({
100
+ default: () => SKILL_default$3,
101
+ frontmatter: () => frontmatter$3,
102
+ raw: () => raw$3
103
+ });
104
+ var SKILL_default$3 = "# Onyx Components\n\nImplement and configure Onyx Vue 3 UI components using authoritative API definitions.\n\n## Rule: Mandatory Dynamic API Lookups (MCP)\n\nOnyx component APIs are dynamic and change across versions. **NEVER guess or assume props, events, or slots.**\n\n### Action Components (Buttons & Links)\n\n* **Props-based Links:** Components like `OnyxButton`, `OnyxIconButton`, `OnyxSystemButton`, `OnyxMenuItem`, and `OnyxNavItem` support a `link` prop. Do not wrap these components in raw `<a>` tags; pass the URL to the `link` prop.\n* **Headless Links:** Use the `useLink` composable (`const { navigate, isActive } = useLink()`) or `OnyxRouterLink` for custom unstyled navigation components.\n\n### Form Elements\n\n* **Labels & Messages:** Always configure standard `Message` and `LabelPositions` properties consistently.\n* **Loading State:** Implement built-in `Skeleton` loading states when loading form data.\n* **Accessibility:** Use proper labels and fieldsets for complex multi-input forms (`date-picker`, `radio-group`, `checkbox-group`).\n\n### Cards & Layout Structure\n\n* Nest and structure basic components (`Accordion`, `Cards`, `Badge`, `Tag`) inside the Onyx grid layout (see `onyx-foundation`) to prevent layout breaking.\n\n***\n\n## Validation & Quality Check\n\nAfter writing or updating components, you **MUST** run the following verification steps:\n\n1. **Type Check:** Run TypeScript verification (e.g., `npx vue-tsc --noEmit` or `npm run type-check`) to confirm no invalid props or event bindings exist.\n2. **Linter Check:** Run standard project linters (e.g., `npm run lint` or `eslint .`) to confirm code style and rules are respected.\n3. **Manual Verification:** Confirm all slots and custom events mapped conform to the authoritative API fetched from the MCP.\n";
105
+ var raw$3 = "---\nname: onyx-components\ndescription: Best practices and dynamic API lookup instructions for Onyx UI components. Use when implementing UI features, forms, or building Vue templates.\nlicense: Apache-2.0\n---\n\n# Onyx Components\n\nImplement and configure Onyx Vue 3 UI components using authoritative API definitions.\n\n## Rule: Mandatory Dynamic API Lookups (MCP)\n\nOnyx component APIs are dynamic and change across versions. **NEVER guess or assume props, events, or slots.**\n\n### Action Components (Buttons & Links)\n\n- **Props-based Links:** Components like `OnyxButton`, `OnyxIconButton`, `OnyxSystemButton`, `OnyxMenuItem`, and `OnyxNavItem` support a `link` prop. Do not wrap these components in raw `<a>` tags; pass the URL to the `link` prop.\n- **Headless Links:** Use the `useLink` composable (`const { navigate, isActive } = useLink()`) or `OnyxRouterLink` for custom unstyled navigation components.\n\n### Form Elements\n\n- **Labels & Messages:** Always configure standard `Message` and `LabelPositions` properties consistently.\n- **Loading State:** Implement built-in `Skeleton` loading states when loading form data.\n- **Accessibility:** Use proper labels and fieldsets for complex multi-input forms (`date-picker`, `radio-group`, `checkbox-group`).\n\n### Cards & Layout Structure\n\n- Nest and structure basic components (`Accordion`, `Cards`, `Badge`, `Tag`) inside the Onyx grid layout (see `onyx-foundation`) to prevent layout breaking.\n\n---\n\n## Validation & Quality Check\n\nAfter writing or updating components, you **MUST** run the following verification steps:\n\n1. **Type Check:** Run TypeScript verification (e.g., `npx vue-tsc --noEmit` or `npm run type-check`) to confirm no invalid props or event bindings exist.\n2. **Linter Check:** Run standard project linters (e.g., `npm run lint` or `eslint .`) to confirm code style and rules are respected.\n3. **Manual Verification:** Confirm all slots and custom events mapped conform to the authoritative API fetched from the MCP.\n";
106
+ var frontmatter$3 = {
107
+ "name": "onyx-components",
108
+ "description": "Best practices and dynamic API lookup instructions for Onyx UI components. Use when implementing UI features, forms, or building Vue templates.",
109
+ "license": "Apache-2.0"
110
+ };
111
+ //#endregion
112
+ //#region src/resources/skills/onyx-foundation/SKILL.md
106
113
  var SKILL_exports$2 = /* @__PURE__ */ __exportAll({
107
114
  default: () => SKILL_default$2,
108
115
  frontmatter: () => frontmatter$2,
109
116
  raw: () => raw$2
110
117
  });
111
- var SKILL_default$2 = "# Onyx Components\n\nImplement and configure Onyx Vue 3 UI components using authoritative API definitions.\n\n## Rule: Mandatory Dynamic API Lookups (MCP)\n\nOnyx component APIs are dynamic and change across versions. **NEVER guess or assume props, events, or slots.**\n\n## Onyx MCP Server Installation & Setup\n\nTo allow coding-agents to dynamically query component API specifications and icons, install and configure the official Onyx Model Context Protocol (MCP) server.\n\n### 1. Global Installation\n\nInstall the package globally using your package manager:\n\n```bash\n# Using npm\nnpm install -g @sit-onyx/modelcontextprotocol\n\n# Using pnpm\npnpm install -g @sit-onyx/modelcontextprotocol\n```\n\nVerify the installation is successful:\n\n```bash\nonyx-mcp -h\n```\n\n### 2. General MCP Client Configuration\n\nConfigure the server in your preferred MCP-compliant client (such as Cursor, Claude Desktop, VS Code plugins, or general command-line utilities) using these standard parameters:\n\n* **Command:** `onyx-mcp`\n* **Arguments:** `[\"-r\"]` (Optional: Use the recursive flag depending on environment)\n* **Description:** `\"Information about components of the onyx UI component library\"`\n\n### Step 1: Version Autodiscovery\n\nBefore querying the MCP server, you **MUST** discover the exact Onyx version used in the project:\n\n1. Open and parse the root `package.json`.\n2. Find the version defined under `dependencies` or `devDependencies` for `sit-onyx`.\n3. Use this parsed version number (e.g. `\"1.2.3\"`) as the required `version` parameter for all subsequent MCP tool calls.\n\n### Step 2: Query the MCP Server\n\nUse the connected `onyx-mcp` tools using your discovered version:\n\n* `mcp_onyx-mcp_list-components`: Discover the exact names of available components in this version.\n* `mcp_onyx-mcp_get-component-api`: Retrieve authoritative props, events, and slots for a specific component before writing code.\n* `mcp_onyx-mcp_list-icons`: Retrieve available icon names when implementing components with icon properties.\n\n***\n\n## Component Implementation Rules\n\n### Action Components (Buttons & Links)\n\n* **Props-based Links:** Components like `OnyxButton`, `OnyxIconButton`, `OnyxSystemButton`, `OnyxMenuItem`, and `OnyxNavItem` support a `link` prop. Do not wrap these components in raw `<a>` tags; pass the URL to the `link` prop.\n* **Headless Links:** Use the `useLink` composable (`const { navigate, isActive } = useLink()`) or `OnyxRouterLink` for custom unstyled navigation components.\n\n### Form Elements\n\n* **Labels & Messages:** Always configure standard `Message` and `LabelPositions` properties consistently.\n* **Loading State:** Implement built-in `Skeleton` loading states when loading form data.\n* **Accessibility:** Use proper labels and fieldsets for complex multi-input forms (`date-picker`, `radio-group`, `checkbox-group`).\n\n### Cards & Layout Structure\n\n* Nest and structure basic components (`Accordion`, `Cards`, `Badge`, `Tag`) inside the Onyx grid layout (see `onyx-foundation`) to prevent layout breaking.\n\n***\n\n## Validation & Quality Check\n\nAfter writing or updating components, you **MUST** run the following verification steps:\n\n1. **Type Check:** Run TypeScript verification (e.g., `npx vue-tsc --noEmit` or `npm run type-check`) to confirm no invalid props or event bindings exist.\n2. **Linter Check:** Run standard project linters (e.g., `npm run lint` or `eslint .`) to confirm code style and rules are respected.\n3. **Manual Verification:** Confirm all slots and custom events mapped conform to the authoritative API fetched from the MCP.\n";
112
- var raw$2 = "---\nname: onyx-components\ndescription: Best practices and dynamic API lookup instructions for Onyx UI components. Use when implementing UI features, forms, or building Vue templates.\nlicense: Apache-2.0\n---\n\n# Onyx Components\n\nImplement and configure Onyx Vue 3 UI components using authoritative API definitions.\n\n## Rule: Mandatory Dynamic API Lookups (MCP)\n\nOnyx component APIs are dynamic and change across versions. **NEVER guess or assume props, events, or slots.**\n\n## Onyx MCP Server Installation & Setup\n\nTo allow coding-agents to dynamically query component API specifications and icons, install and configure the official Onyx Model Context Protocol (MCP) server.\n\n### 1. Global Installation\n\nInstall the package globally using your package manager:\n\n```bash\n# Using npm\nnpm install -g @sit-onyx/modelcontextprotocol\n\n# Using pnpm\npnpm install -g @sit-onyx/modelcontextprotocol\n```\n\nVerify the installation is successful:\n\n```bash\nonyx-mcp -h\n```\n\n### 2. General MCP Client Configuration\n\nConfigure the server in your preferred MCP-compliant client (such as Cursor, Claude Desktop, VS Code plugins, or general command-line utilities) using these standard parameters:\n\n- **Command:** `onyx-mcp`\n- **Arguments:** `[\"-r\"]` (Optional: Use the recursive flag depending on environment)\n- **Description:** `\"Information about components of the onyx UI component library\"`\n\n### Step 1: Version Autodiscovery\n\nBefore querying the MCP server, you **MUST** discover the exact Onyx version used in the project:\n\n1. Open and parse the root `package.json`.\n2. Find the version defined under `dependencies` or `devDependencies` for `sit-onyx`.\n3. Use this parsed version number (e.g. `\"1.2.3\"`) as the required `version` parameter for all subsequent MCP tool calls.\n\n### Step 2: Query the MCP Server\n\nUse the connected `onyx-mcp` tools using your discovered version:\n\n- `mcp_onyx-mcp_list-components`: Discover the exact names of available components in this version.\n- `mcp_onyx-mcp_get-component-api`: Retrieve authoritative props, events, and slots for a specific component before writing code.\n- `mcp_onyx-mcp_list-icons`: Retrieve available icon names when implementing components with icon properties.\n\n---\n\n## Component Implementation Rules\n\n### Action Components (Buttons & Links)\n\n- **Props-based Links:** Components like `OnyxButton`, `OnyxIconButton`, `OnyxSystemButton`, `OnyxMenuItem`, and `OnyxNavItem` support a `link` prop. Do not wrap these components in raw `<a>` tags; pass the URL to the `link` prop.\n- **Headless Links:** Use the `useLink` composable (`const { navigate, isActive } = useLink()`) or `OnyxRouterLink` for custom unstyled navigation components.\n\n### Form Elements\n\n- **Labels & Messages:** Always configure standard `Message` and `LabelPositions` properties consistently.\n- **Loading State:** Implement built-in `Skeleton` loading states when loading form data.\n- **Accessibility:** Use proper labels and fieldsets for complex multi-input forms (`date-picker`, `radio-group`, `checkbox-group`).\n\n### Cards & Layout Structure\n\n- Nest and structure basic components (`Accordion`, `Cards`, `Badge`, `Tag`) inside the Onyx grid layout (see `onyx-foundation`) to prevent layout breaking.\n\n---\n\n## Validation & Quality Check\n\nAfter writing or updating components, you **MUST** run the following verification steps:\n\n1. **Type Check:** Run TypeScript verification (e.g., `npx vue-tsc --noEmit` or `npm run type-check`) to confirm no invalid props or event bindings exist.\n2. **Linter Check:** Run standard project linters (e.g., `npm run lint` or `eslint .`) to confirm code style and rules are respected.\n3. **Manual Verification:** Confirm all slots and custom events mapped conform to the authoritative API fetched from the MCP.\n";
118
+ var SKILL_default$2 = "# Onyx Foundation & Theming\n\nApply Onyx styling foundations, CSS variables, responsive grid, and layout rules.\n\n## Theming & Colors\n\nOnyx supports light and dark themes out-of-the-box. Theme switching is handled automatically.\n\n### Rule: CSS Variables Only\n\n**NEVER hardcode hex, rgb, or hsl color values.** Always use semantic Onyx CSS variables (prefixed with `--onyx-`).\n\n* **Base backgrounds:** `var(--onyx-color-base-background-tinted)`, `var(--onyx-color-base-background-blank)`\n* **Primary brand:** `var(--onyx-color-base-primary-500)`, `var(--onyx-color-base-primary-100)`\n* **Text & icons:** `var(--onyx-color-text-icons-primary-soft)`, `var(--onyx-color-text-icons-primary-medium)`, `var(--onyx-color-text-icons-primary-intense)`\n* **Component states:** `var(--onyx-color-component-cta-default)`, `var(--onyx-color-component-border-primary)`, `var(--onyx-color-component-focus-primary)`\n\n*Note: Access ONLY Semantic variables. Do NOT use global or component variables directly in applications.*\n\n## Density\n\nDensity levels control the vertical white space and heights (base heights: Compact = 32px, Default = 40px, Cozy = 48px).\nApply density via properties on supported components or by adding these CSS classes to any element:\n\n* `.onyx-density-compact`\n* `.onyx-density-default`\n* `.onyx-density-cozy`\n\n## Breakpoints\n\nThe design system defines six standard breakpoints:\n\n* `2xs`: `320px` to `576px` (Max 4 columns)\n* `xs`: `577px` to `768px` (Max 8 columns)\n* `sm`: `769px` to `992px` (Max 8 columns)\n* `md`: `993px` to `1440px` (Max 12 columns)\n* `lg`: `1441px` to `1920px` (Max 12 or 16 columns)\n* `xl`: `1921px` and beyond (Max 12, 16, or 20 columns)\n\n### Responsive SCSS Mixins\n\nImport `\"sit-onyx/breakpoints.scss\"` to apply media or container queries:\n\n```scss\n@use \"sit-onyx/breakpoints.scss\";\n\n// Media queries (compares against whole screen width)\n.my-screen-class {\n @include breakpoints.screen(max, sm) {\n /* styles for sm and smaller */\n }\n @include breakpoints.screen(min, md) {\n /* styles for md and larger */\n }\n}\n\n// Container queries (compares against nearest container width)\n// MUST set container-type on the parent element\n.my-container-class {\n container-type: inline-size;\n\n @include breakpoints.container(max, md) {\n /* styles for md container and smaller */\n }\n @include breakpoints.container(min, lg) {\n /* styles for lg container and larger */\n }\n}\n```\n\n## Grid System\n\nOnyx uses container-query-based grids. The nearest parent component with `container-type: inline-size;` (automatically set by `OnyxPageLayout`, `OnyxAppLayout`, `OnyxSidebar`) determines the active grid width.\n\n### Grid Classes\n\n* **Container:** `.onyx-grid` (Defines a grid container)\n* **Spanning Columns:** `.onyx-grid-span-<number>` (Define exact span from 1 to 12)\n* **Full Width:** `.onyx-grid-span-full` (Span all available columns)\n* **Breakpoint-Specific Span:** `.onyx-grid-<breakpoint>-span-<number>` (Define column span for a specific breakpoint **and larger**)\n\n### Grid Margin\n\nApply `.onyx-grid-layout` manually to wrap page contents and add outer page margins if not using `OnyxPageLayout`.\n\n```vue\n<template>\n <div class=\"onyx-grid\">\n <!-- Spans 4 cols on smaller screens, 6 on md and larger -->\n <OnyxCard class=\"onyx-grid-span-4 onyx-grid-md-span-6\">Content</OnyxCard>\n\n <!-- Spans full width always -->\n <OnyxCard class=\"onyx-grid-span-full\">Footer / Hero</OnyxCard>\n </div>\n</template>\n```\n\n### Grid Customization\n\nSet these CSS classes on the root element of your application (e.g. `OnyxAppLayout`):\n\n* **Limit Max Width:** `onyx-grid-max-md` (max 1440px) or `onyx-grid-max-lg` (max 1920px)\n* **Alignment:** `onyx-grid-center` (Centers the layout when screen size exceeds max width)\n* **Max Columns (lg and beyond):** `onyx-grid-lg-16` (16 columns) or `onyx-grid-xl-20` (20 columns)\n\n## Page Layout (`OnyxPageLayout`)\n\nImplement the `OnyxPageLayout` component as the root element on every individual page/view to ensure standardized paddings, page-level scroll behavior, and unified outer page margins.\n\n```vue\n<template>\n <OnyxPageLayout>\n <OnyxHeadline is=\"h1\">Page Title</OnyxHeadline>\n </OnyxPageLayout>\n</template>\n```\n\nFor recurring page elements (like sidebars, footers, or sub-navigation), wrap the `OnyxPageLayout` in a reusable component or a Nuxt layout.\n\n## Layout Principles & Page Anatomy\n\nAll custom layout constructions must align with the core Onyx layout guidelines:\n\n### Core Principles\n\n* **Responsive:** Layouts must fluidly adapt to maintain usability and visual hierarchy across all device sizes.\n* **Content-Driven:** Prioritize structural layout decisions based on the content's hierarchy and user needs, not vice versa.\n\n### The Four Page Anatomy Regions\n\n1. **Main Navigation (`OnyxNavBar`):** Persistent top/left area independent of scroll containers, providing access to top-level views.\n2. **Sidebar (`OnyxSidebar`):** Persistent left/right sidebar used for secondary navigation or master-detail detail panels.\n3. **Page Content (`OnyxPageLayout`):** The flexible central area governed by the grid system and acting as the primary scroll container.\n4. **Bottom Bar (`OnyxBottomBar`):** Scroll-independent sticky bar at the bottom for status confirmations or primary page-level triggers.\n\n### Component Alignment Rule\n\n* **STRICT Left-Alignment:** All internal component layout structures must be left-aligned to preserve scannability.\n* **Exception:** Tables and data grids may utilize center/right alignment within specific columns depending on data type formats (e.g. numeric currencies).\n\n### Visual Rhythm & Grouping\n\n* **Spatial Grouping:** Group functionally related components together using generous empty space (white space), typography, or dividers to minimize cognitive load. Ensure balanced proportions across all section distributions.\n\n***\n\n## Validation & Quality Check\n\nAfter writing custom layouts or styling overrides, you **MUST** run the following verification steps:\n\n1. **CSS Variables Audit:** Scan your stylesheets for any hardcoded hex, rgb, or hsl values, or direct global/component variable usages. Replace them with proper `--onyx-` semantic variables.\n2. **Layout Alignment Check:** Verify all custom component interiors are left-aligned (with the exception of specific table/data grid columns).\n3. **Responsive Verification:** Verify your CSS container-query selectors are properly paired with a parent `container-type: inline-size;`. Ensure no breakpoint styles break responsive fluidity.\n";
119
+ var raw$2 = "---\nname: onyx-foundation\ndescription: Styling foundations, CSS variables, layout grid, breakpoints, and responsive mixins for Onyx. Use when writing custom CSS, designing layouts, or ensuring theme compliance.\nlicense: Apache-2.0\n---\n\n# Onyx Foundation & Theming\n\nApply Onyx styling foundations, CSS variables, responsive grid, and layout rules.\n\n## Theming & Colors\n\nOnyx supports light and dark themes out-of-the-box. Theme switching is handled automatically.\n\n### Rule: CSS Variables Only\n\n**NEVER hardcode hex, rgb, or hsl color values.** Always use semantic Onyx CSS variables (prefixed with `--onyx-`).\n\n- **Base backgrounds:** `var(--onyx-color-base-background-tinted)`, `var(--onyx-color-base-background-blank)`\n- **Primary brand:** `var(--onyx-color-base-primary-500)`, `var(--onyx-color-base-primary-100)`\n- **Text & icons:** `var(--onyx-color-text-icons-primary-soft)`, `var(--onyx-color-text-icons-primary-medium)`, `var(--onyx-color-text-icons-primary-intense)`\n- **Component states:** `var(--onyx-color-component-cta-default)`, `var(--onyx-color-component-border-primary)`, `var(--onyx-color-component-focus-primary)`\n\n_Note: Access ONLY Semantic variables. Do NOT use global or component variables directly in applications._\n\n## Density\n\nDensity levels control the vertical white space and heights (base heights: Compact = 32px, Default = 40px, Cozy = 48px).\nApply density via properties on supported components or by adding these CSS classes to any element:\n\n- `.onyx-density-compact`\n- `.onyx-density-default`\n- `.onyx-density-cozy`\n\n## Breakpoints\n\nThe design system defines six standard breakpoints:\n\n- `2xs`: `320px` to `576px` (Max 4 columns)\n- `xs`: `577px` to `768px` (Max 8 columns)\n- `sm`: `769px` to `992px` (Max 8 columns)\n- `md`: `993px` to `1440px` (Max 12 columns)\n- `lg`: `1441px` to `1920px` (Max 12 or 16 columns)\n- `xl`: `1921px` and beyond (Max 12, 16, or 20 columns)\n\n### Responsive SCSS Mixins\n\nImport `\"sit-onyx/breakpoints.scss\"` to apply media or container queries:\n\n```scss\n@use \"sit-onyx/breakpoints.scss\";\n\n// Media queries (compares against whole screen width)\n.my-screen-class {\n @include breakpoints.screen(max, sm) {\n /* styles for sm and smaller */\n }\n @include breakpoints.screen(min, md) {\n /* styles for md and larger */\n }\n}\n\n// Container queries (compares against nearest container width)\n// MUST set container-type on the parent element\n.my-container-class {\n container-type: inline-size;\n\n @include breakpoints.container(max, md) {\n /* styles for md container and smaller */\n }\n @include breakpoints.container(min, lg) {\n /* styles for lg container and larger */\n }\n}\n```\n\n## Grid System\n\nOnyx uses container-query-based grids. The nearest parent component with `container-type: inline-size;` (automatically set by `OnyxPageLayout`, `OnyxAppLayout`, `OnyxSidebar`) determines the active grid width.\n\n### Grid Classes\n\n- **Container:** `.onyx-grid` (Defines a grid container)\n- **Spanning Columns:** `.onyx-grid-span-<number>` (Define exact span from 1 to 12)\n- **Full Width:** `.onyx-grid-span-full` (Span all available columns)\n- **Breakpoint-Specific Span:** `.onyx-grid-<breakpoint>-span-<number>` (Define column span for a specific breakpoint **and larger**)\n\n### Grid Margin\n\nApply `.onyx-grid-layout` manually to wrap page contents and add outer page margins if not using `OnyxPageLayout`.\n\n```vue\n<template>\n <div class=\"onyx-grid\">\n <!-- Spans 4 cols on smaller screens, 6 on md and larger -->\n <OnyxCard class=\"onyx-grid-span-4 onyx-grid-md-span-6\">Content</OnyxCard>\n\n <!-- Spans full width always -->\n <OnyxCard class=\"onyx-grid-span-full\">Footer / Hero</OnyxCard>\n </div>\n</template>\n```\n\n### Grid Customization\n\nSet these CSS classes on the root element of your application (e.g. `OnyxAppLayout`):\n\n- **Limit Max Width:** `onyx-grid-max-md` (max 1440px) or `onyx-grid-max-lg` (max 1920px)\n- **Alignment:** `onyx-grid-center` (Centers the layout when screen size exceeds max width)\n- **Max Columns (lg and beyond):** `onyx-grid-lg-16` (16 columns) or `onyx-grid-xl-20` (20 columns)\n\n## Page Layout (`OnyxPageLayout`)\n\nImplement the `OnyxPageLayout` component as the root element on every individual page/view to ensure standardized paddings, page-level scroll behavior, and unified outer page margins.\n\n```vue\n<template>\n <OnyxPageLayout>\n <OnyxHeadline is=\"h1\">Page Title</OnyxHeadline>\n </OnyxPageLayout>\n</template>\n```\n\nFor recurring page elements (like sidebars, footers, or sub-navigation), wrap the `OnyxPageLayout` in a reusable component or a Nuxt layout.\n\n## Layout Principles & Page Anatomy\n\nAll custom layout constructions must align with the core Onyx layout guidelines:\n\n### Core Principles\n\n- **Responsive:** Layouts must fluidly adapt to maintain usability and visual hierarchy across all device sizes.\n- **Content-Driven:** Prioritize structural layout decisions based on the content's hierarchy and user needs, not vice versa.\n\n### The Four Page Anatomy Regions\n\n1. **Main Navigation (`OnyxNavBar`):** Persistent top/left area independent of scroll containers, providing access to top-level views.\n2. **Sidebar (`OnyxSidebar`):** Persistent left/right sidebar used for secondary navigation or master-detail detail panels.\n3. **Page Content (`OnyxPageLayout`):** The flexible central area governed by the grid system and acting as the primary scroll container.\n4. **Bottom Bar (`OnyxBottomBar`):** Scroll-independent sticky bar at the bottom for status confirmations or primary page-level triggers.\n\n### Component Alignment Rule\n\n- **STRICT Left-Alignment:** All internal component layout structures must be left-aligned to preserve scannability.\n- **Exception:** Tables and data grids may utilize center/right alignment within specific columns depending on data type formats (e.g. numeric currencies).\n\n### Visual Rhythm & Grouping\n\n- **Spatial Grouping:** Group functionally related components together using generous empty space (white space), typography, or dividers to minimize cognitive load. Ensure balanced proportions across all section distributions.\n\n---\n\n## Validation & Quality Check\n\nAfter writing custom layouts or styling overrides, you **MUST** run the following verification steps:\n\n1. **CSS Variables Audit:** Scan your stylesheets for any hardcoded hex, rgb, or hsl values, or direct global/component variable usages. Replace them with proper `--onyx-` semantic variables.\n2. **Layout Alignment Check:** Verify all custom component interiors are left-aligned (with the exception of specific table/data grid columns).\n3. **Responsive Verification:** Verify your CSS container-query selectors are properly paired with a parent `container-type: inline-size;`. Ensure no breakpoint styles break responsive fluidity.\n";
113
120
  var frontmatter$2 = {
114
- "name": "onyx-components",
115
- "description": "Best practices and dynamic API lookup instructions for Onyx UI components. Use when implementing UI features, forms, or building Vue templates.",
121
+ "name": "onyx-foundation",
122
+ "description": "Styling foundations, CSS variables, layout grid, breakpoints, and responsive mixins for Onyx. Use when writing custom CSS, designing layouts, or ensuring theme compliance.",
116
123
  "license": "Apache-2.0"
117
124
  };
118
125
  //#endregion
119
- //#region src/resources/skills/onyx-foundation/SKILL.md
126
+ //#region src/resources/skills/onyx-install-mcp/SKILL.md
120
127
  var SKILL_exports$1 = /* @__PURE__ */ __exportAll({
121
128
  default: () => SKILL_default$1,
122
129
  frontmatter: () => frontmatter$1,
123
130
  raw: () => raw$1
124
131
  });
125
- var SKILL_default$1 = "# Onyx Foundation & Theming\n\nApply Onyx styling foundations, CSS variables, responsive grid, and layout rules.\n\n## Theming & Colors\n\nOnyx supports light and dark themes out-of-the-box. Theme switching is handled automatically.\n\n### Rule: CSS Variables Only\n\n**NEVER hardcode hex, rgb, or hsl color values.** Always use semantic Onyx CSS variables (prefixed with `--onyx-`).\n\n* **Base backgrounds:** `var(--onyx-color-base-background-tinted)`, `var(--onyx-color-base-background-blank)`\n* **Primary brand:** `var(--onyx-color-base-primary-500)`, `var(--onyx-color-base-primary-100)`\n* **Text & icons:** `var(--onyx-color-text-icons-primary-soft)`, `var(--onyx-color-text-icons-primary-medium)`, `var(--onyx-color-text-icons-primary-intense)`\n* **Component states:** `var(--onyx-color-component-cta-default)`, `var(--onyx-color-component-border-primary)`, `var(--onyx-color-component-focus-primary)`\n\n*Note: Access ONLY Semantic variables. Do NOT use global or component variables directly in applications.*\n\n## Density\n\nDensity levels control the vertical white space and heights (base heights: Compact = 32px, Default = 40px, Cozy = 48px).\nApply density via properties on supported components or by adding these CSS classes to any element:\n\n* `.onyx-density-compact`\n* `.onyx-density-default`\n* `.onyx-density-cozy`\n\n## Breakpoints\n\nThe design system defines six standard breakpoints:\n\n* `2xs`: `320px` to `576px` (Max 4 columns)\n* `xs`: `577px` to `768px` (Max 8 columns)\n* `sm`: `769px` to `992px` (Max 8 columns)\n* `md`: `993px` to `1440px` (Max 12 columns)\n* `lg`: `1441px` to `1920px` (Max 12 or 16 columns)\n* `xl`: `1921px` and beyond (Max 12, 16, or 20 columns)\n\n### Responsive SCSS Mixins\n\nImport `\"sit-onyx/breakpoints.scss\"` to apply media or container queries:\n\n```scss\n@use \"sit-onyx/breakpoints.scss\";\n\n// Media queries (compares against whole screen width)\n.my-screen-class {\n @include breakpoints.screen(max, sm) {\n /* styles for sm and smaller */\n }\n @include breakpoints.screen(min, md) {\n /* styles for md and larger */\n }\n}\n\n// Container queries (compares against nearest container width)\n// MUST set container-type on the parent element\n.my-container-class {\n container-type: inline-size;\n\n @include breakpoints.container(max, md) {\n /* styles for md container and smaller */\n }\n @include breakpoints.container(min, lg) {\n /* styles for lg container and larger */\n }\n}\n```\n\n## Grid System\n\nOnyx uses container-query-based grids. The nearest parent component with `container-type: inline-size;` (automatically set by `OnyxPageLayout`, `OnyxAppLayout`, `OnyxSidebar`) determines the active grid width.\n\n### Grid Classes\n\n* **Container:** `.onyx-grid` (Defines a grid container)\n* **Spanning Columns:** `.onyx-grid-span-<number>` (Define exact span from 1 to 12)\n* **Full Width:** `.onyx-grid-span-full` (Span all available columns)\n* **Breakpoint-Specific Span:** `.onyx-grid-<breakpoint>-span-<number>` (Define column span for a specific breakpoint **and larger**)\n\n### Grid Margin\n\nApply `.onyx-grid-layout` manually to wrap page contents and add outer page margins if not using `OnyxPageLayout`.\n\n```vue\n<template>\n <div class=\"onyx-grid\">\n <!-- Spans 4 cols on smaller screens, 6 on md and larger -->\n <OnyxCard class=\"onyx-grid-span-4 onyx-grid-md-span-6\">Content</OnyxCard>\n\n <!-- Spans full width always -->\n <OnyxCard class=\"onyx-grid-span-full\">Footer / Hero</OnyxCard>\n </div>\n</template>\n```\n\n### Grid Customization\n\nSet these CSS classes on the root element of your application (e.g. `OnyxAppLayout`):\n\n* **Limit Max Width:** `onyx-grid-max-md` (max 1440px) or `onyx-grid-max-lg` (max 1920px)\n* **Alignment:** `onyx-grid-center` (Centers the layout when screen size exceeds max width)\n* **Max Columns (lg and beyond):** `onyx-grid-lg-16` (16 columns) or `onyx-grid-xl-20` (20 columns)\n\n## Page Layout (`OnyxPageLayout`)\n\nImplement the `OnyxPageLayout` component as the root element on every individual page/view to ensure standardized paddings, page-level scroll behavior, and unified outer page margins.\n\n```vue\n<template>\n <OnyxPageLayout>\n <OnyxHeadline is=\"h1\">Page Title</OnyxHeadline>\n </OnyxPageLayout>\n</template>\n```\n\nFor recurring page elements (like sidebars, footers, or sub-navigation), wrap the `OnyxPageLayout` in a reusable component or a Nuxt layout.\n\n## Layout Principles & Page Anatomy\n\nAll custom layout constructions must align with the core Onyx layout guidelines:\n\n### Core Principles\n\n* **Responsive:** Layouts must fluidly adapt to maintain usability and visual hierarchy across all device sizes.\n* **Content-Driven:** Prioritize structural layout decisions based on the content's hierarchy and user needs, not vice versa.\n\n### The Four Page Anatomy Regions\n\n1. **Main Navigation (`OnyxNavBar`):** Persistent top/left area independent of scroll containers, providing access to top-level views.\n2. **Sidebar (`OnyxSidebar`):** Persistent left/right sidebar used for secondary navigation or master-detail detail panels.\n3. **Page Content (`OnyxPageLayout`):** The flexible central area governed by the grid system and acting as the primary scroll container.\n4. **Bottom Bar (`OnyxBottomBar`):** Scroll-independent sticky bar at the bottom for status confirmations or primary page-level triggers.\n\n### Component Alignment Rule\n\n* **STRICT Left-Alignment:** All internal component layout structures must be left-aligned to preserve scannability.\n* **Exception:** Tables and data grids may utilize center/right alignment within specific columns depending on data type formats (e.g. numeric currencies).\n\n### Visual Rhythm & Grouping\n\n* **Spatial Grouping:** Group functionally related components together using generous empty space (white space), typography, or dividers to minimize cognitive load. Ensure balanced proportions across all section distributions.\n\n***\n\n## Validation & Quality Check\n\nAfter writing custom layouts or styling overrides, you **MUST** run the following verification steps:\n\n1. **CSS Variables Audit:** Scan your stylesheets for any hardcoded hex, rgb, or hsl values, or direct global/component variable usages. Replace them with proper `--onyx-` semantic variables.\n2. **Layout Alignment Check:** Verify all custom component interiors are left-aligned (with the exception of specific table/data grid columns).\n3. **Responsive Verification:** Verify your CSS container-query selectors are properly paired with a parent `container-type: inline-size;`. Ensure no breakpoint styles break responsive fluidity.\n";
126
- var raw$1 = "---\nname: onyx-foundation\ndescription: Styling foundations, CSS variables, layout grid, breakpoints, and responsive mixins for Onyx. Use when writing custom CSS, designing layouts, or ensuring theme compliance.\nlicense: Apache-2.0\n---\n\n# Onyx Foundation & Theming\n\nApply Onyx styling foundations, CSS variables, responsive grid, and layout rules.\n\n## Theming & Colors\n\nOnyx supports light and dark themes out-of-the-box. Theme switching is handled automatically.\n\n### Rule: CSS Variables Only\n\n**NEVER hardcode hex, rgb, or hsl color values.** Always use semantic Onyx CSS variables (prefixed with `--onyx-`).\n\n- **Base backgrounds:** `var(--onyx-color-base-background-tinted)`, `var(--onyx-color-base-background-blank)`\n- **Primary brand:** `var(--onyx-color-base-primary-500)`, `var(--onyx-color-base-primary-100)`\n- **Text & icons:** `var(--onyx-color-text-icons-primary-soft)`, `var(--onyx-color-text-icons-primary-medium)`, `var(--onyx-color-text-icons-primary-intense)`\n- **Component states:** `var(--onyx-color-component-cta-default)`, `var(--onyx-color-component-border-primary)`, `var(--onyx-color-component-focus-primary)`\n\n_Note: Access ONLY Semantic variables. Do NOT use global or component variables directly in applications._\n\n## Density\n\nDensity levels control the vertical white space and heights (base heights: Compact = 32px, Default = 40px, Cozy = 48px).\nApply density via properties on supported components or by adding these CSS classes to any element:\n\n- `.onyx-density-compact`\n- `.onyx-density-default`\n- `.onyx-density-cozy`\n\n## Breakpoints\n\nThe design system defines six standard breakpoints:\n\n- `2xs`: `320px` to `576px` (Max 4 columns)\n- `xs`: `577px` to `768px` (Max 8 columns)\n- `sm`: `769px` to `992px` (Max 8 columns)\n- `md`: `993px` to `1440px` (Max 12 columns)\n- `lg`: `1441px` to `1920px` (Max 12 or 16 columns)\n- `xl`: `1921px` and beyond (Max 12, 16, or 20 columns)\n\n### Responsive SCSS Mixins\n\nImport `\"sit-onyx/breakpoints.scss\"` to apply media or container queries:\n\n```scss\n@use \"sit-onyx/breakpoints.scss\";\n\n// Media queries (compares against whole screen width)\n.my-screen-class {\n @include breakpoints.screen(max, sm) {\n /* styles for sm and smaller */\n }\n @include breakpoints.screen(min, md) {\n /* styles for md and larger */\n }\n}\n\n// Container queries (compares against nearest container width)\n// MUST set container-type on the parent element\n.my-container-class {\n container-type: inline-size;\n\n @include breakpoints.container(max, md) {\n /* styles for md container and smaller */\n }\n @include breakpoints.container(min, lg) {\n /* styles for lg container and larger */\n }\n}\n```\n\n## Grid System\n\nOnyx uses container-query-based grids. The nearest parent component with `container-type: inline-size;` (automatically set by `OnyxPageLayout`, `OnyxAppLayout`, `OnyxSidebar`) determines the active grid width.\n\n### Grid Classes\n\n- **Container:** `.onyx-grid` (Defines a grid container)\n- **Spanning Columns:** `.onyx-grid-span-<number>` (Define exact span from 1 to 12)\n- **Full Width:** `.onyx-grid-span-full` (Span all available columns)\n- **Breakpoint-Specific Span:** `.onyx-grid-<breakpoint>-span-<number>` (Define column span for a specific breakpoint **and larger**)\n\n### Grid Margin\n\nApply `.onyx-grid-layout` manually to wrap page contents and add outer page margins if not using `OnyxPageLayout`.\n\n```vue\n<template>\n <div class=\"onyx-grid\">\n <!-- Spans 4 cols on smaller screens, 6 on md and larger -->\n <OnyxCard class=\"onyx-grid-span-4 onyx-grid-md-span-6\">Content</OnyxCard>\n\n <!-- Spans full width always -->\n <OnyxCard class=\"onyx-grid-span-full\">Footer / Hero</OnyxCard>\n </div>\n</template>\n```\n\n### Grid Customization\n\nSet these CSS classes on the root element of your application (e.g. `OnyxAppLayout`):\n\n- **Limit Max Width:** `onyx-grid-max-md` (max 1440px) or `onyx-grid-max-lg` (max 1920px)\n- **Alignment:** `onyx-grid-center` (Centers the layout when screen size exceeds max width)\n- **Max Columns (lg and beyond):** `onyx-grid-lg-16` (16 columns) or `onyx-grid-xl-20` (20 columns)\n\n## Page Layout (`OnyxPageLayout`)\n\nImplement the `OnyxPageLayout` component as the root element on every individual page/view to ensure standardized paddings, page-level scroll behavior, and unified outer page margins.\n\n```vue\n<template>\n <OnyxPageLayout>\n <OnyxHeadline is=\"h1\">Page Title</OnyxHeadline>\n </OnyxPageLayout>\n</template>\n```\n\nFor recurring page elements (like sidebars, footers, or sub-navigation), wrap the `OnyxPageLayout` in a reusable component or a Nuxt layout.\n\n## Layout Principles & Page Anatomy\n\nAll custom layout constructions must align with the core Onyx layout guidelines:\n\n### Core Principles\n\n- **Responsive:** Layouts must fluidly adapt to maintain usability and visual hierarchy across all device sizes.\n- **Content-Driven:** Prioritize structural layout decisions based on the content's hierarchy and user needs, not vice versa.\n\n### The Four Page Anatomy Regions\n\n1. **Main Navigation (`OnyxNavBar`):** Persistent top/left area independent of scroll containers, providing access to top-level views.\n2. **Sidebar (`OnyxSidebar`):** Persistent left/right sidebar used for secondary navigation or master-detail detail panels.\n3. **Page Content (`OnyxPageLayout`):** The flexible central area governed by the grid system and acting as the primary scroll container.\n4. **Bottom Bar (`OnyxBottomBar`):** Scroll-independent sticky bar at the bottom for status confirmations or primary page-level triggers.\n\n### Component Alignment Rule\n\n- **STRICT Left-Alignment:** All internal component layout structures must be left-aligned to preserve scannability.\n- **Exception:** Tables and data grids may utilize center/right alignment within specific columns depending on data type formats (e.g. numeric currencies).\n\n### Visual Rhythm & Grouping\n\n- **Spatial Grouping:** Group functionally related components together using generous empty space (white space), typography, or dividers to minimize cognitive load. Ensure balanced proportions across all section distributions.\n\n---\n\n## Validation & Quality Check\n\nAfter writing custom layouts or styling overrides, you **MUST** run the following verification steps:\n\n1. **CSS Variables Audit:** Scan your stylesheets for any hardcoded hex, rgb, or hsl values, or direct global/component variable usages. Replace them with proper `--onyx-` semantic variables.\n2. **Layout Alignment Check:** Verify all custom component interiors are left-aligned (with the exception of specific table/data grid columns).\n3. **Responsive Verification:** Verify your CSS container-query selectors are properly paired with a parent `container-type: inline-size;`. Ensure no breakpoint styles break responsive fluidity.\n";
132
+ var SKILL_default$1 = "# Onyx MCP Server Installation & Setup\n\nTo allow coding-agents to dynamically query component API specifications and icons, install and configure the official Onyx Model Context Protocol (MCP) server.\n\n### 1. Global Installation\n\nInstall the package globally using your package manager:\n\n```bash\n# Using npm\nnpm install -g @sit-onyx/modelcontextprotocol\n\n# Using pnpm\npnpm install -g @sit-onyx/modelcontextprotocol\n```\n\nVerify the installation is successful:\n\n```bash\nonyx-mcp -h\n```\n\n### 2. General MCP Client Configuration\n\nConfigure the server in your preferred MCP-compliant client (such as Cursor, Claude Desktop, VS Code plugins, or general command-line utilities) using these standard parameters:\n\n* **Command:** `onyx-mcp`\n* **Arguments:** `[\"-r\"]` (Optional: Use the `--resourcesAsTools` flag if the coding-assistant is not able to to use MCP resources. This setting makes resources also available as MCP tools to support these Coding Assistants.)\n* **Description:** `\"Provides necessary details about working with the onyx UI component library, e.g. components and their APIs, setup instructions and best practices\"`\n\n### Step 1: Version Autodiscovery\n\nBefore querying the MCP server, you **MUST** discover the exact Onyx version used in the project:\n\n1. Open and read the root `package.json`.\n2. Find the version defined under `dependencies` or `devDependencies` for `sit-onyx`.\n3. Use this parsed version number (e.g. `\"1.2.3\"`) as the required `version` parameter for all subsequent MCP tool calls.\n\n### Step 2: Query the MCP Server\n\nUse the connected `onyx-mcp` tools using your discovered version.\n";
133
+ var raw$1 = "---\nname: onyx-install-mcp\ndescription: Installation and setup instructions for the local onyx MCP server\nlicense: Apache-2.0\n---\n\n# Onyx MCP Server Installation & Setup\n\nTo allow coding-agents to dynamically query component API specifications and icons, install and configure the official Onyx Model Context Protocol (MCP) server.\n\n### 1. Global Installation\n\nInstall the package globally using your package manager:\n\n```bash\n# Using npm\nnpm install -g @sit-onyx/modelcontextprotocol\n\n# Using pnpm\npnpm install -g @sit-onyx/modelcontextprotocol\n```\n\nVerify the installation is successful:\n\n```bash\nonyx-mcp -h\n```\n\n### 2. General MCP Client Configuration\n\nConfigure the server in your preferred MCP-compliant client (such as Cursor, Claude Desktop, VS Code plugins, or general command-line utilities) using these standard parameters:\n\n- **Command:** `onyx-mcp`\n- **Arguments:** `[\"-r\"]` (Optional: Use the `--resourcesAsTools` flag if the coding-assistant is not able to to use MCP resources. This setting makes resources also available as MCP tools to support these Coding Assistants.)\n- **Description:** `\"Provides necessary details about working with the onyx UI component library, e.g. components and their APIs, setup instructions and best practices\"`\n\n### Step 1: Version Autodiscovery\n\nBefore querying the MCP server, you **MUST** discover the exact Onyx version used in the project:\n\n1. Open and read the root `package.json`.\n2. Find the version defined under `dependencies` or `devDependencies` for `sit-onyx`.\n3. Use this parsed version number (e.g. `\"1.2.3\"`) as the required `version` parameter for all subsequent MCP tool calls.\n\n### Step 2: Query the MCP Server\n\nUse the connected `onyx-mcp` tools using your discovered version.\n";
127
134
  var frontmatter$1 = {
128
- "name": "onyx-foundation",
129
- "description": "Styling foundations, CSS variables, layout grid, breakpoints, and responsive mixins for Onyx. Use when writing custom CSS, designing layouts, or ensuring theme compliance.",
135
+ "name": "onyx-install-mcp",
136
+ "description": "Installation and setup instructions for the local onyx MCP server",
130
137
  "license": "Apache-2.0"
131
138
  };
132
139
  //#endregion
@@ -146,8 +153,9 @@ var frontmatter = {
146
153
  //#endregion
147
154
  //#region src/resources/skills.ts
148
155
  var skills = /* #__PURE__ */ Object.assign({
149
- "./skills/onyx-components/SKILL.md": SKILL_exports$2,
150
- "./skills/onyx-foundation/SKILL.md": SKILL_exports$1,
156
+ "./skills/onyx-components/SKILL.md": SKILL_exports$3,
157
+ "./skills/onyx-foundation/SKILL.md": SKILL_exports$2,
158
+ "./skills/onyx-install-mcp/SKILL.md": SKILL_exports$1,
151
159
  "./skills/onyx-setup/SKILL.md": SKILL_exports
152
160
  });
153
161
  var allSkills = Object.values(skills).map(({ default: text, frontmatter: { description, name } }) => [
@@ -200,10 +208,6 @@ var run = async (getServer) => {
200
208
  var { version: version$2 } = package_default;
201
209
  var USER_AGENT = `onyx-mcp/${version$2}`;
202
210
  var REGISTRY_URL = process.env.REGISTRY_URL ?? "https://registry.npmjs.org";
203
- /**
204
- * Minimum `sit-onyx` version that provides the `component-meta.json` file
205
- */
206
- var SIT_ONYX_MIN_VERSION = "1.12.0";
207
211
  var SIT_ONYX_COMPONENT_META_FILE = "package/dist/component-meta.json";
208
212
  var SIT_ONYX_DESIGN_TOKENS_FILE = "package/src/styles/variables/themes/onyx.css";
209
213
  var SIT_ONYX_DESIGN_TOKENS_SPACINGS_FILE = "package/src/styles/variables/spacing.css";
@@ -222,36 +226,6 @@ var cached$1 = (func) => {
222
226
  };
223
227
  };
224
228
  //#endregion
225
- //#region ../../node_modules/.pnpm/url-join@5.0.0/node_modules/url-join/lib/url-join.js
226
- function normalize(strArray) {
227
- var resultArray = [];
228
- if (strArray.length === 0) return "";
229
- if (typeof strArray[0] !== "string") throw new TypeError("Url must be a string. Received " + strArray[0]);
230
- if (strArray[0].match(/^[^/:]+:\/*$/) && strArray.length > 1) strArray[0] = strArray.shift() + strArray[0];
231
- if (strArray[0].match(/^file:\/\/\//)) strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, "$1:///");
232
- else strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, "$1://");
233
- for (var i = 0; i < strArray.length; i++) {
234
- var component = strArray[i];
235
- if (typeof component !== "string") throw new TypeError("Url must be a string. Received " + component);
236
- if (component === "") continue;
237
- if (i > 0) component = component.replace(/^[\/]+/, "");
238
- if (i < strArray.length - 1) component = component.replace(/[\/]+$/, "");
239
- else component = component.replace(/[\/]+$/, "/");
240
- resultArray.push(component);
241
- }
242
- var str = resultArray.join("/");
243
- str = str.replace(/\/(\?|&|#[^!])/g, "$1");
244
- var parts = str.split("?");
245
- str = parts.shift() + (parts.length > 0 ? "?" : "") + parts.join("&");
246
- return str;
247
- }
248
- function urlJoin() {
249
- var input;
250
- if (typeof arguments[0] === "object") input = arguments[0];
251
- else input = [].slice.call(arguments);
252
- return normalize(input);
253
- }
254
- //#endregion
255
229
  //#region ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/core.js
256
230
  var _a$1;
257
231
  function $constructor(name, initializer, params) {
@@ -373,10 +347,7 @@ function assignProp(target, prop, value) {
373
347
  }
374
348
  function mergeDefs(...defs) {
375
349
  const mergedDescriptors = {};
376
- for (const def of defs) {
377
- const descriptors = Object.getOwnPropertyDescriptors(def);
378
- Object.assign(mergedDescriptors, descriptors);
379
- }
350
+ for (const def of defs) Object.assign(mergedDescriptors, Object.getOwnPropertyDescriptors(def));
380
351
  return Object.defineProperties({}, mergedDescriptors);
381
352
  }
382
353
  function esc(str) {
@@ -698,7 +669,7 @@ var _parse = (_Err) => (schema, value, _ctx, _params) => {
698
669
  }, ctx);
699
670
  if (result instanceof Promise) throw new $ZodAsyncError();
700
671
  if (result.issues.length) {
701
- const e = new ((_params?.Err) ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));
672
+ const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));
702
673
  captureStackTrace(e, _params?.callee);
703
674
  throw e;
704
675
  }
@@ -716,7 +687,7 @@ var _parseAsync = (_Err) => async (schema, value, _ctx, params) => {
716
687
  }, ctx);
717
688
  if (result instanceof Promise) result = await result;
718
689
  if (result.issues.length) {
719
- const e = new ((params?.Err) ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));
690
+ const e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));
720
691
  captureStackTrace(e, params?.callee);
721
692
  throw e;
722
693
  }
@@ -1679,7 +1650,7 @@ var $ZodBoolean = /*@__PURE__*/ $constructor("$ZodBoolean", (inst, def) => {
1679
1650
  var $ZodNull = /*@__PURE__*/ $constructor("$ZodNull", (inst, def) => {
1680
1651
  $ZodType.init(inst, def);
1681
1652
  inst._zod.pattern = _null$2;
1682
- inst._zod.values = /* @__PURE__ */ new Set([null]);
1653
+ inst._zod.values = new Set([null]);
1683
1654
  inst._zod.parse = (payload, _ctx) => {
1684
1655
  const input = payload.value;
1685
1656
  if (input === null) return payload;
@@ -1826,13 +1797,13 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
1826
1797
  }
1827
1798
  return propValues;
1828
1799
  });
1829
- const isObject$2 = isObject;
1800
+ const isObject$1 = isObject;
1830
1801
  const catchall = def.catchall;
1831
1802
  let value;
1832
1803
  inst._zod.parse = (payload, ctx) => {
1833
1804
  value ?? (value = _normalized.value);
1834
1805
  const input = payload.value;
1835
- if (!isObject$2(input)) {
1806
+ if (!isObject$1(input)) {
1836
1807
  payload.issues.push({
1837
1808
  expected: "object",
1838
1809
  code: "invalid_type",
@@ -1955,7 +1926,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
1955
1926
  return (payload, ctx) => fn(shape, payload, ctx);
1956
1927
  };
1957
1928
  let fastpass;
1958
- const isObject$1 = isObject;
1929
+ const isObject$2 = isObject;
1959
1930
  const jit = !globalConfig.jitless;
1960
1931
  const fastEnabled = jit && allowsEval.value;
1961
1932
  const catchall = def.catchall;
@@ -1963,7 +1934,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
1963
1934
  inst._zod.parse = (payload, ctx) => {
1964
1935
  value ?? (value = _normalized.value);
1965
1936
  const input = payload.value;
1966
- if (!isObject$1(input)) {
1937
+ if (!isObject$2(input)) {
1967
1938
  payload.issues.push({
1968
1939
  expected: "object",
1969
1940
  code: "invalid_type",
@@ -2309,7 +2280,7 @@ var $ZodOptional = /*@__PURE__*/ $constructor("$ZodOptional", (inst, def) => {
2309
2280
  inst._zod.optin = "optional";
2310
2281
  inst._zod.optout = "optional";
2311
2282
  defineLazy(inst._zod, "values", () => {
2312
- return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, void 0]) : void 0;
2283
+ return def.innerType._zod.values ? new Set([...def.innerType._zod.values, void 0]) : void 0;
2313
2284
  });
2314
2285
  defineLazy(inst._zod, "pattern", () => {
2315
2286
  const pattern = def.innerType._zod.pattern;
@@ -2343,7 +2314,7 @@ var $ZodNullable = /*@__PURE__*/ $constructor("$ZodNullable", (inst, def) => {
2343
2314
  return pattern ? new RegExp(`^(${cleanRegex(pattern.source)}|null)$`) : void 0;
2344
2315
  });
2345
2316
  defineLazy(inst._zod, "values", () => {
2346
- return def.innerType._zod.values ? /* @__PURE__ */ new Set([...def.innerType._zod.values, null]) : void 0;
2317
+ return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : void 0;
2347
2318
  });
2348
2319
  inst._zod.parse = (payload, ctx) => {
2349
2320
  if (payload.value === null) return payload;
@@ -4505,205 +4476,206 @@ function superRefine(fn, params) {
4505
4476
  return /* @__PURE__ */ _superRefine(fn, params);
4506
4477
  }
4507
4478
  //#endregion
4508
- //#region ../../node_modules/.pnpm/validate-npm-package-name@7.0.2/node_modules/validate-npm-package-name/lib/builtin-modules.json
4509
- var builtin_modules_exports = /* @__PURE__ */ __exportAll({ default: () => builtin_modules_default });
4510
- var builtin_modules_default;
4511
- var init_builtin_modules = __esmMin((() => {
4512
- builtin_modules_default = [
4513
- "_http_agent",
4514
- "_http_client",
4515
- "_http_common",
4516
- "_http_incoming",
4517
- "_http_outgoing",
4518
- "_http_server",
4519
- "_stream_duplex",
4520
- "_stream_passthrough",
4521
- "_stream_readable",
4522
- "_stream_transform",
4523
- "_stream_wrap",
4524
- "_stream_writable",
4525
- "_tls_common",
4526
- "_tls_wrap",
4527
- "assert",
4528
- "assert/strict",
4529
- "async_hooks",
4530
- "buffer",
4531
- "child_process",
4532
- "cluster",
4533
- "console",
4534
- "constants",
4535
- "crypto",
4536
- "dgram",
4537
- "diagnostics_channel",
4538
- "dns",
4539
- "dns/promises",
4540
- "domain",
4541
- "events",
4542
- "fs",
4543
- "fs/promises",
4544
- "http",
4545
- "http2",
4546
- "https",
4547
- "inspector",
4548
- "inspector/promises",
4549
- "module",
4550
- "net",
4551
- "os",
4552
- "path",
4553
- "path/posix",
4554
- "path/win32",
4555
- "perf_hooks",
4556
- "process",
4557
- "punycode",
4558
- "querystring",
4559
- "readline",
4560
- "readline/promises",
4561
- "repl",
4562
- "stream",
4563
- "stream/consumers",
4564
- "stream/promises",
4565
- "stream/web",
4566
- "string_decoder",
4567
- "sys",
4568
- "timers",
4569
- "timers/promises",
4570
- "tls",
4571
- "trace_events",
4572
- "tty",
4573
- "url",
4574
- "util",
4575
- "util/types",
4576
- "v8",
4577
- "vm",
4578
- "wasi",
4579
- "worker_threads",
4580
- "zlib",
4581
- "node:sea",
4582
- "node:sqlite",
4583
- "node:test",
4584
- "node:test/reporters"
4585
- ];
4586
- }));
4587
- //#endregion
4588
- //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/assert-valid-package-name.js
4589
- var import_lib = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
4590
- var builtins = (init_builtin_modules(), __toCommonJS(builtin_modules_exports).default);
4591
- var scopedPackagePattern = /* @__PURE__ */ new RegExp("^(?:@([^/]+?)[/])?([^/]+?)$");
4592
- var exclusionList = ["node_modules", "favicon.ico"];
4593
- function validate(name) {
4594
- var warnings = [];
4595
- var errors = [];
4596
- if (name === null) {
4597
- errors.push("name cannot be null");
4598
- return done(warnings, errors);
4599
- }
4600
- if (name === void 0) {
4601
- errors.push("name cannot be undefined");
4602
- return done(warnings, errors);
4603
- }
4604
- if (typeof name !== "string") {
4605
- errors.push("name must be a string");
4606
- return done(warnings, errors);
4607
- }
4608
- if (!name.length) errors.push("name length must be greater than zero");
4609
- if (name.startsWith(".")) errors.push("name cannot start with a period");
4610
- if (name.startsWith("-")) errors.push("name cannot start with a hyphen");
4611
- if (name.match(/^_/)) errors.push("name cannot start with an underscore");
4612
- if (name.trim() !== name) errors.push("name cannot contain leading or trailing spaces");
4613
- exclusionList.forEach(function(excludedName) {
4614
- if (name.toLowerCase() === excludedName) errors.push(excludedName + " is not a valid package name");
4615
- });
4616
- if (builtins.includes(name.toLowerCase())) warnings.push(name + " is a core module name");
4617
- if (name.length > 214) warnings.push("name can no longer contain more than 214 characters");
4618
- if (name.toLowerCase() !== name) warnings.push("name can no longer contain capital letters");
4619
- if (/[~'!()*]/.test(name.split("/").slice(-1)[0])) warnings.push("name can no longer contain special characters (\"~'!()*\")");
4620
- if (encodeURIComponent(name) !== name) {
4621
- var nameMatch = name.match(scopedPackagePattern);
4622
- if (nameMatch) {
4623
- var user = nameMatch[1];
4624
- var pkg = nameMatch[2];
4625
- if (pkg.startsWith(".")) errors.push("name cannot start with a period");
4626
- if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) return done(warnings, errors);
4627
- }
4628
- errors.push("name can only contain URL-friendly characters");
4629
- }
4630
- return done(warnings, errors);
4631
- }
4632
- var done = function(warnings, errors) {
4633
- var result = {
4634
- validForNewPackages: errors.length === 0 && warnings.length === 0,
4635
- validForOldPackages: errors.length === 0,
4636
- warnings,
4637
- errors
4638
- };
4639
- if (!result.warnings.length) delete result.warnings;
4640
- if (!result.errors.length) delete result.errors;
4641
- return result;
4642
- };
4643
- module.exports = validate;
4644
- })))(), 1);
4645
- function assertValidPackageName(name) {
4646
- const { validForOldPackages, validForNewPackages, warnings, errors } = (0, import_lib.default)(name);
4647
- if (!(validForOldPackages || validForNewPackages)) throw new Error("invalid package name", { cause: {
4648
- name,
4649
- warnings,
4650
- errors
4651
- } });
4652
- }
4653
- //#endregion
4654
- //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/dist-tags.js
4655
- /**
4656
- `DistTags` describes the mapping of distribution tags to semver version numbers
4657
- (e.g., `{ "latest": "1.0.0" }`).
4658
- */
4659
- var DistTags = object({
4660
- /** Latest semver version number. */
4661
- latest: string$1(),
4662
- next: string$1().optional(),
4663
- alpha: string$1().optional(),
4664
- beta: string$1().optional(),
4665
- rc: string$1().optional(),
4666
- canary: string$1().optional(),
4667
- dev: string$1().optional()
4668
- }).catchall(string$1());
4669
- //#endregion
4670
- //#region ../../node_modules/.pnpm/quick-lru@7.3.0/node_modules/quick-lru/index.js
4671
- var QuickLRU = class extends Map {
4672
- #size = 0;
4673
- #cache = /* @__PURE__ */ new Map();
4674
- #oldCache = /* @__PURE__ */ new Map();
4675
- #maxSize;
4676
- #maxAge;
4677
- #onEviction;
4678
- constructor(options = {}) {
4679
- super();
4680
- if (!(options.maxSize && options.maxSize > 0)) throw new TypeError("`maxSize` must be a number greater than 0");
4681
- if (typeof options.maxAge === "number" && options.maxAge === 0) throw new TypeError("`maxAge` must be a number greater than 0");
4682
- this.#maxSize = options.maxSize;
4683
- this.#maxAge = options.maxAge || Number.POSITIVE_INFINITY;
4684
- this.#onEviction = options.onEviction;
4685
- }
4686
- get __oldCache() {
4687
- return this.#oldCache;
4688
- }
4689
- #emitEvictions(cache) {
4690
- if (typeof this.#onEviction !== "function") return;
4691
- for (const [key, item] of cache) this.#onEviction(key, item.value);
4692
- }
4693
- #deleteIfExpired(key, item) {
4694
- if (typeof item.expiry === "number" && item.expiry <= Date.now()) {
4695
- if (typeof this.#onEviction === "function") this.#onEviction(key, item.value);
4696
- return this.delete(key);
4697
- }
4698
- return false;
4699
- }
4700
- #getOrDeleteIfExpired(key, item) {
4701
- if (this.#deleteIfExpired(key, item) === false) return item.value;
4702
- }
4703
- #getItemValue(key, item) {
4704
- return item.expiry ? this.#getOrDeleteIfExpired(key, item) : item.value;
4705
- }
4706
- #peek(key, cache) {
4479
+ //#region ../../node_modules/.pnpm/zod-package-json@2.1.0_zod@4.4.3/node_modules/zod-package-json/dist/package-json.js
4480
+ var Bugs = union([string$1(), object({
4481
+ url: optional(string$1()),
4482
+ email: optional(string$1())
4483
+ })]);
4484
+ var Funding = union([
4485
+ string$1(),
4486
+ object({
4487
+ url: string$1(),
4488
+ type: optional(string$1())
4489
+ }),
4490
+ array(union([string$1(), object({
4491
+ url: string$1(),
4492
+ type: optional(string$1())
4493
+ })]))
4494
+ ]);
4495
+ var Person = union([string$1(), object({
4496
+ name: string$1(),
4497
+ email: optional(string$1()),
4498
+ url: optional(string$1())
4499
+ })]);
4500
+ var Repository = union([string$1(), object({
4501
+ /** Repository type (e.g., `git`). */
4502
+ type: string$1(),
4503
+ /** Machine-readable repository URL (e.g., `https://github.com/user/repo.git`). */
4504
+ url: string$1(),
4505
+ /** Directory in a monorepo where the package's source code is located. */
4506
+ directory: optional(string$1())
4507
+ })]);
4508
+ var DevEngineDependency = object({
4509
+ name: string$1(),
4510
+ version: optional(string$1()),
4511
+ onFail: optional(literal([
4512
+ "ignore",
4513
+ "warn",
4514
+ "error"
4515
+ ]))
4516
+ });
4517
+ var DevEngineDependencies = union([DevEngineDependency, array(DevEngineDependency)]);
4518
+ var DevEngines = object({
4519
+ cpu: optional(DevEngineDependencies),
4520
+ os: optional(DevEngineDependencies),
4521
+ libc: optional(DevEngineDependencies),
4522
+ runtime: optional(DevEngineDependencies),
4523
+ packageManager: optional(DevEngineDependencies)
4524
+ });
4525
+ var PackageJson = looseObject({
4526
+ /** Package name. */
4527
+ name: string$1(),
4528
+ /** Package semver version number. */
4529
+ version: string$1(),
4530
+ /** Description for the package. */
4531
+ description: optional(string$1()),
4532
+ /** List of keywords for searching the package. */
4533
+ keywords: optional(array(string$1())),
4534
+ /** URL of the package's homepage. */
4535
+ homepage: optional(string$1()),
4536
+ /** Issue tracker for the package. */
4537
+ bugs: optional(Bugs),
4538
+ /** SPDX license expression or a custom license. */
4539
+ license: optional(string$1()),
4540
+ /** Author of the package. */
4541
+ author: optional(Person),
4542
+ /** Contributors to the package. */
4543
+ contributors: optional(array(Person)),
4544
+ /** Maintainers of the package. */
4545
+ maintainers: optional(array(Person)),
4546
+ /** Funding options for the package. */
4547
+ funding: optional(Funding),
4548
+ /** File patterns for files to be included when publishing the package. */
4549
+ files: optional(array(string$1())),
4550
+ /** Package exports. @see {@link https://nodejs.org/api/packages.html#exports} */
4551
+ exports: optional(union([
4552
+ _null(),
4553
+ string$1(),
4554
+ array(string$1()),
4555
+ record(string$1(), unknown())
4556
+ ])),
4557
+ /** Type for all the `.js` files in the package, usually `module`. */
4558
+ type: optional(literal(["module", "commonjs"])),
4559
+ /** Main entry point for the package, usually CommonJS. */
4560
+ main: optional(string$1()),
4561
+ /**
4562
+ Main entry point for the package when used in a browser environment.
4563
+ @see {@link https://docs.npmjs.com/cli/v10/configuring-npm/package-json#browser}
4564
+ @see {@link https://gist.github.com/defunctzombie/4339901/49493836fb873ddaa4b8a7aa0ef2352119f69211}
4565
+ */
4566
+ browser: optional(union([string$1(), record(string$1(), union([string$1(), boolean()]))])),
4567
+ /** Executable files. */
4568
+ bin: optional(union([string$1(), record(string$1(), string$1())])),
4569
+ /** Documentation to be used with the `man` command. */
4570
+ man: optional(union([string$1(), array(string$1())])),
4571
+ /** Directories in the package. */
4572
+ directories: optional(record(string$1(), string$1())),
4573
+ /** Repository for the package's source code. */
4574
+ repository: optional(Repository),
4575
+ /** Scripts used in the package. */
4576
+ scripts: optional(record(string$1(), string$1())),
4577
+ /** Configuration values for scripts. */
4578
+ config: optional(record(string$1(), unknown())),
4579
+ /** Production dependencies. */
4580
+ dependencies: optional(record(string$1(), string$1())),
4581
+ /** Development dependencies. */
4582
+ devDependencies: optional(record(string$1(), string$1())),
4583
+ /** Peer dependencies. */
4584
+ peerDependencies: optional(record(string$1(), string$1())),
4585
+ /** Metadata about peer dependencies. */
4586
+ peerDependenciesMeta: optional(record(string$1(), object({ optional: boolean() }))),
4587
+ /** Dependencies bundled with the package. */
4588
+ bundleDependencies: optional(union([boolean(), array(string$1())])),
4589
+ /** Dependencies bundled with the package (equivalent to `bundleDependencies`). */
4590
+ bundledDependencies: optional(union([boolean(), array(string$1())])),
4591
+ /** Optional dependencies. */
4592
+ optionalDependencies: optional(record(string$1(), string$1())),
4593
+ /** Overrides for dependency resolution using npm. */
4594
+ overrides: optional(record(string$1(), unknown())),
4595
+ /** Runtime systems supported by the package. */
4596
+ engines: optional(record(string$1(), string$1())),
4597
+ /** Operating systems supported by the package. */
4598
+ os: optional(array(string$1())),
4599
+ /** CPU architectures supported by the package. */
4600
+ cpu: optional(array(string$1())),
4601
+ /** Version of libc required to build or run this package on Linux. */
4602
+ libc: optional(string$1()),
4603
+ /** Tooling required to develop the package. */
4604
+ devEngines: optional(DevEngines),
4605
+ /** True if the package should not be published. */
4606
+ private: optional(boolean()),
4607
+ /** Configuration values used at publishing time. */
4608
+ publishConfig: optional(record(string$1(), unknown())),
4609
+ /** File patterns for locating local workspaces. */
4610
+ workspaces: optional(array(string$1())),
4611
+ /** Deprecation message. */
4612
+ deprecated: optional(string$1()),
4613
+ /** Main ESM entry point for the package. */
4614
+ module: optional(string$1()),
4615
+ /** Main TypeScript declaration file. */
4616
+ types: optional(string$1()),
4617
+ /** Main TypeScript declaration file (equivalent to `types`). */
4618
+ typings: optional(string$1()),
4619
+ /**
4620
+ TypeScript types resolutions.
4621
+ @see {@link https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html#version-selection-with-typesversions}
4622
+ */
4623
+ typesVersions: optional(record(string$1(), record(string$1(), array(string$1())))),
4624
+ /**
4625
+ Corepack package manager.
4626
+ @see {@link https://nodejs.org/api/corepack.html}
4627
+ */
4628
+ packageManager: optional(string$1()),
4629
+ /**
4630
+ False if importing modules from the package does not cause side effects.
4631
+ True or a list of file patterns if importing modules from the package causes side effects.
4632
+ @see {@link https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free}
4633
+ */
4634
+ sideEffects: optional(union([boolean(), array(string$1())])),
4635
+ /**
4636
+ Imports map.
4637
+ @see {@link https://nodejs.org/api/packages.html#imports}
4638
+ */
4639
+ imports: optional(record(string$1(), unknown()))
4640
+ });
4641
+ //#endregion
4642
+ //#region ../../node_modules/.pnpm/quick-lru@7.3.0/node_modules/quick-lru/index.js
4643
+ var QuickLRU = class extends Map {
4644
+ #size = 0;
4645
+ #cache = /* @__PURE__ */ new Map();
4646
+ #oldCache = /* @__PURE__ */ new Map();
4647
+ #maxSize;
4648
+ #maxAge;
4649
+ #onEviction;
4650
+ constructor(options = {}) {
4651
+ super();
4652
+ if (!(options.maxSize && options.maxSize > 0)) throw new TypeError("`maxSize` must be a number greater than 0");
4653
+ if (typeof options.maxAge === "number" && options.maxAge === 0) throw new TypeError("`maxAge` must be a number greater than 0");
4654
+ this.#maxSize = options.maxSize;
4655
+ this.#maxAge = options.maxAge || Number.POSITIVE_INFINITY;
4656
+ this.#onEviction = options.onEviction;
4657
+ }
4658
+ get __oldCache() {
4659
+ return this.#oldCache;
4660
+ }
4661
+ #emitEvictions(cache) {
4662
+ if (typeof this.#onEviction !== "function") return;
4663
+ for (const [key, item] of cache) this.#onEviction(key, item.value);
4664
+ }
4665
+ #deleteIfExpired(key, item) {
4666
+ if (typeof item.expiry === "number" && item.expiry <= Date.now()) {
4667
+ if (typeof this.#onEviction === "function") this.#onEviction(key, item.value);
4668
+ return this.delete(key);
4669
+ }
4670
+ return false;
4671
+ }
4672
+ #getOrDeleteIfExpired(key, item) {
4673
+ if (this.#deleteIfExpired(key, item) === false) return item.value;
4674
+ }
4675
+ #getItemValue(key, item) {
4676
+ return item.expiry ? this.#getOrDeleteIfExpired(key, item) : item.value;
4677
+ }
4678
+ #peek(key, cache) {
4707
4679
  const item = cache.get(key);
4708
4680
  return this.#getItemValue(key, item);
4709
4681
  }
@@ -4840,48 +4812,240 @@ var QuickLRU = class extends Map {
4840
4812
  }
4841
4813
  }
4842
4814
  }
4843
- *entriesAscending() {
4844
- for (const [key, value] of this.#entriesAscending()) yield [key, value.value];
4845
- }
4846
- get size() {
4847
- if (!this.#size) return this.#oldCache.size;
4848
- let oldCacheSize = 0;
4849
- for (const key of this.#oldCache.keys()) if (!this.#cache.has(key)) oldCacheSize++;
4850
- return Math.min(this.#size + oldCacheSize, this.#maxSize);
4851
- }
4852
- get maxSize() {
4853
- return this.#maxSize;
4854
- }
4855
- get maxAge() {
4856
- return this.#maxAge;
4857
- }
4858
- entries() {
4859
- return this.entriesAscending();
4860
- }
4861
- forEach(callbackFunction, thisArgument = this) {
4862
- for (const [key, value] of this.entriesAscending()) callbackFunction.call(thisArgument, value, key, this);
4863
- }
4864
- get [Symbol.toStringTag]() {
4865
- return "QuickLRU";
4866
- }
4867
- toString() {
4868
- return `QuickLRU(${this.size}/${this.maxSize})`;
4869
- }
4870
- [Symbol.for("nodejs.util.inspect.custom")]() {
4871
- return this.toString();
4872
- }
4873
- };
4815
+ *entriesAscending() {
4816
+ for (const [key, value] of this.#entriesAscending()) yield [key, value.value];
4817
+ }
4818
+ get size() {
4819
+ if (!this.#size) return this.#oldCache.size;
4820
+ let oldCacheSize = 0;
4821
+ for (const key of this.#oldCache.keys()) if (!this.#cache.has(key)) oldCacheSize++;
4822
+ return Math.min(this.#size + oldCacheSize, this.#maxSize);
4823
+ }
4824
+ get maxSize() {
4825
+ return this.#maxSize;
4826
+ }
4827
+ get maxAge() {
4828
+ return this.#maxAge;
4829
+ }
4830
+ entries() {
4831
+ return this.entriesAscending();
4832
+ }
4833
+ forEach(callbackFunction, thisArgument = this) {
4834
+ for (const [key, value] of this.entriesAscending()) callbackFunction.call(thisArgument, value, key, this);
4835
+ }
4836
+ get [Symbol.toStringTag]() {
4837
+ return "QuickLRU";
4838
+ }
4839
+ toString() {
4840
+ return `QuickLRU(${this.size}/${this.maxSize})`;
4841
+ }
4842
+ [Symbol.for("nodejs.util.inspect.custom")]() {
4843
+ return this.toString();
4844
+ }
4845
+ };
4846
+ //#endregion
4847
+ //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/cache.js
4848
+ /**
4849
+ Internal cache for all requests.
4850
+ @see {@link https://github.com/sindresorhus/quick-lru}
4851
+ @internal
4852
+ */
4853
+ var cache = new QuickLRU({
4854
+ maxSize: 100,
4855
+ maxAge: 300 * 1e3
4856
+ });
4857
+ //#endregion
4858
+ //#region ../../node_modules/.pnpm/url-join@5.0.0/node_modules/url-join/lib/url-join.js
4859
+ function normalize(strArray) {
4860
+ var resultArray = [];
4861
+ if (strArray.length === 0) return "";
4862
+ if (typeof strArray[0] !== "string") throw new TypeError("Url must be a string. Received " + strArray[0]);
4863
+ if (strArray[0].match(/^[^/:]+:\/*$/) && strArray.length > 1) strArray[0] = strArray.shift() + strArray[0];
4864
+ if (strArray[0].match(/^file:\/\/\//)) strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, "$1:///");
4865
+ else strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, "$1://");
4866
+ for (var i = 0; i < strArray.length; i++) {
4867
+ var component = strArray[i];
4868
+ if (typeof component !== "string") throw new TypeError("Url must be a string. Received " + component);
4869
+ if (component === "") continue;
4870
+ if (i > 0) component = component.replace(/^[\/]+/, "");
4871
+ if (i < strArray.length - 1) component = component.replace(/[\/]+$/, "");
4872
+ else component = component.replace(/[\/]+$/, "/");
4873
+ resultArray.push(component);
4874
+ }
4875
+ var str = resultArray.join("/");
4876
+ str = str.replace(/\/(\?|&|#[^!])/g, "$1");
4877
+ var parts = str.split("?");
4878
+ str = parts.shift() + (parts.length > 0 ? "?" : "") + parts.join("&");
4879
+ return str;
4880
+ }
4881
+ function urlJoin() {
4882
+ var input;
4883
+ if (typeof arguments[0] === "object") input = arguments[0];
4884
+ else input = [].slice.call(arguments);
4885
+ return normalize(input);
4886
+ }
4887
+ //#endregion
4888
+ //#region ../../node_modules/.pnpm/validate-npm-package-name@7.0.2/node_modules/validate-npm-package-name/lib/builtin-modules.json
4889
+ var builtin_modules_exports = /* @__PURE__ */ __exportAll({ default: () => builtin_modules_default });
4890
+ var builtin_modules_default;
4891
+ var init_builtin_modules = __esmMin((() => {
4892
+ builtin_modules_default = [
4893
+ "_http_agent",
4894
+ "_http_client",
4895
+ "_http_common",
4896
+ "_http_incoming",
4897
+ "_http_outgoing",
4898
+ "_http_server",
4899
+ "_stream_duplex",
4900
+ "_stream_passthrough",
4901
+ "_stream_readable",
4902
+ "_stream_transform",
4903
+ "_stream_wrap",
4904
+ "_stream_writable",
4905
+ "_tls_common",
4906
+ "_tls_wrap",
4907
+ "assert",
4908
+ "assert/strict",
4909
+ "async_hooks",
4910
+ "buffer",
4911
+ "child_process",
4912
+ "cluster",
4913
+ "console",
4914
+ "constants",
4915
+ "crypto",
4916
+ "dgram",
4917
+ "diagnostics_channel",
4918
+ "dns",
4919
+ "dns/promises",
4920
+ "domain",
4921
+ "events",
4922
+ "fs",
4923
+ "fs/promises",
4924
+ "http",
4925
+ "http2",
4926
+ "https",
4927
+ "inspector",
4928
+ "inspector/promises",
4929
+ "module",
4930
+ "net",
4931
+ "os",
4932
+ "path",
4933
+ "path/posix",
4934
+ "path/win32",
4935
+ "perf_hooks",
4936
+ "process",
4937
+ "punycode",
4938
+ "querystring",
4939
+ "readline",
4940
+ "readline/promises",
4941
+ "repl",
4942
+ "stream",
4943
+ "stream/consumers",
4944
+ "stream/promises",
4945
+ "stream/web",
4946
+ "string_decoder",
4947
+ "sys",
4948
+ "timers",
4949
+ "timers/promises",
4950
+ "tls",
4951
+ "trace_events",
4952
+ "tty",
4953
+ "url",
4954
+ "util",
4955
+ "util/types",
4956
+ "v8",
4957
+ "vm",
4958
+ "wasi",
4959
+ "worker_threads",
4960
+ "zlib",
4961
+ "node:sea",
4962
+ "node:sqlite",
4963
+ "node:test",
4964
+ "node:test/reporters"
4965
+ ];
4966
+ }));
4967
+ //#endregion
4968
+ //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/assert-valid-package-name.js
4969
+ var import_lib = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
4970
+ var builtins = (init_builtin_modules(), __toCommonJS(builtin_modules_exports).default);
4971
+ var scopedPackagePattern = /* @__PURE__ */ new RegExp("^(?:@([^/]+?)[/])?([^/]+?)$");
4972
+ var exclusionList = ["node_modules", "favicon.ico"];
4973
+ function validate(name) {
4974
+ var warnings = [];
4975
+ var errors = [];
4976
+ if (name === null) {
4977
+ errors.push("name cannot be null");
4978
+ return done(warnings, errors);
4979
+ }
4980
+ if (name === void 0) {
4981
+ errors.push("name cannot be undefined");
4982
+ return done(warnings, errors);
4983
+ }
4984
+ if (typeof name !== "string") {
4985
+ errors.push("name must be a string");
4986
+ return done(warnings, errors);
4987
+ }
4988
+ if (!name.length) errors.push("name length must be greater than zero");
4989
+ if (name.startsWith(".")) errors.push("name cannot start with a period");
4990
+ if (name.startsWith("-")) errors.push("name cannot start with a hyphen");
4991
+ if (name.match(/^_/)) errors.push("name cannot start with an underscore");
4992
+ if (name.trim() !== name) errors.push("name cannot contain leading or trailing spaces");
4993
+ exclusionList.forEach(function(excludedName) {
4994
+ if (name.toLowerCase() === excludedName) errors.push(excludedName + " is not a valid package name");
4995
+ });
4996
+ if (builtins.includes(name.toLowerCase())) warnings.push(name + " is a core module name");
4997
+ if (name.length > 214) warnings.push("name can no longer contain more than 214 characters");
4998
+ if (name.toLowerCase() !== name) warnings.push("name can no longer contain capital letters");
4999
+ if (/[~'!()*]/.test(name.split("/").slice(-1)[0])) warnings.push("name can no longer contain special characters (\"~'!()*\")");
5000
+ if (encodeURIComponent(name) !== name) {
5001
+ var nameMatch = name.match(scopedPackagePattern);
5002
+ if (nameMatch) {
5003
+ var user = nameMatch[1];
5004
+ var pkg = nameMatch[2];
5005
+ if (pkg.startsWith(".")) errors.push("name cannot start with a period");
5006
+ if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) return done(warnings, errors);
5007
+ }
5008
+ errors.push("name can only contain URL-friendly characters");
5009
+ }
5010
+ return done(warnings, errors);
5011
+ }
5012
+ var done = function(warnings, errors) {
5013
+ var result = {
5014
+ validForNewPackages: errors.length === 0 && warnings.length === 0,
5015
+ validForOldPackages: errors.length === 0,
5016
+ warnings,
5017
+ errors
5018
+ };
5019
+ if (!result.warnings.length) delete result.warnings;
5020
+ if (!result.errors.length) delete result.errors;
5021
+ return result;
5022
+ };
5023
+ module.exports = validate;
5024
+ })))(), 1);
5025
+ function assertValidPackageName(name) {
5026
+ const { validForOldPackages, validForNewPackages, warnings, errors } = (0, import_lib.default)(name);
5027
+ if (!(validForOldPackages || validForNewPackages)) throw new Error("invalid package name", { cause: {
5028
+ name,
5029
+ warnings,
5030
+ errors
5031
+ } });
5032
+ }
4874
5033
  //#endregion
4875
- //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/cache.js
5034
+ //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/dist-tags.js
4876
5035
  /**
4877
- Internal cache for all requests.
4878
- @see {@link https://github.com/sindresorhus/quick-lru}
4879
- @internal
5036
+ `DistTags` describes the mapping of distribution tags to semver version numbers
5037
+ (e.g., `{ "latest": "1.0.0" }`).
4880
5038
  */
4881
- var cache = new QuickLRU({
4882
- maxSize: 100,
4883
- maxAge: 300 * 1e3
4884
- });
5039
+ var DistTags = object({
5040
+ /** Latest semver version number. */
5041
+ latest: string$1(),
5042
+ next: string$1().optional(),
5043
+ alpha: string$1().optional(),
5044
+ beta: string$1().optional(),
5045
+ rc: string$1().optional(),
5046
+ canary: string$1().optional(),
5047
+ dev: string$1().optional()
5048
+ }).catchall(string$1());
4885
5049
  //#endregion
4886
5050
  //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/fetch-data.js
4887
5051
  async function fetchData(schema, url, headers) {
@@ -4896,169 +5060,6 @@ async function fetchData(schema, url, headers) {
4896
5060
  return schema.parse(json);
4897
5061
  }
4898
5062
  //#endregion
4899
- //#region ../../node_modules/.pnpm/zod-package-json@2.1.0_zod@4.4.3/node_modules/zod-package-json/dist/package-json.js
4900
- var Bugs = union([string$1(), object({
4901
- url: optional(string$1()),
4902
- email: optional(string$1())
4903
- })]);
4904
- var Funding = union([
4905
- string$1(),
4906
- object({
4907
- url: string$1(),
4908
- type: optional(string$1())
4909
- }),
4910
- array(union([string$1(), object({
4911
- url: string$1(),
4912
- type: optional(string$1())
4913
- })]))
4914
- ]);
4915
- var Person = union([string$1(), object({
4916
- name: string$1(),
4917
- email: optional(string$1()),
4918
- url: optional(string$1())
4919
- })]);
4920
- var Repository = union([string$1(), object({
4921
- /** Repository type (e.g., `git`). */
4922
- type: string$1(),
4923
- /** Machine-readable repository URL (e.g., `https://github.com/user/repo.git`). */
4924
- url: string$1(),
4925
- /** Directory in a monorepo where the package's source code is located. */
4926
- directory: optional(string$1())
4927
- })]);
4928
- var DevEngineDependency = object({
4929
- name: string$1(),
4930
- version: optional(string$1()),
4931
- onFail: optional(literal([
4932
- "ignore",
4933
- "warn",
4934
- "error"
4935
- ]))
4936
- });
4937
- var DevEngineDependencies = union([DevEngineDependency, array(DevEngineDependency)]);
4938
- var DevEngines = object({
4939
- cpu: optional(DevEngineDependencies),
4940
- os: optional(DevEngineDependencies),
4941
- libc: optional(DevEngineDependencies),
4942
- runtime: optional(DevEngineDependencies),
4943
- packageManager: optional(DevEngineDependencies)
4944
- });
4945
- var PackageJson = looseObject({
4946
- /** Package name. */
4947
- name: string$1(),
4948
- /** Package semver version number. */
4949
- version: string$1(),
4950
- /** Description for the package. */
4951
- description: optional(string$1()),
4952
- /** List of keywords for searching the package. */
4953
- keywords: optional(array(string$1())),
4954
- /** URL of the package's homepage. */
4955
- homepage: optional(string$1()),
4956
- /** Issue tracker for the package. */
4957
- bugs: optional(Bugs),
4958
- /** SPDX license expression or a custom license. */
4959
- license: optional(string$1()),
4960
- /** Author of the package. */
4961
- author: optional(Person),
4962
- /** Contributors to the package. */
4963
- contributors: optional(array(Person)),
4964
- /** Maintainers of the package. */
4965
- maintainers: optional(array(Person)),
4966
- /** Funding options for the package. */
4967
- funding: optional(Funding),
4968
- /** File patterns for files to be included when publishing the package. */
4969
- files: optional(array(string$1())),
4970
- /** Package exports. @see {@link https://nodejs.org/api/packages.html#exports} */
4971
- exports: optional(union([
4972
- _null(),
4973
- string$1(),
4974
- array(string$1()),
4975
- record(string$1(), unknown())
4976
- ])),
4977
- /** Type for all the `.js` files in the package, usually `module`. */
4978
- type: optional(literal(["module", "commonjs"])),
4979
- /** Main entry point for the package, usually CommonJS. */
4980
- main: optional(string$1()),
4981
- /**
4982
- Main entry point for the package when used in a browser environment.
4983
- @see {@link https://docs.npmjs.com/cli/v10/configuring-npm/package-json#browser}
4984
- @see {@link https://gist.github.com/defunctzombie/4339901/49493836fb873ddaa4b8a7aa0ef2352119f69211}
4985
- */
4986
- browser: optional(union([string$1(), record(string$1(), union([string$1(), boolean()]))])),
4987
- /** Executable files. */
4988
- bin: optional(union([string$1(), record(string$1(), string$1())])),
4989
- /** Documentation to be used with the `man` command. */
4990
- man: optional(union([string$1(), array(string$1())])),
4991
- /** Directories in the package. */
4992
- directories: optional(record(string$1(), string$1())),
4993
- /** Repository for the package's source code. */
4994
- repository: optional(Repository),
4995
- /** Scripts used in the package. */
4996
- scripts: optional(record(string$1(), string$1())),
4997
- /** Configuration values for scripts. */
4998
- config: optional(record(string$1(), unknown())),
4999
- /** Production dependencies. */
5000
- dependencies: optional(record(string$1(), string$1())),
5001
- /** Development dependencies. */
5002
- devDependencies: optional(record(string$1(), string$1())),
5003
- /** Peer dependencies. */
5004
- peerDependencies: optional(record(string$1(), string$1())),
5005
- /** Metadata about peer dependencies. */
5006
- peerDependenciesMeta: optional(record(string$1(), object({ optional: boolean() }))),
5007
- /** Dependencies bundled with the package. */
5008
- bundleDependencies: optional(union([boolean(), array(string$1())])),
5009
- /** Dependencies bundled with the package (equivalent to `bundleDependencies`). */
5010
- bundledDependencies: optional(union([boolean(), array(string$1())])),
5011
- /** Optional dependencies. */
5012
- optionalDependencies: optional(record(string$1(), string$1())),
5013
- /** Overrides for dependency resolution using npm. */
5014
- overrides: optional(record(string$1(), unknown())),
5015
- /** Runtime systems supported by the package. */
5016
- engines: optional(record(string$1(), string$1())),
5017
- /** Operating systems supported by the package. */
5018
- os: optional(array(string$1())),
5019
- /** CPU architectures supported by the package. */
5020
- cpu: optional(array(string$1())),
5021
- /** Version of libc required to build or run this package on Linux. */
5022
- libc: optional(string$1()),
5023
- /** Tooling required to develop the package. */
5024
- devEngines: optional(DevEngines),
5025
- /** True if the package should not be published. */
5026
- private: optional(boolean()),
5027
- /** Configuration values used at publishing time. */
5028
- publishConfig: optional(record(string$1(), unknown())),
5029
- /** File patterns for locating local workspaces. */
5030
- workspaces: optional(array(string$1())),
5031
- /** Deprecation message. */
5032
- deprecated: optional(string$1()),
5033
- /** Main ESM entry point for the package. */
5034
- module: optional(string$1()),
5035
- /** Main TypeScript declaration file. */
5036
- types: optional(string$1()),
5037
- /** Main TypeScript declaration file (equivalent to `types`). */
5038
- typings: optional(string$1()),
5039
- /**
5040
- TypeScript types resolutions.
5041
- @see {@link https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html#version-selection-with-typesversions}
5042
- */
5043
- typesVersions: optional(record(string$1(), record(string$1(), array(string$1())))),
5044
- /**
5045
- Corepack package manager.
5046
- @see {@link https://nodejs.org/api/corepack.html}
5047
- */
5048
- packageManager: optional(string$1()),
5049
- /**
5050
- False if importing modules from the package does not cause side effects.
5051
- True or a list of file patterns if importing modules from the package causes side effects.
5052
- @see {@link https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free}
5053
- */
5054
- sideEffects: optional(union([boolean(), array(string$1())])),
5055
- /**
5056
- Imports map.
5057
- @see {@link https://nodejs.org/api/packages.html#imports}
5058
- */
5059
- imports: optional(record(string$1(), unknown()))
5060
- });
5061
- //#endregion
5062
5063
  //#region ../../node_modules/.pnpm/query-registry@4.3.0_zod@4.4.3/node_modules/query-registry/dist/npm-registry.js
5063
5064
  /** Base URL for the {@link https://registry.npmjs.org | npm registry API}. */
5064
5065
  var npmRegistryUrl = "https://registry.npmjs.org";
@@ -7610,19 +7611,19 @@ ${exposed.description}`).join("\n\n");
7610
7611
 
7611
7612
  ## Props
7612
7613
 
7613
- ${propsText}
7614
+ ${propsText || "_No Props_"}
7614
7615
 
7615
7616
  ## Slots
7616
7617
 
7617
- ${slotsText}
7618
+ ${slotsText || "_No Slots_"}
7618
7619
 
7619
7620
  ## Events
7620
7621
 
7621
- ${eventsText}
7622
+ ${eventsText || "_No Events_"}
7622
7623
 
7623
7624
  ## Exposed
7624
7625
 
7625
- ${exposedText}
7626
+ ${exposedText || "_No Exposed API_"}
7626
7627
  `;
7627
7628
  return { contents: [{
7628
7629
  uri: uri.href,
@@ -7632,23 +7633,66 @@ ${exposedText}
7632
7633
  }
7633
7634
  ];
7634
7635
  //#endregion
7635
- //#region src/util/version-compare.ts
7636
+ //#region src/util/semver.ts
7637
+ /**
7638
+ * Compares two semver version strings.
7639
+ * Precedence is considered based on https://semver.org.
7640
+ */
7636
7641
  var versionCompare = (a, b) => {
7637
- const [aMajor, aMinor, aPatch] = (a.split("-").at(0) || "").split(".");
7638
- const [bMajor, bMinor, bPatch] = (b.split("-").at(0) || "").split(".");
7639
- const resMajor = Number(bMajor) - Number(aMajor);
7640
- const resMinor = Number(bMinor) - Number(aMinor);
7641
- const resPatch = Number(bPatch) - Number(aPatch);
7642
- return Math.sign(resMajor || resMinor || resPatch);
7642
+ const aParsed = parseSemver(a);
7643
+ const bParsed = parseSemver(b);
7644
+ const diffMajor = aParsed.major - bParsed.major;
7645
+ const diffMinor = aParsed.minor - bParsed.minor;
7646
+ const diffPatch = aParsed.patch - bParsed.patch;
7647
+ const result = Math.sign(diffMajor || diffMinor || diffPatch);
7648
+ if (result !== 0) return result;
7649
+ if (aParsed.preRelease === bParsed.preRelease) return 0;
7650
+ if (aParsed.preRelease && !bParsed.preRelease) return -1;
7651
+ if (!aParsed.preRelease && bParsed.preRelease) return 1;
7652
+ if (aParsed.preRelease && bParsed.preRelease) return preReleaseCompare(aParsed.preRelease, bParsed.preRelease);
7653
+ return 0;
7654
+ };
7655
+ /**
7656
+ * Prerelease strings have special rules for version comparisons
7657
+ */
7658
+ var preReleaseCompare = (a, b) => {
7659
+ const aIdentifier = a.split(".");
7660
+ const bIdentifier = b.split(".");
7661
+ const maxLength = Math.max(aIdentifier.length, bIdentifier.length);
7662
+ for (let i = 0; i < maxLength; i++) {
7663
+ const aI = aIdentifier.at(i);
7664
+ const bI = bIdentifier.at(i);
7665
+ if (aI === bI) continue;
7666
+ if (aI === void 0 || bI === void 0) return aI === void 0 ? -1 : 1;
7667
+ const aNum = /^\d+$/.test(aI) ? Number(aI) : void 0;
7668
+ const bNum = /^\d+$/.test(bI) ? Number(bI) : void 0;
7669
+ if (aNum === void 0 && bNum === void 0) return aI.localeCompare(bI);
7670
+ if (aNum === void 0 || bNum === void 0) return aNum === void 0 ? 1 : -1;
7671
+ if (aNum !== bNum) return aNum - bNum;
7672
+ }
7673
+ return 0;
7674
+ };
7675
+ var parseSemver = (semver) => {
7676
+ const [rest, ...buildMetadata] = semver.split("+");
7677
+ const [versions, ...preRelease] = rest.split("-");
7678
+ const [major, minor, patch] = versions.split(".");
7679
+ return {
7680
+ major: Number.parseInt(major),
7681
+ minor: Number.parseInt(minor),
7682
+ patch: Number.parseInt(patch),
7683
+ buildMetadata: buildMetadata.join("+"),
7684
+ preRelease: preRelease.join("-")
7685
+ };
7643
7686
  };
7687
+ var isPreRelease = (version) => parseSemver(version).preRelease !== "";
7644
7688
  //#endregion
7645
7689
  //#region src/resources/list-components.ts
7646
7690
  var listComponents = [
7647
7691
  "list-components",
7648
7692
  new ResourceTemplate("sit-onyx://components/{version}", { list: async () => {
7649
7693
  const { versions } = await getAbbreviatedPackument("sit-onyx", REGISTRY_URL);
7650
- return { resources: Object.keys(versions).filter((version) => versionCompare(SIT_ONYX_MIN_VERSION, version) >= 0).map((version) => ({
7651
- uri: `components://sit-onyx/${version}`,
7694
+ return { resources: Object.keys(versions).filter((version) => !isPreRelease(version) && versionCompare("1.12.0", version) < 0).map((version) => ({
7695
+ uri: `sit-onyx://components/${version}`,
7652
7696
  name: `components for sit-onyx@${version}`
7653
7697
  })) };
7654
7698
  } }),
@@ -8491,7 +8535,7 @@ Options:
8491
8535
  The "http" transport considers PORT and HOST environment variables, when starting the server.
8492
8536
  -r, --resourcesAsTools Some LLM Coding Assistants (e.g. Gemini) are not able to to use MCP resources (yet).
8493
8537
  This setting makes resources also available as tools to support these Coding Assistants.
8494
- -w, --write-skills <directory> Write skill resources to SKILL.md files in the specified directory.
8538
+ -w, --writeSkills <directory> Write skill resources to SKILL.md files in the specified directory.
8495
8539
  -h, --help Show this help text and quit.
8496
8540
  -v, --version Show version number and quit.`);
8497
8541
  process.exit(0);