@openwop/openwop-conformance 2.35.0 → 2.36.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 +27 -0
- package/README.md +3 -3
- package/coverage.md +13 -1
- package/dist/lib/certification-bundle-v3.js +21 -4
- package/dist/spec-artifacts.lock.json +2 -2
- package/fixtures/a2ui-v09/negative-event-name-deleteall.json +139 -0
- package/fixtures/a2ui-v09/negative-extra-property.json +140 -0
- package/fixtures/a2ui-v09/negative-foreign-catalog.json +139 -0
- package/fixtures/a2ui-v09/negative-formatstring-label.json +145 -0
- package/fixtures/a2ui-v09/negative-functioncall-openurl.json +129 -0
- package/fixtures/a2ui-v09/negative-image-component.json +145 -0
- package/fixtures/a2ui-v09/negative-textfield-obscured.json +140 -0
- package/fixtures/a2ui-v09/negative-theme-iconurl.json +142 -0
- package/fixtures/a2ui-v09/positive-approve-brief.json +139 -0
- package/fixtures/conformance-artifact-emit.json +28 -0
- package/fixtures/conformance-clarification-nested.json +53 -0
- package/fixtures/conformance-clarification-sensitive.json +49 -0
- package/fixtures/conformance-credential.json +25 -0
- package/fixtures/conformance-mcp-client.json +28 -0
- package/fixtures/interrupt-payloads/interrupt-payload-approval.json +1 -0
- package/fixtures/interrupt-payloads/interrupt-payload-clarification.json +1 -0
- package/fixtures/interrupt-payloads/interrupt-payload-conversation-close.json +1 -0
- package/fixtures/interrupt-payloads/interrupt-payload-conversation-exchange.json +1 -0
- package/fixtures/interrupt-payloads/interrupt-payload-conversation-start.json +1 -0
- package/fixtures/interrupt-payloads/interrupt-payload-custom.json +1 -0
- package/fixtures/interrupt-payloads/interrupt-payload-external-event.json +1 -0
- package/fixtures/interrupt-payloads/interrupt-payload-low-confidence.json +1 -0
- package/fixtures/interrupt-payloads/negative-approval-with-clarification-data.json +1 -0
- package/fixtures/interrupt-payloads/negative-conversation-close-with-conversation-start-data.json +1 -0
- package/fixtures/interrupt-payloads/negative-conversation-start-with-conversation-exchange-data.json +1 -0
- package/fixtures/interrupt-payloads/negative-custom-with-conversation-start-data.json +1 -0
- package/fixtures/interrupt-payloads/negative-low-confidence-with-custom-data.json +1 -0
- package/fixtures/node-pack-runtime/negative-entry-mismatch.json +31 -0
- package/fixtures/node-pack-runtime/negative-headers.json +37 -0
- package/fixtures/node-pack-runtime/negative-http.json +31 -0
- package/fixtures/node-pack-runtime/negative-icons.json +37 -0
- package/fixtures/node-pack-runtime/negative-meta.json +36 -0
- package/fixtures/node-pack-runtime/negative-non-remote-language.json +31 -0
- package/fixtures/node-pack-runtime/negative-packages.json +41 -0
- package/fixtures/node-pack-runtime/negative-sse.json +31 -0
- package/fixtures/node-pack-runtime/negative-templated-url.json +31 -0
- package/fixtures/node-pack-runtime/negative-two-remotes.json +35 -0
- package/fixtures/node-pack-runtime/negative-variables.json +38 -0
- package/fixtures/node-pack-runtime/negative-version-range.json +31 -0
- package/fixtures/node-pack-runtime/positive-every-optional-member.json +40 -0
- package/fixtures/node-pack-runtime/positive-rfc-example.json +31 -0
- package/fixtures/node-pack-runtime/upstream/mcp-registry-server-2025-12-11.schema.json +574 -0
- package/fixtures/oauth-providers/synthetic.json +36 -4
- package/fixtures/upstream/a2a-v1.0.1/README.md +24 -0
- package/fixtures/upstream/a2a-v1.0.1/a2a.proto +811 -0
- package/fixtures/upstream/a2ui-v0.9/README.md +33 -0
- package/fixtures/upstream/a2ui-v0.9/catalog.json +1383 -0
- package/fixtures/upstream/a2ui-v0.9/common_types.json +305 -0
- package/fixtures/upstream/a2ui-v0.9/server_to_client.json +132 -0
- package/fixtures.md +139 -0
- package/package.json +2 -2
- package/requirements.json +4480 -97
- package/scenario-majors.json +93 -6
- package/schemas/CORPUS-STAMP.json +103 -89
- package/src/lib/behavior-gate.ts +7 -1
- package/src/lib/certification-bundle-v3.ts +18 -4
- package/src/lib/localized-content.ts +53 -0
- package/src/lib/mcp-fake-server.ts +105 -4
- package/src/lib/node-pack-runtime.ts +41 -0
- package/src/lib/oauth-as-double.ts +316 -0
- package/src/lib/protected-resource.ts +88 -0
- package/src/lib/standard-webhooks.ts +120 -0
- package/src/lib/toolCatalog.ts +54 -4
- package/src/lib/trace-context.ts +98 -0
- package/src/lib/v2.ts +6 -0
- package/src/lib/webhook-receiver.ts +201 -1
- package/src/scenarios/artifact-type-pack-manifest-validation.test.ts +10 -1
- package/src/scenarios/auth-challenge-no-oracle.test.ts +122 -0
- package/src/scenarios/auth-oauth2-client-credentials.test.ts +46 -5
- package/src/scenarios/cross-host-traceparent-propagation.test.ts +92 -58
- package/src/scenarios/debugBundle.test.ts +41 -0
- package/src/scenarios/fixtures-valid.test.ts +72 -0
- package/src/scenarios/inbound-credential-no-passthrough.test.ts +115 -0
- package/src/scenarios/interrupt-approver-routing.test.ts +3 -0
- package/src/scenarios/localized-content-delivery.test.ts +26 -15
- package/src/scenarios/mcp-current-auth-boundary.test.ts +38 -0
- package/src/scenarios/mcp-tool-roundtrip.test.ts +29 -0
- package/src/scenarios/otel-mcp-semconv-projection.test.ts +85 -0
- package/src/scenarios/tool-catalog-compact-projection.test.ts +28 -14
- package/src/scenarios/tool-catalog-projection.test.ts +48 -12
- package/src/scenarios/tool-descriptor-shape.test.ts +34 -13
- package/src/scenarios/v2-a2a-agent-cards.test.ts +305 -0
- package/src/scenarios/v2-a2a-operation-map.test.ts +310 -0
- package/src/scenarios/v2-a2ui-v09-surface.test.ts +283 -0
- package/src/scenarios/v2-advertised-fixtures-exist.test.ts +2 -2
- package/src/scenarios/v2-artifact-a2a-shape.test.ts +122 -0
- package/src/scenarios/v2-auth-challenge.test.ts +119 -0
- package/src/scenarios/v2-bound-id-kinds.test.ts +1 -1
- package/src/scenarios/v2-callback-url-guarded.test.ts +2 -2
- package/src/scenarios/v2-capability-maturity-bounded.test.ts +108 -0
- package/src/scenarios/v2-configurable-closed.test.ts +1 -1
- package/src/scenarios/v2-content-locale-keys.test.ts +92 -0
- package/src/scenarios/v2-conversation-turn-parts.test.ts +74 -0
- package/src/scenarios/v2-credential-interrupt.test.ts +253 -0
- package/src/scenarios/v2-effect-identity-business-key.test.ts +2 -2
- package/src/scenarios/v2-fork-a-v1-run.test.ts +1 -1
- package/src/scenarios/v2-implementation-informational.test.ts +33 -0
- package/src/scenarios/v2-interop-trace-context.test.ts +351 -0
- package/src/scenarios/v2-lane-exp-only-bound.test.ts +236 -0
- package/src/scenarios/v2-lane-issuer-advertised.test.ts +52 -3
- package/src/scenarios/v2-mcp-client-results.test.ts +202 -0
- package/src/scenarios/v2-mcp-mount-map.test.ts +308 -0
- package/src/scenarios/v2-mcp-tasks.test.ts +503 -0
- package/src/scenarios/v2-oauth-client-pkce-state-iss.test.ts +203 -0
- package/src/scenarios/v2-oauth-mcp-reach-discovery.test.ts +186 -0
- package/src/scenarios/v2-oidc-id-token-audience.test.ts +108 -0
- package/src/scenarios/v2-protected-resource-metadata.test.ts +145 -0
- package/src/scenarios/v2-run-cancel.test.ts +1 -1
- package/src/scenarios/v2-run-fork-prefix.test.ts +4 -4
- package/src/scenarios/v2-run-pause-resume.test.ts +1 -1
- package/src/scenarios/v2-tool-catalog-annotations.test.ts +100 -0
- package/src/scenarios/v2-unmapped-type-refused.test.ts +1 -1
- package/src/scenarios/v2-v1-events-translated.test.ts +1 -1
- package/src/scenarios/v2-webhook-egress-refusal.test.ts +5 -5
- package/src/scenarios/v2-webhook-endpoint-verification.test.ts +124 -0
- package/src/scenarios/v2-webhook-message-id-stable.test.ts +124 -0
- package/src/scenarios/v2-webhook-secret-rotation.test.ts +132 -0
- package/src/scenarios/v2-webhook-standard-webhooks-delivery.test.ts +195 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "v0.9",
|
|
3
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json",
|
|
4
|
+
"surfaceId": "approve-brief",
|
|
5
|
+
"messages": [
|
|
6
|
+
{
|
|
7
|
+
"version": "v0.9",
|
|
8
|
+
"createSurface": {
|
|
9
|
+
"surfaceId": "approve-brief",
|
|
10
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"version": "v0.9",
|
|
15
|
+
"updateComponents": {
|
|
16
|
+
"surfaceId": "approve-brief",
|
|
17
|
+
"components": [
|
|
18
|
+
{
|
|
19
|
+
"id": "root",
|
|
20
|
+
"component": "Column",
|
|
21
|
+
"children": [
|
|
22
|
+
"h",
|
|
23
|
+
"name",
|
|
24
|
+
"when",
|
|
25
|
+
"region",
|
|
26
|
+
"agree",
|
|
27
|
+
"submit"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "h",
|
|
32
|
+
"component": "Text",
|
|
33
|
+
"text": {
|
|
34
|
+
"call": "formatString",
|
|
35
|
+
"args": {
|
|
36
|
+
"value": "${/name}"
|
|
37
|
+
},
|
|
38
|
+
"returnType": "string"
|
|
39
|
+
},
|
|
40
|
+
"variant": "h2"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "name",
|
|
44
|
+
"component": "TextField",
|
|
45
|
+
"label": "Product name",
|
|
46
|
+
"value": {
|
|
47
|
+
"path": "/name"
|
|
48
|
+
},
|
|
49
|
+
"checks": [
|
|
50
|
+
{
|
|
51
|
+
"condition": {
|
|
52
|
+
"call": "required",
|
|
53
|
+
"args": {
|
|
54
|
+
"value": {
|
|
55
|
+
"path": "/name"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"message": "Required"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "when",
|
|
65
|
+
"component": "DateTimeInput",
|
|
66
|
+
"label": "Launch date",
|
|
67
|
+
"value": {
|
|
68
|
+
"path": "/when"
|
|
69
|
+
},
|
|
70
|
+
"enableDate": true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "region",
|
|
74
|
+
"component": "ChoicePicker",
|
|
75
|
+
"label": "Region",
|
|
76
|
+
"options": [
|
|
77
|
+
{
|
|
78
|
+
"label": "EU",
|
|
79
|
+
"value": "eu"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"label": "US",
|
|
83
|
+
"value": "us"
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"value": {
|
|
87
|
+
"path": "/region"
|
|
88
|
+
},
|
|
89
|
+
"variant": "mutuallyExclusive"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "agree",
|
|
93
|
+
"component": "CheckBox",
|
|
94
|
+
"label": "I agree",
|
|
95
|
+
"value": {
|
|
96
|
+
"path": "/agree"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "submit_label",
|
|
101
|
+
"component": "Text",
|
|
102
|
+
"text": "Submit"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "submit",
|
|
106
|
+
"component": "Button",
|
|
107
|
+
"child": "submit_label",
|
|
108
|
+
"variant": "primary",
|
|
109
|
+
"action": {
|
|
110
|
+
"event": {
|
|
111
|
+
"name": "resume",
|
|
112
|
+
"context": {
|
|
113
|
+
"name": {
|
|
114
|
+
"path": "/name"
|
|
115
|
+
},
|
|
116
|
+
"when": {
|
|
117
|
+
"path": "/when"
|
|
118
|
+
},
|
|
119
|
+
"region": {
|
|
120
|
+
"path": "/region"
|
|
121
|
+
},
|
|
122
|
+
"agree": {
|
|
123
|
+
"path": "/agree"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"version": "v0.9",
|
|
134
|
+
"updateDataModel": {
|
|
135
|
+
"surfaceId": "approve-brief",
|
|
136
|
+
"value": {
|
|
137
|
+
"name": "",
|
|
138
|
+
"when": "",
|
|
139
|
+
"region": [],
|
|
140
|
+
"agree": false
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "v0.9",
|
|
3
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json",
|
|
4
|
+
"surfaceId": "approve-brief",
|
|
5
|
+
"messages": [
|
|
6
|
+
{
|
|
7
|
+
"version": "v0.9",
|
|
8
|
+
"createSurface": {
|
|
9
|
+
"surfaceId": "approve-brief",
|
|
10
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"version": "v0.9",
|
|
15
|
+
"updateComponents": {
|
|
16
|
+
"surfaceId": "approve-brief",
|
|
17
|
+
"components": [
|
|
18
|
+
{
|
|
19
|
+
"id": "root",
|
|
20
|
+
"component": "Column",
|
|
21
|
+
"children": [
|
|
22
|
+
"h",
|
|
23
|
+
"name",
|
|
24
|
+
"when",
|
|
25
|
+
"region",
|
|
26
|
+
"agree",
|
|
27
|
+
"submit"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "h",
|
|
32
|
+
"component": "Text",
|
|
33
|
+
"text": "Launch brief",
|
|
34
|
+
"variant": "h2"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "name",
|
|
38
|
+
"component": "TextField",
|
|
39
|
+
"label": "Product name",
|
|
40
|
+
"value": {
|
|
41
|
+
"path": "/name"
|
|
42
|
+
},
|
|
43
|
+
"checks": [
|
|
44
|
+
{
|
|
45
|
+
"condition": {
|
|
46
|
+
"call": "required",
|
|
47
|
+
"args": {
|
|
48
|
+
"value": {
|
|
49
|
+
"path": "/name"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"message": "Required"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "when",
|
|
59
|
+
"component": "DateTimeInput",
|
|
60
|
+
"label": "Launch date",
|
|
61
|
+
"value": {
|
|
62
|
+
"path": "/when"
|
|
63
|
+
},
|
|
64
|
+
"enableDate": true
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "region",
|
|
68
|
+
"component": "ChoicePicker",
|
|
69
|
+
"label": "Region",
|
|
70
|
+
"options": [
|
|
71
|
+
{
|
|
72
|
+
"label": "EU",
|
|
73
|
+
"value": "eu"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"label": "US",
|
|
77
|
+
"value": "us"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"value": {
|
|
81
|
+
"path": "/region"
|
|
82
|
+
},
|
|
83
|
+
"variant": "mutuallyExclusive"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "agree",
|
|
87
|
+
"component": "CheckBox",
|
|
88
|
+
"label": "I agree",
|
|
89
|
+
"value": {
|
|
90
|
+
"path": "/agree"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "submit_label",
|
|
95
|
+
"component": "Text",
|
|
96
|
+
"text": "Submit"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "submit",
|
|
100
|
+
"component": "Button",
|
|
101
|
+
"child": "submit_label",
|
|
102
|
+
"variant": "primary",
|
|
103
|
+
"action": {
|
|
104
|
+
"functionCall": {
|
|
105
|
+
"call": "openUrl",
|
|
106
|
+
"args": {
|
|
107
|
+
"url": "https://evil.example/"
|
|
108
|
+
},
|
|
109
|
+
"returnType": "void"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"version": "v0.9",
|
|
118
|
+
"updateDataModel": {
|
|
119
|
+
"surfaceId": "approve-brief",
|
|
120
|
+
"value": {
|
|
121
|
+
"name": "",
|
|
122
|
+
"when": "",
|
|
123
|
+
"region": [],
|
|
124
|
+
"agree": false
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "v0.9",
|
|
3
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json",
|
|
4
|
+
"surfaceId": "approve-brief",
|
|
5
|
+
"messages": [
|
|
6
|
+
{
|
|
7
|
+
"version": "v0.9",
|
|
8
|
+
"createSurface": {
|
|
9
|
+
"surfaceId": "approve-brief",
|
|
10
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"version": "v0.9",
|
|
15
|
+
"updateComponents": {
|
|
16
|
+
"surfaceId": "approve-brief",
|
|
17
|
+
"components": [
|
|
18
|
+
{
|
|
19
|
+
"id": "root",
|
|
20
|
+
"component": "Column",
|
|
21
|
+
"children": [
|
|
22
|
+
"h",
|
|
23
|
+
"name",
|
|
24
|
+
"when",
|
|
25
|
+
"region",
|
|
26
|
+
"agree",
|
|
27
|
+
"submit",
|
|
28
|
+
"img"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "h",
|
|
33
|
+
"component": "Text",
|
|
34
|
+
"text": "Launch brief",
|
|
35
|
+
"variant": "h2"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "name",
|
|
39
|
+
"component": "TextField",
|
|
40
|
+
"label": "Product name",
|
|
41
|
+
"value": {
|
|
42
|
+
"path": "/name"
|
|
43
|
+
},
|
|
44
|
+
"checks": [
|
|
45
|
+
{
|
|
46
|
+
"condition": {
|
|
47
|
+
"call": "required",
|
|
48
|
+
"args": {
|
|
49
|
+
"value": {
|
|
50
|
+
"path": "/name"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"message": "Required"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "when",
|
|
60
|
+
"component": "DateTimeInput",
|
|
61
|
+
"label": "Launch date",
|
|
62
|
+
"value": {
|
|
63
|
+
"path": "/when"
|
|
64
|
+
},
|
|
65
|
+
"enableDate": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "region",
|
|
69
|
+
"component": "ChoicePicker",
|
|
70
|
+
"label": "Region",
|
|
71
|
+
"options": [
|
|
72
|
+
{
|
|
73
|
+
"label": "EU",
|
|
74
|
+
"value": "eu"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"label": "US",
|
|
78
|
+
"value": "us"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"value": {
|
|
82
|
+
"path": "/region"
|
|
83
|
+
},
|
|
84
|
+
"variant": "mutuallyExclusive"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "agree",
|
|
88
|
+
"component": "CheckBox",
|
|
89
|
+
"label": "I agree",
|
|
90
|
+
"value": {
|
|
91
|
+
"path": "/agree"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "submit_label",
|
|
96
|
+
"component": "Text",
|
|
97
|
+
"text": "Submit"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "submit",
|
|
101
|
+
"component": "Button",
|
|
102
|
+
"child": "submit_label",
|
|
103
|
+
"variant": "primary",
|
|
104
|
+
"action": {
|
|
105
|
+
"event": {
|
|
106
|
+
"name": "resume",
|
|
107
|
+
"context": {
|
|
108
|
+
"name": {
|
|
109
|
+
"path": "/name"
|
|
110
|
+
},
|
|
111
|
+
"when": {
|
|
112
|
+
"path": "/when"
|
|
113
|
+
},
|
|
114
|
+
"region": {
|
|
115
|
+
"path": "/region"
|
|
116
|
+
},
|
|
117
|
+
"agree": {
|
|
118
|
+
"path": "/agree"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "img",
|
|
126
|
+
"component": "Image",
|
|
127
|
+
"url": "https://evil.example/p.png"
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"version": "v0.9",
|
|
134
|
+
"updateDataModel": {
|
|
135
|
+
"surfaceId": "approve-brief",
|
|
136
|
+
"value": {
|
|
137
|
+
"name": "",
|
|
138
|
+
"when": "",
|
|
139
|
+
"region": [],
|
|
140
|
+
"agree": false
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "v0.9",
|
|
3
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json",
|
|
4
|
+
"surfaceId": "approve-brief",
|
|
5
|
+
"messages": [
|
|
6
|
+
{
|
|
7
|
+
"version": "v0.9",
|
|
8
|
+
"createSurface": {
|
|
9
|
+
"surfaceId": "approve-brief",
|
|
10
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"version": "v0.9",
|
|
15
|
+
"updateComponents": {
|
|
16
|
+
"surfaceId": "approve-brief",
|
|
17
|
+
"components": [
|
|
18
|
+
{
|
|
19
|
+
"id": "root",
|
|
20
|
+
"component": "Column",
|
|
21
|
+
"children": [
|
|
22
|
+
"h",
|
|
23
|
+
"name",
|
|
24
|
+
"when",
|
|
25
|
+
"region",
|
|
26
|
+
"agree",
|
|
27
|
+
"submit"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "h",
|
|
32
|
+
"component": "Text",
|
|
33
|
+
"text": "Launch brief",
|
|
34
|
+
"variant": "h2"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "name",
|
|
38
|
+
"component": "TextField",
|
|
39
|
+
"label": "Product name",
|
|
40
|
+
"value": {
|
|
41
|
+
"path": "/name"
|
|
42
|
+
},
|
|
43
|
+
"checks": [
|
|
44
|
+
{
|
|
45
|
+
"condition": {
|
|
46
|
+
"call": "required",
|
|
47
|
+
"args": {
|
|
48
|
+
"value": {
|
|
49
|
+
"path": "/name"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"message": "Required"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"variant": "obscured"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "when",
|
|
60
|
+
"component": "DateTimeInput",
|
|
61
|
+
"label": "Launch date",
|
|
62
|
+
"value": {
|
|
63
|
+
"path": "/when"
|
|
64
|
+
},
|
|
65
|
+
"enableDate": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "region",
|
|
69
|
+
"component": "ChoicePicker",
|
|
70
|
+
"label": "Region",
|
|
71
|
+
"options": [
|
|
72
|
+
{
|
|
73
|
+
"label": "EU",
|
|
74
|
+
"value": "eu"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"label": "US",
|
|
78
|
+
"value": "us"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"value": {
|
|
82
|
+
"path": "/region"
|
|
83
|
+
},
|
|
84
|
+
"variant": "mutuallyExclusive"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "agree",
|
|
88
|
+
"component": "CheckBox",
|
|
89
|
+
"label": "I agree",
|
|
90
|
+
"value": {
|
|
91
|
+
"path": "/agree"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "submit_label",
|
|
96
|
+
"component": "Text",
|
|
97
|
+
"text": "Submit"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "submit",
|
|
101
|
+
"component": "Button",
|
|
102
|
+
"child": "submit_label",
|
|
103
|
+
"variant": "primary",
|
|
104
|
+
"action": {
|
|
105
|
+
"event": {
|
|
106
|
+
"name": "resume",
|
|
107
|
+
"context": {
|
|
108
|
+
"name": {
|
|
109
|
+
"path": "/name"
|
|
110
|
+
},
|
|
111
|
+
"when": {
|
|
112
|
+
"path": "/when"
|
|
113
|
+
},
|
|
114
|
+
"region": {
|
|
115
|
+
"path": "/region"
|
|
116
|
+
},
|
|
117
|
+
"agree": {
|
|
118
|
+
"path": "/agree"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"version": "v0.9",
|
|
129
|
+
"updateDataModel": {
|
|
130
|
+
"surfaceId": "approve-brief",
|
|
131
|
+
"value": {
|
|
132
|
+
"name": "",
|
|
133
|
+
"when": "",
|
|
134
|
+
"region": [],
|
|
135
|
+
"agree": false
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "v0.9",
|
|
3
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json",
|
|
4
|
+
"surfaceId": "approve-brief",
|
|
5
|
+
"messages": [
|
|
6
|
+
{
|
|
7
|
+
"version": "v0.9",
|
|
8
|
+
"createSurface": {
|
|
9
|
+
"surfaceId": "approve-brief",
|
|
10
|
+
"catalogId": "https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json",
|
|
11
|
+
"theme": {
|
|
12
|
+
"iconUrl": "https://evil.example/i.png"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"version": "v0.9",
|
|
18
|
+
"updateComponents": {
|
|
19
|
+
"surfaceId": "approve-brief",
|
|
20
|
+
"components": [
|
|
21
|
+
{
|
|
22
|
+
"id": "root",
|
|
23
|
+
"component": "Column",
|
|
24
|
+
"children": [
|
|
25
|
+
"h",
|
|
26
|
+
"name",
|
|
27
|
+
"when",
|
|
28
|
+
"region",
|
|
29
|
+
"agree",
|
|
30
|
+
"submit"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "h",
|
|
35
|
+
"component": "Text",
|
|
36
|
+
"text": "Launch brief",
|
|
37
|
+
"variant": "h2"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "name",
|
|
41
|
+
"component": "TextField",
|
|
42
|
+
"label": "Product name",
|
|
43
|
+
"value": {
|
|
44
|
+
"path": "/name"
|
|
45
|
+
},
|
|
46
|
+
"checks": [
|
|
47
|
+
{
|
|
48
|
+
"condition": {
|
|
49
|
+
"call": "required",
|
|
50
|
+
"args": {
|
|
51
|
+
"value": {
|
|
52
|
+
"path": "/name"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"message": "Required"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "when",
|
|
62
|
+
"component": "DateTimeInput",
|
|
63
|
+
"label": "Launch date",
|
|
64
|
+
"value": {
|
|
65
|
+
"path": "/when"
|
|
66
|
+
},
|
|
67
|
+
"enableDate": true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "region",
|
|
71
|
+
"component": "ChoicePicker",
|
|
72
|
+
"label": "Region",
|
|
73
|
+
"options": [
|
|
74
|
+
{
|
|
75
|
+
"label": "EU",
|
|
76
|
+
"value": "eu"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"label": "US",
|
|
80
|
+
"value": "us"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"value": {
|
|
84
|
+
"path": "/region"
|
|
85
|
+
},
|
|
86
|
+
"variant": "mutuallyExclusive"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "agree",
|
|
90
|
+
"component": "CheckBox",
|
|
91
|
+
"label": "I agree",
|
|
92
|
+
"value": {
|
|
93
|
+
"path": "/agree"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "submit_label",
|
|
98
|
+
"component": "Text",
|
|
99
|
+
"text": "Submit"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "submit",
|
|
103
|
+
"component": "Button",
|
|
104
|
+
"child": "submit_label",
|
|
105
|
+
"variant": "primary",
|
|
106
|
+
"action": {
|
|
107
|
+
"event": {
|
|
108
|
+
"name": "resume",
|
|
109
|
+
"context": {
|
|
110
|
+
"name": {
|
|
111
|
+
"path": "/name"
|
|
112
|
+
},
|
|
113
|
+
"when": {
|
|
114
|
+
"path": "/when"
|
|
115
|
+
},
|
|
116
|
+
"region": {
|
|
117
|
+
"path": "/region"
|
|
118
|
+
},
|
|
119
|
+
"agree": {
|
|
120
|
+
"path": "/agree"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"version": "v0.9",
|
|
131
|
+
"updateDataModel": {
|
|
132
|
+
"surfaceId": "approve-brief",
|
|
133
|
+
"value": {
|
|
134
|
+
"name": "",
|
|
135
|
+
"when": "",
|
|
136
|
+
"region": [],
|
|
137
|
+
"agree": false
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|