@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,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "node",
|
|
3
|
+
"name": "vendor.acme.salesforce-tools",
|
|
4
|
+
"version": "1.4.2",
|
|
5
|
+
"engines": {
|
|
6
|
+
"openwop": ">=2.0 <3.0.0"
|
|
7
|
+
},
|
|
8
|
+
"nodes": [
|
|
9
|
+
{
|
|
10
|
+
"typeId": "vendor.acme.salesforce.upsert",
|
|
11
|
+
"version": "1.4.2",
|
|
12
|
+
"category": "integration",
|
|
13
|
+
"role": "side-effect"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"runtime": {
|
|
17
|
+
"language": "remote",
|
|
18
|
+
"entry": "https://{tenant}.acme.example/mcp",
|
|
19
|
+
"mcpServer": {
|
|
20
|
+
"name": "io.github.acme/salesforce",
|
|
21
|
+
"description": "Salesforce objects as MCP tools",
|
|
22
|
+
"version": "1.4.2",
|
|
23
|
+
"remotes": [
|
|
24
|
+
{
|
|
25
|
+
"type": "streamable-http",
|
|
26
|
+
"url": "https://{tenant}.acme.example/mcp"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "node",
|
|
3
|
+
"name": "vendor.acme.salesforce-tools",
|
|
4
|
+
"version": "1.4.2",
|
|
5
|
+
"engines": {
|
|
6
|
+
"openwop": ">=2.0 <3.0.0"
|
|
7
|
+
},
|
|
8
|
+
"nodes": [
|
|
9
|
+
{
|
|
10
|
+
"typeId": "vendor.acme.salesforce.upsert",
|
|
11
|
+
"version": "1.4.2",
|
|
12
|
+
"category": "integration",
|
|
13
|
+
"role": "side-effect"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"runtime": {
|
|
17
|
+
"language": "remote",
|
|
18
|
+
"entry": "https://mcp.acme.example/salesforce",
|
|
19
|
+
"mcpServer": {
|
|
20
|
+
"name": "io.github.acme/salesforce",
|
|
21
|
+
"description": "Salesforce objects as MCP tools",
|
|
22
|
+
"version": "1.4.2",
|
|
23
|
+
"remotes": [
|
|
24
|
+
{
|
|
25
|
+
"type": "streamable-http",
|
|
26
|
+
"url": "https://mcp.acme.example/salesforce"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "streamable-http",
|
|
30
|
+
"url": "https://mcp2.acme.example/salesforce"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "node",
|
|
3
|
+
"name": "vendor.acme.salesforce-tools",
|
|
4
|
+
"version": "1.4.2",
|
|
5
|
+
"engines": {
|
|
6
|
+
"openwop": ">=2.0 <3.0.0"
|
|
7
|
+
},
|
|
8
|
+
"nodes": [
|
|
9
|
+
{
|
|
10
|
+
"typeId": "vendor.acme.salesforce.upsert",
|
|
11
|
+
"version": "1.4.2",
|
|
12
|
+
"category": "integration",
|
|
13
|
+
"role": "side-effect"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"runtime": {
|
|
17
|
+
"language": "remote",
|
|
18
|
+
"entry": "https://mcp.acme.example/salesforce",
|
|
19
|
+
"mcpServer": {
|
|
20
|
+
"name": "io.github.acme/salesforce",
|
|
21
|
+
"description": "Salesforce objects as MCP tools",
|
|
22
|
+
"version": "1.4.2",
|
|
23
|
+
"remotes": [
|
|
24
|
+
{
|
|
25
|
+
"type": "streamable-http",
|
|
26
|
+
"url": "https://mcp.acme.example/salesforce",
|
|
27
|
+
"variables": {
|
|
28
|
+
"tenant": {
|
|
29
|
+
"description": "Tenant",
|
|
30
|
+
"isRequired": true,
|
|
31
|
+
"isSecret": true
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "node",
|
|
3
|
+
"name": "vendor.acme.salesforce-tools",
|
|
4
|
+
"version": "1.4.2",
|
|
5
|
+
"engines": {
|
|
6
|
+
"openwop": ">=2.0 <3.0.0"
|
|
7
|
+
},
|
|
8
|
+
"nodes": [
|
|
9
|
+
{
|
|
10
|
+
"typeId": "vendor.acme.salesforce.upsert",
|
|
11
|
+
"version": "1.4.2",
|
|
12
|
+
"category": "integration",
|
|
13
|
+
"role": "side-effect"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"runtime": {
|
|
17
|
+
"language": "remote",
|
|
18
|
+
"entry": "https://mcp.acme.example/salesforce",
|
|
19
|
+
"mcpServer": {
|
|
20
|
+
"name": "io.github.acme/salesforce",
|
|
21
|
+
"description": "Salesforce objects as MCP tools",
|
|
22
|
+
"version": "^1.4.0",
|
|
23
|
+
"remotes": [
|
|
24
|
+
{
|
|
25
|
+
"type": "streamable-http",
|
|
26
|
+
"url": "https://mcp.acme.example/salesforce"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "node",
|
|
3
|
+
"name": "vendor.acme.salesforce-tools",
|
|
4
|
+
"version": "1.4.2",
|
|
5
|
+
"engines": {
|
|
6
|
+
"openwop": ">=2.0 <3.0.0"
|
|
7
|
+
},
|
|
8
|
+
"nodes": [
|
|
9
|
+
{
|
|
10
|
+
"typeId": "vendor.acme.salesforce.upsert",
|
|
11
|
+
"version": "1.4.2",
|
|
12
|
+
"category": "integration",
|
|
13
|
+
"role": "side-effect"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"runtime": {
|
|
17
|
+
"language": "remote",
|
|
18
|
+
"entry": "https://mcp.acme.example/salesforce",
|
|
19
|
+
"mcpServer": {
|
|
20
|
+
"name": "io.github.acme/salesforce",
|
|
21
|
+
"description": "Salesforce objects as MCP tools",
|
|
22
|
+
"version": "1.4.2",
|
|
23
|
+
"remotes": [
|
|
24
|
+
{
|
|
25
|
+
"type": "streamable-http",
|
|
26
|
+
"url": "https://mcp.acme.example/salesforce"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
30
|
+
"title": "Acme Salesforce",
|
|
31
|
+
"websiteUrl": "https://acme.example/mcp",
|
|
32
|
+
"repository": {
|
|
33
|
+
"url": "https://github.com/acme/salesforce-mcp",
|
|
34
|
+
"source": "github",
|
|
35
|
+
"id": "123456789",
|
|
36
|
+
"subfolder": "server"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "node",
|
|
3
|
+
"name": "vendor.acme.salesforce-tools",
|
|
4
|
+
"version": "1.4.2",
|
|
5
|
+
"engines": {
|
|
6
|
+
"openwop": ">=2.0 <3.0.0"
|
|
7
|
+
},
|
|
8
|
+
"nodes": [
|
|
9
|
+
{
|
|
10
|
+
"typeId": "vendor.acme.salesforce.upsert",
|
|
11
|
+
"version": "1.4.2",
|
|
12
|
+
"category": "integration",
|
|
13
|
+
"role": "side-effect"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"runtime": {
|
|
17
|
+
"language": "remote",
|
|
18
|
+
"entry": "https://mcp.acme.example/salesforce",
|
|
19
|
+
"mcpServer": {
|
|
20
|
+
"name": "io.github.acme/salesforce",
|
|
21
|
+
"description": "Salesforce objects as MCP tools",
|
|
22
|
+
"version": "1.4.2",
|
|
23
|
+
"remotes": [
|
|
24
|
+
{
|
|
25
|
+
"type": "streamable-http",
|
|
26
|
+
"url": "https://mcp.acme.example/salesforce"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|