@openwop/openwop-conformance 2.35.1 → 2.36.1

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.
Files changed (121) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +3 -3
  3. package/coverage.md +13 -1
  4. package/dist/spec-artifacts.lock.json +2 -2
  5. package/fixtures/a2ui-v09/negative-event-name-deleteall.json +139 -0
  6. package/fixtures/a2ui-v09/negative-extra-property.json +140 -0
  7. package/fixtures/a2ui-v09/negative-foreign-catalog.json +139 -0
  8. package/fixtures/a2ui-v09/negative-formatstring-label.json +145 -0
  9. package/fixtures/a2ui-v09/negative-functioncall-openurl.json +129 -0
  10. package/fixtures/a2ui-v09/negative-image-component.json +145 -0
  11. package/fixtures/a2ui-v09/negative-textfield-obscured.json +140 -0
  12. package/fixtures/a2ui-v09/negative-theme-iconurl.json +142 -0
  13. package/fixtures/a2ui-v09/positive-approve-brief.json +139 -0
  14. package/fixtures/conformance-artifact-emit.json +28 -0
  15. package/fixtures/conformance-clarification-nested.json +53 -0
  16. package/fixtures/conformance-clarification-sensitive.json +49 -0
  17. package/fixtures/conformance-credential.json +25 -0
  18. package/fixtures/conformance-mcp-client.json +28 -0
  19. package/fixtures/interrupt-payloads/interrupt-payload-approval.json +1 -0
  20. package/fixtures/interrupt-payloads/interrupt-payload-clarification.json +1 -0
  21. package/fixtures/interrupt-payloads/interrupt-payload-conversation-close.json +1 -0
  22. package/fixtures/interrupt-payloads/interrupt-payload-conversation-exchange.json +1 -0
  23. package/fixtures/interrupt-payloads/interrupt-payload-conversation-start.json +1 -0
  24. package/fixtures/interrupt-payloads/interrupt-payload-custom.json +1 -0
  25. package/fixtures/interrupt-payloads/interrupt-payload-external-event.json +1 -0
  26. package/fixtures/interrupt-payloads/interrupt-payload-low-confidence.json +1 -0
  27. package/fixtures/interrupt-payloads/negative-approval-with-clarification-data.json +1 -0
  28. package/fixtures/interrupt-payloads/negative-conversation-close-with-conversation-start-data.json +1 -0
  29. package/fixtures/interrupt-payloads/negative-conversation-start-with-conversation-exchange-data.json +1 -0
  30. package/fixtures/interrupt-payloads/negative-custom-with-conversation-start-data.json +1 -0
  31. package/fixtures/interrupt-payloads/negative-low-confidence-with-custom-data.json +1 -0
  32. package/fixtures/node-pack-runtime/negative-entry-mismatch.json +31 -0
  33. package/fixtures/node-pack-runtime/negative-headers.json +37 -0
  34. package/fixtures/node-pack-runtime/negative-http.json +31 -0
  35. package/fixtures/node-pack-runtime/negative-icons.json +37 -0
  36. package/fixtures/node-pack-runtime/negative-meta.json +36 -0
  37. package/fixtures/node-pack-runtime/negative-non-remote-language.json +31 -0
  38. package/fixtures/node-pack-runtime/negative-packages.json +41 -0
  39. package/fixtures/node-pack-runtime/negative-sse.json +31 -0
  40. package/fixtures/node-pack-runtime/negative-templated-url.json +31 -0
  41. package/fixtures/node-pack-runtime/negative-two-remotes.json +35 -0
  42. package/fixtures/node-pack-runtime/negative-variables.json +38 -0
  43. package/fixtures/node-pack-runtime/negative-version-range.json +31 -0
  44. package/fixtures/node-pack-runtime/positive-every-optional-member.json +40 -0
  45. package/fixtures/node-pack-runtime/positive-rfc-example.json +31 -0
  46. package/fixtures/node-pack-runtime/upstream/mcp-registry-server-2025-12-11.schema.json +574 -0
  47. package/fixtures/oauth-providers/synthetic.json +36 -4
  48. package/fixtures/upstream/a2a-v1.0.1/README.md +24 -0
  49. package/fixtures/upstream/a2a-v1.0.1/a2a.proto +811 -0
  50. package/fixtures/upstream/a2ui-v0.9/README.md +33 -0
  51. package/fixtures/upstream/a2ui-v0.9/catalog.json +1383 -0
  52. package/fixtures/upstream/a2ui-v0.9/common_types.json +305 -0
  53. package/fixtures/upstream/a2ui-v0.9/server_to_client.json +132 -0
  54. package/fixtures.md +139 -0
  55. package/package.json +2 -2
  56. package/requirements.json +5355 -964
  57. package/scenario-majors.json +93 -6
  58. package/schemas/CORPUS-STAMP.json +103 -89
  59. package/src/lib/localized-content.ts +53 -0
  60. package/src/lib/mcp-fake-server.ts +105 -4
  61. package/src/lib/node-pack-runtime.ts +41 -0
  62. package/src/lib/oauth-as-double.ts +316 -0
  63. package/src/lib/protected-resource.ts +88 -0
  64. package/src/lib/standard-webhooks.ts +120 -0
  65. package/src/lib/toolCatalog.ts +54 -4
  66. package/src/lib/trace-context.ts +98 -0
  67. package/src/lib/v2.ts +6 -0
  68. package/src/lib/webhook-receiver.ts +201 -1
  69. package/src/scenarios/artifact-type-pack-manifest-validation.test.ts +10 -1
  70. package/src/scenarios/auth-challenge-no-oracle.test.ts +122 -0
  71. package/src/scenarios/auth-oauth2-client-credentials.test.ts +46 -5
  72. package/src/scenarios/cross-host-traceparent-propagation.test.ts +92 -58
  73. package/src/scenarios/debugBundle.test.ts +41 -0
  74. package/src/scenarios/fixtures-valid.test.ts +72 -0
  75. package/src/scenarios/inbound-credential-no-passthrough.test.ts +115 -0
  76. package/src/scenarios/interrupt-approver-routing.test.ts +3 -0
  77. package/src/scenarios/localized-content-delivery.test.ts +26 -15
  78. package/src/scenarios/mcp-2026-07-28-discover.test.ts +22 -7
  79. package/src/scenarios/mcp-current-auth-boundary.test.ts +38 -0
  80. package/src/scenarios/mcp-tool-roundtrip.test.ts +29 -0
  81. package/src/scenarios/otel-mcp-semconv-projection.test.ts +85 -0
  82. package/src/scenarios/tool-catalog-compact-projection.test.ts +28 -14
  83. package/src/scenarios/tool-catalog-projection.test.ts +48 -12
  84. package/src/scenarios/tool-descriptor-shape.test.ts +34 -13
  85. package/src/scenarios/v2-a2a-agent-cards.test.ts +305 -0
  86. package/src/scenarios/v2-a2a-operation-map.test.ts +310 -0
  87. package/src/scenarios/v2-a2ui-v09-surface.test.ts +283 -0
  88. package/src/scenarios/v2-advertised-fixtures-exist.test.ts +2 -2
  89. package/src/scenarios/v2-artifact-a2a-shape.test.ts +122 -0
  90. package/src/scenarios/v2-auth-challenge.test.ts +119 -0
  91. package/src/scenarios/v2-bound-id-kinds.test.ts +1 -1
  92. package/src/scenarios/v2-callback-url-guarded.test.ts +2 -2
  93. package/src/scenarios/v2-capability-maturity-bounded.test.ts +108 -0
  94. package/src/scenarios/v2-configurable-closed.test.ts +1 -1
  95. package/src/scenarios/v2-content-locale-keys.test.ts +92 -0
  96. package/src/scenarios/v2-conversation-turn-parts.test.ts +74 -0
  97. package/src/scenarios/v2-credential-interrupt.test.ts +253 -0
  98. package/src/scenarios/v2-effect-identity-business-key.test.ts +2 -2
  99. package/src/scenarios/v2-fork-a-v1-run.test.ts +1 -1
  100. package/src/scenarios/v2-implementation-informational.test.ts +33 -0
  101. package/src/scenarios/v2-interop-trace-context.test.ts +351 -0
  102. package/src/scenarios/v2-lane-exp-only-bound.test.ts +236 -0
  103. package/src/scenarios/v2-lane-issuer-advertised.test.ts +52 -3
  104. package/src/scenarios/v2-mcp-client-results.test.ts +202 -0
  105. package/src/scenarios/v2-mcp-mount-map.test.ts +308 -0
  106. package/src/scenarios/v2-mcp-tasks.test.ts +503 -0
  107. package/src/scenarios/v2-oauth-client-pkce-state-iss.test.ts +203 -0
  108. package/src/scenarios/v2-oauth-mcp-reach-discovery.test.ts +186 -0
  109. package/src/scenarios/v2-oidc-id-token-audience.test.ts +108 -0
  110. package/src/scenarios/v2-protected-resource-metadata.test.ts +145 -0
  111. package/src/scenarios/v2-run-cancel.test.ts +1 -1
  112. package/src/scenarios/v2-run-fork-prefix.test.ts +4 -4
  113. package/src/scenarios/v2-run-pause-resume.test.ts +1 -1
  114. package/src/scenarios/v2-tool-catalog-annotations.test.ts +100 -0
  115. package/src/scenarios/v2-unmapped-type-refused.test.ts +1 -1
  116. package/src/scenarios/v2-v1-events-translated.test.ts +1 -1
  117. package/src/scenarios/v2-webhook-egress-refusal.test.ts +5 -5
  118. package/src/scenarios/v2-webhook-endpoint-verification.test.ts +124 -0
  119. package/src/scenarios/v2-webhook-message-id-stable.test.ts +124 -0
  120. package/src/scenarios/v2-webhook-secret-rotation.test.ts +132 -0
  121. 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
+ }