@exponential_app/eui 0.2.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/catalog/a11y.json +15 -1
- package/catalog/core.catalog.json +142 -0
- package/catalog/core.schema.json +198 -1
- package/catalog/host.json +10 -0
- package/catalog/macros.json +541 -1
- package/catalog/recipes.json +2 -2
- package/catalog/strings.json +5 -0
- package/catalog/theme.schema.json +2066 -212
- package/conformance/manifest.json +5 -5
- package/dist/chunks/{index-gtk2gwsb.js → index-4z7f2bp1.js} +160 -33
- package/dist/chunks/{index-gtk2gwsb.js.map → index-4z7f2bp1.js.map} +6 -5
- package/dist/chunks/{index-5fmaa0xq.js → index-abcjanhc.js} +629 -3
- package/dist/chunks/{index-5fmaa0xq.js.map → index-abcjanhc.js.map} +2 -2
- package/dist/chunks/{index-62yzr94z.js → index-dx45asrf.js} +99 -3
- package/dist/chunks/{index-62yzr94z.js.map → index-dx45asrf.js.map} +2 -2
- package/dist/chunks/{index-bg2jsgjq.js → index-h3zgfghf.js} +304 -6
- package/dist/chunks/{index-bg2jsgjq.js.map → index-h3zgfghf.js.map} +2 -2
- package/dist/conformance.js +7901 -614
- package/dist/conformance.js.map +2 -2
- package/dist/entries/prompt.js +2 -2
- package/dist/entries/schema.js +2 -2
- package/dist/host/index.js +20 -4
- package/dist/host/index.js.map +1 -1
- package/dist/index.js +35 -5
- package/dist/index.js.map +2 -2
- package/dist/types/src/catalog.generated.d.ts +23 -3
- package/dist/types/src/host/contract.d.ts +17 -0
- package/dist/types/src/host/exposes.d.ts +68 -0
- package/dist/types/src/host/index.d.ts +1 -0
- package/dist/types/src/host/package.d.ts +8 -0
- package/dist/types/src/web/primitives/carousel.d.ts +17 -0
- package/dist/types/src/web/primitives/index.d.ts +3 -0
- package/dist/types/src/web/primitives/mosaic.d.ts +30 -0
- package/dist/types/src/web/primitives/outline.d.ts +22 -0
- package/dist/web/index.js +8 -2
- package/dist/web/index.js.map +4 -4
- package/dist/web/primitives/index.js +59 -1
- package/dist/web/primitives/index.js.map +6 -3
- package/docs/components.generated.json +150 -1
- package/docs/package-format.md +56 -1
- package/docs/round-6-contract.md +108 -0
- package/docs/themes.generated.json +39 -2
- package/fixtures/bind-time.json +1464 -0
- package/fixtures/catalog-components.json +96 -0
- package/fixtures/catalog-macros.json +1159 -48
- package/fixtures/conformance-baseline.json +46073 -44448
- package/fixtures/conformance-known.json +76 -64
- package/fixtures/host-router.json +539 -1
- package/fixtures/kitchen-sink.expanded.json +614 -1
- package/fixtures/kitchen-sink.json +69 -1
- package/fixtures/primitive-specimens.json +3 -0
- package/fixtures/prompt-budget.json +14 -14
- package/fixtures/specimens.json +122 -0
- package/fixtures/theme-recipes.json +4617 -1691
- package/fixtures/theme-resolved.json +1154 -2
- package/generated/ExponentialUICatalog.generated.kt +13 -13
- package/generated/ExponentialUICatalog.generated.swift +13 -13
- package/generated/ExponentialUIThemes.generated.kt +7 -7
- package/generated/ExponentialUIThemes.generated.swift +7 -7
- package/generated/catalog.descriptions.generated.rs +1 -1
- package/generated/catalog.generated.rs +18 -18
- package/generated/catalog.themes.generated.rs +8 -8
- package/generated/core.descriptions.json +96 -0
- package/generated/core.runtime.json +86 -0
- package/package.json +1 -1
- package/themes/neutral.theme.json +288 -0
package/catalog/a11y.json
CHANGED
|
@@ -244,12 +244,19 @@
|
|
|
244
244
|
},
|
|
245
245
|
"Carousel": {
|
|
246
246
|
"role": "region",
|
|
247
|
-
"notes": "region, roledescription carousel; each page a group `page i of n`",
|
|
247
|
+
"notes": "region, roledescription carousel; each page a group `page i of n`; the counter `$string.pageCounter` is hidden (each page already says page i of n); each thumbnail a button `page i of n`, aria-current on the current one",
|
|
248
248
|
"keys": [
|
|
249
249
|
"ArrowLeft/ArrowRight: previous/next page while focus is inside",
|
|
250
250
|
"Home/End: first/last page"
|
|
251
251
|
]
|
|
252
252
|
},
|
|
253
|
+
"Mosaic": {
|
|
254
|
+
"role": "group",
|
|
255
|
+
"notes": "group labelled `label`; each tile a button named its picture's `alt`; the `+N` tile reads `alt` then `+N` ($string.morePictures).",
|
|
256
|
+
"keys": [
|
|
257
|
+
"Tab through the tiles; Enter, Space: select"
|
|
258
|
+
]
|
|
259
|
+
},
|
|
253
260
|
"Tabs": {
|
|
254
261
|
"role": "tablist",
|
|
255
262
|
"notes": "tablist / tab / tabpanel",
|
|
@@ -595,6 +602,13 @@
|
|
|
595
602
|
"Tab through the links; Enter: select"
|
|
596
603
|
]
|
|
597
604
|
},
|
|
605
|
+
"Outline": {
|
|
606
|
+
"role": "navigation",
|
|
607
|
+
"notes": "navigation labelled by `caption`; each row a link (aria-current=location on the active row) named `title` then the count; press fires `select {id}`.",
|
|
608
|
+
"keys": [
|
|
609
|
+
"Tab through the rows; Enter, Space: select"
|
|
610
|
+
]
|
|
611
|
+
},
|
|
598
612
|
"Stepper": {
|
|
599
613
|
"role": "list",
|
|
600
614
|
"notes": "list; the current step aria-current=step. Each step a listitem labelled `stepDone`/`stepCurrent`/`stepUpcoming`; the current one aria-current=step ($a11y).",
|
|
@@ -698,6 +698,41 @@
|
|
|
698
698
|
"description": "The step's state."
|
|
699
699
|
}
|
|
700
700
|
}
|
|
701
|
+
},
|
|
702
|
+
"outlineItem": {
|
|
703
|
+
"description": "One Outline row.",
|
|
704
|
+
"properties": {
|
|
705
|
+
"id": {
|
|
706
|
+
"type": "string",
|
|
707
|
+
"required": true,
|
|
708
|
+
"description": "Reported by `select`."
|
|
709
|
+
},
|
|
710
|
+
"title": {
|
|
711
|
+
"type": "string",
|
|
712
|
+
"required": true,
|
|
713
|
+
"bindable": true,
|
|
714
|
+
"description": "The row text."
|
|
715
|
+
},
|
|
716
|
+
"count": {
|
|
717
|
+
"type": "number",
|
|
718
|
+
"bindable": true,
|
|
719
|
+
"description": "A muted count."
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
},
|
|
723
|
+
"picture": {
|
|
724
|
+
"description": "One picture of a Mosaic.",
|
|
725
|
+
"properties": {
|
|
726
|
+
"src": {
|
|
727
|
+
"type": "url",
|
|
728
|
+
"required": true,
|
|
729
|
+
"description": "The image URL."
|
|
730
|
+
},
|
|
731
|
+
"alt": {
|
|
732
|
+
"type": "string",
|
|
733
|
+
"description": "The accessibility description."
|
|
734
|
+
}
|
|
735
|
+
}
|
|
701
736
|
}
|
|
702
737
|
},
|
|
703
738
|
"functions": {
|
|
@@ -2069,6 +2104,18 @@
|
|
|
2069
2104
|
"type": "boolean",
|
|
2070
2105
|
"default": true,
|
|
2071
2106
|
"description": "Shows the page dots."
|
|
2107
|
+
},
|
|
2108
|
+
"counter": {
|
|
2109
|
+
"type": "boolean",
|
|
2110
|
+
"default": false,
|
|
2111
|
+
"description": "Shows `i / n`."
|
|
2112
|
+
},
|
|
2113
|
+
"thumbnails": {
|
|
2114
|
+
"type": "array",
|
|
2115
|
+
"items": {
|
|
2116
|
+
"type": "url"
|
|
2117
|
+
},
|
|
2118
|
+
"description": "A thumbnail URL per page."
|
|
2072
2119
|
}
|
|
2073
2120
|
},
|
|
2074
2121
|
"events": [
|
|
@@ -2079,6 +2126,51 @@
|
|
|
2079
2126
|
"indicators": true
|
|
2080
2127
|
}
|
|
2081
2128
|
},
|
|
2129
|
+
"Mosaic": {
|
|
2130
|
+
"kind": "macro",
|
|
2131
|
+
"group": "media",
|
|
2132
|
+
"lite": false,
|
|
2133
|
+
"children": "none",
|
|
2134
|
+
"description": "Pictures: halves, or one large + two small with `+N`; press fires `select {index}`.",
|
|
2135
|
+
"props": {
|
|
2136
|
+
"pictures": {
|
|
2137
|
+
"type": "array",
|
|
2138
|
+
"items": {
|
|
2139
|
+
"type": "object",
|
|
2140
|
+
"shape": "picture"
|
|
2141
|
+
},
|
|
2142
|
+
"required": true,
|
|
2143
|
+
"description": "The pictures in order."
|
|
2144
|
+
},
|
|
2145
|
+
"label": {
|
|
2146
|
+
"type": "string",
|
|
2147
|
+
"description": "The a11y label."
|
|
2148
|
+
}
|
|
2149
|
+
},
|
|
2150
|
+
"events": [
|
|
2151
|
+
"select"
|
|
2152
|
+
],
|
|
2153
|
+
"example": {
|
|
2154
|
+
"pictures": [
|
|
2155
|
+
{
|
|
2156
|
+
"src": "https://example.com/editor.png",
|
|
2157
|
+
"alt": "Editor"
|
|
2158
|
+
},
|
|
2159
|
+
{
|
|
2160
|
+
"src": "https://example.com/preview.png",
|
|
2161
|
+
"alt": "Preview"
|
|
2162
|
+
},
|
|
2163
|
+
{
|
|
2164
|
+
"src": "https://example.com/data.png",
|
|
2165
|
+
"alt": "Data"
|
|
2166
|
+
},
|
|
2167
|
+
{
|
|
2168
|
+
"src": "https://example.com/versions.png",
|
|
2169
|
+
"alt": "Versions"
|
|
2170
|
+
}
|
|
2171
|
+
]
|
|
2172
|
+
}
|
|
2173
|
+
},
|
|
2082
2174
|
"Tabs": {
|
|
2083
2175
|
"kind": "native",
|
|
2084
2176
|
"group": "navigation",
|
|
@@ -2492,6 +2584,56 @@
|
|
|
2492
2584
|
]
|
|
2493
2585
|
}
|
|
2494
2586
|
},
|
|
2587
|
+
"Outline": {
|
|
2588
|
+
"kind": "macro",
|
|
2589
|
+
"group": "navigation",
|
|
2590
|
+
"lite": true,
|
|
2591
|
+
"children": "none",
|
|
2592
|
+
"description": "Anchor rows under a caption, one active; press fires `select {id}`.",
|
|
2593
|
+
"props": {
|
|
2594
|
+
"items": {
|
|
2595
|
+
"type": "array",
|
|
2596
|
+
"items": {
|
|
2597
|
+
"type": "object",
|
|
2598
|
+
"shape": "outlineItem"
|
|
2599
|
+
},
|
|
2600
|
+
"required": true,
|
|
2601
|
+
"description": "The rows in order."
|
|
2602
|
+
},
|
|
2603
|
+
"value": {
|
|
2604
|
+
"type": "string",
|
|
2605
|
+
"bindable": true,
|
|
2606
|
+
"description": "The active row id."
|
|
2607
|
+
},
|
|
2608
|
+
"caption": {
|
|
2609
|
+
"type": "string",
|
|
2610
|
+
"description": "The heading."
|
|
2611
|
+
}
|
|
2612
|
+
},
|
|
2613
|
+
"events": [
|
|
2614
|
+
"select"
|
|
2615
|
+
],
|
|
2616
|
+
"example": {
|
|
2617
|
+
"caption": "Outline",
|
|
2618
|
+
"value": "part-a",
|
|
2619
|
+
"items": [
|
|
2620
|
+
{
|
|
2621
|
+
"id": "current",
|
|
2622
|
+
"title": "Current state"
|
|
2623
|
+
},
|
|
2624
|
+
{
|
|
2625
|
+
"id": "part-a",
|
|
2626
|
+
"title": "Part A: editor-first creation",
|
|
2627
|
+
"count": 5
|
|
2628
|
+
},
|
|
2629
|
+
{
|
|
2630
|
+
"id": "part-b",
|
|
2631
|
+
"title": "Part B: MCP for eApps",
|
|
2632
|
+
"count": 2
|
|
2633
|
+
}
|
|
2634
|
+
]
|
|
2635
|
+
}
|
|
2636
|
+
},
|
|
2495
2637
|
"Stepper": {
|
|
2496
2638
|
"kind": "macro",
|
|
2497
2639
|
"group": "navigation",
|
package/catalog/core.schema.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://ui.exponential.at/catalogs/core/v1",
|
|
4
4
|
"title": "Exponential UI core",
|
|
5
|
-
"description": "Exponential UI core catalog v1:
|
|
5
|
+
"description": "Exponential UI core catalog v1: 91 components (natives + macros), the A2UI basic catalog's 14 functions plus 19 core functions, the Box style whitelist and the token names. Generated by packages/exponential-ui/scripts/generate.ts from catalog/core.catalog.json — do not edit.",
|
|
6
6
|
"catalogId": "https://ui.exponential.at/catalogs/core/v1",
|
|
7
7
|
"liteCatalogId": "https://ui.exponential.at/catalogs/core-lite/v1",
|
|
8
8
|
"components": {
|
|
@@ -4006,6 +4006,19 @@
|
|
|
4006
4006
|
"description": "Shows the page dots.",
|
|
4007
4007
|
"default": true
|
|
4008
4008
|
},
|
|
4009
|
+
"counter": {
|
|
4010
|
+
"type": "boolean",
|
|
4011
|
+
"description": "Shows `i / n`.",
|
|
4012
|
+
"default": false
|
|
4013
|
+
},
|
|
4014
|
+
"thumbnails": {
|
|
4015
|
+
"type": "array",
|
|
4016
|
+
"items": {
|
|
4017
|
+
"type": "string",
|
|
4018
|
+
"format": "uri-reference"
|
|
4019
|
+
},
|
|
4020
|
+
"description": "A thumbnail URL per page."
|
|
4021
|
+
},
|
|
4009
4022
|
"children": {
|
|
4010
4023
|
"$ref": "#/$defs/ChildList"
|
|
4011
4024
|
},
|
|
@@ -4035,6 +4048,57 @@
|
|
|
4035
4048
|
],
|
|
4036
4049
|
"unevaluatedProperties": false
|
|
4037
4050
|
},
|
|
4051
|
+
"Mosaic": {
|
|
4052
|
+
"type": "object",
|
|
4053
|
+
"description": "Pictures: halves, or one large + two small with `+N`; press fires `select {index}`.",
|
|
4054
|
+
"allOf": [
|
|
4055
|
+
{
|
|
4056
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
4057
|
+
},
|
|
4058
|
+
{
|
|
4059
|
+
"type": "object",
|
|
4060
|
+
"properties": {
|
|
4061
|
+
"component": {
|
|
4062
|
+
"const": "Mosaic"
|
|
4063
|
+
},
|
|
4064
|
+
"pictures": {
|
|
4065
|
+
"type": "array",
|
|
4066
|
+
"items": {
|
|
4067
|
+
"$ref": "#/$defs/picture"
|
|
4068
|
+
},
|
|
4069
|
+
"description": "The pictures in order."
|
|
4070
|
+
},
|
|
4071
|
+
"label": {
|
|
4072
|
+
"type": "string",
|
|
4073
|
+
"description": "The a11y label."
|
|
4074
|
+
},
|
|
4075
|
+
"on": {
|
|
4076
|
+
"type": "object",
|
|
4077
|
+
"properties": {
|
|
4078
|
+
"select": {
|
|
4079
|
+
"$ref": "#/$defs/Action"
|
|
4080
|
+
}
|
|
4081
|
+
},
|
|
4082
|
+
"additionalProperties": false
|
|
4083
|
+
},
|
|
4084
|
+
"style": {
|
|
4085
|
+
"$ref": "#/$defs/Style"
|
|
4086
|
+
},
|
|
4087
|
+
"visible": {
|
|
4088
|
+
"$ref": "#/$defs/Visible"
|
|
4089
|
+
},
|
|
4090
|
+
"accessibility": {
|
|
4091
|
+
"$ref": "#/$defs/AccessibilityAttributes"
|
|
4092
|
+
}
|
|
4093
|
+
},
|
|
4094
|
+
"required": [
|
|
4095
|
+
"component",
|
|
4096
|
+
"pictures"
|
|
4097
|
+
]
|
|
4098
|
+
}
|
|
4099
|
+
],
|
|
4100
|
+
"unevaluatedProperties": false
|
|
4101
|
+
},
|
|
4038
4102
|
"Tabs": {
|
|
4039
4103
|
"type": "object",
|
|
4040
4104
|
"description": "Tab navigation; the child at index i is the panel of tab i.",
|
|
@@ -5301,6 +5365,71 @@
|
|
|
5301
5365
|
],
|
|
5302
5366
|
"unevaluatedProperties": false
|
|
5303
5367
|
},
|
|
5368
|
+
"Outline": {
|
|
5369
|
+
"type": "object",
|
|
5370
|
+
"description": "Anchor rows under a caption, one active; press fires `select {id}`.",
|
|
5371
|
+
"allOf": [
|
|
5372
|
+
{
|
|
5373
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
5374
|
+
},
|
|
5375
|
+
{
|
|
5376
|
+
"type": "object",
|
|
5377
|
+
"properties": {
|
|
5378
|
+
"component": {
|
|
5379
|
+
"const": "Outline"
|
|
5380
|
+
},
|
|
5381
|
+
"items": {
|
|
5382
|
+
"type": "array",
|
|
5383
|
+
"items": {
|
|
5384
|
+
"$ref": "#/$defs/outlineItem"
|
|
5385
|
+
},
|
|
5386
|
+
"description": "The rows in order."
|
|
5387
|
+
},
|
|
5388
|
+
"value": {
|
|
5389
|
+
"oneOf": [
|
|
5390
|
+
{
|
|
5391
|
+
"type": "string"
|
|
5392
|
+
},
|
|
5393
|
+
{
|
|
5394
|
+
"$ref": "#/$defs/DataBinding"
|
|
5395
|
+
},
|
|
5396
|
+
{
|
|
5397
|
+
"$ref": "#/$defs/FunctionCall"
|
|
5398
|
+
}
|
|
5399
|
+
],
|
|
5400
|
+
"description": "The active row id."
|
|
5401
|
+
},
|
|
5402
|
+
"caption": {
|
|
5403
|
+
"type": "string",
|
|
5404
|
+
"description": "The heading."
|
|
5405
|
+
},
|
|
5406
|
+
"on": {
|
|
5407
|
+
"type": "object",
|
|
5408
|
+
"properties": {
|
|
5409
|
+
"select": {
|
|
5410
|
+
"$ref": "#/$defs/Action"
|
|
5411
|
+
}
|
|
5412
|
+
},
|
|
5413
|
+
"additionalProperties": false
|
|
5414
|
+
},
|
|
5415
|
+
"style": {
|
|
5416
|
+
"$ref": "#/$defs/Style"
|
|
5417
|
+
},
|
|
5418
|
+
"visible": {
|
|
5419
|
+
"$ref": "#/$defs/Visible"
|
|
5420
|
+
},
|
|
5421
|
+
"accessibility": {
|
|
5422
|
+
"$ref": "#/$defs/AccessibilityAttributes"
|
|
5423
|
+
}
|
|
5424
|
+
},
|
|
5425
|
+
"required": [
|
|
5426
|
+
"component",
|
|
5427
|
+
"items"
|
|
5428
|
+
]
|
|
5429
|
+
}
|
|
5430
|
+
],
|
|
5431
|
+
"unevaluatedProperties": false
|
|
5432
|
+
},
|
|
5304
5433
|
"Stepper": {
|
|
5305
5434
|
"type": "object",
|
|
5306
5435
|
"description": "Wizard progress: numbered steps, finished ones ticked.",
|
|
@@ -24164,6 +24293,68 @@
|
|
|
24164
24293
|
],
|
|
24165
24294
|
"additionalProperties": false
|
|
24166
24295
|
},
|
|
24296
|
+
"outlineItem": {
|
|
24297
|
+
"type": "object",
|
|
24298
|
+
"description": "One Outline row.",
|
|
24299
|
+
"properties": {
|
|
24300
|
+
"id": {
|
|
24301
|
+
"type": "string",
|
|
24302
|
+
"description": "Reported by `select`."
|
|
24303
|
+
},
|
|
24304
|
+
"title": {
|
|
24305
|
+
"oneOf": [
|
|
24306
|
+
{
|
|
24307
|
+
"type": "string"
|
|
24308
|
+
},
|
|
24309
|
+
{
|
|
24310
|
+
"$ref": "#/$defs/DataBinding"
|
|
24311
|
+
},
|
|
24312
|
+
{
|
|
24313
|
+
"$ref": "#/$defs/FunctionCall"
|
|
24314
|
+
}
|
|
24315
|
+
],
|
|
24316
|
+
"description": "The row text."
|
|
24317
|
+
},
|
|
24318
|
+
"count": {
|
|
24319
|
+
"oneOf": [
|
|
24320
|
+
{
|
|
24321
|
+
"type": "number"
|
|
24322
|
+
},
|
|
24323
|
+
{
|
|
24324
|
+
"$ref": "#/$defs/DataBinding"
|
|
24325
|
+
},
|
|
24326
|
+
{
|
|
24327
|
+
"$ref": "#/$defs/FunctionCall"
|
|
24328
|
+
}
|
|
24329
|
+
],
|
|
24330
|
+
"description": "A muted count."
|
|
24331
|
+
}
|
|
24332
|
+
},
|
|
24333
|
+
"required": [
|
|
24334
|
+
"id",
|
|
24335
|
+
"title"
|
|
24336
|
+
],
|
|
24337
|
+
"additionalProperties": false
|
|
24338
|
+
},
|
|
24339
|
+
"picture": {
|
|
24340
|
+
"type": "object",
|
|
24341
|
+
"description": "One picture of a Mosaic.",
|
|
24342
|
+
"properties": {
|
|
24343
|
+
"src": {
|
|
24344
|
+
"type": "string",
|
|
24345
|
+
"format": "uri-reference",
|
|
24346
|
+
"description": "The image URL."
|
|
24347
|
+
},
|
|
24348
|
+
"alt": {
|
|
24349
|
+
"type": "string",
|
|
24350
|
+
"description": "The accessibility description."
|
|
24351
|
+
}
|
|
24352
|
+
},
|
|
24353
|
+
"required": [
|
|
24354
|
+
"src"
|
|
24355
|
+
],
|
|
24356
|
+
"additionalProperties": false
|
|
24357
|
+
},
|
|
24167
24358
|
"anyComponent": {
|
|
24168
24359
|
"oneOf": [
|
|
24169
24360
|
{
|
|
@@ -24250,6 +24441,9 @@
|
|
|
24250
24441
|
{
|
|
24251
24442
|
"$ref": "#/components/Carousel"
|
|
24252
24443
|
},
|
|
24444
|
+
{
|
|
24445
|
+
"$ref": "#/components/Mosaic"
|
|
24446
|
+
},
|
|
24253
24447
|
{
|
|
24254
24448
|
"$ref": "#/components/Tabs"
|
|
24255
24449
|
},
|
|
@@ -24277,6 +24471,9 @@
|
|
|
24277
24471
|
{
|
|
24278
24472
|
"$ref": "#/components/Breadcrumb"
|
|
24279
24473
|
},
|
|
24474
|
+
{
|
|
24475
|
+
"$ref": "#/components/Outline"
|
|
24476
|
+
},
|
|
24280
24477
|
{
|
|
24281
24478
|
"$ref": "#/components/Stepper"
|
|
24282
24479
|
},
|
package/catalog/host.json
CHANGED
|
@@ -68,6 +68,16 @@
|
|
|
68
68
|
"transports": ["http", "stdio", "script"],
|
|
69
69
|
"functionPrefix": "tools."
|
|
70
70
|
},
|
|
71
|
+
"exposes": {
|
|
72
|
+
"$comment": "VAPP-180 (the format half of the eMCP contract, packages/emcp fixtures/exposes.json in the Exponential repo): `exposes: [{name, title, description, input, access, run}]` = MCP tools a host's broker lists (as `<app>__<name>`) and runs as the CALLING person, data never code. `name` matches `limits.namePattern`, at most `limits.nameMax`, never holds `limits.separator`, unique; `title` (at most titleMax) and `description` (at most descriptionMax) non-blank; `input` = a JSON Schema `{type: \"object\", properties?}`; `access` read | write; at most `limits.maxTools` tools. `run` holds EXACTLY ONE of `runKinds`: `records: {op, kind, id?, where?, data?, limit?}` over the package's OWN kinds (op in `recordOps`; `readRecordOps` read, upsert writes; a delete is destructive and refused); `action` (+ `args`) = a host function name matching `actionPattern` (it reads when the last word of its name is a `readOpWords` word, else it writes); `upstream` (+ `tool`, `args`) = one of the package's `upstreams` (the MCP server names the HOST provides: Exponential = the team's MCP servers). Every string of `run` may hold `${input.<dotted path>}` templates whose first key is a declared input property. Destructive is never exposed: an action or upstream tool whose name holds a `destructiveWords` word (words = the lowercase letter runs) is refused. A binding declared read whose run writes is refused; an upstream tool's level is its live annotations', checked by the host at call. Issues come in binding order with the eMCP error code (`exposeIssues`). What a run may reach on a given host (which actions exist and are grantable, destructive arguments, which upstreams the team has) is the host's own check on top.",
|
|
73
|
+
"limits": { "namePattern": "^[a-z][a-z0-9_]*$", "nameMax": 40, "titleMax": 80, "descriptionMax": 1024, "maxTools": 32, "separator": "__" },
|
|
74
|
+
"runKinds": ["records", "action", "upstream"],
|
|
75
|
+
"recordOps": ["list", "get", "upsert"],
|
|
76
|
+
"readRecordOps": ["list", "get"],
|
|
77
|
+
"readOpWords": ["list", "get", "show", "catalog", "activity", "files"],
|
|
78
|
+
"destructiveWords": ["delete", "merge", "close", "end", "remove", "trash"],
|
|
79
|
+
"actionPattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$"
|
|
80
|
+
},
|
|
71
81
|
"extensions": {
|
|
72
82
|
"$comment": "VAPP-161: `extensions: [{id, version, components?}]`: an extension catalog id the package needs beyond its catalogId, the minimum MAJOR.MINOR.PATCH (caret: the host's has the same major and is not lower; an unversioned registration satisfies any) and the components it uses. Install issues: an id not registered on the host (`extension <id> is not available on this host`), a version that does not satisfy (`extension <id> <have> does not satisfy ^<want>`), a component the registered extension does not define (`extension <id> has no component <name>`), a duplicate id. A host registers an extension's version as ExtensionDef.version.",
|
|
73
83
|
"versionPattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|