@bestagentkits/render 0.1.1-next.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +209 -1
- package/README.md +324 -44
- package/assets/fonts/bricolage-grotesque/OFL.txt +93 -0
- package/assets/fonts/fraunces/OFL.txt +93 -0
- package/assets/fonts/geist/OFL.txt +93 -0
- package/assets/fonts/inter-tight/OFL.txt +93 -0
- package/assets/fonts/jetbrains-mono/OFL.txt +93 -0
- package/assets/fonts/plus-jakarta-sans/OFL.txt +93 -0
- package/dist/blocks/chart/chart-check-kind-rules.d.ts +10 -0
- package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
- package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
- package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
- package/dist/blocks/chart/chart-check.d.ts +15 -0
- package/dist/blocks/chart/chart-check.d.ts.map +1 -0
- package/dist/blocks/chart/chart-check.js +196 -0
- package/dist/blocks/chart/chart-check.js.map +1 -0
- package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
- package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
- package/dist/blocks/chart/chart-encoding-schema.js +39 -0
- package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
- package/dist/blocks/chart/chart-encodings.d.ts +29 -0
- package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
- package/dist/blocks/chart/chart-encodings.js +59 -0
- package/dist/blocks/chart/chart-encodings.js.map +1 -0
- package/dist/blocks/chart/chart-kinds.d.ts +18 -0
- package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
- package/dist/blocks/chart/chart-kinds.js +60 -0
- package/dist/blocks/chart/chart-kinds.js.map +1 -0
- package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
- package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
- package/dist/blocks/chart/chart-model-rows.js +153 -0
- package/dist/blocks/chart/chart-model-rows.js.map +1 -0
- package/dist/blocks/chart/chart-model.d.ts +17 -0
- package/dist/blocks/chart/chart-model.d.ts.map +1 -0
- package/dist/blocks/chart/chart-model.js +131 -0
- package/dist/blocks/chart/chart-model.js.map +1 -0
- package/dist/blocks/chart/chart-styles.d.ts +3 -0
- package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
- package/dist/blocks/chart/chart-styles.js +76 -0
- package/dist/blocks/chart/chart-styles.js.map +1 -0
- package/dist/blocks/chart/chart.d.ts +12 -0
- package/dist/blocks/chart/chart.d.ts.map +1 -0
- package/dist/blocks/chart/chart.js +73 -0
- package/dist/blocks/chart/chart.js.map +1 -0
- package/dist/blocks/chart/index.d.ts +4 -0
- package/dist/blocks/chart/index.d.ts.map +1 -0
- package/dist/blocks/chart/index.js +8 -0
- package/dist/blocks/chart/index.js.map +1 -0
- package/dist/blocks/composition/accordion.d.ts +4 -0
- package/dist/blocks/composition/accordion.d.ts.map +1 -0
- package/dist/blocks/composition/accordion.js +45 -0
- package/dist/blocks/composition/accordion.js.map +1 -0
- package/dist/blocks/composition/bento.d.ts +4 -0
- package/dist/blocks/composition/bento.d.ts.map +1 -0
- package/dist/blocks/composition/bento.js +91 -0
- package/dist/blocks/composition/bento.js.map +1 -0
- package/dist/blocks/composition/carousel.d.ts +4 -0
- package/dist/blocks/composition/carousel.d.ts.map +1 -0
- package/dist/blocks/composition/carousel.js +51 -0
- package/dist/blocks/composition/carousel.js.map +1 -0
- package/dist/blocks/composition/composition-runtime.d.ts +14 -0
- package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
- package/dist/blocks/composition/composition-runtime.js +136 -0
- package/dist/blocks/composition/composition-runtime.js.map +1 -0
- package/dist/blocks/composition/composition-styles.d.ts +10 -0
- package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
- package/dist/blocks/composition/composition-styles.js +80 -0
- package/dist/blocks/composition/composition-styles.js.map +1 -0
- package/dist/blocks/composition/index.d.ts +4 -0
- package/dist/blocks/composition/index.d.ts.map +1 -0
- package/dist/blocks/composition/index.js +11 -0
- package/dist/blocks/composition/index.js.map +1 -0
- package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
- package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
- package/dist/blocks/composition/nestable-blocks.js +92 -0
- package/dist/blocks/composition/nestable-blocks.js.map +1 -0
- package/dist/blocks/composition/tabs.d.ts +4 -0
- package/dist/blocks/composition/tabs.d.ts.map +1 -0
- package/dist/blocks/composition/tabs.js +48 -0
- package/dist/blocks/composition/tabs.js.map +1 -0
- package/dist/blocks/controls/checkbox.d.ts +12 -0
- package/dist/blocks/controls/checkbox.d.ts.map +1 -0
- package/dist/blocks/controls/checkbox.js +43 -0
- package/dist/blocks/controls/checkbox.js.map +1 -0
- package/dist/blocks/controls/choice-options.d.ts +24 -0
- package/dist/blocks/controls/choice-options.d.ts.map +1 -0
- package/dist/blocks/controls/choice-options.js +117 -0
- package/dist/blocks/controls/choice-options.js.map +1 -0
- package/dist/blocks/controls/control-shared.d.ts +66 -0
- package/dist/blocks/controls/control-shared.d.ts.map +1 -0
- package/dist/blocks/controls/control-shared.js +241 -0
- package/dist/blocks/controls/control-shared.js.map +1 -0
- package/dist/blocks/controls/controls-runtime.d.ts +17 -0
- package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
- package/dist/blocks/controls/controls-runtime.js +180 -0
- package/dist/blocks/controls/controls-runtime.js.map +1 -0
- package/dist/blocks/controls/controls-styles.d.ts +14 -0
- package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
- package/dist/blocks/controls/controls-styles.js +54 -0
- package/dist/blocks/controls/controls-styles.js.map +1 -0
- package/dist/blocks/controls/date-input.d.ts +6 -0
- package/dist/blocks/controls/date-input.d.ts.map +1 -0
- package/dist/blocks/controls/date-input.js +58 -0
- package/dist/blocks/controls/date-input.js.map +1 -0
- package/dist/blocks/controls/field-input.d.ts +10 -0
- package/dist/blocks/controls/field-input.d.ts.map +1 -0
- package/dist/blocks/controls/field-input.js +20 -0
- package/dist/blocks/controls/field-input.js.map +1 -0
- package/dist/blocks/controls/filter-bar.d.ts +11 -0
- package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
- package/dist/blocks/controls/filter-bar.js +115 -0
- package/dist/blocks/controls/filter-bar.js.map +1 -0
- package/dist/blocks/controls/index.d.ts +4 -0
- package/dist/blocks/controls/index.d.ts.map +1 -0
- package/dist/blocks/controls/index.js +41 -0
- package/dist/blocks/controls/index.js.map +1 -0
- package/dist/blocks/controls/number-input.d.ts +4 -0
- package/dist/blocks/controls/number-input.d.ts.map +1 -0
- package/dist/blocks/controls/number-input.js +62 -0
- package/dist/blocks/controls/number-input.js.map +1 -0
- package/dist/blocks/controls/radio-group.d.ts +4 -0
- package/dist/blocks/controls/radio-group.d.ts.map +1 -0
- package/dist/blocks/controls/radio-group.js +56 -0
- package/dist/blocks/controls/radio-group.js.map +1 -0
- package/dist/blocks/controls/select.d.ts +4 -0
- package/dist/blocks/controls/select.d.ts.map +1 -0
- package/dist/blocks/controls/select.js +49 -0
- package/dist/blocks/controls/select.js.map +1 -0
- package/dist/blocks/controls/switch.d.ts +4 -0
- package/dist/blocks/controls/switch.d.ts.map +1 -0
- package/dist/blocks/controls/switch.js +22 -0
- package/dist/blocks/controls/switch.js.map +1 -0
- package/dist/blocks/controls/text-input.d.ts +4 -0
- package/dist/blocks/controls/text-input.d.ts.map +1 -0
- package/dist/blocks/controls/text-input.js +42 -0
- package/dist/blocks/controls/text-input.js.map +1 -0
- package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
- package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-cells.js +154 -0
- package/dist/blocks/data-table/data-table-cells.js.map +1 -0
- package/dist/blocks/data-table/data-table-check.d.ts +10 -0
- package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-check.js +99 -0
- package/dist/blocks/data-table/data-table-check.js.map +1 -0
- package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
- package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-columns.js +155 -0
- package/dist/blocks/data-table/data-table-columns.js.map +1 -0
- package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
- package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-runtime.js +106 -0
- package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
- package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
- package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-styles.js +74 -0
- package/dist/blocks/data-table/data-table-styles.js.map +1 -0
- package/dist/blocks/data-table/data-table.d.ts +17 -0
- package/dist/blocks/data-table/data-table.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table.js +159 -0
- package/dist/blocks/data-table/data-table.js.map +1 -0
- package/dist/blocks/data-table/index.d.ts +4 -0
- package/dist/blocks/data-table/index.d.ts.map +1 -0
- package/dist/blocks/data-table/index.js +18 -0
- package/dist/blocks/data-table/index.js.map +1 -0
- package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
- package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
- package/dist/blocks/engineering/api-endpoint.js +174 -0
- package/dist/blocks/engineering/api-endpoint.js.map +1 -0
- package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
- package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
- package/dist/blocks/engineering/engineering-helpers.js +156 -0
- package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
- package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
- package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
- package/dist/blocks/engineering/engineering-styles.js +174 -0
- package/dist/blocks/engineering/engineering-styles.js.map +1 -0
- package/dist/blocks/engineering/index.d.ts +4 -0
- package/dist/blocks/engineering/index.d.ts.map +1 -0
- package/dist/blocks/engineering/index.js +30 -0
- package/dist/blocks/engineering/index.js.map +1 -0
- package/dist/blocks/engineering/kanban.d.ts +11 -0
- package/dist/blocks/engineering/kanban.d.ts.map +1 -0
- package/dist/blocks/engineering/kanban.js +162 -0
- package/dist/blocks/engineering/kanban.js.map +1 -0
- package/dist/blocks/engineering/log-viewer.d.ts +14 -0
- package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
- package/dist/blocks/engineering/log-viewer.js +158 -0
- package/dist/blocks/engineering/log-viewer.js.map +1 -0
- package/dist/blocks/engineering/roadmap.d.ts +13 -0
- package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
- package/dist/blocks/engineering/roadmap.js +197 -0
- package/dist/blocks/engineering/roadmap.js.map +1 -0
- package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
- package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
- package/dist/blocks/engineering/schema-viewer.js +124 -0
- package/dist/blocks/engineering/schema-viewer.js.map +1 -0
- package/dist/blocks/engineering/test-results.d.ts +12 -0
- package/dist/blocks/engineering/test-results.d.ts.map +1 -0
- package/dist/blocks/engineering/test-results.js +180 -0
- package/dist/blocks/engineering/test-results.js.map +1 -0
- package/dist/blocks/evidence/annotated-image.d.ts +15 -0
- package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
- package/dist/blocks/evidence/annotated-image.js +99 -0
- package/dist/blocks/evidence/annotated-image.js.map +1 -0
- package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
- package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
- package/dist/blocks/evidence/benchmark-comparison.js +262 -0
- package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
- package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
- package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
- package/dist/blocks/evidence/benchmark-verdict.js +31 -0
- package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
- package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
- package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
- package/dist/blocks/evidence/evidence-helpers.js +87 -0
- package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
- package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
- package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
- package/dist/blocks/evidence/evidence-styles.js +88 -0
- package/dist/blocks/evidence/evidence-styles.js.map +1 -0
- package/dist/blocks/evidence/index.d.ts +4 -0
- package/dist/blocks/evidence/index.d.ts.map +1 -0
- package/dist/blocks/evidence/index.js +15 -0
- package/dist/blocks/evidence/index.js.map +1 -0
- package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
- package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
- package/dist/blocks/evidence/metric-breakdown.js +203 -0
- package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
- package/dist/blocks/evidence/references.d.ts +13 -0
- package/dist/blocks/evidence/references.d.ts.map +1 -0
- package/dist/blocks/evidence/references.js +103 -0
- package/dist/blocks/evidence/references.js.map +1 -0
- package/dist/blocks/index.d.ts +8 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +24 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/layout/grid-item.d.ts +4 -0
- package/dist/blocks/layout/grid-item.d.ts.map +1 -0
- package/dist/blocks/layout/grid-item.js +65 -0
- package/dist/blocks/layout/grid-item.js.map +1 -0
- package/dist/blocks/layout/grid.d.ts +9 -0
- package/dist/blocks/layout/grid.d.ts.map +1 -0
- package/dist/blocks/layout/grid.js +99 -0
- package/dist/blocks/layout/grid.js.map +1 -0
- package/dist/blocks/layout/index.d.ts +4 -0
- package/dist/blocks/layout/index.d.ts.map +1 -0
- package/dist/blocks/layout/index.js +23 -0
- package/dist/blocks/layout/index.js.map +1 -0
- package/dist/blocks/layout/layout-styles.d.ts +40 -0
- package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
- package/dist/blocks/layout/layout-styles.js +110 -0
- package/dist/blocks/layout/layout-styles.js.map +1 -0
- package/dist/blocks/layout/main-aside.d.ts +4 -0
- package/dist/blocks/layout/main-aside.d.ts.map +1 -0
- package/dist/blocks/layout/main-aside.js +21 -0
- package/dist/blocks/layout/main-aside.js.map +1 -0
- package/dist/blocks/layout/rail-layout.d.ts +4 -0
- package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
- package/dist/blocks/layout/rail-layout.js +33 -0
- package/dist/blocks/layout/rail-layout.js.map +1 -0
- package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
- package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
- package/dist/blocks/layout/semantic-layout-parts.js +9 -0
- package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
- package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
- package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
- package/dist/blocks/layout/sidebar-layout.js +30 -0
- package/dist/blocks/layout/sidebar-layout.js.map +1 -0
- package/dist/blocks/layout/split.d.ts +4 -0
- package/dist/blocks/layout/split.d.ts.map +1 -0
- package/dist/blocks/layout/split.js +23 -0
- package/dist/blocks/layout/split.js.map +1 -0
- package/dist/blocks/layout/stack.d.ts +4 -0
- package/dist/blocks/layout/stack.d.ts.map +1 -0
- package/dist/blocks/layout/stack.js +36 -0
- package/dist/blocks/layout/stack.js.map +1 -0
- package/dist/blocks/product/calendar-dates.d.ts +59 -0
- package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
- package/dist/blocks/product/calendar-dates.js +100 -0
- package/dist/blocks/product/calendar-dates.js.map +1 -0
- package/dist/blocks/product/calendar.d.ts +12 -0
- package/dist/blocks/product/calendar.d.ts.map +1 -0
- package/dist/blocks/product/calendar.js +125 -0
- package/dist/blocks/product/calendar.js.map +1 -0
- package/dist/blocks/product/feature-matrix.d.ts +4 -0
- package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
- package/dist/blocks/product/feature-matrix.js +72 -0
- package/dist/blocks/product/feature-matrix.js.map +1 -0
- package/dist/blocks/product/gallery.d.ts +14 -0
- package/dist/blocks/product/gallery.d.ts.map +1 -0
- package/dist/blocks/product/gallery.js +86 -0
- package/dist/blocks/product/gallery.js.map +1 -0
- package/dist/blocks/product/index.d.ts +4 -0
- package/dist/blocks/product/index.d.ts.map +1 -0
- package/dist/blocks/product/index.js +40 -0
- package/dist/blocks/product/index.js.map +1 -0
- package/dist/blocks/product/logo-cloud.d.ts +4 -0
- package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
- package/dist/blocks/product/logo-cloud.js +42 -0
- package/dist/blocks/product/logo-cloud.js.map +1 -0
- package/dist/blocks/product/people.d.ts +4 -0
- package/dist/blocks/product/people.d.ts.map +1 -0
- package/dist/blocks/product/people.js +53 -0
- package/dist/blocks/product/people.js.map +1 -0
- package/dist/blocks/product/pricing.d.ts +4 -0
- package/dist/blocks/product/pricing.d.ts.map +1 -0
- package/dist/blocks/product/pricing.js +86 -0
- package/dist/blocks/product/pricing.js.map +1 -0
- package/dist/blocks/product/product-helpers.d.ts +22 -0
- package/dist/blocks/product/product-helpers.d.ts.map +1 -0
- package/dist/blocks/product/product-helpers.js +48 -0
- package/dist/blocks/product/product-helpers.js.map +1 -0
- package/dist/blocks/product/product-runtime.d.ts +15 -0
- package/dist/blocks/product/product-runtime.d.ts.map +1 -0
- package/dist/blocks/product/product-runtime.js +97 -0
- package/dist/blocks/product/product-runtime.js.map +1 -0
- package/dist/blocks/product/product-styles.d.ts +14 -0
- package/dist/blocks/product/product-styles.d.ts.map +1 -0
- package/dist/blocks/product/product-styles.js +120 -0
- package/dist/blocks/product/product-styles.js.map +1 -0
- package/dist/blocks/product/testimonial.d.ts +8 -0
- package/dist/blocks/product/testimonial.d.ts.map +1 -0
- package/dist/blocks/product/testimonial.js +67 -0
- package/dist/blocks/product/testimonial.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +193 -39
- package/dist/cli.js.map +1 -1
- package/dist/data/data-json-schema.d.ts +9 -0
- package/dist/data/data-json-schema.d.ts.map +1 -0
- package/dist/data/data-json-schema.js +48 -0
- package/dist/data/data-json-schema.js.map +1 -0
- package/dist/data/dataset-types.d.ts +47 -0
- package/dist/data/dataset-types.d.ts.map +1 -0
- package/dist/data/dataset-types.js +49 -0
- package/dist/data/dataset-types.js.map +1 -0
- package/dist/data/format-value.d.ts +39 -0
- package/dist/data/format-value.d.ts.map +1 -0
- package/dist/data/format-value.js +214 -0
- package/dist/data/format-value.js.map +1 -0
- package/dist/data/resolve-block-data.d.ts +24 -0
- package/dist/data/resolve-block-data.d.ts.map +1 -0
- package/dist/data/resolve-block-data.js +190 -0
- package/dist/data/resolve-block-data.js.map +1 -0
- package/dist/data/transform-pipeline.d.ts +65 -0
- package/dist/data/transform-pipeline.d.ts.map +1 -0
- package/dist/data/transform-pipeline.js +234 -0
- package/dist/data/transform-pipeline.js.map +1 -0
- package/dist/data/validate-datasets.d.ts +22 -0
- package/dist/data/validate-datasets.d.ts.map +1 -0
- package/dist/data/validate-datasets.js +137 -0
- package/dist/data/validate-datasets.js.map +1 -0
- package/dist/diagram/adapter-markup-fit.d.ts +44 -0
- package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
- package/dist/diagram/adapter-markup-fit.js +292 -0
- package/dist/diagram/adapter-markup-fit.js.map +1 -0
- package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
- package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
- package/dist/diagram/adapter-stylesheet-filter.js +245 -0
- package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
- package/dist/diagram/adapter.d.ts +17 -0
- package/dist/diagram/adapter.d.ts.map +1 -1
- package/dist/diagram/adapter.js +43 -2
- package/dist/diagram/adapter.js.map +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/ir.d.ts +18 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/mcp/mcp-http-transport.d.ts +68 -0
- package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
- package/dist/mcp/mcp-http-transport.js +140 -0
- package/dist/mcp/mcp-http-transport.js.map +1 -0
- package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
- package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
- package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
- package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
- package/dist/mcp/mcp-local-tools.d.ts +20 -0
- package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
- package/dist/mcp/mcp-local-tools.js +58 -0
- package/dist/mcp/mcp-local-tools.js.map +1 -0
- package/dist/mcp/mcp-protocol.d.ts +79 -0
- package/dist/mcp/mcp-protocol.d.ts.map +1 -0
- package/dist/mcp/mcp-protocol.js +83 -0
- package/dist/mcp/mcp-protocol.js.map +1 -0
- package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
- package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
- package/dist/mcp/mcp-stdio-transport.js +73 -0
- package/dist/mcp/mcp-stdio-transport.js.map +1 -0
- package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
- package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
- package/dist/mcp/mcp-tool-definitions.js +246 -0
- package/dist/mcp/mcp-tool-definitions.js.map +1 -0
- package/dist/mcp-server.d.ts +10 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +9 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/recipes/index.d.ts +27 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +30 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/recipes/recipes.generated.d.ts +8 -0
- package/dist/recipes/recipes.generated.d.ts.map +1 -0
- package/dist/recipes/recipes.generated.js +704 -0
- package/dist/recipes/recipes.generated.js.map +1 -0
- package/dist/registry/actions.d.ts +2 -0
- package/dist/registry/actions.d.ts.map +1 -1
- package/dist/registry/actions.js +3 -1
- package/dist/registry/actions.js.map +1 -1
- package/dist/registry/block-module.d.ts +65 -0
- package/dist/registry/block-module.d.ts.map +1 -0
- package/dist/registry/block-module.js +19 -0
- package/dist/registry/block-module.js.map +1 -0
- package/dist/registry/catalog-search.d.ts +32 -0
- package/dist/registry/catalog-search.d.ts.map +1 -0
- package/dist/registry/catalog-search.js +122 -0
- package/dist/registry/catalog-search.js.map +1 -0
- package/dist/registry/define-helpers.d.ts +89 -0
- package/dist/registry/define-helpers.d.ts.map +1 -0
- package/dist/registry/define-helpers.js +87 -0
- package/dist/registry/define-helpers.js.map +1 -0
- package/dist/registry/describe-many.d.ts +58 -0
- package/dist/registry/describe-many.d.ts.map +1 -0
- package/dist/registry/describe-many.js +156 -0
- package/dist/registry/describe-many.js.map +1 -0
- package/dist/registry/prop-schema.d.ts +32 -1
- package/dist/registry/prop-schema.d.ts.map +1 -1
- package/dist/registry/prop-schema.js +108 -2
- package/dist/registry/prop-schema.js.map +1 -1
- package/dist/registry/registry-builder.d.ts +17 -0
- package/dist/registry/registry-builder.d.ts.map +1 -0
- package/dist/registry/registry-builder.js +158 -0
- package/dist/registry/registry-builder.js.map +1 -0
- package/dist/registry/registry.d.ts +32 -5
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +67 -14
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/roster.d.ts +34 -5
- package/dist/registry/roster.d.ts.map +1 -1
- package/dist/registry/roster.js +360 -184
- package/dist/registry/roster.js.map +1 -1
- package/dist/render/block-helpers.d.ts +45 -0
- package/dist/render/block-helpers.d.ts.map +1 -0
- package/dist/render/block-helpers.js +83 -0
- package/dist/render/block-helpers.js.map +1 -0
- package/dist/render/blocks.d.ts +10 -35
- package/dist/render/blocks.d.ts.map +1 -1
- package/dist/render/blocks.js +144 -263
- package/dist/render/blocks.js.map +1 -1
- package/dist/render/chart-figure-encoded.d.ts +11 -0
- package/dist/render/chart-figure-encoded.d.ts.map +1 -0
- package/dist/render/chart-figure-encoded.js +81 -0
- package/dist/render/chart-figure-encoded.js.map +1 -0
- package/dist/render/chart-kinds-cartesian.d.ts +14 -0
- package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
- package/dist/render/chart-kinds-cartesian.js +122 -0
- package/dist/render/chart-kinds-cartesian.js.map +1 -0
- package/dist/render/chart-kinds-composite.d.ts +16 -0
- package/dist/render/chart-kinds-composite.d.ts.map +1 -0
- package/dist/render/chart-kinds-composite.js +144 -0
- package/dist/render/chart-kinds-composite.js.map +1 -0
- package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
- package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
- package/dist/render/chart-kinds-gauge-treemap.js +101 -0
- package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
- package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
- package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
- package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
- package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
- package/dist/render/chart-overlays.d.ts +18 -0
- package/dist/render/chart-overlays.d.ts.map +1 -0
- package/dist/render/chart-overlays.js +58 -0
- package/dist/render/chart-overlays.js.map +1 -0
- package/dist/render/chart-scales.d.ts +83 -0
- package/dist/render/chart-scales.d.ts.map +1 -0
- package/dist/render/chart-scales.js +166 -0
- package/dist/render/chart-scales.js.map +1 -0
- package/dist/render/chart-svg-parts.d.ts +50 -0
- package/dist/render/chart-svg-parts.d.ts.map +1 -0
- package/dist/render/chart-svg-parts.js +125 -0
- package/dist/render/chart-svg-parts.js.map +1 -0
- package/dist/render/chart-text.d.ts +18 -0
- package/dist/render/chart-text.d.ts.map +1 -0
- package/dist/render/chart-text.js +69 -0
- package/dist/render/chart-text.js.map +1 -0
- package/dist/render/chart-treemap-layout.d.ts +17 -0
- package/dist/render/chart-treemap-layout.d.ts.map +1 -0
- package/dist/render/chart-treemap-layout.js +74 -0
- package/dist/render/chart-treemap-layout.js.map +1 -0
- package/dist/render/chart-types.d.ts +107 -0
- package/dist/render/chart-types.d.ts.map +1 -0
- package/dist/render/chart-types.js +11 -0
- package/dist/render/chart-types.js.map +1 -0
- package/dist/render/charts.d.ts +33 -11
- package/dist/render/charts.d.ts.map +1 -1
- package/dist/render/charts.js +145 -109
- package/dist/render/charts.js.map +1 -1
- package/dist/render/derived-variables.d.ts +37 -0
- package/dist/render/derived-variables.d.ts.map +1 -0
- package/dist/render/derived-variables.js +40 -0
- package/dist/render/derived-variables.js.map +1 -0
- package/dist/render/diagram-fallback.d.ts +25 -0
- package/dist/render/diagram-fallback.d.ts.map +1 -0
- package/dist/render/diagram-fallback.js +86 -0
- package/dist/render/diagram-fallback.js.map +1 -0
- package/dist/render/document.d.ts +15 -0
- package/dist/render/document.d.ts.map +1 -1
- package/dist/render/document.js +53 -8
- package/dist/render/document.js.map +1 -1
- package/dist/render/effects-styles.d.ts +14 -0
- package/dist/render/effects-styles.d.ts.map +1 -0
- package/dist/render/effects-styles.js +39 -0
- package/dist/render/effects-styles.js.map +1 -0
- package/dist/render/embedded-fonts.generated.d.ts +22 -0
- package/dist/render/embedded-fonts.generated.d.ts.map +1 -0
- package/dist/render/embedded-fonts.generated.js +59 -0
- package/dist/render/embedded-fonts.generated.js.map +1 -0
- package/dist/render/escape.d.ts +10 -0
- package/dist/render/escape.d.ts.map +1 -1
- package/dist/render/escape.js +28 -0
- package/dist/render/escape.js.map +1 -1
- package/dist/render/feature-styles.d.ts +14 -0
- package/dist/render/feature-styles.d.ts.map +1 -0
- package/dist/render/feature-styles.js +123 -0
- package/dist/render/feature-styles.js.map +1 -0
- package/dist/render/font-faces.d.ts +22 -0
- package/dist/render/font-faces.d.ts.map +1 -0
- package/dist/render/font-faces.js +60 -0
- package/dist/render/font-faces.js.map +1 -0
- package/dist/render/outline.d.ts +21 -0
- package/dist/render/outline.d.ts.map +1 -0
- package/dist/render/outline.js +47 -0
- package/dist/render/outline.js.map +1 -0
- package/dist/render/recipe-styles.d.ts +26 -0
- package/dist/render/recipe-styles.d.ts.map +1 -0
- package/dist/render/recipe-styles.js +218 -0
- package/dist/render/recipe-styles.js.map +1 -0
- package/dist/render/render-context.d.ts +40 -0
- package/dist/render/render-context.d.ts.map +1 -0
- package/dist/render/render-context.js +16 -0
- package/dist/render/render-context.js.map +1 -0
- package/dist/render/render.d.ts +7 -0
- package/dist/render/render.d.ts.map +1 -1
- package/dist/render/render.js +108 -41
- package/dist/render/render.js.map +1 -1
- package/dist/render/runtime.d.ts +4 -1
- package/dist/render/runtime.d.ts.map +1 -1
- package/dist/render/runtime.js +275 -128
- package/dist/render/runtime.js.map +1 -1
- package/dist/render/showcase-blocks.d.ts +52 -0
- package/dist/render/showcase-blocks.d.ts.map +1 -0
- package/dist/render/showcase-blocks.js +329 -0
- package/dist/render/showcase-blocks.js.map +1 -0
- package/dist/render/showcase-styles.d.ts +15 -0
- package/dist/render/showcase-styles.d.ts.map +1 -0
- package/dist/render/showcase-styles.js +201 -0
- package/dist/render/showcase-styles.js.map +1 -0
- package/dist/render/signature-styles.d.ts +18 -0
- package/dist/render/signature-styles.d.ts.map +1 -0
- package/dist/render/signature-styles.js +41 -0
- package/dist/render/signature-styles.js.map +1 -0
- package/dist/render/style-units.d.ts +17 -0
- package/dist/render/style-units.d.ts.map +1 -0
- package/dist/render/style-units.js +24 -0
- package/dist/render/style-units.js.map +1 -0
- package/dist/render/styles.d.ts +18 -9
- package/dist/render/styles.d.ts.map +1 -1
- package/dist/render/styles.js +228 -129
- package/dist/render/styles.js.map +1 -1
- package/dist/render/surface-styles.d.ts +24 -0
- package/dist/render/surface-styles.d.ts.map +1 -0
- package/dist/render/surface-styles.js +41 -0
- package/dist/render/surface-styles.js.map +1 -0
- package/dist/render/tone.d.ts +14 -0
- package/dist/render/tone.d.ts.map +1 -0
- package/dist/render/tone.js +40 -0
- package/dist/render/tone.js.map +1 -0
- package/dist/render/verify.d.ts +3 -0
- package/dist/render/verify.d.ts.map +1 -1
- package/dist/render/verify.js +45 -2
- package/dist/render/verify.js.map +1 -1
- package/dist/spec/asset-references.d.ts +35 -0
- package/dist/spec/asset-references.d.ts.map +1 -0
- package/dist/spec/asset-references.js +93 -0
- package/dist/spec/asset-references.js.map +1 -0
- package/dist/spec/bounds.d.ts +6 -0
- package/dist/spec/bounds.d.ts.map +1 -1
- package/dist/spec/bounds.js +7 -0
- package/dist/spec/bounds.js.map +1 -1
- package/dist/spec/conditions.d.ts +43 -0
- package/dist/spec/conditions.d.ts.map +1 -0
- package/dist/spec/conditions.js +179 -0
- package/dist/spec/conditions.js.map +1 -0
- package/dist/spec/network-policy.d.ts +33 -0
- package/dist/spec/network-policy.d.ts.map +1 -0
- package/dist/spec/network-policy.js +57 -0
- package/dist/spec/network-policy.js.map +1 -0
- package/dist/spec/normalize.d.ts +7 -2
- package/dist/spec/normalize.d.ts.map +1 -1
- package/dist/spec/normalize.js +219 -41
- package/dist/spec/normalize.js.map +1 -1
- package/dist/theme/dialect-presets.d.ts +12 -0
- package/dist/theme/dialect-presets.d.ts.map +1 -0
- package/dist/theme/dialect-presets.js +214 -0
- package/dist/theme/dialect-presets.js.map +1 -0
- package/dist/theme/load-theme.d.ts +11 -3
- package/dist/theme/load-theme.d.ts.map +1 -1
- package/dist/theme/load-theme.js +71 -12
- package/dist/theme/load-theme.js.map +1 -1
- package/dist/theme/preset-builder.d.ts +36 -0
- package/dist/theme/preset-builder.d.ts.map +1 -0
- package/dist/theme/preset-builder.js +51 -0
- package/dist/theme/preset-builder.js.map +1 -0
- package/dist/theme/presets.d.ts +8 -10
- package/dist/theme/presets.d.ts.map +1 -1
- package/dist/theme/presets.js +40 -56
- package/dist/theme/presets.js.map +1 -1
- package/dist/theme/recipes.d.ts +38 -0
- package/dist/theme/recipes.d.ts.map +1 -0
- package/dist/theme/recipes.js +96 -0
- package/dist/theme/recipes.js.map +1 -0
- package/dist/theme/theme-catalog.d.ts.map +1 -1
- package/dist/theme/theme-catalog.js +16 -0
- package/dist/theme/theme-catalog.js.map +1 -1
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +4 -4
- package/dist/theme/tokens.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/llms.txt +29 -0
- package/package.json +13 -3
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tool set the local stdio server runs.
|
|
3
|
+
*
|
|
4
|
+
* `catalog`, `search-catalog`, `describe`, `recipes`, `recipe` and `validate`
|
|
5
|
+
* are the shared pure tools. `render`
|
|
6
|
+
* writes the HTML to a file under the server's working directory and `themes`
|
|
7
|
+
* discovers project and user presets on disk, which is why this module, unlike
|
|
8
|
+
* the shared definitions, may touch the filesystem. Nothing here touches the
|
|
9
|
+
* network.
|
|
10
|
+
*/
|
|
11
|
+
import { type McpTool } from './mcp-tool-definitions.js';
|
|
12
|
+
export interface McpContext {
|
|
13
|
+
/** Directory relative `out` paths and theme discovery resolve against. */
|
|
14
|
+
cwd: string;
|
|
15
|
+
home: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const LOCAL_INSTRUCTIONS = "AK Render compiles a Page Spec (YAML or JSON) into one self-contained, offline HTML file.\nLoop: call catalog once (or search-catalog with a few words), describe only the block types you plan to use (several at once with types, compact: true for the short form), optionally start from a recipe (list them with recipes), validate the spec and fix every diagnostic by its JSON path, then render to a file.\nDescribe meaning, not presentation: the compiler owns layout, colour, typography and motion.";
|
|
18
|
+
/** Local tools, in the order an agent uses them. */
|
|
19
|
+
export declare const LOCAL_TOOLS: readonly McpTool<McpContext>[];
|
|
20
|
+
//# sourceMappingURL=mcp-local-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-local-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-local-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EAIL,KAAK,OAAO,EAUb,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,UAAU;IACzB,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,kBAAkB,sfAE8D,CAAC;AAgC9F,oDAAoD;AACpD,eAAO,MAAM,WAAW,EAAE,SAAS,OAAO,CAAC,UAAU,CAAC,EASrD,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tool set the local stdio server runs.
|
|
3
|
+
*
|
|
4
|
+
* `catalog`, `search-catalog`, `describe`, `recipes`, `recipe` and `validate`
|
|
5
|
+
* are the shared pure tools. `render`
|
|
6
|
+
* writes the HTML to a file under the server's working directory and `themes`
|
|
7
|
+
* discovers project and user presets on disk, which is why this module, unlike
|
|
8
|
+
* the shared definitions, may touch the filesystem. Nothing here touches the
|
|
9
|
+
* network.
|
|
10
|
+
*/
|
|
11
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { dirname, resolve } from 'node:path';
|
|
13
|
+
import { compile } from '../render/render.js';
|
|
14
|
+
import { buildThemeCatalog } from '../theme/theme-catalog.js';
|
|
15
|
+
import { text } from './mcp-protocol.js';
|
|
16
|
+
import { CATALOG_TOOL, DESCRIBE_TOOL, LOCAL_RENDER_DEFINITION, optionalTheme, RECIPE_TOOL, RECIPES_TOOL, renderSummary, requireString, SEARCH_CATALOG_TOOL, THEMES_DEFINITION, themesResult, VALIDATE_TOOL, } from './mcp-tool-definitions.js';
|
|
17
|
+
export const LOCAL_INSTRUCTIONS = `AK Render compiles a Page Spec (YAML or JSON) into one self-contained, offline HTML file.
|
|
18
|
+
Loop: call catalog once (or search-catalog with a few words), describe only the block types you plan to use (several at once with types, compact: true for the short form), optionally start from a recipe (list them with recipes), validate the spec and fix every diagnostic by its JSON path, then render to a file.
|
|
19
|
+
Describe meaning, not presentation: the compiler owns layout, colour, typography and motion.`;
|
|
20
|
+
const HTML_FILE = /\.html?$/iu;
|
|
21
|
+
function themeCatalogFor(context) {
|
|
22
|
+
return buildThemeCatalog({ cwd: context.cwd, home: context.home, discovery: true });
|
|
23
|
+
}
|
|
24
|
+
const LOCAL_RENDER_TOOL = {
|
|
25
|
+
...LOCAL_RENDER_DEFINITION,
|
|
26
|
+
run: (args, context) => {
|
|
27
|
+
const out = resolve(context.cwd, requireString(args, 'out'));
|
|
28
|
+
// The tool only ever writes pages; refusing other extensions keeps a
|
|
29
|
+
// misdirected call from replacing a config or source file with HTML.
|
|
30
|
+
if (!HTML_FILE.test(out))
|
|
31
|
+
throw new TypeError('"out" must end in .html or .htm');
|
|
32
|
+
const theme = optionalTheme(args);
|
|
33
|
+
const result = compile(args.spec, {
|
|
34
|
+
source: '<spec>',
|
|
35
|
+
themeCatalog: themeCatalogFor(context),
|
|
36
|
+
...(theme === undefined ? {} : { theme }),
|
|
37
|
+
});
|
|
38
|
+
mkdirSync(dirname(out), { recursive: true });
|
|
39
|
+
writeFileSync(out, result.html, 'utf8');
|
|
40
|
+
return text({ out, ...renderSummary(result) });
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
const LOCAL_THEMES_TOOL = {
|
|
44
|
+
...THEMES_DEFINITION,
|
|
45
|
+
run: (_args, context) => themesResult(themeCatalogFor(context)),
|
|
46
|
+
};
|
|
47
|
+
/** Local tools, in the order an agent uses them. */
|
|
48
|
+
export const LOCAL_TOOLS = [
|
|
49
|
+
CATALOG_TOOL,
|
|
50
|
+
SEARCH_CATALOG_TOOL,
|
|
51
|
+
DESCRIBE_TOOL,
|
|
52
|
+
RECIPES_TOOL,
|
|
53
|
+
RECIPE_TOOL,
|
|
54
|
+
VALIDATE_TOOL,
|
|
55
|
+
LOCAL_RENDER_TOOL,
|
|
56
|
+
LOCAL_THEMES_TOOL,
|
|
57
|
+
];
|
|
58
|
+
//# sourceMappingURL=mcp-local-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-local-tools.js","sourceRoot":"","sources":["../../src/mcp/mcp-local-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAqB,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,uBAAuB,EAEvB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,2BAA2B,CAAC;AAQnC,MAAM,CAAC,MAAM,kBAAkB,GAAG;;6FAE2D,CAAC;AAE9F,MAAM,SAAS,GAAG,YAAY,CAAC;AAE/B,SAAS,eAAe,CAAC,OAAmB;IAC1C,OAAO,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,iBAAiB,GAAwB;IAC7C,GAAG,uBAAuB;IAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,qEAAqE;QACrE,qEAAqE;QACrE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;YAChC,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;YACtC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;SAC1C,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAwB;IAC7C,GAAG,iBAAiB;IACpB,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;CAChE,CAAC;AAEF,oDAAoD;AACpD,MAAM,CAAC,MAAM,WAAW,GAAmC;IACzD,YAAY;IACZ,mBAAmB;IACnB,aAAa;IACb,YAAY;IACZ,WAAW;IACX,aAAa;IACb,iBAAiB;IACjB,iBAAiB;CAClB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Context Protocol vocabulary shared by every transport.
|
|
3
|
+
*
|
|
4
|
+
* Nothing here knows about stdio, HTTP, the filesystem or the network: these
|
|
5
|
+
* are the JSON-RPC shapes, the protocol revisions this server speaks, and the
|
|
6
|
+
* helpers that turn a tool outcome into an MCP tool result. Keeping them free of
|
|
7
|
+
* Node-only imports is what lets the Cloudflare Worker bundle the same code.
|
|
8
|
+
*/
|
|
9
|
+
/** Protocol revisions this server answers with; the newest is the default. */
|
|
10
|
+
export declare const PROTOCOL_VERSIONS: readonly ["2024-11-05", "2025-03-26", "2025-06-18", "2025-11-25"];
|
|
11
|
+
export type ProtocolVersion = (typeof PROTOCOL_VERSIONS)[number];
|
|
12
|
+
export declare const LATEST_PROTOCOL: ProtocolVersion;
|
|
13
|
+
/**
|
|
14
|
+
* Revision a Streamable HTTP server assumes when a client omits the
|
|
15
|
+
* `MCP-Protocol-Version` header, as the 2025-06-18 transport specifies.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_HTTP_PROTOCOL: ProtocolVersion;
|
|
18
|
+
export declare function isSupportedProtocol(value: unknown): value is ProtocolVersion;
|
|
19
|
+
/**
|
|
20
|
+
* JSON-RPC batching exists only in revision 2025-03-26 (and is tolerated for
|
|
21
|
+
* 2024-11-05 clients); revision 2025-06-18 removed it. Revisions are ISO dates,
|
|
22
|
+
* so string order is chronological order.
|
|
23
|
+
*/
|
|
24
|
+
export declare function protocolAllowsBatching(version: ProtocolVersion): boolean;
|
|
25
|
+
export interface JsonRpcRequest {
|
|
26
|
+
jsonrpc: '2.0';
|
|
27
|
+
id?: string | number | null;
|
|
28
|
+
method: string;
|
|
29
|
+
params?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
export interface JsonRpcResponse {
|
|
32
|
+
jsonrpc: '2.0';
|
|
33
|
+
id: string | number | null;
|
|
34
|
+
result?: unknown;
|
|
35
|
+
error?: {
|
|
36
|
+
code: number;
|
|
37
|
+
message: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** JSON-RPC 2.0 error codes this server emits. */
|
|
41
|
+
export declare const JSON_RPC_ERRORS: {
|
|
42
|
+
readonly parse: -32700;
|
|
43
|
+
readonly invalidRequest: -32600;
|
|
44
|
+
readonly methodNotFound: -32601;
|
|
45
|
+
readonly invalidParams: -32602;
|
|
46
|
+
};
|
|
47
|
+
export declare function rpcError(id: string | number | null, code: number, message: string): JsonRpcResponse;
|
|
48
|
+
export interface ToolResult {
|
|
49
|
+
content: {
|
|
50
|
+
type: 'text';
|
|
51
|
+
text: string;
|
|
52
|
+
}[];
|
|
53
|
+
isError?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/** A successful tool result carrying text, or JSON pretty-printed as text. */
|
|
56
|
+
export declare const text: (value: unknown) => ToolResult;
|
|
57
|
+
/** A tool-level failure: the model sees it and can correct its call. */
|
|
58
|
+
export declare const failure: (value: unknown) => ToolResult;
|
|
59
|
+
/**
|
|
60
|
+
* A tool argument the caller got wrong. Its message is written for the caller,
|
|
61
|
+
* so every transport may show it, unlike an arbitrary runtime error.
|
|
62
|
+
*/
|
|
63
|
+
export declare class ToolArgumentError extends TypeError {
|
|
64
|
+
readonly name = "ToolArgumentError";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Map a thrown error to a tool failure. A compiler error keeps its code, JSON
|
|
68
|
+
* path and diagnostics so the caller can fix the spec; anything else reports
|
|
69
|
+
* only its message.
|
|
70
|
+
*/
|
|
71
|
+
export declare function toolErrorResult(error: unknown): ToolResult;
|
|
72
|
+
/**
|
|
73
|
+
* Map a thrown error to a tool failure a hosted server may show a stranger.
|
|
74
|
+
* Compiler errors and argument errors keep their message, because the caller
|
|
75
|
+
* needs it to fix the call; anything else (a storage, binding or runtime fault)
|
|
76
|
+
* becomes a generic `INTERNAL_ERROR`, so no internal message leaves the server.
|
|
77
|
+
*/
|
|
78
|
+
export declare function publicToolErrorResult(error: unknown): ToolResult;
|
|
79
|
+
//# sourceMappingURL=mcp-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-protocol.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,mEAAoE,CAAC;AACnG,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AACjE,eAAO,MAAM,eAAe,EAAE,eAA8B,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAA8B,CAAC;AAEnE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAExE;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,kDAAkD;AAClD,eAAO,MAAM,eAAe;;;;;CAKlB,CAAC;AAEX,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,eAAe,CAEjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,8EAA8E;AAC9E,eAAO,MAAM,IAAI,GAAI,OAAO,OAAO,KAAG,UAIpC,CAAC;AAEH,wEAAwE;AACxE,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,UAAiD,CAAC;AAE3F;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C,SAAkB,IAAI,uBAAuB;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAY1D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAGhE"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Context Protocol vocabulary shared by every transport.
|
|
3
|
+
*
|
|
4
|
+
* Nothing here knows about stdio, HTTP, the filesystem or the network: these
|
|
5
|
+
* are the JSON-RPC shapes, the protocol revisions this server speaks, and the
|
|
6
|
+
* helpers that turn a tool outcome into an MCP tool result. Keeping them free of
|
|
7
|
+
* Node-only imports is what lets the Cloudflare Worker bundle the same code.
|
|
8
|
+
*/
|
|
9
|
+
import { isRenderError } from '../errors.js';
|
|
10
|
+
/** Protocol revisions this server answers with; the newest is the default. */
|
|
11
|
+
export const PROTOCOL_VERSIONS = ['2024-11-05', '2025-03-26', '2025-06-18', '2025-11-25'];
|
|
12
|
+
export const LATEST_PROTOCOL = '2025-11-25';
|
|
13
|
+
/**
|
|
14
|
+
* Revision a Streamable HTTP server assumes when a client omits the
|
|
15
|
+
* `MCP-Protocol-Version` header, as the 2025-06-18 transport specifies.
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_HTTP_PROTOCOL = '2025-03-26';
|
|
18
|
+
export function isSupportedProtocol(value) {
|
|
19
|
+
return PROTOCOL_VERSIONS.some((version) => version === value);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* JSON-RPC batching exists only in revision 2025-03-26 (and is tolerated for
|
|
23
|
+
* 2024-11-05 clients); revision 2025-06-18 removed it. Revisions are ISO dates,
|
|
24
|
+
* so string order is chronological order.
|
|
25
|
+
*/
|
|
26
|
+
export function protocolAllowsBatching(version) {
|
|
27
|
+
return version < '2025-06-18';
|
|
28
|
+
}
|
|
29
|
+
/** JSON-RPC 2.0 error codes this server emits. */
|
|
30
|
+
export const JSON_RPC_ERRORS = {
|
|
31
|
+
parse: -32700,
|
|
32
|
+
invalidRequest: -32600,
|
|
33
|
+
methodNotFound: -32601,
|
|
34
|
+
invalidParams: -32602,
|
|
35
|
+
};
|
|
36
|
+
export function rpcError(id, code, message) {
|
|
37
|
+
return { jsonrpc: '2.0', id, error: { code, message } };
|
|
38
|
+
}
|
|
39
|
+
/** A successful tool result carrying text, or JSON pretty-printed as text. */
|
|
40
|
+
export const text = (value) => ({
|
|
41
|
+
content: [
|
|
42
|
+
{ type: 'text', text: typeof value === 'string' ? value : JSON.stringify(value, null, 2) },
|
|
43
|
+
],
|
|
44
|
+
});
|
|
45
|
+
/** A tool-level failure: the model sees it and can correct its call. */
|
|
46
|
+
export const failure = (value) => ({ ...text(value), isError: true });
|
|
47
|
+
/**
|
|
48
|
+
* A tool argument the caller got wrong. Its message is written for the caller,
|
|
49
|
+
* so every transport may show it, unlike an arbitrary runtime error.
|
|
50
|
+
*/
|
|
51
|
+
export class ToolArgumentError extends TypeError {
|
|
52
|
+
name = 'ToolArgumentError';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Map a thrown error to a tool failure. A compiler error keeps its code, JSON
|
|
56
|
+
* path and diagnostics so the caller can fix the spec; anything else reports
|
|
57
|
+
* only its message.
|
|
58
|
+
*/
|
|
59
|
+
export function toolErrorResult(error) {
|
|
60
|
+
if (isRenderError(error)) {
|
|
61
|
+
return failure({
|
|
62
|
+
code: error.code,
|
|
63
|
+
message: error.message,
|
|
64
|
+
path: error.path ?? '$',
|
|
65
|
+
...(error.details?.diagnostics === undefined
|
|
66
|
+
? {}
|
|
67
|
+
: { diagnostics: error.details.diagnostics }),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return failure(error instanceof Error ? error.message : String(error));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Map a thrown error to a tool failure a hosted server may show a stranger.
|
|
74
|
+
* Compiler errors and argument errors keep their message, because the caller
|
|
75
|
+
* needs it to fix the call; anything else (a storage, binding or runtime fault)
|
|
76
|
+
* becomes a generic `INTERNAL_ERROR`, so no internal message leaves the server.
|
|
77
|
+
*/
|
|
78
|
+
export function publicToolErrorResult(error) {
|
|
79
|
+
if (isRenderError(error) || error instanceof ToolArgumentError)
|
|
80
|
+
return toolErrorResult(error);
|
|
81
|
+
return failure({ code: 'INTERNAL_ERROR', message: 'the tool failed; try again later' });
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=mcp-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-protocol.js","sourceRoot":"","sources":["../../src/mcp/mcp-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAEnG,MAAM,CAAC,MAAM,eAAe,GAAoB,YAAY,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB,YAAY,CAAC;AAEnE,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC7D,OAAO,OAAO,GAAG,YAAY,CAAC;AAChC,CAAC;AAgBD,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC,KAAK;IACb,cAAc,EAAE,CAAC,KAAK;IACtB,cAAc,EAAE,CAAC,KAAK;IACtB,aAAa,EAAE,CAAC,KAAK;CACb,CAAC;AAEX,MAAM,UAAU,QAAQ,CACtB,EAA0B,EAC1B,IAAY,EACZ,OAAe;IAEf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;AAC1D,CAAC;AAOD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAc,EAAE,CAAC,CAAC;IACnD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;KAC3F;CACF,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAc,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAE3F;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC5B,IAAI,GAAG,mBAAmB,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG;YACvB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,iBAAiB;QAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9F,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ak-render mcp`: the compiler as a Model Context Protocol server over stdio.
|
|
3
|
+
*
|
|
4
|
+
* The tools mirror the CLI so an agent follows the same loop either way:
|
|
5
|
+
* `catalog` → `describe` → `validate` → `render`. `render` writes the HTML to a
|
|
6
|
+
* file and returns only a summary, because the point of the compiler is to keep
|
|
7
|
+
* presentation bytes out of the model's context.
|
|
8
|
+
*
|
|
9
|
+
* The transport is newline-delimited JSON-RPC 2.0 on stdin/stdout, implemented
|
|
10
|
+
* without an SDK so the package keeps its single runtime dependency. Protocol
|
|
11
|
+
* routing and tool contracts are shared with the Streamable HTTP transport;
|
|
12
|
+
* this module only frames lines and runs the local tools. Nothing here touches
|
|
13
|
+
* the network.
|
|
14
|
+
*/
|
|
15
|
+
import type { Interface } from 'node:readline';
|
|
16
|
+
import { type McpContext } from './mcp-local-tools.js';
|
|
17
|
+
import { type JsonRpcResponse } from './mcp-protocol.js';
|
|
18
|
+
/**
|
|
19
|
+
* Answer one JSON-RPC message. Returns `undefined` for notifications and for
|
|
20
|
+
* responses sent to us, which need no reply.
|
|
21
|
+
*/
|
|
22
|
+
export declare function handleMcpMessage(message: unknown, context: McpContext): JsonRpcResponse | undefined;
|
|
23
|
+
/** Answer one line of the stdio transport, or return `undefined` for no reply. */
|
|
24
|
+
export declare function handleMcpLine(line: string, context: McpContext): string | undefined;
|
|
25
|
+
/** Serve MCP on stdin/stdout until stdin closes. Logs go to stderr only. */
|
|
26
|
+
export declare function serveMcp(context?: McpContext): Interface;
|
|
27
|
+
export type { McpContext };
|
|
28
|
+
//# sourceMappingURL=mcp-stdio-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio-transport.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-stdio-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAEL,KAAK,eAAe,EAIrB,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,UAAU,GAClB,eAAe,GAAG,SAAS,CAW7B;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAoBnF;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,OAAO,GAAE,UAAoD,GAAG,SAAS,CAOjG;AAED,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ak-render mcp`: the compiler as a Model Context Protocol server over stdio.
|
|
3
|
+
*
|
|
4
|
+
* The tools mirror the CLI so an agent follows the same loop either way:
|
|
5
|
+
* `catalog` → `describe` → `validate` → `render`. `render` writes the HTML to a
|
|
6
|
+
* file and returns only a summary, because the point of the compiler is to keep
|
|
7
|
+
* presentation bytes out of the model's context.
|
|
8
|
+
*
|
|
9
|
+
* The transport is newline-delimited JSON-RPC 2.0 on stdin/stdout, implemented
|
|
10
|
+
* without an SDK so the package keeps its single runtime dependency. Protocol
|
|
11
|
+
* routing and tool contracts are shared with the Streamable HTTP transport;
|
|
12
|
+
* this module only frames lines and runs the local tools. Nothing here touches
|
|
13
|
+
* the network.
|
|
14
|
+
*/
|
|
15
|
+
import { homedir } from 'node:os';
|
|
16
|
+
import { createInterface } from 'node:readline';
|
|
17
|
+
import { routeMcpMessage } from './mcp-json-rpc-dispatch.js';
|
|
18
|
+
import { LOCAL_INSTRUCTIONS, LOCAL_TOOLS } from './mcp-local-tools.js';
|
|
19
|
+
import { JSON_RPC_ERRORS, rpcError, toolErrorResult, } from './mcp-protocol.js';
|
|
20
|
+
/**
|
|
21
|
+
* Answer one JSON-RPC message. Returns `undefined` for notifications and for
|
|
22
|
+
* responses sent to us, which need no reply.
|
|
23
|
+
*/
|
|
24
|
+
export function handleMcpMessage(message, context) {
|
|
25
|
+
const route = routeMcpMessage(message, LOCAL_TOOLS, { instructions: LOCAL_INSTRUCTIONS });
|
|
26
|
+
if (route.kind === 'silent')
|
|
27
|
+
return undefined;
|
|
28
|
+
if (route.kind === 'reply')
|
|
29
|
+
return route.response;
|
|
30
|
+
let result;
|
|
31
|
+
try {
|
|
32
|
+
result = route.tool.run(route.args, context);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
result = toolErrorResult(error);
|
|
36
|
+
}
|
|
37
|
+
return { jsonrpc: '2.0', id: route.id, result };
|
|
38
|
+
}
|
|
39
|
+
/** Answer one line of the stdio transport, or return `undefined` for no reply. */
|
|
40
|
+
export function handleMcpLine(line, context) {
|
|
41
|
+
if (line.trim() === '')
|
|
42
|
+
return undefined;
|
|
43
|
+
let message;
|
|
44
|
+
try {
|
|
45
|
+
message = JSON.parse(line);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return JSON.stringify(rpcError(null, JSON_RPC_ERRORS.parse, 'parse error'));
|
|
49
|
+
}
|
|
50
|
+
// Revision 2025-03-26 allows batches: answer each member, omit the silent ones.
|
|
51
|
+
if (Array.isArray(message)) {
|
|
52
|
+
if (message.length === 0) {
|
|
53
|
+
return JSON.stringify(rpcError(null, JSON_RPC_ERRORS.invalidRequest, 'invalid request'));
|
|
54
|
+
}
|
|
55
|
+
const responses = message
|
|
56
|
+
.map((member) => handleMcpMessage(member, context))
|
|
57
|
+
.filter((response) => response !== undefined);
|
|
58
|
+
return responses.length === 0 ? undefined : JSON.stringify(responses);
|
|
59
|
+
}
|
|
60
|
+
const response = handleMcpMessage(message, context);
|
|
61
|
+
return response === undefined ? undefined : JSON.stringify(response);
|
|
62
|
+
}
|
|
63
|
+
/** Serve MCP on stdin/stdout until stdin closes. Logs go to stderr only. */
|
|
64
|
+
export function serveMcp(context = { cwd: process.cwd(), home: homedir() }) {
|
|
65
|
+
const lines = createInterface({ input: process.stdin, crlfDelay: Number.POSITIVE_INFINITY });
|
|
66
|
+
lines.on('line', (line) => {
|
|
67
|
+
const response = handleMcpLine(line, context);
|
|
68
|
+
if (response !== undefined)
|
|
69
|
+
process.stdout.write(`${response}\n`);
|
|
70
|
+
});
|
|
71
|
+
return lines;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=mcp-stdio-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio-transport.js","sourceRoot":"","sources":["../../src/mcp/mcp-stdio-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAmB,MAAM,sBAAsB,CAAC;AACxF,OAAO,EACL,eAAe,EAEf,QAAQ,EAER,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,OAAmB;IAEnB,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC1F,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;IAClD,IAAI,MAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAmB;IAC7D,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,gFAAgF;IAChF,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,SAAS,GAAG,OAAO;aACtB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aAClD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,QAAQ,CAAC,UAAsB,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IACpF,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC7F,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MCP tool contract: one source of truth for every transport.
|
|
3
|
+
*
|
|
4
|
+
* The stdio server and the Streamable HTTP server list tools from here. The
|
|
5
|
+
* read-only tools (`catalog`, `search-catalog`, `describe`, `recipes`,
|
|
6
|
+
* `recipe`, `validate`) are complete and pure, so both transports run the very same function. `render`
|
|
7
|
+
* and `themes` differ only
|
|
8
|
+
* in where their output goes or where presets come from, so this module owns
|
|
9
|
+
* their descriptions, input schemas and result shapes, and each transport
|
|
10
|
+
* supplies the side effect: a local file for stdio, a stored artifact for HTTP.
|
|
11
|
+
*
|
|
12
|
+
* No Node-only import is allowed here; the Worker bundles this module.
|
|
13
|
+
*/
|
|
14
|
+
import type { CompileResult } from '../render/render.js';
|
|
15
|
+
import type { ThemeCatalog } from '../theme/theme-catalog.js';
|
|
16
|
+
import { type ToolResult } from './mcp-protocol.js';
|
|
17
|
+
/** What `tools/list` announces for one tool. */
|
|
18
|
+
export interface McpToolDefinition {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly description: string;
|
|
21
|
+
readonly inputSchema: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A runnable tool. `C` is the transport's per-call context; `R` lets the HTTP
|
|
25
|
+
* transport run asynchronous tools while stdio stays synchronous.
|
|
26
|
+
*/
|
|
27
|
+
export interface McpTool<C, R extends ToolResult | Promise<ToolResult> = ToolResult> extends McpToolDefinition {
|
|
28
|
+
run: (args: Record<string, unknown>, context: C) => R;
|
|
29
|
+
}
|
|
30
|
+
export declare function requireString(args: Record<string, unknown>, key: string): string;
|
|
31
|
+
/** The optional `theme` argument, normalized: an empty string means "not given". */
|
|
32
|
+
export declare function optionalTheme(args: Record<string, unknown>): string | undefined;
|
|
33
|
+
export declare const CATALOG_TOOL: McpTool<unknown>;
|
|
34
|
+
export declare const SEARCH_CATALOG_TOOL: McpTool<unknown>;
|
|
35
|
+
export declare const DESCRIBE_TOOL: McpTool<unknown>;
|
|
36
|
+
export declare const RECIPES_TOOL: McpTool<unknown>;
|
|
37
|
+
export declare const RECIPE_TOOL: McpTool<unknown>;
|
|
38
|
+
export declare const VALIDATE_TOOL: McpTool<unknown>;
|
|
39
|
+
/** `render` as the local stdio server runs it: the HTML goes to a file. */
|
|
40
|
+
export declare const LOCAL_RENDER_DEFINITION: McpToolDefinition;
|
|
41
|
+
/**
|
|
42
|
+
* `render` as a remote server runs it. A remote server cannot write into the
|
|
43
|
+
* caller's filesystem, so the artifact is stored behind a URL instead and the
|
|
44
|
+
* reply is the same compact summary plus that URL.
|
|
45
|
+
*/
|
|
46
|
+
export declare const REMOTE_RENDER_DEFINITION: McpToolDefinition;
|
|
47
|
+
export declare const THEMES_DEFINITION: McpToolDefinition;
|
|
48
|
+
/** The compact render summary every transport returns instead of the HTML. */
|
|
49
|
+
export interface RenderSummary {
|
|
50
|
+
bytes: number;
|
|
51
|
+
hash: string;
|
|
52
|
+
title: string;
|
|
53
|
+
theme: string;
|
|
54
|
+
features: CompileResult['features'];
|
|
55
|
+
nodes: number;
|
|
56
|
+
warnings: CompileResult['warnings'];
|
|
57
|
+
}
|
|
58
|
+
export declare function renderSummary(result: CompileResult): RenderSummary;
|
|
59
|
+
/** The `themes` reply for a catalog, sorted by name. */
|
|
60
|
+
export declare function themesResult(themes: Pick<ThemeCatalog, 'sources' | 'problems'>): ToolResult;
|
|
61
|
+
/**
|
|
62
|
+
* `themes` for a server with no project or user presets on disk, such as a
|
|
63
|
+
* remote one: the built-in presets, in the same reply shape as the local tool.
|
|
64
|
+
*/
|
|
65
|
+
export declare const BUILTIN_THEMES_TOOL: McpTool<unknown>;
|
|
66
|
+
//# sourceMappingURL=mcp-tool-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-definitions.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-tool-definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAA8B,KAAK,UAAU,EAAQ,MAAM,mBAAmB,CAAC;AAEtF,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CACjF,SAAQ,iBAAiB;IACzB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;CACvD;AAcD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAG/E;AAUD,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,OAAO,CAmBzC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAiBhD,CAAC;AAkBF,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,OAAO,CAqC1C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,OAAO,CAMzC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,OAAO,CAaxC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,OAAO,CAc1C,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,EAAE,iBAkBrC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAkBtC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACrC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAUlE;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG,UAAU,CAM3F;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAShD,CAAC"}
|