@dp-bohrium/widget-sdk 0.4.1 → 0.6.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.
Files changed (168) hide show
  1. package/AGENTS.md +10 -4
  2. package/CHANGELOG.md +34 -1
  3. package/README.md +61 -19
  4. package/assets/licenses/ajv@8.20.0/LICENSE +22 -0
  5. package/assets/licenses/fast-deep-equal@3.1.3/LICENSE +21 -0
  6. package/assets/licenses/fast-uri@3.1.6/LICENSE +30 -0
  7. package/assets/licenses/json-schema-traverse@1.0.0/LICENSE +21 -0
  8. package/assets/licenses/require-from-string@2.0.2/license +21 -0
  9. package/assets/licenses/widget-contracts.LICENSE +21 -0
  10. package/assets/licenses/widget-sdk.LICENSE +21 -0
  11. package/assets/schemas/host-runtime-config.schema.json +305 -0
  12. package/assets/schemas/widget-manifest.schema.json +361 -0
  13. package/assets/schemas/widget-plugin-manifest.schema.json +162 -0
  14. package/assets/schemas/widget-runtime-contracts.schema.json +2870 -0
  15. package/assets/toolchain.json +24 -0
  16. package/conformance/bridge/capability-request.json +23 -0
  17. package/conformance/bridge/files-download-request.json +23 -0
  18. package/conformance/bridge/files-read-versioned-request.json +25 -0
  19. package/conformance/bridge/files-write-request.json +25 -0
  20. package/conformance/bridge/files-write-success.json +25 -0
  21. package/conformance/bridge/network-fetch-denied.json +16 -0
  22. package/conformance/bridge/network-fetch-request.json +19 -0
  23. package/conformance/bridge/network-fetch-success.json +22 -0
  24. package/conformance/bridge/presentation-change-surface-request.json +14 -0
  25. package/conformance/bridge/presentation-close-request.json +14 -0
  26. package/conformance/bridge/presentation-close-success.json +11 -0
  27. package/conformance/bridge/presentation-downgrade-success.json +14 -0
  28. package/conformance/bridge/presentation-focus-backward-request.json +14 -0
  29. package/conformance/bridge/presentation-focus-boundary-success.json +14 -0
  30. package/conformance/bridge/presentation-focus-forward-request.json +14 -0
  31. package/conformance/bridge/presentation-init.json +70 -0
  32. package/conformance/bridge/presentation-policy-denied.json +16 -0
  33. package/conformance/bridge/presentation-present-request.json +14 -0
  34. package/conformance/bridge/presentation-user-denied.json +16 -0
  35. package/conformance/bridge/ready.json +11 -0
  36. package/conformance/bridge/region-acquire-request.json +14 -0
  37. package/conformance/bridge/tasks-list-request.json +17 -0
  38. package/conformance/bridge/tasks-watch-request.json +18 -0
  39. package/conformance/bridge/ui-state-write-request.json +18 -0
  40. package/conformance/bundles/minimal-file-preview/entry.js +1 -0
  41. package/conformance/bundles/minimal-file-preview/manifest.json +12 -0
  42. package/conformance/bundles/minimal-file-preview/samples/file-preview.json +1 -0
  43. package/conformance/bundles/minimal-panel/entry.js +1 -0
  44. package/conformance/bundles/minimal-panel/manifest.json +11 -0
  45. package/conformance/bundles/minimal-panel/samples/panel.json +1 -0
  46. package/conformance/bundles/minimal-tool-result/entry.js +1 -0
  47. package/conformance/bundles/minimal-tool-result/manifest.json +11 -0
  48. package/conformance/bundles/minimal-tool-result/samples/tool-result.json +1 -0
  49. package/conformance/file-grants/write.json +8 -0
  50. package/conformance/file-responses/list.json +1 -0
  51. package/conformance/file-responses/metadata.json +11 -0
  52. package/conformance/file-responses/mutation-conflict.json +6 -0
  53. package/conformance/file-responses/permission-denied.json +6 -0
  54. package/conformance/file-responses/read-revision-only.json +8 -0
  55. package/conformance/file-responses/read-unversioned-range.json +12 -0
  56. package/conformance/file-responses/read-versioned.json +12 -0
  57. package/conformance/file-responses/resource-limit.json +1 -0
  58. package/conformance/file-responses/revision-conflict.json +6 -0
  59. package/conformance/file-responses/text-content.json +7 -0
  60. package/conformance/file-responses/write-outcome-unknown.json +6 -0
  61. package/conformance/file-responses/write-success.json +15 -0
  62. package/conformance/host-runtime-config/invalid-host-service-expiry.json +85 -0
  63. package/conformance/host-runtime-config/invalid-host-service-identity.json +85 -0
  64. package/conformance/host-runtime-config/invalid-host-service-permission.json +85 -0
  65. package/conformance/host-runtime-config/invalid-host-service-status.json +65 -0
  66. package/conformance/host-runtime-config/invalid-missing-manifest-fields.json +55 -0
  67. package/conformance/host-runtime-config/invalid-static-origins.json +60 -0
  68. package/conformance/host-runtime-config/valid-host-service-authorization-required.json +65 -0
  69. package/conformance/host-runtime-config/valid-host-service-authorization.json +85 -0
  70. package/conformance/host-runtime-config/valid-no-requested-permissions.json +52 -0
  71. package/conformance/host-runtime-config/valid.json +85 -0
  72. package/conformance/invalid-bridge-messages/network-fetch-mixed-case-forbidden-header.json +21 -0
  73. package/conformance/invalid-file-grants/extra-file-scope.json +9 -0
  74. package/conformance/invalid-file-grants/missing-write-limits.json +4 -0
  75. package/conformance/invalid-file-requests/arbitrary-path.json +16 -0
  76. package/conformance/invalid-file-requests/missing-expected-revision.json +14 -0
  77. package/conformance/invalid-file-requests/missing-mutation-id.json +14 -0
  78. package/conformance/invalid-file-requests/path-in-reference.json +16 -0
  79. package/conformance/invalid-file-results/read-empty-revision.json +5 -0
  80. package/conformance/invalid-file-results/read-null-revision.json +5 -0
  81. package/conformance/invalid-file-results/write-missing-mutation-id.json +11 -0
  82. package/conformance/invalid-manifests/missing-target.json +11 -0
  83. package/conformance/invalid-manifests/presentation-duplicate-surfaces.json +16 -0
  84. package/conformance/invalid-manifests/presentation-empty-surfaces.json +14 -0
  85. package/conformance/invalid-manifests/presentation-unknown-surface.json +16 -0
  86. package/conformance/invalid-manifests/unknown-field.json +12 -0
  87. package/conformance/invalid-network-requests/mixed-case-forbidden-header.json +11 -0
  88. package/conformance/invalid-presentation-grants/duplicate-surfaces.json +5 -0
  89. package/conformance/invalid-presentation-grants/empty-surfaces.json +5 -0
  90. package/conformance/invalid-presentation-grants/false-confirmation.json +5 -0
  91. package/conformance/invalid-presentation-grants/missing-confirmation.json +4 -0
  92. package/conformance/invalid-presentation-grants/unknown-surface.json +5 -0
  93. package/conformance/invalid-presentation-requests/change-surface-missing-surface.json +4 -0
  94. package/conformance/invalid-presentation-requests/close-with-surface.json +4 -0
  95. package/conformance/invalid-presentation-requests/focus-boundary-missing-direction.json +4 -0
  96. package/conformance/invalid-presentation-requests/focus-boundary-unknown-direction.json +4 -0
  97. package/conformance/invalid-presentation-requests/focus-boundary-with-coordinates.json +9 -0
  98. package/conformance/invalid-presentation-requests/focus-boundary-with-event-provenance.json +8 -0
  99. package/conformance/invalid-presentation-requests/focus-boundary-with-generation.json +8 -0
  100. package/conformance/invalid-presentation-requests/focus-boundary-with-identity.json +12 -0
  101. package/conformance/invalid-presentation-requests/focus-boundary-with-key.json +8 -0
  102. package/conformance/invalid-presentation-requests/focus-boundary-with-modifiers.json +11 -0
  103. package/conformance/invalid-presentation-requests/focus-boundary-with-selector.json +8 -0
  104. package/conformance/invalid-presentation-requests/focus-boundary-with-surface.json +8 -0
  105. package/conformance/invalid-presentation-requests/focus-boundary-with-target.json +8 -0
  106. package/conformance/invalid-presentation-requests/focus-boundary-with-timestamp.json +8 -0
  107. package/conformance/invalid-presentation-requests/focus-boundary-with-z-index.json +8 -0
  108. package/conformance/invalid-presentation-requests/present-missing-surface.json +4 -0
  109. package/conformance/invalid-presentation-requests/unknown-surface.json +4 -0
  110. package/conformance/invalid-presentation-requests/widget-controls-coordinates.json +9 -0
  111. package/conformance/invalid-presentation-requests/widget-controls-geometry.json +8 -0
  112. package/conformance/invalid-presentation-requests/widget-controls-instance-id.json +8 -0
  113. package/conformance/invalid-presentation-requests/widget-controls-principal.json +8 -0
  114. package/conformance/invalid-presentation-requests/widget-controls-run-id.json +4 -0
  115. package/conformance/invalid-presentation-requests/widget-controls-widget-id.json +8 -0
  116. package/conformance/invalid-presentation-requests/widget-controls-widget-version-id.json +8 -0
  117. package/conformance/invalid-presentation-requests/widget-controls-z-index.json +4 -0
  118. package/conformance/invalid-render-inputs/malformed.json +17 -0
  119. package/conformance/manifests/valid-file-preview.json +12 -0
  120. package/conformance/manifests/valid-file-write-preview.json +30 -0
  121. package/conformance/manifests/valid-network.json +15 -0
  122. package/conformance/manifests/valid-panel.json +11 -0
  123. package/conformance/manifests/valid-presentation-panel.json +21 -0
  124. package/conformance/manifests/valid-region-panel.json +18 -0
  125. package/conformance/manifests/valid-tool-result.json +14 -0
  126. package/conformance/render-inputs/compatibility/literature-search-paper-results.json +75 -0
  127. package/conformance/render-inputs/compatibility/scientific-bibliography-bibtex.json +10 -0
  128. package/conformance/render-inputs/compatibility/scientific-dataset-csv.json +10 -0
  129. package/conformance/render-inputs/compatibility/scientific-manuscript-latex.json +10 -0
  130. package/conformance/render-inputs/compatibility/scientific-manuscript-markdown.json +10 -0
  131. package/conformance/render-inputs/compatibility/scientific-molecule-mol.json +10 -0
  132. package/conformance/render-inputs/compatibility/scientific-molecule-mol2.json +10 -0
  133. package/conformance/render-inputs/compatibility/scientific-notebook-ipynb.json +10 -0
  134. package/conformance/render-inputs/compatibility/scientific-paper-pdf.json +10 -0
  135. package/conformance/render-inputs/compatibility/scientific-protein-pdb.json +10 -0
  136. package/conformance/render-inputs/compatibility/scientific-source-python.json +10 -0
  137. package/conformance/render-inputs/compatibility/scientific-structure-cif.json +47 -0
  138. package/conformance/render-inputs/compatibility/scientific-structure-poscar.json +10 -0
  139. package/conformance/render-inputs/compatibility/scientific-structure-stru.json +10 -0
  140. package/conformance/render-inputs/compatibility/scientific-trajectory-xyz.json +10 -0
  141. package/conformance/render-inputs/compatibility/thinking-process-paper-search.json +25 -0
  142. package/conformance/render-inputs/compatibility/thinking-process-scholar-search.json +25 -0
  143. package/conformance/render-inputs/compatibility/thinking-process-web-search.json +25 -0
  144. package/conformance/render-inputs/compatibility/workspace-file-search.json +24 -0
  145. package/conformance/render-inputs/compatibility/workspace-file-tree.json +24 -0
  146. package/conformance/render-inputs/empty.json +10 -0
  147. package/conformance/render-inputs/file-preview.json +10 -0
  148. package/conformance/render-inputs/incremental-update.json +10 -0
  149. package/conformance/render-inputs/large.json +10 -0
  150. package/conformance/render-inputs/malformed.json +1 -0
  151. package/conformance/render-inputs/panel.json +10 -0
  152. package/conformance/render-inputs/partial-state-full-snapshot.json +40 -0
  153. package/conformance/render-inputs/tool-result.json +10 -0
  154. package/conformance/resource-budgets/corpus.json +431 -0
  155. package/dist/cli.mjs +15577 -0
  156. package/dist/contracts.d.ts +2 -0
  157. package/dist/contracts.js +1 -0
  158. package/dist/index.d.ts +2 -2
  159. package/dist/index.js +42 -8
  160. package/dist/runtime/index.js +1 -1
  161. package/dist/{runtime-RyAEhkyn.js → runtime-D7KxTtdu.js} +1 -1
  162. package/dist/widget.d.ts +20 -1
  163. package/llms.txt +11 -1
  164. package/package.json +17 -3
  165. package/schemas/host-runtime-config.schema.json +305 -0
  166. package/schemas/widget-manifest.schema.json +361 -0
  167. package/schemas/widget-plugin-manifest.schema.json +162 -0
  168. package/schemas/widget-runtime-contracts.schema.json +2870 -0
@@ -0,0 +1,12 @@
1
+ {
2
+ "ok": true,
3
+ "data": {
4
+ "content": "sim",
5
+ "encoding": "utf8",
6
+ "offset": 0,
7
+ "bytesRead": 3,
8
+ "nextOffset": 3,
9
+ "eof": false,
10
+ "truncated": true
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "ok": true,
3
+ "data": {
4
+ "content": "1\n\nH 0 0 0\n",
5
+ "encoding": "utf8",
6
+ "offset": 0,
7
+ "bytesRead": 11,
8
+ "nextOffset": 11,
9
+ "eof": true,
10
+ "revision": "rev-1"
11
+ }
12
+ }
@@ -0,0 +1 @@
1
+ {"ok":false,"reason":"resource-limit","message":"request exceeds the file read budget","retryable":false}
@@ -0,0 +1,6 @@
1
+ {
2
+ "ok": false,
3
+ "reason": "revision-conflict",
4
+ "message": "Host could not confirm this file operation",
5
+ "retryable": false
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "ok": true,
3
+ "data": {
4
+ "content": "simulation complete",
5
+ "encoding": "utf8"
6
+ }
7
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "ok": false,
3
+ "reason": "write-outcome-unknown",
4
+ "message": "Host could not confirm this file operation",
5
+ "retryable": false
6
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "ok": true,
3
+ "data": {
4
+ "file": {
5
+ "id": "file-001",
6
+ "kind": "file",
7
+ "name": "structure.xyz",
8
+ "revision": "rev-2",
9
+ "size": 11
10
+ },
11
+ "revision": "rev-2",
12
+ "bytesWritten": 11,
13
+ "mutationId": "save-001"
14
+ }
15
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-public-1",
5
+ "hostId": "host-public-1",
6
+ "runId": "run-public-1",
7
+ "mode": "preview",
8
+ "issuedAt": "2026-09-03T10:00:00Z",
9
+ "expiresAt": "2026-09-03T11:00:00Z",
10
+ "recheckAt": "2026-09-03T10:30:00Z",
11
+ "securityProfile": "runtime-security-profile-v1",
12
+ "resourceBudget": {
13
+ "version": 1,
14
+ "bundle": { "compressedBytes": 1, "expandedBytes": 1, "fileCount": 1, "singleFileBytes": 1 },
15
+ "bridge": { "messageBytes": 1, "messagesPerSecond": 1, "pendingRequests": 1 },
16
+ "files": { "readBytesPerRequest": 1, "readBytesPerRun": 1, "callsPerMinute": 1, "listPageSize": 1 },
17
+ "timeouts": { "bundleLoadMs": 1, "handshakeMs": 1, "firstRenderMs": 1, "updateMs": 1, "capabilityMs": 1, "disposeGraceMs": 1 },
18
+ "concurrency": { "activeIframesPerPage": 1, "activeIframesPerRun": 1, "hiddenRecycleMs": 1 },
19
+ "retry": { "maxAttempts": 1, "initialDelayMs": 1, "maxDelayMs": 1, "totalMs": 1 },
20
+ "failure": { "consecutiveFailures": 1, "windowMs": 1 }
21
+ },
22
+ "runtime": {
23
+ "origin": "https://widgets.example.test",
24
+ "catalogRevision": "catalog-public-1",
25
+ "profile": "public-isolated"
26
+ },
27
+ "network": {
28
+ "mode": "unavailable",
29
+ "policyVersion": "network-policy-v1",
30
+ "limits": {
31
+ "timeoutMs": 10000,
32
+ "maxRedirects": 5,
33
+ "maxConcurrentRequests": 4,
34
+ "callsPerMinute": 60,
35
+ "requestHeaderBytes": 16384,
36
+ "responseHeaderBytes": 32768,
37
+ "requestBodyBytes": 1048576,
38
+ "responseBodyBytes": 8388608
39
+ }
40
+ },
41
+ "bindings": [
42
+ {
43
+ "status": "loadable",
44
+ "bindingId": "binding-public-1",
45
+ "widgetId": "widget-public-1",
46
+ "widgetVersionId": "widget-version-public-1",
47
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
48
+ "trustClass": "external",
49
+ "runtimeProfile": "public-isolated",
50
+ "manifest": {
51
+ "name": "Public User Profile",
52
+ "widgetConfig": {
53
+ "schemaVersion": 1,
54
+ "hostApiVersion": 1,
55
+ "widgetSdkVersion": "0.1.0",
56
+ "entry": "entry.js",
57
+ "contribution": { "type": "panel", "id": "public-user-profile" },
58
+ "requestedPermissions": ["host.user.profile.read"],
59
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
60
+ }
61
+ },
62
+ "launch": { "url": "https://widgets.example.test/launch/public", "expiresAt": "2026-09-03T11:00:00Z" },
63
+ "grantedCapabilities": [
64
+ {
65
+ "name": "service.invoke",
66
+ "services": [{ "service": "host.user", "actions": ["profile.read"] }],
67
+ "limits": { "callsPerMinute": 10, "requestBytes": 4096, "responseBytes": 16384 }
68
+ }
69
+ ],
70
+ "serviceAuthorization": {
71
+ "kind": "host-service-authorization",
72
+ "policy": "host-user-data-v1",
73
+ "status": "granted",
74
+ "hostId": "host-public-1",
75
+ "widgetVersionId": "widget-version-public-1",
76
+ "bundleDigest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
77
+ "reviewRevision": "review-public-1",
78
+ "grantRevision": "grant-public-1",
79
+ "reviewedPermissions": ["host.user.profile.read"],
80
+ "grantedPermissions": ["host.user.profile.read"],
81
+ "expiresAt": "2026-09-03T10:00:00Z"
82
+ }
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-public-1",
5
+ "hostId": "host-public-1",
6
+ "runId": "run-public-1",
7
+ "mode": "preview",
8
+ "issuedAt": "2026-09-03T10:00:00Z",
9
+ "expiresAt": "2026-09-03T11:00:00Z",
10
+ "recheckAt": "2026-09-03T10:30:00Z",
11
+ "securityProfile": "runtime-security-profile-v1",
12
+ "resourceBudget": {
13
+ "version": 1,
14
+ "bundle": { "compressedBytes": 1, "expandedBytes": 1, "fileCount": 1, "singleFileBytes": 1 },
15
+ "bridge": { "messageBytes": 1, "messagesPerSecond": 1, "pendingRequests": 1 },
16
+ "files": { "readBytesPerRequest": 1, "readBytesPerRun": 1, "callsPerMinute": 1, "listPageSize": 1 },
17
+ "timeouts": { "bundleLoadMs": 1, "handshakeMs": 1, "firstRenderMs": 1, "updateMs": 1, "capabilityMs": 1, "disposeGraceMs": 1 },
18
+ "concurrency": { "activeIframesPerPage": 1, "activeIframesPerRun": 1, "hiddenRecycleMs": 1 },
19
+ "retry": { "maxAttempts": 1, "initialDelayMs": 1, "maxDelayMs": 1, "totalMs": 1 },
20
+ "failure": { "consecutiveFailures": 1, "windowMs": 1 }
21
+ },
22
+ "runtime": {
23
+ "origin": "https://widgets.example.test",
24
+ "catalogRevision": "catalog-public-1",
25
+ "profile": "public-isolated"
26
+ },
27
+ "network": {
28
+ "mode": "unavailable",
29
+ "policyVersion": "network-policy-v1",
30
+ "limits": {
31
+ "timeoutMs": 10000,
32
+ "maxRedirects": 5,
33
+ "maxConcurrentRequests": 4,
34
+ "callsPerMinute": 60,
35
+ "requestHeaderBytes": 16384,
36
+ "responseHeaderBytes": 32768,
37
+ "requestBodyBytes": 1048576,
38
+ "responseBodyBytes": 8388608
39
+ }
40
+ },
41
+ "bindings": [
42
+ {
43
+ "status": "loadable",
44
+ "bindingId": "binding-public-1",
45
+ "widgetId": "widget-public-1",
46
+ "widgetVersionId": "widget-version-public-1",
47
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
48
+ "trustClass": "external",
49
+ "runtimeProfile": "public-isolated",
50
+ "manifest": {
51
+ "name": "Public User Profile",
52
+ "widgetConfig": {
53
+ "schemaVersion": 1,
54
+ "hostApiVersion": 1,
55
+ "widgetSdkVersion": "0.1.0",
56
+ "entry": "entry.js",
57
+ "contribution": { "type": "panel", "id": "public-user-profile" },
58
+ "requestedPermissions": ["host.user.profile.read"],
59
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
60
+ }
61
+ },
62
+ "launch": { "url": "https://widgets.example.test/launch/public", "expiresAt": "2026-09-03T11:00:00Z" },
63
+ "grantedCapabilities": [
64
+ {
65
+ "name": "service.invoke",
66
+ "services": [{ "service": "host.user", "actions": ["profile.read"] }],
67
+ "limits": { "callsPerMinute": 10, "requestBytes": 4096, "responseBytes": 16384 }
68
+ }
69
+ ],
70
+ "serviceAuthorization": {
71
+ "kind": "host-service-authorization",
72
+ "policy": "host-user-data-v1",
73
+ "status": "granted",
74
+ "hostId": "wrong-host",
75
+ "widgetVersionId": "widget-version-public-1",
76
+ "bundleDigest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
77
+ "reviewRevision": "review-public-1",
78
+ "grantRevision": "grant-public-1",
79
+ "reviewedPermissions": ["host.user.profile.read"],
80
+ "grantedPermissions": ["host.user.profile.read"],
81
+ "expiresAt": "2026-09-03T11:00:00Z"
82
+ }
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-public-1",
5
+ "hostId": "host-public-1",
6
+ "runId": "run-public-1",
7
+ "mode": "preview",
8
+ "issuedAt": "2026-09-03T10:00:00Z",
9
+ "expiresAt": "2026-09-03T11:00:00Z",
10
+ "recheckAt": "2026-09-03T10:30:00Z",
11
+ "securityProfile": "runtime-security-profile-v1",
12
+ "resourceBudget": {
13
+ "version": 1,
14
+ "bundle": { "compressedBytes": 1, "expandedBytes": 1, "fileCount": 1, "singleFileBytes": 1 },
15
+ "bridge": { "messageBytes": 1, "messagesPerSecond": 1, "pendingRequests": 1 },
16
+ "files": { "readBytesPerRequest": 1, "readBytesPerRun": 1, "callsPerMinute": 1, "listPageSize": 1 },
17
+ "timeouts": { "bundleLoadMs": 1, "handshakeMs": 1, "firstRenderMs": 1, "updateMs": 1, "capabilityMs": 1, "disposeGraceMs": 1 },
18
+ "concurrency": { "activeIframesPerPage": 1, "activeIframesPerRun": 1, "hiddenRecycleMs": 1 },
19
+ "retry": { "maxAttempts": 1, "initialDelayMs": 1, "maxDelayMs": 1, "totalMs": 1 },
20
+ "failure": { "consecutiveFailures": 1, "windowMs": 1 }
21
+ },
22
+ "runtime": {
23
+ "origin": "https://widgets.example.test",
24
+ "catalogRevision": "catalog-public-1",
25
+ "profile": "public-isolated"
26
+ },
27
+ "network": {
28
+ "mode": "unavailable",
29
+ "policyVersion": "network-policy-v1",
30
+ "limits": {
31
+ "timeoutMs": 10000,
32
+ "maxRedirects": 5,
33
+ "maxConcurrentRequests": 4,
34
+ "callsPerMinute": 60,
35
+ "requestHeaderBytes": 16384,
36
+ "responseHeaderBytes": 32768,
37
+ "requestBodyBytes": 1048576,
38
+ "responseBodyBytes": 8388608
39
+ }
40
+ },
41
+ "bindings": [
42
+ {
43
+ "status": "loadable",
44
+ "bindingId": "binding-public-1",
45
+ "widgetId": "widget-public-1",
46
+ "widgetVersionId": "widget-version-public-1",
47
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
48
+ "trustClass": "external",
49
+ "runtimeProfile": "public-isolated",
50
+ "manifest": {
51
+ "name": "Public User Profile",
52
+ "widgetConfig": {
53
+ "schemaVersion": 1,
54
+ "hostApiVersion": 1,
55
+ "widgetSdkVersion": "0.1.0",
56
+ "entry": "entry.js",
57
+ "contribution": { "type": "panel", "id": "public-user-profile" },
58
+ "requestedPermissions": ["host.user.profile.read"],
59
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
60
+ }
61
+ },
62
+ "launch": { "url": "https://widgets.example.test/launch/public", "expiresAt": "2026-09-03T11:00:00Z" },
63
+ "grantedCapabilities": [
64
+ {
65
+ "name": "service.invoke",
66
+ "services": [{ "service": "host.user", "actions": ["profile.read"] }],
67
+ "limits": { "callsPerMinute": 10, "requestBytes": 4096, "responseBytes": 16384 }
68
+ }
69
+ ],
70
+ "serviceAuthorization": {
71
+ "kind": "host-service-authorization",
72
+ "policy": "host-user-data-v1",
73
+ "status": "granted",
74
+ "hostId": "host-public-1",
75
+ "widgetVersionId": "widget-version-public-1",
76
+ "bundleDigest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
77
+ "reviewRevision": "review-public-1",
78
+ "grantRevision": "grant-public-1",
79
+ "reviewedPermissions": ["host.user.email.read"],
80
+ "grantedPermissions": ["host.user.profile.read"],
81
+ "expiresAt": "2026-09-03T11:00:00Z"
82
+ }
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-public-required",
5
+ "hostId": "host-public-1",
6
+ "runId": "run-public-1",
7
+ "mode": "preview",
8
+ "issuedAt": "2026-09-03T10:00:00Z",
9
+ "expiresAt": "2026-09-03T11:00:00Z",
10
+ "recheckAt": "2026-09-03T10:30:00Z",
11
+ "securityProfile": "runtime-security-profile-v1",
12
+ "resourceBudget": {
13
+ "version": 1,
14
+ "bundle": { "compressedBytes": 1, "expandedBytes": 1, "fileCount": 1, "singleFileBytes": 1 },
15
+ "bridge": { "messageBytes": 1, "messagesPerSecond": 1, "pendingRequests": 1 },
16
+ "files": { "readBytesPerRequest": 1, "readBytesPerRun": 1, "callsPerMinute": 1, "listPageSize": 1 },
17
+ "timeouts": { "bundleLoadMs": 1, "handshakeMs": 1, "firstRenderMs": 1, "updateMs": 1, "capabilityMs": 1, "disposeGraceMs": 1 },
18
+ "concurrency": { "activeIframesPerPage": 1, "activeIframesPerRun": 1, "hiddenRecycleMs": 1 },
19
+ "retry": { "maxAttempts": 1, "initialDelayMs": 1, "maxDelayMs": 1, "totalMs": 1 },
20
+ "failure": { "consecutiveFailures": 1, "windowMs": 1 }
21
+ },
22
+ "runtime": { "origin": "https://widgets.example.test", "catalogRevision": "catalog-public-1", "profile": "public-isolated" },
23
+ "network": {
24
+ "mode": "unavailable",
25
+ "policyVersion": "network-policy-v1",
26
+ "limits": { "timeoutMs": 10000, "maxRedirects": 5, "maxConcurrentRequests": 4, "callsPerMinute": 60, "requestHeaderBytes": 16384, "responseHeaderBytes": 32768, "requestBodyBytes": 1048576, "responseBodyBytes": 8388608 }
27
+ },
28
+ "bindings": [
29
+ {
30
+ "status": "loadable",
31
+ "bindingId": "binding-public-required",
32
+ "widgetId": "widget-public-1",
33
+ "widgetVersionId": "widget-version-public-1",
34
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
35
+ "trustClass": "external",
36
+ "runtimeProfile": "public-isolated",
37
+ "manifest": {
38
+ "name": "Public User Profile",
39
+ "widgetConfig": {
40
+ "schemaVersion": 1,
41
+ "hostApiVersion": 1,
42
+ "widgetSdkVersion": "0.1.0",
43
+ "entry": "entry.js",
44
+ "contribution": { "type": "panel", "id": "public-user-profile" },
45
+ "requestedPermissions": ["host.user.profile.read"],
46
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
47
+ }
48
+ },
49
+ "launch": { "url": "https://widgets.example.test/launch/public-required", "expiresAt": "2026-09-03T11:00:00Z" },
50
+ "grantedCapabilities": [],
51
+ "serviceAuthorization": {
52
+ "kind": "host-service-authorization",
53
+ "policy": "host-user-data-v1",
54
+ "status": "authorization-required",
55
+ "hostId": "host-public-1",
56
+ "widgetVersionId": "widget-version-public-1",
57
+ "bundleDigest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
58
+ "reviewRevision": "review-public-1",
59
+ "reviewedPermissions": ["host.user.profile.read"],
60
+ "grantedPermissions": ["host.user.profile.read"],
61
+ "expiresAt": "2026-09-03T11:00:00Z"
62
+ }
63
+ }
64
+ ]
65
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-invalid",
5
+ "runId": "run-invalid",
6
+ "mode": "preview",
7
+ "issuedAt": "2026-09-03T10:00:00Z",
8
+ "expiresAt": "2026-09-03T10:01:00Z",
9
+ "recheckAt": "2026-09-03T10:00:30Z",
10
+ "securityProfile": "runtime-security-profile-v1",
11
+ "resourceBudget": {
12
+ "version": 1,
13
+ "bundle": { "compressedBytes": 1, "expandedBytes": 1, "fileCount": 1, "singleFileBytes": 1 },
14
+ "bridge": { "messageBytes": 1, "messagesPerSecond": 1, "pendingRequests": 1 },
15
+ "files": { "readBytesPerRequest": 1, "readBytesPerRun": 1, "callsPerMinute": 1, "listPageSize": 1 },
16
+ "timeouts": { "bundleLoadMs": 1, "handshakeMs": 1, "firstRenderMs": 1, "updateMs": 1, "capabilityMs": 1, "disposeGraceMs": 1 },
17
+ "concurrency": { "activeIframesPerPage": 1, "activeIframesPerRun": 1, "hiddenRecycleMs": 1 },
18
+ "retry": { "maxAttempts": 1, "initialDelayMs": 1, "maxDelayMs": 1, "totalMs": 1 },
19
+ "failure": { "consecutiveFailures": 1, "windowMs": 1 }
20
+ },
21
+ "runtime": { "origin": "https://widgets.example.test", "catalogRevision": "catalog-1" },
22
+ "network": {
23
+ "mode": "runtime-consent",
24
+ "policyVersion": "network-policy-1",
25
+ "limits": {
26
+ "timeoutMs": 10000,
27
+ "maxRedirects": 5,
28
+ "maxConcurrentRequests": 4,
29
+ "callsPerMinute": 60,
30
+ "requestHeaderBytes": 16384,
31
+ "responseHeaderBytes": 32768,
32
+ "requestBodyBytes": 1048576,
33
+ "responseBodyBytes": 8388608
34
+ }
35
+ },
36
+ "bindings": [
37
+ {
38
+ "status": "loadable",
39
+ "bindingId": "binding-invalid",
40
+ "widgetId": "widget-invalid",
41
+ "widgetVersionId": "widget-version-invalid",
42
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
43
+ "manifest": {
44
+ "name": "Incomplete manifest",
45
+ "widgetConfig": {
46
+ "entry": "entry.js",
47
+ "widgetSdkVersion": "0.0.1",
48
+ "contribution": { "type": "panel", "id": "analysis-summary" }
49
+ }
50
+ },
51
+ "launch": { "url": "https://widgets.example.test/launch/one-time", "expiresAt": "2026-09-03T10:01:00Z" },
52
+ "grantedCapabilities": []
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-static-origins",
5
+ "runId": "run-static-origins",
6
+ "mode": "preview",
7
+ "issuedAt": "2026-09-11T10:00:00Z",
8
+ "expiresAt": "2026-09-11T10:01:00Z",
9
+ "recheckAt": "2026-09-11T10:00:30Z",
10
+ "securityProfile": "runtime-security-profile-v1",
11
+ "resourceBudget": {
12
+ "version": 1,
13
+ "bundle": { "compressedBytes": 1, "expandedBytes": 1, "fileCount": 1, "singleFileBytes": 1 },
14
+ "bridge": { "messageBytes": 1, "messagesPerSecond": 1, "pendingRequests": 1 },
15
+ "files": { "readBytesPerRequest": 1, "readBytesPerRun": 1, "callsPerMinute": 1, "listPageSize": 1 },
16
+ "timeouts": { "bundleLoadMs": 1, "handshakeMs": 1, "firstRenderMs": 1, "updateMs": 1, "capabilityMs": 1, "disposeGraceMs": 1 },
17
+ "concurrency": { "activeIframesPerPage": 1, "activeIframesPerRun": 1, "hiddenRecycleMs": 1 },
18
+ "retry": { "maxAttempts": 1, "initialDelayMs": 1, "maxDelayMs": 1, "totalMs": 1 },
19
+ "failure": { "consecutiveFailures": 1, "windowMs": 1 }
20
+ },
21
+ "runtime": { "origin": "https://widgets.example.test", "catalogRevision": "catalog-1" },
22
+ "network": {
23
+ "mode": "runtime-consent",
24
+ "policyVersion": "network-policy-1",
25
+ "limits": {
26
+ "timeoutMs": 10000,
27
+ "maxRedirects": 5,
28
+ "maxConcurrentRequests": 4,
29
+ "callsPerMinute": 60,
30
+ "requestHeaderBytes": 16384,
31
+ "responseHeaderBytes": 32768,
32
+ "requestBodyBytes": 1048576,
33
+ "responseBodyBytes": 8388608
34
+ }
35
+ },
36
+ "bindings": [
37
+ {
38
+ "status": "loadable",
39
+ "bindingId": "binding-static",
40
+ "widgetId": "widget-static",
41
+ "widgetVersionId": "widget-static-version",
42
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
43
+ "manifest": {
44
+ "name": "Static Origins",
45
+ "widgetConfig": {
46
+ "schemaVersion": 1,
47
+ "hostApiVersion": 1,
48
+ "widgetSdkVersion": "0.0.1",
49
+ "entry": "entry.js",
50
+ "contribution": { "type": "panel", "id": "static-origins" },
51
+ "outboundOrigins": ["https://api.example.test"],
52
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
53
+ }
54
+ },
55
+ "launch": { "url": "https://widgets.example.test/launch/one-time", "expiresAt": "2026-09-11T10:01:00Z" },
56
+ "grantedCapabilities": [],
57
+ "grantedOutboundOrigins": ["https://api.example.test"]
58
+ }
59
+ ]
60
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-public-required",
5
+ "hostId": "host-public-1",
6
+ "runId": "run-public-1",
7
+ "mode": "preview",
8
+ "issuedAt": "2026-09-03T10:00:00Z",
9
+ "expiresAt": "2026-09-03T11:00:00Z",
10
+ "recheckAt": "2026-09-03T10:30:00Z",
11
+ "securityProfile": "runtime-security-profile-v1",
12
+ "resourceBudget": {
13
+ "version": 1,
14
+ "bundle": { "compressedBytes": 1, "expandedBytes": 1, "fileCount": 1, "singleFileBytes": 1 },
15
+ "bridge": { "messageBytes": 1, "messagesPerSecond": 1, "pendingRequests": 1 },
16
+ "files": { "readBytesPerRequest": 1, "readBytesPerRun": 1, "callsPerMinute": 1, "listPageSize": 1 },
17
+ "timeouts": { "bundleLoadMs": 1, "handshakeMs": 1, "firstRenderMs": 1, "updateMs": 1, "capabilityMs": 1, "disposeGraceMs": 1 },
18
+ "concurrency": { "activeIframesPerPage": 1, "activeIframesPerRun": 1, "hiddenRecycleMs": 1 },
19
+ "retry": { "maxAttempts": 1, "initialDelayMs": 1, "maxDelayMs": 1, "totalMs": 1 },
20
+ "failure": { "consecutiveFailures": 1, "windowMs": 1 }
21
+ },
22
+ "runtime": { "origin": "https://widgets.example.test", "catalogRevision": "catalog-public-1", "profile": "public-isolated" },
23
+ "network": {
24
+ "mode": "unavailable",
25
+ "policyVersion": "network-policy-v1",
26
+ "limits": { "timeoutMs": 10000, "maxRedirects": 5, "maxConcurrentRequests": 4, "callsPerMinute": 60, "requestHeaderBytes": 16384, "responseHeaderBytes": 32768, "requestBodyBytes": 1048576, "responseBodyBytes": 8388608 }
27
+ },
28
+ "bindings": [
29
+ {
30
+ "status": "loadable",
31
+ "bindingId": "binding-public-required",
32
+ "widgetId": "widget-public-1",
33
+ "widgetVersionId": "widget-version-public-1",
34
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
35
+ "trustClass": "external",
36
+ "runtimeProfile": "public-isolated",
37
+ "manifest": {
38
+ "name": "Public User Profile",
39
+ "widgetConfig": {
40
+ "schemaVersion": 1,
41
+ "hostApiVersion": 1,
42
+ "widgetSdkVersion": "0.1.0",
43
+ "entry": "entry.js",
44
+ "contribution": { "type": "panel", "id": "public-user-profile" },
45
+ "requestedPermissions": ["host.user.profile.read"],
46
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
47
+ }
48
+ },
49
+ "launch": { "url": "https://widgets.example.test/launch/public-required", "expiresAt": "2026-09-03T11:00:00Z" },
50
+ "grantedCapabilities": [],
51
+ "serviceAuthorization": {
52
+ "kind": "host-service-authorization",
53
+ "policy": "host-user-data-v1",
54
+ "status": "authorization-required",
55
+ "hostId": "host-public-1",
56
+ "widgetVersionId": "widget-version-public-1",
57
+ "bundleDigest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
58
+ "reviewRevision": "review-public-1",
59
+ "reviewedPermissions": ["host.user.profile.read"],
60
+ "grantedPermissions": [],
61
+ "expiresAt": "2026-09-03T11:00:00Z"
62
+ }
63
+ }
64
+ ]
65
+ }