@dp-bohrium/widget-sdk 0.5.0 → 0.7.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 (188) hide show
  1. package/AGENTS.md +13 -4
  2. package/CHANGELOG.md +39 -1
  3. package/README.md +33 -20
  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 +2874 -0
  15. package/assets/toolchain.json +28 -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 +15618 -0
  156. package/dist/contracts.d.ts +2 -0
  157. package/dist/contracts.js +2 -0
  158. package/dist/index.d.ts +2 -2
  159. package/dist/index.js +17 -11
  160. package/dist/manifest.d.ts +1 -1
  161. package/dist/protocol/generated-host-runtime-config.d.ts +551 -0
  162. package/dist/protocol/generated-manifest.d.ts +192 -0
  163. package/dist/protocol/generated-plugin-manifest.d.ts +176 -0
  164. package/dist/protocol/generated-runtime-contracts.d.ts +1224 -0
  165. package/dist/protocol/index.d.ts +43 -0
  166. package/dist/protocol/plugin-manifest.d.ts +30 -0
  167. package/dist/protocol/widget-events.d.ts +13 -0
  168. package/dist/runtime/bootstrap.d.ts +1 -1
  169. package/dist/runtime/client.d.ts +1 -1
  170. package/dist/runtime/event-validation.d.ts +1 -1
  171. package/dist/runtime/events.d.ts +1 -1
  172. package/dist/runtime/files.d.ts +1 -1
  173. package/dist/runtime/index.d.ts +1 -1
  174. package/dist/runtime/index.js +1 -1
  175. package/dist/runtime/mock-host.d.ts +1 -1
  176. package/dist/runtime/network.d.ts +1 -1
  177. package/dist/runtime/protocol-endpoint.d.ts +1 -1
  178. package/dist/runtime/service.d.ts +2 -2
  179. package/dist/runtime/transport.d.ts +1 -1
  180. package/dist/{runtime-DVFTv55x.js → runtime-DZA7Gqzl.js} +1 -1
  181. package/dist/widget-events-BT0QxR-H.js +65 -0
  182. package/dist/widget.d.ts +2 -2
  183. package/llms.txt +8 -1
  184. package/package.json +18 -6
  185. package/schemas/host-runtime-config.schema.json +305 -0
  186. package/schemas/widget-manifest.schema.json +361 -0
  187. package/schemas/widget-plugin-manifest.schema.json +162 -0
  188. package/schemas/widget-runtime-contracts.schema.json +2874 -0
@@ -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-03T11:00:00Z"
82
+ }
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-public-no-permissions",
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-no-permissions",
32
+ "widgetId": "widget-public-no-permissions",
33
+ "widgetVersionId": "widget-version-public-no-permissions",
34
+ "digest": "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789",
35
+ "trustClass": "external",
36
+ "runtimeProfile": "public-isolated",
37
+ "manifest": {
38
+ "name": "Public Widget Without User Data",
39
+ "widgetConfig": {
40
+ "schemaVersion": 1,
41
+ "hostApiVersion": 1,
42
+ "widgetSdkVersion": "0.1.0",
43
+ "entry": "entry.js",
44
+ "contribution": { "type": "panel", "id": "public-no-user-data" },
45
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
46
+ }
47
+ },
48
+ "launch": { "url": "https://widgets.example.test/launch/public-no-permissions", "expiresAt": "2026-09-03T11:00:00Z" },
49
+ "grantedCapabilities": []
50
+ }
51
+ ]
52
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "hostApiVersion": 1,
4
+ "configId": "config-1",
5
+ "runId": "run-1",
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": {
22
+ "origin": "https://widgets.example.test",
23
+ "catalogRevision": "catalog-2026-09-11.1"
24
+ },
25
+ "network": {
26
+ "mode": "runtime-consent",
27
+ "policyVersion": "network-policy-v1",
28
+ "limits": {
29
+ "timeoutMs": 10000,
30
+ "maxRedirects": 5,
31
+ "maxConcurrentRequests": 4,
32
+ "callsPerMinute": 60,
33
+ "requestHeaderBytes": 16384,
34
+ "responseHeaderBytes": 32768,
35
+ "requestBodyBytes": 1048576,
36
+ "responseBodyBytes": 8388608
37
+ }
38
+ },
39
+ "bindings": [
40
+ {
41
+ "status": "loadable",
42
+ "bindingId": "binding-1",
43
+ "widgetId": "widget-1",
44
+ "widgetVersionId": "widget-version-1",
45
+ "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
46
+ "manifest": {
47
+ "name": "Analysis Summary",
48
+ "description": "A complete manifest.",
49
+ "widgetConfig": {
50
+ "schemaVersion": 1,
51
+ "hostApiVersion": 1,
52
+ "widgetSdkVersion": "0.0.1",
53
+ "entry": "entry.js",
54
+ "contribution": { "type": "panel", "id": "analysis-summary" },
55
+ "requestedCapabilities": { "network": { "fetch": true } },
56
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/panel.json" }]
57
+ }
58
+ },
59
+ "launch": { "url": "https://widgets.example.test/launch/one-time", "expiresAt": "2026-09-03T10:01:00Z" },
60
+ "grantedCapabilities": [
61
+ {
62
+ "name": "network.fetch",
63
+ "limits": {
64
+ "timeoutMs": 10000,
65
+ "maxRedirects": 5,
66
+ "maxConcurrentRequests": 4,
67
+ "callsPerMinute": 60,
68
+ "requestHeaderBytes": 16384,
69
+ "responseHeaderBytes": 32768,
70
+ "requestBodyBytes": 1048576,
71
+ "responseBodyBytes": 8388608
72
+ }
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "status": "fallback",
78
+ "bindingId": "binding-2",
79
+ "widgetId": "widget-2",
80
+ "widgetVersionId": "widget-version-2",
81
+ "contribution": { "type": "file-preview", "extensions": ["cif"] },
82
+ "reason": "not-approved"
83
+ }
84
+ ]
85
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "protocolVersion": 1,
3
+ "channelId": "0123456789abcdef0123456789abcdef",
4
+ "messageId": "widget-network-invalid-header-1",
5
+ "sequence": 4,
6
+ "type": "capability-request",
7
+ "payload": {
8
+ "requestId": "network-invalid-header-1",
9
+ "request": {
10
+ "operation": "network.fetch",
11
+ "input": {
12
+ "url": "https://api.example.test/private",
13
+ "auth": "required",
14
+ "method": "GET",
15
+ "headers": {
16
+ "pRoXy-AuThOrIzAtIoN": "must-stay-host-private"
17
+ }
18
+ }
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "files.write",
3
+ "limits": {
4
+ "bytesPerRequest": 1024,
5
+ "bytesPerRun": 4096,
6
+ "callsPerMinute": 30
7
+ },
8
+ "fileId": "file-001"
9
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "files.write",
3
+ "limits": {}
4
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "operation": "files.write",
3
+ "input": {
4
+ "file": {
5
+ "id": "file-001",
6
+ "kind": "file",
7
+ "name": "structure.xyz",
8
+ "revision": "rev-1"
9
+ },
10
+ "content": "1\n\nH 0 0 0\n",
11
+ "encoding": "utf8",
12
+ "expectedRevision": "rev-1",
13
+ "mutationId": "save-001",
14
+ "path": "/workspace/structure.xyz"
15
+ }
16
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "operation": "files.write",
3
+ "input": {
4
+ "file": {
5
+ "id": "file-001",
6
+ "kind": "file",
7
+ "name": "structure.xyz",
8
+ "revision": "rev-1"
9
+ },
10
+ "content": "1\n\nH 0 0 0\n",
11
+ "encoding": "utf8",
12
+ "mutationId": "save-001"
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "operation": "files.write",
3
+ "input": {
4
+ "file": {
5
+ "id": "file-001",
6
+ "kind": "file",
7
+ "name": "structure.xyz",
8
+ "revision": "rev-1"
9
+ },
10
+ "content": "1\n\nH 0 0 0\n",
11
+ "encoding": "utf8",
12
+ "expectedRevision": "rev-1"
13
+ }
14
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "operation": "files.write",
3
+ "input": {
4
+ "file": {
5
+ "id": "file-001",
6
+ "kind": "file",
7
+ "name": "structure.xyz",
8
+ "revision": "rev-1",
9
+ "path": "/workspace/structure.xyz"
10
+ },
11
+ "content": "1\n\nH 0 0 0\n",
12
+ "encoding": "utf8",
13
+ "expectedRevision": "rev-1",
14
+ "mutationId": "save-001"
15
+ }
16
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "content": "simulation complete",
3
+ "encoding": "utf8",
4
+ "revision": ""
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "content": "simulation complete",
3
+ "encoding": "utf8",
4
+ "revision": null
5
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "file": {
3
+ "id": "file-001",
4
+ "kind": "file",
5
+ "name": "structure.xyz",
6
+ "revision": "rev-2",
7
+ "size": 11
8
+ },
9
+ "revision": "rev-2",
10
+ "bytesWritten": 11
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "Missing target",
3
+ "widgetConfig": {
4
+ "schemaVersion": 1,
5
+ "hostApiVersion": 1,
6
+ "widgetSdkVersion": "0.0.1",
7
+ "entry": "dist/widget.js",
8
+ "contribution": { "type": "panel" },
9
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/normal.json" }]
10
+ }
11
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "Invalid duplicate presentation surfaces",
3
+ "widgetConfig": {
4
+ "schemaVersion": 1,
5
+ "hostApiVersion": 1,
6
+ "widgetSdkVersion": "0.0.1",
7
+ "entry": "dist/widget.js",
8
+ "contribution": { "type": "panel", "id": "research-panel" },
9
+ "requestedCapabilities": {
10
+ "presentation": { "surfaces": ["floating", "floating"] }
11
+ },
12
+ "samples": [
13
+ { "id": "normal", "title": "Panel", "request": "samples/panel.json" }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "Invalid empty presentation surfaces",
3
+ "widgetConfig": {
4
+ "schemaVersion": 1,
5
+ "hostApiVersion": 1,
6
+ "widgetSdkVersion": "0.0.1",
7
+ "entry": "dist/widget.js",
8
+ "contribution": { "type": "panel", "id": "research-panel" },
9
+ "requestedCapabilities": { "presentation": { "surfaces": [] } },
10
+ "samples": [
11
+ { "id": "normal", "title": "Panel", "request": "samples/panel.json" }
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "Invalid unknown presentation surface",
3
+ "widgetConfig": {
4
+ "schemaVersion": 1,
5
+ "hostApiVersion": 1,
6
+ "widgetSdkVersion": "0.0.1",
7
+ "entry": "dist/widget.js",
8
+ "contribution": { "type": "panel", "id": "research-panel" },
9
+ "requestedCapabilities": {
10
+ "presentation": { "surfaces": ["popover"] }
11
+ },
12
+ "samples": [
13
+ { "id": "normal", "title": "Panel", "request": "samples/panel.json" }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "Unknown field",
3
+ "widgetConfig": {
4
+ "schemaVersion": 1,
5
+ "hostApiVersion": 1,
6
+ "widgetSdkVersion": "0.0.1",
7
+ "entry": "dist/widget.js",
8
+ "contribution": { "type": "panel", "id": "analysis-summary" },
9
+ "samples": [{ "id": "normal", "title": "Normal", "request": "samples/normal.json" }],
10
+ "internalToken": "must-not-be-accepted"
11
+ }
12
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "operation": "network.fetch",
3
+ "input": {
4
+ "url": "https://api.example.test/private",
5
+ "auth": "optional",
6
+ "method": "GET",
7
+ "headers": {
8
+ "x-aPi-kEy": "must-stay-host-private"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "ui.presentation",
3
+ "surfaces": ["floating", "floating"],
4
+ "requiresHostConfirmation": true
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "ui.presentation",
3
+ "surfaces": [],
4
+ "requiresHostConfirmation": true
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "ui.presentation",
3
+ "surfaces": ["floating"],
4
+ "requiresHostConfirmation": false
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "ui.presentation",
3
+ "surfaces": ["floating"]
4
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "ui.presentation",
3
+ "surfaces": ["popover"],
4
+ "requiresHostConfirmation": true
5
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": { "action": "change-surface" }
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": { "action": "close", "surface": "workspace" }
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": { "action": "focus-boundary" }
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": { "action": "focus-boundary", "direction": "sideways" }
4
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "x": 10,
7
+ "y": 20
8
+ }
9
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "isTrusted": true
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "runtimeGeneration": "generation-1"
7
+ }
8
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "principal": "user-1",
7
+ "runId": "run-1",
8
+ "widgetId": "widget-1",
9
+ "widgetVersionId": "widget-version-1",
10
+ "instanceId": "instance-1"
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "key": "Escape"
7
+ }
8
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "backward",
6
+ "altKey": false,
7
+ "ctrlKey": false,
8
+ "metaKey": false,
9
+ "shiftKey": true
10
+ }
11
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "selector": "#host-secret"
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "surface": "overlay"
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "target": "panel-2"
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "timestamp": 1234
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "focus-boundary",
5
+ "direction": "forward",
6
+ "zIndex": 9999
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": { "action": "present" }
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": { "action": "present", "surface": "popover" }
4
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "operation": "ui.presentation",
3
+ "input": {
4
+ "action": "present",
5
+ "surface": "floating",
6
+ "x": 120,
7
+ "y": 80
8
+ }
9
+ }