@fungi.computer/oyster 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 (185) hide show
  1. package/README.md +155 -63
  2. package/dist/agent-archive-projection.d.ts +8 -0
  3. package/dist/agent-archive-projection.js +49 -0
  4. package/dist/agent-schedules.d.ts +50 -0
  5. package/dist/agent-schedules.js +17 -0
  6. package/dist/agents.d.ts +35 -14
  7. package/dist/agents.js +97 -144
  8. package/dist/app-builds.d.ts +7 -2
  9. package/dist/app-builds.js +19 -2
  10. package/dist/approval-capability.d.ts +1 -1
  11. package/dist/approval-capability.js +11 -16
  12. package/dist/approval-home.d.ts +2 -1
  13. package/dist/approval-home.js +5 -3
  14. package/dist/apps/catalog.js +1 -1
  15. package/dist/apps/gate.d.ts +4 -7
  16. package/dist/apps/gate.js +14 -29
  17. package/dist/apps/index.d.ts +1 -1
  18. package/dist/apps/installation.d.ts +4 -42
  19. package/dist/apps/installation.js +7 -75
  20. package/dist/apps/operations.js +0 -10
  21. package/dist/apps/permissions.d.ts +18 -8
  22. package/dist/apps/permissions.js +7 -1
  23. package/dist/auth.js +9 -1
  24. package/dist/authorization.d.ts +307 -0
  25. package/dist/authorization.js +542 -0
  26. package/dist/boot-host-script.js +1 -1
  27. package/dist/build/build-jobs.d.ts +2 -2
  28. package/dist/build/candidate-builder.d.ts +2 -0
  29. package/dist/build/candidate-builder.js +5 -1
  30. package/dist/build/candidate-cli.js +3 -0
  31. package/dist/build/candidate-cli.mjs +67 -22
  32. package/dist/build/job-log.d.ts +23 -0
  33. package/dist/build/job-log.js +88 -0
  34. package/dist/build/local-build.d.ts +2 -0
  35. package/dist/build/local-build.js +11 -9
  36. package/dist/channels/binding.d.ts +8 -1
  37. package/dist/channels/binding.js +12 -0
  38. package/dist/channels/conversations.d.ts +16 -5
  39. package/dist/channels/visitor-channel.d.ts +53 -0
  40. package/dist/channels/visitor-channel.js +124 -0
  41. package/dist/channels/visitor-edge.d.ts +115 -0
  42. package/dist/channels/visitor-edge.js +582 -0
  43. package/dist/channels/visitor-request.d.ts +7 -0
  44. package/dist/channels/visitor-request.js +17 -0
  45. package/dist/channels/visitor-stream-slots.d.ts +2 -0
  46. package/dist/channels/visitor-stream-slots.js +33 -0
  47. package/dist/channels/visitors.d.ts +47 -0
  48. package/dist/channels/visitors.js +181 -0
  49. package/dist/cloudflare.d.ts +11 -2
  50. package/dist/cloudflare.js +27 -1
  51. package/dist/{page/computer-target.d.ts → computer-target.d.ts} +2 -0
  52. package/dist/{page/computer-target.js → computer-target.js} +3 -1
  53. package/dist/files.js +9 -8
  54. package/dist/git-admission.d.ts +3 -3
  55. package/dist/git-admission.js +4 -6
  56. package/dist/git-door.d.ts +8 -7
  57. package/dist/git-door.js +18 -17
  58. package/dist/git.d.ts +1 -1
  59. package/dist/host.d.ts +38 -42
  60. package/dist/host.js +182 -239
  61. package/dist/installation-execution.js +10 -5
  62. package/dist/installation-operations.d.ts +4 -180
  63. package/dist/installation-operations.js +1 -5
  64. package/dist/installation-store-generation.d.ts +4 -1
  65. package/dist/installation-store-generation.js +59 -6
  66. package/dist/internal/delivery.js +0 -1
  67. package/dist/internal/host-gate.d.ts +9 -6
  68. package/dist/internal/host-gate.js +19 -25
  69. package/dist/internal/invocation-timing.d.ts +16 -0
  70. package/dist/internal/invocation-timing.js +23 -0
  71. package/dist/internal/registry-installations.js +1 -0
  72. package/dist/invocation.d.ts +19 -11
  73. package/dist/invocation.js +171 -96
  74. package/dist/keys.d.ts +2 -19
  75. package/dist/keys.js +1 -37
  76. package/dist/mcp.d.ts +15 -27
  77. package/dist/mcp.js +105 -155
  78. package/dist/page/agent-browser.d.ts +15 -0
  79. package/dist/page/agent-browser.js +162 -0
  80. package/dist/page/app-permissions-port.d.ts +3 -0
  81. package/dist/page/app-permissions-port.js +43 -0
  82. package/dist/page/app-permissions.d.ts +11 -0
  83. package/dist/page/app-permissions.js +296 -0
  84. package/dist/page/capabilities.js +1 -1
  85. package/dist/page/child-selection.d.ts +27 -0
  86. package/dist/page/child-selection.js +38 -0
  87. package/dist/page/isolated-page-theme.d.ts +2 -0
  88. package/dist/page/isolated-page-theme.js +11 -0
  89. package/dist/page/mount.d.ts +2 -13
  90. package/dist/page/mount.js +8 -94
  91. package/dist/page-script.d.ts +0 -3
  92. package/dist/page-script.js +3 -4
  93. package/dist/release.d.ts +13 -0
  94. package/dist/release.js +10 -0
  95. package/dist/request-origin.d.ts +4 -0
  96. package/dist/request-origin.js +10 -0
  97. package/dist/standalone/agent-archive-owner.d.ts +42 -0
  98. package/dist/standalone/agent-archive-owner.js +116 -0
  99. package/dist/standalone/agent-archive-schedules.d.ts +6 -0
  100. package/dist/standalone/agent-archive-schedules.js +76 -0
  101. package/dist/standalone/agent-archive.d.ts +31 -0
  102. package/dist/standalone/agent-archive.js +67 -0
  103. package/dist/standalone/agent-computers.d.ts +7 -6
  104. package/dist/standalone/agent-computers.js +4 -7
  105. package/dist/standalone/agent-mail.d.ts +2 -2
  106. package/dist/standalone/agents.d.ts +157 -20
  107. package/dist/standalone/agents.js +242 -38
  108. package/dist/standalone/app-builds-binding.js +1 -1
  109. package/dist/standalone/app-set.js +2 -54
  110. package/dist/standalone/app-source.d.ts +3 -4
  111. package/dist/standalone/app-source.js +12 -9
  112. package/dist/standalone/builds.d.ts +2 -14
  113. package/dist/standalone/builds.js +15 -13
  114. package/dist/standalone/computer-fleet.d.ts +4 -4
  115. package/dist/standalone/computer-fleet.js +20 -43
  116. package/dist/standalone/computer.d.ts +4 -3
  117. package/dist/standalone/computer.js +52 -53
  118. package/dist/standalone/dashboard-approval.d.ts +10 -0
  119. package/dist/standalone/dashboard-approval.js +66 -0
  120. package/dist/standalone/machine-link.d.ts +4 -221
  121. package/dist/standalone/machine-link.js +21 -15
  122. package/dist/standalone/media.d.ts +1 -0
  123. package/dist/standalone/media.js +20 -14
  124. package/dist/standalone/owner-routes.d.ts +16 -0
  125. package/dist/standalone/owner-routes.js +21 -0
  126. package/dist/standalone/permission-resources.d.ts +5 -0
  127. package/dist/standalone/permission-resources.js +31 -0
  128. package/dist/standalone/registry.d.ts +7 -0
  129. package/dist/standalone/registry.js +3 -0
  130. package/dist/standalone/tenancy.js +3 -1
  131. package/dist/standalone/worker-routes.d.ts +19 -0
  132. package/dist/standalone/worker-routes.js +9 -0
  133. package/dist/standalone/worker.d.ts +1 -1
  134. package/dist/standalone/worker.js +27 -35
  135. package/dist/standalone/workflow-binding.d.ts +8 -3
  136. package/dist/standalone/workflow-binding.js +14 -5
  137. package/dist/standalone/workflow-git-capture.js +2 -1
  138. package/dist/standalone/workflow-host.d.ts +8 -103
  139. package/dist/standalone/workflow-host.js +1 -1
  140. package/dist/standalone/workflow-node-capture.js +2 -2
  141. package/dist/standalone/workflow-root-authority.d.ts +1 -1
  142. package/dist/standalone/workflow-root-authority.js +1 -1
  143. package/dist/standalone/workflow-schedules.d.ts +14 -5
  144. package/dist/standalone/workflow-schedules.js +11 -5
  145. package/dist/standalone/workflow-webhooks.d.ts +4 -18
  146. package/dist/standalone/workflow-webhooks.js +5 -5
  147. package/dist/standalone/workflows.d.ts +36 -28
  148. package/dist/standalone/workflows.js +6 -3
  149. package/dist/storage-frame.d.ts +6 -6
  150. package/dist/testing/capabilities.d.ts +7 -6
  151. package/dist/testing/capabilities.js +3 -6
  152. package/dist/testing/installation.d.ts +0 -1
  153. package/dist/testing/installation.js +2 -5
  154. package/dist/turnstile.d.ts +27 -0
  155. package/dist/turnstile.js +51 -0
  156. package/dist/workers-git.d.ts +12 -4
  157. package/dist/workers-git.js +58 -36
  158. package/dist/workers.d.ts +9 -1
  159. package/dist/workers.js +59 -20
  160. package/dist/workflows.d.ts +2 -0
  161. package/dist/workflows.js +1 -0
  162. package/docs/api/README.md +7 -0
  163. package/docs/api/agent-schedules.md +175 -0
  164. package/docs/api/agents.md +34 -13
  165. package/docs/api/app-storage.md +1 -1
  166. package/docs/api/apps.md +323 -225
  167. package/docs/api/authorization.md +1300 -0
  168. package/docs/api/build-contract.md +2 -2
  169. package/docs/api/build.md +40 -37
  170. package/docs/api/cloudflare.md +27 -2
  171. package/docs/api/git.md +20 -11
  172. package/docs/api/host.md +80 -199
  173. package/docs/api/index.md +1 -1
  174. package/docs/api/invocation.md +15 -11
  175. package/docs/api/keys.md +1 -98
  176. package/docs/api/mcp.md +43 -40
  177. package/docs/api/modules.md +2 -0
  178. package/docs/api/page/mount.md +16 -19
  179. package/docs/api/workers-git.md +46 -12
  180. package/docs/api/workers.md +125 -235
  181. package/docs/site/agent-quickstart.mdx +6 -2
  182. package/examples/standalone/wrangler.celld.jsonc +66 -0
  183. package/package.json +64 -21
  184. package/dist/standalone/channel-session-door.d.ts +0 -4
  185. package/dist/standalone/channel-session-door.js +0 -42
@@ -45,11 +45,11 @@ new OysterMcpOwner<Env>(
45
45
 
46
46
  ###### Parameters
47
47
 
48
- | Parameter | Type |
49
- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
50
- | `ctx` | `DurableObjectState` |
51
- | `env` | `Env` |
52
- | `createHost` | (`env`, `scope`) => \| `Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: `Hono`\<[`OysterEnv`](host.md#oysterenv), `BlankSchema`, `"/"`\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `publicHomeScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\> \| `Promise`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: ...; `recordId`: ...; `description`: ...; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: ...; `cancel`: ...; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<...\>; `state`: `Promise`\<...\>; `start`: `Promise`\<...\>; `create`: `Promise`\<...\>; \}\> \| `null`; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`: ...; `consoleErrors`: ...; `pageErrors`: ...; `failedRequests`: ...; `droppedCount`: ...; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => ...; `call`: (`capabilityId`, `input`, `context`) => ...; \}\> \| `Promise`\<`Readonly`\<...\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ...; `revision`: ...; `grantedBy`: ...; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\<`Readonly`\<...\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<...\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `buildPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: ...; `read`: ...; `binding`: ...; \}\>\>; \}\>; `ownerRoutes?`: `Hono`\<[`OysterEnv`](host.md#oysterenv), `BlankSchema`, `"/"`\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: ...; `roles`: ...; `computer?`: ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, ... \| ... \| ...\> & `Readonly`\<\{ `events`: ...; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `publicHomeScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>\> |
48
+ | Parameter | Type |
49
+ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
50
+ | `ctx` | `DurableObjectState` |
51
+ | `env` | `Env` |
52
+ | `createHost` | (`env`, `scope`) => \| `Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `permissionResources?`: (`principal`) => `Promise`\<readonly [`ResourceOption`](apps.md#resourceoption)[]\>; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `uiCache?`: `Readonly`\<\{ `match`: (`digest`) => `Promise`\<`ReadableStream`\<...\> \| `null`\>; `put`: (`digest`, `bytes`) => `Promise`\<`"stored"` \| `"unstored"`\>; \}\>; `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: [`Routes`](authorization.md#routes)\<[`OysterEnv`](host.md#oysterenv)\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\> \| `Promise`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: ...; `recordId`: ...; `description`: ...; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: ...; `cancel`: ...; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<...\>; `state`: `Promise`\<...\>; `start`: `Promise`\<...\>; `create`: `Promise`\<...\>; \}\> \| `null`; `permissionResources?`: (`principal`) => `Promise`\<readonly [`ResourceOption`](apps.md#resourceoption)[]\>; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `uiCache?`: `Readonly`\<\{ `match`: (`digest`) => `Promise`\<... \| ...\>; `put`: (`digest`, `bytes`) => `Promise`\<... \| ...\>; \}\>; `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`: ...; `consoleErrors`: ...; `pageErrors`: ...; `failedRequests`: ...; `droppedCount`: ...; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => ...; `call`: (`capabilityId`, `input`, `context`) => ...; \}\> \| `Promise`\<`Readonly`\<...\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ...; `revision`: ...; `grantedBy`: ...; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\<`Readonly`\<...\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<...\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `buildPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: ...; `read`: ...; `binding`: ...; \}\>\>; \}\>; `ownerRoutes?`: [`Routes`](authorization.md#routes)\<[`OysterEnv`](host.md#oysterenv)\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: ...; `roles`: ...; `computer?`: ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, ... \| ... \| ...\> & `Readonly`\<\{ `events`: ...; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>\> |
53
53
 
54
54
  ###### Returns
55
55
 
@@ -241,13 +241,13 @@ approvalGet(
241
241
  | null;
242
242
  reason: | "pending"
243
243
  | "expired"
244
+ | "not-granted"
244
245
  | "not-found"
245
246
  | "not-eligible"
246
247
  | "already-answered"
247
248
  | "stale-revision"
248
249
  | "declined"
249
250
  | "fenced"
250
- | "not-granted"
251
251
  | "read-only"
252
252
  | "in-flight"
253
253
  | "outcome-unknown"
@@ -287,8 +287,8 @@ Read one member-scoped view; the native home resolves membership again.
287
287
  \| `"applied"` \| `"requested"` \| `"approved"` \| `"claimed"` \|
288
288
  `"outcome_unknown"`; `by`: \| \{ `kind`: `"human"`; `memberId`: `string`; \} \|
289
289
  \{ `kind`: `"policy"`; \} \| `null`; `reason`: \| `"pending"` \| `"expired"` \|
290
- `"not-found"` \| `"not-eligible"` \| `"already-answered"` \| `"stale-revision"`
291
- \| `"declined"` \| `"fenced"` \| `"not-granted"` \| `"read-only"` \|
290
+ `"not-granted"` \| `"not-found"` \| `"not-eligible"` \| `"already-answered"` \|
291
+ `"stale-revision"` \| `"declined"` \| `"fenced"` \| `"read-only"` \|
292
292
  `"in-flight"` \| `"outcome-unknown"` \| `"identity-conflict"` \| `null`;
293
293
  `denialNote?`: `string`; `requestedAt`: `number`; `expiresAt`: `number`;
294
294
  `updatedAt`: `number`; `revision`: `number`; \}; `canAnswer`: `boolean`;
@@ -342,13 +342,13 @@ approvalAnswer(
342
342
  | null;
343
343
  reason: | "pending"
344
344
  | "expired"
345
+ | "not-granted"
345
346
  | "not-found"
346
347
  | "not-eligible"
347
348
  | "already-answered"
348
349
  | "stale-revision"
349
350
  | "declined"
350
351
  | "fenced"
351
- | "not-granted"
352
352
  | "read-only"
353
353
  | "in-flight"
354
354
  | "outcome-unknown"
@@ -368,13 +368,13 @@ approvalAnswer(
368
368
  kind: "refused";
369
369
  reason: | "pending"
370
370
  | "expired"
371
+ | "not-granted"
371
372
  | "not-found"
372
373
  | "not-eligible"
373
374
  | "already-answered"
374
375
  | "stale-revision"
375
376
  | "declined"
376
377
  | "fenced"
377
- | "not-granted"
378
378
  | "read-only"
379
379
  | "in-flight"
380
380
  | "outcome-unknown"
@@ -409,15 +409,15 @@ Persist an eligible answer and attempt its native decision work once.
409
409
  \| `"pending"` \| `"expired"` \| `"denied"` \| `"applied"` \| `"requested"` \|
410
410
  `"approved"` \| `"claimed"` \| `"outcome_unknown"`; `by`: \| \{ `kind`:
411
411
  `"human"`; `memberId`: `string`; \} \| \{ `kind`: `"policy"`; \} \| `null`;
412
- `reason`: \| `"pending"` \| `"expired"` \| `"not-found"` \| `"not-eligible"` \|
413
- `"already-answered"` \| `"stale-revision"` \| `"declined"` \| `"fenced"` \|
414
- `"not-granted"` \| `"read-only"` \| `"in-flight"` \| `"outcome-unknown"` \|
412
+ `reason`: \| `"pending"` \| `"expired"` \| `"not-granted"` \| `"not-found"` \|
413
+ `"not-eligible"` \| `"already-answered"` \| `"stale-revision"` \| `"declined"`
414
+ \| `"fenced"` \| `"read-only"` \| `"in-flight"` \| `"outcome-unknown"` \|
415
415
  `"identity-conflict"` \| `null`; `denialNote?`: `string`; `requestedAt`:
416
416
  `number`; `expiresAt`: `number`; `updatedAt`: `number`; `revision`: `number`;
417
417
  \}; `canAnswer`: `boolean`; `canSetAutoApprove`: `boolean`; \}; \}\> \|
418
418
  `Readonly`\<\{ `kind`: `"refused"`; `reason`: \| `"pending"` \| `"expired"` \|
419
- `"not-found"` \| `"not-eligible"` \| `"already-answered"` \| `"stale-revision"`
420
- \| `"declined"` \| `"fenced"` \| `"not-granted"` \| `"read-only"` \|
419
+ `"not-granted"` \| `"not-found"` \| `"not-eligible"` \| `"already-answered"` \|
420
+ `"stale-revision"` \| `"declined"` \| `"fenced"` \| `"read-only"` \|
421
421
  `"in-flight"` \| `"outcome-unknown"` \| `"identity-conflict"`; `denialNote?`:
422
422
  `string`; \}\>\>
423
423
 
@@ -433,13 +433,13 @@ approvalSetAutoApprove(
433
433
  kind: "refused";
434
434
  reason: | "pending"
435
435
  | "expired"
436
+ | "not-granted"
436
437
  | "not-found"
437
438
  | "not-eligible"
438
439
  | "already-answered"
439
440
  | "stale-revision"
440
441
  | "declined"
441
442
  | "fenced"
442
- | "not-granted"
443
443
  | "read-only"
444
444
  | "in-flight"
445
445
  | "outcome-unknown"
@@ -481,8 +481,8 @@ it.
481
481
  ###### Returns
482
482
 
483
483
  `Promise`\< \| `Readonly`\<\{ `kind`: `"refused"`; `reason`: \| `"pending"` \|
484
- `"expired"` \| `"not-found"` \| `"not-eligible"` \| `"already-answered"` \|
485
- `"stale-revision"` \| `"declined"` \| `"fenced"` \| `"not-granted"` \|
484
+ `"expired"` \| `"not-granted"` \| `"not-found"` \| `"not-eligible"` \|
485
+ `"already-answered"` \| `"stale-revision"` \| `"declined"` \| `"fenced"` \|
486
486
  `"read-only"` \| `"in-flight"` \| `"outcome-unknown"` \| `"identity-conflict"`;
487
487
  `denialNote?`: `string`; \}\> \| `Readonly`\<\{ `kind`: `"updated"`; `rule`: \{
488
488
  `scope`: \{ `agentId`: `string` \| `null`; \}; `family`: \{ `module`: `string`
@@ -581,13 +581,13 @@ installationOperation(input): Promise<
581
581
  | "request_failed"
582
582
  | "page_error"
583
583
  | "candidate_not_mounted";
584
- errorName?: | "TypeError"
584
+ errorName?: | "Error"
585
+ | "TypeError"
585
586
  | "RangeError"
586
587
  | "SyntaxError"
587
588
  | "AbortError"
588
589
  | "TimeoutError"
589
- | "Other"
590
- | "Error";
590
+ | "Other";
591
591
  finalUrlPath: string;
592
592
  consoleErrors: string[];
593
593
  pageErrors: string[];
@@ -640,17 +640,6 @@ installationOperation(input): Promise<
640
640
  | null;
641
641
  };
642
642
  status: "enabled" | "disabled" | "deleted";
643
- visibility: "private" | "public";
644
- approvedAnonymousMethods: readonly Readonly<{
645
- name: string;
646
- digest: Sha256Digest;
647
- }>[];
648
- anonymousApproval: | Readonly<{
649
- by: ... | ... | ...;
650
- at: number;
651
- authorityVersion: number;
652
- }>
653
- | null;
654
643
  }
655
644
  | null;
656
645
  }
@@ -751,17 +740,6 @@ installationOperation(input): Promise<
751
740
  | null;
752
741
  };
753
742
  status: "enabled" | "disabled" | "deleted";
754
- visibility: "private" | "public";
755
- approvedAnonymousMethods: readonly Readonly<{
756
- name: string;
757
- digest: Sha256Digest;
758
- }>[];
759
- anonymousApproval: | Readonly<{
760
- by: ... | ... | ...;
761
- at: number;
762
- authorityVersion: number;
763
- }>
764
- | null;
765
743
  }
766
744
  | null;
767
745
  acceptedAt: number;
@@ -792,17 +770,6 @@ installationOperation(input): Promise<
792
770
  approval: Readonly<...> | null;
793
771
  };
794
772
  status: "enabled" | "disabled" | "deleted";
795
- visibility: "private" | "public";
796
- approvedAnonymousMethods: readonly Readonly<{
797
- name: ...;
798
- digest: ...;
799
- }>[];
800
- anonymousApproval: | Readonly<{
801
- by: ...;
802
- at: ...;
803
- authorityVersion: ...;
804
- }>
805
- | null;
806
773
  };
807
774
  hasBackend: boolean;
808
775
  prepared: boolean;
@@ -873,9 +840,9 @@ command for the caller's tenant scope.
873
840
 
874
841
  ###### Parameters
875
842
 
876
- | Parameter | Type |
877
- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
878
- | `input` | \| \{ `action`: `"admit"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `input`: \{ `requestId`: `string`; `installationId`: `string`; `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`: \{ `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`: \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \}; \}; \}; `actor`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `intent`: `"install-or-select"` \| `"install-or-remint"` \| `"create-only"`; `origin`: `"workflow"` \| `"owner-direct"`; \}; \} \| \{ `action`: `"read"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; `installationId`: `string`; \} \| \{ `action`: `"load"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; \} \| \{ `action`: `"plan"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; `installation`: \{ `installationId`: `string`; `instanceId`: [`InstanceId`](index.md#instanceid) \| `null`; `appId`: `AppId`; `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`: \{ `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`: \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \}; \}; \}; `releasePin`: `"pinned"` \| `"floating"`; `authority`: \{ `authorityVersion`: `number`; `declaredOperationsDigest`: `Sha256Digest`; `approvedGrants`: readonly `Readonly`\<\{ `capability`: \| `"computer.list"` \| `"computer.readFile"` \| `"computer.writeFile"` \| `"computer.execute"` \| `"approvals"` \| `"agent.list"` \| `"agent.manage"` \| `"agent.rename"` \| `"agent.avatar"` \| `"agent.toolPolicy"` \| `"agent.read"` \| `"agent.send"` \| `"llm.generation"` \| `"media.generation"` \| `"games:servers"` \| `"git.repository"` \| `"apps.open"` \| `"apps.call"` \| `"app.storage"` \| `"app.events.emit"` \| `"team.workbenchHost"` \| `"marketplace.browse"` \| `"marketplace.purchase"` \| `"workflow.run"` \| `"workflow.publish"` \| `"workflow.arm"` \| `"world"` \| `"channels.read"` \| `"channels.personal.manage"`; `capabilityApproved`: `true`; `operations`: readonly `string`[]; `resources`: \| `"tenant-scope"` \| readonly `Readonly`\<\{ `kind`: ...; `id`: ...; \}\>[]; \}\>[]; `approval`: \| `Readonly`\<\{ `by`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`; \}; `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; `visibility`: `"private"` \| `"public"`; `approvedAnonymousMethods`: readonly `Readonly`\<\{ `name`: `string`; `digest`: `Sha256Digest`; \}\>[]; `anonymousApproval`: \| `Readonly`\<\{ `by`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`; \}; `hasBackend`: `boolean`; \} \| \{ `action`: `"commit"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; `uiCheck`: \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: \| `"unexpected_candidate_request"` \| `"response_status"` \| `"request_failed"` \| `"page_error"` \| `"candidate_not_mounted"`; `errorName?`: \| `"TypeError"` \| `"RangeError"` \| `"SyntaxError"` \| `"AbortError"` \| `"TimeoutError"` \| `"Other"` \| `"Error"`; `finalUrlPath`: `string`; `consoleErrors`: `string`[]; `pageErrors`: `string`[]; `failedRequests`: `object`[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \} \| `null`; \} |
843
+ | Parameter | Type |
844
+ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
845
+ | `input` | \| \{ `action`: `"admit"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `input`: \{ `requestId`: `string`; `installationId`: `string`; `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`: \{ `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`: \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \}; \}; \}; `actor`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `intent`: `"install-or-select"` \| `"install-or-remint"` \| `"create-only"`; `origin`: `"workflow"` \| `"owner-direct"`; \}; \} \| \{ `action`: `"read"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; `installationId`: `string`; \} \| \{ `action`: `"load"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; \} \| \{ `action`: `"plan"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; `installation`: \{ `installationId`: `string`; `instanceId`: [`InstanceId`](index.md#instanceid) \| `null`; `appId`: `AppId`; `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`: \{ `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`: \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \}; \}; \}; `releasePin`: `"pinned"` \| `"floating"`; `authority`: \{ `authorityVersion`: `number`; `declaredOperationsDigest`: `Sha256Digest`; `approvedGrants`: readonly `Readonly`\<\{ `capability`: \| `"computer.list"` \| `"computer.readFile"` \| `"computer.writeFile"` \| `"computer.execute"` \| `"approvals"` \| `"agent.list"` \| `"agent.manage"` \| `"agent.rename"` \| `"agent.avatar"` \| `"agent.toolPolicy"` \| `"agent.read"` \| `"agent.send"` \| `"llm.generation"` \| `"media.generation"` \| `"games:servers"` \| `"git.repository"` \| `"apps.open"` \| `"apps.call"` \| `"app.storage"` \| `"app.events.emit"` \| `"team.workbenchHost"` \| `"marketplace.browse"` \| `"marketplace.purchase"` \| `"workflow.run"` \| `"workflow.publish"` \| `"workflow.arm"` \| `"world"` \| `"channels.read"` \| `"channels.personal.manage"`; `capabilityApproved`: `true`; `operations`: readonly `string`[]; `resources`: \| `"tenant-scope"` \| readonly `Readonly`\<\{ `kind`: ...; `id`: ...; \}\>[]; \}\>[]; `approval`: \| `Readonly`\<\{ `by`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`; \}; `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; \}; `hasBackend`: `boolean`; \} \| \{ `action`: `"commit"`; `scope`: \{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `requestId`: `string`; `uiCheck`: \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: \| `"unexpected_candidate_request"` \| `"response_status"` \| `"request_failed"` \| `"page_error"` \| `"candidate_not_mounted"`; `errorName?`: \| `"Error"` \| `"TypeError"` \| `"RangeError"` \| `"SyntaxError"` \| `"AbortError"` \| `"TimeoutError"` \| `"Other"`; `finalUrlPath`: `string`; `consoleErrors`: `string`[]; `pageErrors`: `string`[]; `failedRequests`: `object`[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \} \| `null`; \} |
879
846
 
880
847
  ###### Returns
881
848
 
@@ -906,8 +873,8 @@ command for the caller's tenant scope.
906
873
  `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{
907
874
  `failedPredicate`: \| `"unexpected_candidate_request"` \| `"response_status"` \|
908
875
  `"request_failed"` \| `"page_error"` \| `"candidate_not_mounted"`; `errorName?`:
909
- \| `"TypeError"` \| `"RangeError"` \| `"SyntaxError"` \| `"AbortError"` \|
910
- `"TimeoutError"` \| `"Other"` \| `"Error"`; `finalUrlPath`: `string`;
876
+ \| `"Error"` \| `"TypeError"` \| `"RangeError"` \| `"SyntaxError"` \|
877
+ `"AbortError"` \| `"TimeoutError"` \| `"Other"`; `finalUrlPath`: `string`;
911
878
  `consoleErrors`: `string`[]; `pageErrors`: `string`[]; `failedRequests`:
912
879
  `object`[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`;
913
880
  `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \|
@@ -923,26 +890,22 @@ command for the caller's tenant scope.
923
890
  `approvedGrants`: readonly `Readonly`\<\{ `capability`: ...;
924
891
  `capabilityApproved`: ...; `operations`: ...; `resources`: ...; \}\>[];
925
892
  `approval`: \| `Readonly`\<\{ `by`: ...; `at`: ...; `authorityVersion`: ...;
926
- \}\> \| `null`; \}; `status`: `"enabled"` \| `"disabled"` \| `"deleted"`;
927
- `visibility`: `"private"` \| `"public"`; `approvedAnonymousMethods`: readonly
928
- `Readonly`\<\{ `name`: `string`; `digest`: `Sha256Digest`; \}\>[];
929
- `anonymousApproval`: \| `Readonly`\<\{ `by`: ... \| ... \| ...; `at`: `number`;
930
- `authorityVersion`: `number`; \}\> \| `null`; \} \| `null`; \} \| \{
931
- `requestId`: `string`; `requestedInstallationId`: `string`; `installationId`:
932
- `string`; `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`:
933
- \{ `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`:
934
- \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`;
935
- `buildRecipeDigest`: `Sha256Digest`; \}; \}; \}; `state`: `"pending"`; \} \|
936
- `null`; \} \| \{ `kind`: `"command"`; `command`: \| \{ `admission`: \{
937
- `requestId`: `string`; `installationId`: `string`; `release`: \{ `releaseId`:
938
- `ReleaseId`; `appId`: `AppId`; `artifact`: \{ `artifactRef`: `ArtifactRef`;
939
- `artifactDigest`: `Sha256Digest`; `provenance`: \{ `sourceRevision`:
940
- `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`:
941
- `Sha256Digest`; \}; \}; \}; `actor`: \| \{ `kind`: `"member"`; `memberId`:
942
- `string`; \} \| \{ `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`:
943
- `"team-key"`; `keyId`: `string`; \}; `intent`: `"install-or-select"` \|
944
- `"install-or-remint"` \| `"create-only"`; `origin`: `"workflow"` \|
945
- `"owner-direct"`; \}; `scope`: \{ `tenantId`: `string` &
893
+ \}\> \| `null`; \}; `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; \} \|
894
+ `null`; \} \| \{ `requestId`: `string`; `requestedInstallationId`: `string`;
895
+ `installationId`: `string`; `release`: \{ `releaseId`: `ReleaseId`; `appId`:
896
+ `AppId`; `artifact`: \{ `artifactRef`: `ArtifactRef`; `artifactDigest`:
897
+ `Sha256Digest`; `provenance`: \{ `sourceRevision`: `SourceRevision`;
898
+ `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \}; \};
899
+ \}; `state`: `"pending"`; \} \| `null`; \} \| \{ `kind`: `"command"`; `command`:
900
+ \| \{ `admission`: \{ `requestId`: `string`; `installationId`: `string`;
901
+ `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`: \{
902
+ `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`: \{
903
+ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`;
904
+ `buildRecipeDigest`: `Sha256Digest`; \}; \}; \}; `actor`: \| \{ `kind`:
905
+ `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`:
906
+ `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `intent`:
907
+ `"install-or-select"` \| `"install-or-remint"` \| `"create-only"`; `origin`:
908
+ `"workflow"` \| `"owner-direct"`; \}; `scope`: \{ `tenantId`: `string` &
946
909
  `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; \}; `installationId`:
947
910
  `string`; `instanceId`: [`InstanceId`](index.md#instanceid); `generation`:
948
911
  `string`; `baseline`: \| \{ `installationId`: `string`; `instanceId`:
@@ -956,35 +919,28 @@ command for the caller's tenant scope.
956
919
  `Readonly`\<\{ `capability`: ...; `capabilityApproved`: ...; `operations`: ...;
957
920
  `resources`: ...; \}\>[]; `approval`: \| `Readonly`\<\{ `by`: ...; `at`: ...;
958
921
  `authorityVersion`: ...; \}\> \| `null`; \}; `status`: `"enabled"` \|
959
- `"disabled"` \| `"deleted"`; `visibility`: `"private"` \| `"public"`;
960
- `approvedAnonymousMethods`: readonly `Readonly`\<\{ `name`: `string`; `digest`:
961
- `Sha256Digest`; \}\>[]; `anonymousApproval`: \| `Readonly`\<\{ `by`: ... \| ...
962
- \| ...; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`; \} \|
963
- `null`; `acceptedAt`: `number`; `creation`: `"fresh"` \| `"replacement"` \|
964
- `"reminted"`; `plan`: \| \{ `installation`: \{ `installationId`: `string`;
965
- `instanceId`: [`InstanceId`](index.md#instanceid) \| `null`; `appId`: `AppId`;
966
- `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`: \{
967
- `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`: \{
968
- `sourceRevision`: ...; `sourceTreeDigest`: ...; `buildRecipeDigest`: ...; \};
969
- \}; \}; `releasePin`: `"pinned"` \| `"floating"`; `authority`: \{
970
- `authorityVersion`: `number`; `declaredOperationsDigest`: `Sha256Digest`;
971
- `approvedGrants`: readonly `Readonly`\<...\>[]; `approval`: `Readonly`\<...\> \|
972
- `null`; \}; `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; `visibility`:
973
- `"private"` \| `"public"`; `approvedAnonymousMethods`: readonly `Readonly`\<\{
974
- `name`: ...; `digest`: ...; \}\>[]; `anonymousApproval`: \| `Readonly`\<\{ `by`:
975
- ...; `at`: ...; `authorityVersion`: ...; \}\> \| `null`; \}; `hasBackend`:
976
- `boolean`; `prepared`: `boolean`; `uiCheck?`: \| \{ `kind`: `"passed"`; \} \| \{
977
- `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{
978
- `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`: ...; `consoleErrors`:
979
- ...; `pageErrors`: ...; `failedRequests`: ...; `droppedCount`: ...; \}; \} \| \{
980
- `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \|
981
- `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \|
982
- `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}
983
- \| `null`; \} \| `null`; `operation`: \{ `requestId`: `string`;
984
- `requestedInstallationId`: `string`; `installationId`: `string`; `release`: \{
985
- `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`: \{ `artifactRef`:
986
- `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`: \{
987
- `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`;
922
+ `"disabled"` \| `"deleted"`; \} \| `null`; `acceptedAt`: `number`; `creation`:
923
+ `"fresh"` \| `"replacement"` \| `"reminted"`; `plan`: \| \{ `installation`: \{
924
+ `installationId`: `string`; `instanceId`: [`InstanceId`](index.md#instanceid) \|
925
+ `null`; `appId`: `AppId`; `release`: \{ `releaseId`: `ReleaseId`; `appId`:
926
+ `AppId`; `artifact`: \{ `artifactRef`: `ArtifactRef`; `artifactDigest`:
927
+ `Sha256Digest`; `provenance`: \{ `sourceRevision`: ...; `sourceTreeDigest`: ...;
928
+ `buildRecipeDigest`: ...; \}; \}; \}; `releasePin`: `"pinned"` \| `"floating"`;
929
+ `authority`: \{ `authorityVersion`: `number`; `declaredOperationsDigest`:
930
+ `Sha256Digest`; `approvedGrants`: readonly `Readonly`\<...\>[]; `approval`:
931
+ `Readonly`\<...\> \| `null`; \}; `status`: `"enabled"` \| `"disabled"` \|
932
+ `"deleted"`; \}; `hasBackend`: `boolean`; `prepared`: `boolean`; `uiCheck?`: \|
933
+ \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`;
934
+ `diagnostics?`: \{ `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`:
935
+ ...; `consoleErrors`: ...; `pageErrors`: ...; `failedRequests`: ...;
936
+ `droppedCount`: ...; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \|
937
+ `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \|
938
+ `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \|
939
+ `"ui_check_not_run_on_host"`; \} \| `null`; \} \| `null`; `operation`: \{
940
+ `requestId`: `string`; `requestedInstallationId`: `string`; `installationId`:
941
+ `string`; `release`: \{ `releaseId`: `ReleaseId`; `appId`: `AppId`; `artifact`:
942
+ \{ `artifactRef`: `ArtifactRef`; `artifactDigest`: `Sha256Digest`; `provenance`:
943
+ \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`;
988
944
  `buildRecipeDigest`: `Sha256Digest`; \}; \}; \}; `state`: `"pending"`; \}; \} \|
989
945
  `null`; \} \| \{ `kind`: `"commit"`; `commit`: \| \{ `ok`: `true`; \} \| \{
990
946
  `ok`: `false`; `code`: `"stale_authority"`; \}; \}\>
@@ -1040,7 +996,7 @@ storageRead(
1040
996
  key
1041
997
  ): Promise<AppStorageResult<{
1042
998
  value: Json;
1043
- source: "member" | "team" | "none";
999
+ source: "team" | "member" | "none";
1044
1000
  team: | {
1045
1001
  value: Json;
1046
1002
  revision: number;
@@ -1067,9 +1023,9 @@ Read one key for the authenticated root owner, under fresh App admission.
1067
1023
 
1068
1024
  ###### Returns
1069
1025
 
1070
- `Promise`\<`AppStorageResult`\<\{ `value`: `Json`; `source`: `"member"` \|
1071
- `"team"` \| `"none"`; `team`: \| \{ `value`: `Json`; `revision`: `number`; \} \|
1072
- `null`; `member`: \| \{ `value`: `Json`; `revision`: `number`; \} \| `null`;
1026
+ `Promise`\<`AppStorageResult`\<\{ `value`: `Json`; `source`: `"team"` \|
1027
+ `"member"` \| `"none"`; `team`: \| \{ `value`: `Json`; `revision`: `number`; \}
1028
+ \| `null`; `member`: \| \{ `value`: `Json`; `revision`: `number`; \} \| `null`;
1073
1029
  `canWriteTeam`: `boolean`; \}\>\>
1074
1030
 
1075
1031
  ##### storageWrite()
@@ -1092,10 +1048,10 @@ Write one declared key for the authenticated root owner.
1092
1048
  | ---------------- | ------------------------------------------------------------------------------------------------------- |
1093
1049
  | `installationId` | `string` |
1094
1050
  | `ownerId` | `string` |
1095
- | `input` | \{ `value`: `Json`; `key`: `string`; `scope`: `"member"` \| `"team"`; `basedOn`: `number` \| `null`; \} |
1051
+ | `input` | \{ `value`: `Json`; `key`: `string`; `scope`: `"team"` \| `"member"`; `basedOn`: `number` \| `null`; \} |
1096
1052
  | `input.value` | `Json` |
1097
1053
  | `input.key` | `string` |
1098
- | `input.scope` | `"member"` \| `"team"` |
1054
+ | `input.scope` | `"team"` \| `"member"` |
1099
1055
  | `input.basedOn` | `number` \| `null` |
1100
1056
 
1101
1057
  ###### Returns
@@ -1122,9 +1078,9 @@ Reset one declared layer for the authenticated root owner.
1122
1078
  | ---------------- | -------------------------------------------------------------------------------------- |
1123
1079
  | `installationId` | `string` |
1124
1080
  | `ownerId` | `string` |
1125
- | `input` | \{ `key`: `string`; `scope`: `"member"` \| `"team"`; `basedOn`: `number` \| `null`; \} |
1081
+ | `input` | \{ `key`: `string`; `scope`: `"team"` \| `"member"`; `basedOn`: `number` \| `null`; \} |
1126
1082
  | `input.key` | `string` |
1127
- | `input.scope` | `"member"` \| `"team"` |
1083
+ | `input.scope` | `"team"` \| `"member"` |
1128
1084
  | `input.basedOn` | `number` \| `null` |
1129
1085
 
1130
1086
  ###### Returns
@@ -1289,28 +1245,6 @@ list(): Readonly<{
1289
1245
  | null;
1290
1246
  };
1291
1247
  status: "enabled" | "disabled" | "deleted";
1292
- visibility: "private" | "public";
1293
- approvedAnonymousMethods: readonly Readonly<{
1294
- name: string;
1295
- digest: Sha256Digest;
1296
- }>[];
1297
- anonymousApproval: | Readonly<{
1298
- by: | {
1299
- kind: "member";
1300
- memberId: string;
1301
- }
1302
- | {
1303
- kind: "agent";
1304
- agentId: string;
1305
- }
1306
- | {
1307
- kind: "team-key";
1308
- keyId: string;
1309
- };
1310
- at: number;
1311
- authorityVersion: number;
1312
- }>
1313
- | null;
1314
1248
  }>[];
1315
1249
  ```
1316
1250
 
@@ -1340,13 +1274,7 @@ Every installation record.
1340
1274
  `Readonly`\<\{ `by`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{
1341
1275
  `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`:
1342
1276
  `string`; \}; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`; \};
1343
- `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; `visibility`: `"private"`
1344
- \| `"public"`; `approvedAnonymousMethods`: readonly `Readonly`\<\{ `name`:
1345
- `string`; `digest`: `Sha256Digest`; \}\>[]; `anonymousApproval`: \|
1346
- `Readonly`\<\{ `by`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{
1347
- `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`:
1348
- `string`; \}; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`;
1349
- \}\>[]
1277
+ `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; \}\>[]
1350
1278
 
1351
1279
  ##### get()
1352
1280
 
@@ -1430,28 +1358,6 @@ get(installationId):
1430
1358
  | null;
1431
1359
  };
1432
1360
  status: "enabled" | "disabled" | "deleted";
1433
- visibility: "private" | "public";
1434
- approvedAnonymousMethods: readonly Readonly<{
1435
- name: string;
1436
- digest: Sha256Digest;
1437
- }>[];
1438
- anonymousApproval: | Readonly<{
1439
- by: | {
1440
- kind: "member";
1441
- memberId: string;
1442
- }
1443
- | {
1444
- kind: "agent";
1445
- agentId: string;
1446
- }
1447
- | {
1448
- kind: "team-key";
1449
- keyId: string;
1450
- };
1451
- at: number;
1452
- authorityVersion: number;
1453
- }>
1454
- | null;
1455
1361
  }>
1456
1362
  | null;
1457
1363
  ```
@@ -1488,13 +1394,7 @@ One installation record, or `null`.
1488
1394
  `Readonly`\<\{ `by`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{
1489
1395
  `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`:
1490
1396
  `string`; \}; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`; \};
1491
- `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; `visibility`: `"private"`
1492
- \| `"public"`; `approvedAnonymousMethods`: readonly `Readonly`\<\{ `name`:
1493
- `string`; `digest`: `Sha256Digest`; \}\>[]; `anonymousApproval`: \|
1494
- `Readonly`\<\{ `by`: \| \{ `kind`: `"member"`; `memberId`: `string`; \} \| \{
1495
- `kind`: `"agent"`; `agentId`: `string`; \} \| \{ `kind`: `"team-key"`; `keyId`:
1496
- `string`; \}; `at`: `number`; `authorityVersion`: `number`; \}\> \| `null`; \}\>
1497
- \| `null`
1397
+ `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; \}\> \| `null`
1498
1398
 
1499
1399
  ##### generation()
1500
1400
 
@@ -1508,6 +1408,18 @@ Durable store identity, regenerated only when the store itself is replaced.
1508
1408
 
1509
1409
  `string`
1510
1410
 
1411
+ ##### installationResetAt()
1412
+
1413
+ ```ts
1414
+ installationResetAt(): number | null;
1415
+ ```
1416
+
1417
+ Permanent audit fact for the owner Home's empty installation notice.
1418
+
1419
+ ###### Returns
1420
+
1421
+ `number` \| `null`
1422
+
1511
1423
  ##### compareAndPut()
1512
1424
 
1513
1425
  ```ts
@@ -1812,13 +1724,13 @@ prepare(
1812
1724
  | "request_failed"
1813
1725
  | "page_error"
1814
1726
  | "candidate_not_mounted";
1815
- errorName?: | "TypeError"
1727
+ errorName?: | "Error"
1728
+ | "TypeError"
1816
1729
  | "RangeError"
1817
1730
  | "SyntaxError"
1818
1731
  | "AbortError"
1819
1732
  | "TimeoutError"
1820
- | "Other"
1821
- | "Error";
1733
+ | "Other";
1822
1734
  finalUrlPath: string;
1823
1735
  consoleErrors: string[];
1824
1736
  pageErrors: string[];
@@ -1863,11 +1775,11 @@ Reuse lifecycle preflight without changing the active runtime or its budgets.
1863
1775
  `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`;
1864
1776
  `diagnostics?`: \{ `failedPredicate`: \| `"unexpected_candidate_request"` \|
1865
1777
  `"response_status"` \| `"request_failed"` \| `"page_error"` \|
1866
- `"candidate_not_mounted"`; `errorName?`: \| `"TypeError"` \| `"RangeError"` \|
1867
- `"SyntaxError"` \| `"AbortError"` \| `"TimeoutError"` \| `"Other"` \| `"Error"`;
1868
- `finalUrlPath`: `string`; `consoleErrors`: `string`[]; `pageErrors`: `string`[];
1869
- `failedRequests`: `object`[]; `droppedCount`: `number`; \}; \} \| \{ `kind`:
1870
- `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \|
1778
+ `"candidate_not_mounted"`; `errorName?`: \| `"Error"` \| `"TypeError"` \|
1779
+ `"RangeError"` \| `"SyntaxError"` \| `"AbortError"` \| `"TimeoutError"` \|
1780
+ `"Other"`; `finalUrlPath`: `string`; `consoleErrors`: `string`[]; `pageErrors`:
1781
+ `string`[]; `failedRequests`: `object`[]; `droppedCount`: `number`; \}; \} \| \{
1782
+ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \|
1871
1783
  `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \|
1872
1784
  `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}
1873
1785
  \| `null`\>\>
@@ -2456,28 +2368,6 @@ run(): Promise<
2456
2368
  | null;
2457
2369
  };
2458
2370
  status: "enabled" | "disabled" | "deleted";
2459
- visibility: "private" | "public";
2460
- approvedAnonymousMethods: readonly Readonly<{
2461
- name: string;
2462
- digest: Sha256Digest;
2463
- }>[];
2464
- anonymousApproval: | Readonly<{
2465
- by: | {
2466
- kind: "member";
2467
- memberId: string;
2468
- }
2469
- | {
2470
- kind: "agent";
2471
- agentId: string;
2472
- }
2473
- | {
2474
- kind: "team-key";
2475
- keyId: string;
2476
- };
2477
- at: number;
2478
- authorityVersion: number;
2479
- }>
2480
- | null;
2481
2371
  };
2482
2372
  creation: "fresh" | "replacement" | "reminted";
2483
2373
  uiCheck: | {
@@ -2492,13 +2382,13 @@ run(): Promise<
2492
2382
  | "request_failed"
2493
2383
  | "page_error"
2494
2384
  | "candidate_not_mounted";
2495
- errorName?: | "TypeError"
2385
+ errorName?: | "Error"
2386
+ | "TypeError"
2496
2387
  | "RangeError"
2497
2388
  | "SyntaxError"
2498
2389
  | "AbortError"
2499
2390
  | "TimeoutError"
2500
- | "Other"
2501
- | "Error";
2391
+ | "Other";
2502
2392
  finalUrlPath: string;
2503
2393
  consoleErrors: string[];
2504
2394
  pageErrors: string[];
@@ -2554,21 +2444,16 @@ Execute the retained command these props name, in its tenant scope.
2554
2444
  `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`:
2555
2445
  `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `at`: `number`;
2556
2446
  `authorityVersion`: `number`; \}\> \| `null`; \}; `status`: `"enabled"` \|
2557
- `"disabled"` \| `"deleted"`; `visibility`: `"private"` \| `"public"`;
2558
- `approvedAnonymousMethods`: readonly `Readonly`\<\{ `name`: `string`; `digest`:
2559
- `Sha256Digest`; \}\>[]; `anonymousApproval`: \| `Readonly`\<\{ `by`: \| \{
2560
- `kind`: `"member"`; `memberId`: `string`; \} \| \{ `kind`: `"agent"`; `agentId`:
2561
- `string`; \} \| \{ `kind`: `"team-key"`; `keyId`: `string`; \}; `at`: `number`;
2562
- `authorityVersion`: `number`; \}\> \| `null`; \}; `creation`: `"fresh"` \|
2563
- `"replacement"` \| `"reminted"`; `uiCheck`: \| \{ `kind`: `"passed"`; \} \| \{
2564
- `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{
2565
- `failedPredicate`: \| `"unexpected_candidate_request"` \| `"response_status"` \|
2566
- `"request_failed"` \| `"page_error"` \| `"candidate_not_mounted"`; `errorName?`:
2567
- \| `"TypeError"` \| `"RangeError"` \| `"SyntaxError"` \| `"AbortError"` \|
2568
- `"TimeoutError"` \| `"Other"` \| `"Error"`; `finalUrlPath`: `string`;
2569
- `consoleErrors`: `string`[]; `pageErrors`: `string`[]; `failedRequests`:
2570
- `object`[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`;
2571
- `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \|
2447
+ `"disabled"` \| `"deleted"`; \}; `creation`: `"fresh"` \| `"replacement"` \|
2448
+ `"reminted"`; `uiCheck`: \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`;
2449
+ `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: \|
2450
+ `"unexpected_candidate_request"` \| `"response_status"` \| `"request_failed"` \|
2451
+ `"page_error"` \| `"candidate_not_mounted"`; `errorName?`: \| `"Error"` \|
2452
+ `"TypeError"` \| `"RangeError"` \| `"SyntaxError"` \| `"AbortError"` \|
2453
+ `"TimeoutError"` \| `"Other"`; `finalUrlPath`: `string`; `consoleErrors`:
2454
+ `string`[]; `pageErrors`: `string`[]; `failedRequests`: `object`[];
2455
+ `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \|
2456
+ `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \|
2572
2457
  `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \|
2573
2458
  `"ui_check_not_run_on_host"`; \} \| `null`; \} \| \{ `state`: `"refused"`;
2574
2459
  `status`: `number`; `code`: `string`; \} \| \{ `state`: `"unconfirmed"`;
@@ -2625,6 +2510,10 @@ Native values returned by the standalone Git, event and JSON binding owners.
2625
2510
  ```ts
2626
2511
  type OysterInvocationHost = BackgroundFrameState &
2627
2512
  Readonly<{
2513
+ bindingWaits: {
2514
+ count: number;
2515
+ ms: number;
2516
+ };
2628
2517
  artifact: Backend;
2629
2518
  declaration: AppDeclaration | null;
2630
2519
  method?: Readonly<{
@@ -2698,9 +2587,11 @@ type OysterBindingContext<Env> = Readonly<{
2698
2587
  }
2699
2588
  | null>;
2700
2589
  computerControl?: (principal) => ComputerControlPort | null;
2590
+ permissionResources?: (principal) => Promise<readonly ResourceOption[]>;
2701
2591
  auth: OysterAuth;
2702
2592
  backgroundOriginKey?: () => Promise<CryptoKey>;
2703
2593
  artifacts: ArtifactStore;
2594
+ uiCache?: VerifiedObjectCache;
2704
2595
  installations: InstallationStore;
2705
2596
  instances: InstanceDirectory;
2706
2597
  bootUi: (release) => Promise<UiBootCheckOutcome>;
@@ -2716,7 +2607,7 @@ type OysterBindingContext<Env> = Readonly<{
2716
2607
  guestLimits?: Partial<GuestLimits>;
2717
2608
  mcp?: OysterMcp;
2718
2609
  git?: OysterGitHost;
2719
- ownerRoutes?: Hono<OysterEnv>;
2610
+ ownerRoutes?: Routes<OysterEnv>;
2720
2611
  capabilities?: readonly OysterCapability[];
2721
2612
  workbench?: Readonly<{
2722
2613
  directory: Promise<Readonly<{
@@ -2732,7 +2623,6 @@ type OysterBindingContext<Env> = Readonly<{
2732
2623
  pageScript?: string;
2733
2624
  pageAssets?: () => Promise<{
2734
2625
  pageScript: string;
2735
- publicHomeScript: string;
2736
2626
  fontStyles: string;
2737
2627
  loginFontStyles: string;
2738
2628
  shellStyles: string;
@@ -2845,9 +2735,9 @@ A loopback export with ordinary Worker I/O, not another resource or HTTP API.
2845
2735
 
2846
2736
  #### Parameters
2847
2737
 
2848
- | Parameter | Type |
2849
- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2850
- | `hostFor` | (`env`, `scope`) => \| `Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: `Hono`\<[`OysterEnv`](host.md#oysterenv), `BlankSchema`, `"/"`\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `publicHomeScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\> \| `Promise`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: ...; `recordId`: ...; `description`: ...; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: ...; `cancel`: ...; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<...\>; `state`: `Promise`\<...\>; `start`: `Promise`\<...\>; `create`: `Promise`\<...\>; \}\> \| `null`; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`: ...; `consoleErrors`: ...; `pageErrors`: ...; `failedRequests`: ...; `droppedCount`: ...; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => ...; `call`: (`capabilityId`, `input`, `context`) => ...; \}\> \| `Promise`\<`Readonly`\<...\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ...; `revision`: ...; `grantedBy`: ...; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\<`Readonly`\<...\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<...\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `buildPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: ...; `read`: ...; `binding`: ...; \}\>\>; \}\>; `ownerRoutes?`: `Hono`\<[`OysterEnv`](host.md#oysterenv), `BlankSchema`, `"/"`\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: ...; `roles`: ...; `computer?`: ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, ... \| ... \| ...\> & `Readonly`\<\{ `events`: ...; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `publicHomeScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>\> |
2738
+ | Parameter | Type |
2739
+ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2740
+ | `hostFor` | (`env`, `scope`) => \| `Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `permissionResources?`: (`principal`) => `Promise`\<readonly [`ResourceOption`](apps.md#resourceoption)[]\>; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `uiCache?`: `Readonly`\<\{ `match`: (`digest`) => `Promise`\<`ReadableStream`\<...\> \| `null`\>; `put`: (`digest`, `bytes`) => `Promise`\<`"stored"` \| `"unstored"`\>; \}\>; `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: [`Routes`](authorization.md#routes)\<[`OysterEnv`](host.md#oysterenv)\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\> \| `Promise`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: ...; `recordId`: ...; `description`: ...; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: ...; `cancel`: ...; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<...\>; `state`: `Promise`\<...\>; `start`: `Promise`\<...\>; `create`: `Promise`\<...\>; \}\> \| `null`; `permissionResources?`: (`principal`) => `Promise`\<readonly [`ResourceOption`](apps.md#resourceoption)[]\>; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `uiCache?`: `Readonly`\<\{ `match`: (`digest`) => `Promise`\<... \| ...\>; `put`: (`digest`, `bytes`) => `Promise`\<... \| ...\>; \}\>; `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`: ...; `consoleErrors`: ...; `pageErrors`: ...; `failedRequests`: ...; `droppedCount`: ...; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => ...; `call`: (`capabilityId`, `input`, `context`) => ...; \}\> \| `Promise`\<`Readonly`\<...\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ...; `revision`: ...; `grantedBy`: ...; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\<`Readonly`\<...\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<...\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `buildPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: ...; `read`: ...; `binding`: ...; \}\>\>; \}\>; `ownerRoutes?`: [`Routes`](authorization.md#routes)\<[`OysterEnv`](host.md#oysterenv)\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: ...; `roles`: ...; `computer?`: ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, ... \| ... \| ...\> & `Readonly`\<\{ `events`: ...; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>\> |
2851
2741
 
2852
2742
  #### Returns
2853
2743
 
@@ -2871,9 +2761,9 @@ Bind the owner to the deployment's existing host factory and options.
2871
2761
 
2872
2762
  #### Parameters
2873
2763
 
2874
- | Parameter | Type |
2875
- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2876
- | `host` | (`env`, `scope`) => \| `Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: `Hono`\<[`OysterEnv`](host.md#oysterenv), `BlankSchema`, `"/"`\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `publicHomeScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\> \| `Promise`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: ...; `recordId`: ...; `description`: ...; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: ...; `cancel`: ...; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<...\>; `state`: `Promise`\<...\>; `start`: `Promise`\<...\>; `create`: `Promise`\<...\>; \}\> \| `null`; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`: ...; `consoleErrors`: ...; `pageErrors`: ...; `failedRequests`: ...; `droppedCount`: ...; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => ...; `call`: (`capabilityId`, `input`, `context`) => ...; \}\> \| `Promise`\<`Readonly`\<...\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ...; `revision`: ...; `grantedBy`: ...; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\<`Readonly`\<...\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<...\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `buildPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: ...; `read`: ...; `binding`: ...; \}\>\>; \}\>; `ownerRoutes?`: `Hono`\<[`OysterEnv`](host.md#oysterenv), `BlankSchema`, `"/"`\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: ...; `roles`: ...; `computer?`: ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, ... \| ... \| ...\> & `Readonly`\<\{ `events`: ...; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `publicHomeScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>\> |
2764
+ | Parameter | Type |
2765
+ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2766
+ | `host` | (`env`, `scope`) => \| `Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `permissionResources?`: (`principal`) => `Promise`\<readonly [`ResourceOption`](apps.md#resourceoption)[]\>; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `uiCache?`: `Readonly`\<\{ `match`: (`digest`) => `Promise`\<`ReadableStream`\<...\> \| `null`\>; `put`: (`digest`, `bytes`) => `Promise`\<`"stored"` \| `"unstored"`\>; \}\>; `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: [`Routes`](authorization.md#routes)\<[`OysterEnv`](host.md#oysterenv)\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\> \| `Promise`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: ...; `recordId`: ...; `description`: ...; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: ...; `cancel`: ...; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<...\>; `state`: `Promise`\<...\>; `start`: `Promise`\<...\>; `create`: `Promise`\<...\>; \}\> \| `null`; `permissionResources?`: (`principal`) => `Promise`\<readonly [`ResourceOption`](apps.md#resourceoption)[]\>; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `uiCache?`: `Readonly`\<\{ `match`: (`digest`) => `Promise`\<... \| ...\>; `put`: (`digest`, `bytes`) => `Promise`\<... \| ...\>; \}\>; `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ...; `errorName?`: ...; `finalUrlPath`: ...; `consoleErrors`: ...; `pageErrors`: ...; `failedRequests`: ...; `droppedCount`: ...; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => ...; `call`: (`capabilityId`, `input`, `context`) => ...; \}\> \| `Promise`\<`Readonly`\<...\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ...; `revision`: ...; `grantedBy`: ...; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\<`Readonly`\<...\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<...\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `buildPass?`: `Promise`\<`Readonly`\<...\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: ...; `read`: ...; `binding`: ...; \}\>\>; \}\>; `ownerRoutes?`: [`Routes`](authorization.md#routes)\<[`OysterEnv`](host.md#oysterenv)\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: ...; `roles`: ...; `computer?`: ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, ... \| ... \| ...\> & `Readonly`\<\{ `events`: ...; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>\> |
2877
2767
 
2878
2768
  #### Returns
2879
2769
 
@@ -2967,11 +2857,11 @@ Instances, and boot-check service.
2967
2857
 
2968
2858
  #### Parameters
2969
2859
 
2970
- | Parameter | Type |
2971
- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2972
- | `env` | [`OysterWorkerEnv`](#oysterworkerenv) |
2973
- | `auth` | [`OysterAuth`](host.md#oysterauth) |
2974
- | `options` | `Pick`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: `Hono`\<[`OysterEnv`](host.md#oysterenv), `BlankSchema`, `"/"`\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `publicHomeScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>, `"appToolPolicy"` \| `"guestLimits"`\> & `Readonly`\<\{ `workspace?`: `Readonly`\<\{ `computerId`: `string`; `files`: [`FileSource`](files.md#filesource); `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `Promise`\<... \| ...\> \| `null`; \}\>; `scope?`: `Readonly`\<\{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; `durableName`: `string`; `computerName`: `string`; `workspacePrefix`: `string`; `repositoryPrefix`: `string`; \}\>; \}\> |
2860
+ | Parameter | Type |
2861
+ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2862
+ | `env` | [`OysterWorkerEnv`](#oysterworkerenv) |
2863
+ | `auth` | [`OysterAuth`](host.md#oysterauth) |
2864
+ | `options` | `Pick`\<`Readonly`\<\{ `approvals?`: `Readonly`\<\{ `submit`: `Promise`\< \| \{ `kind`: `"pending_approval"`; `recordId`: `string`; `description`: \{ `title`: ...; `inputBytes`: ...; `inputSha256`: ...; \}; \} \| `ApprovalApplyResult`\>; \}\>; `workflows?`: (`principal`) => `Promise`\< \| `Readonly`\<\{ `status`: `Promise`\<...\>; `cancel`: `Promise`\<...\>; \}\> \| `null`\>; `computerControl?`: (`principal`) => \| `Readonly`\<\{ `list`: `Promise`\<\{ `computers`: ...; `nextOffset`: ...; \}\>; `state`: `Promise`\<... \| ...\>; `start`: `Promise`\<... \| ...\>; `create`: `Promise`\<... \| ...\>; \}\> \| `null`; `permissionResources?`: (`principal`) => `Promise`\<readonly [`ResourceOption`](apps.md#resourceoption)[]\>; `auth`: [`OysterAuth`](host.md#oysterauth); `backgroundOriginKey?`: () => `Promise`\<`CryptoKey`\>; `artifacts`: [`ArtifactStore`](host.md#artifactstore); `uiCache?`: `Readonly`\<\{ `match`: (`digest`) => `Promise`\<`ReadableStream`\<...\> \| `null`\>; `put`: (`digest`, `bytes`) => `Promise`\<`"stored"` \| `"unstored"`\>; \}\>; `installations`: [`InstallationStore`](host.md#installationstore); `instances`: [`InstanceDirectory`](host.md#instancedirectory); `bootUi`: (`release`) => `Promise`\< \| \{ `kind`: `"passed"`; \} \| \{ `kind`: `"failed"`; `code`: `"ui_mount_failed"`; `diagnostics?`: \{ `failedPredicate`: ... \| ... \| ... \| ... \| ...; `errorName?`: ... \| ... \| ... \| ... \| ... \| ... \| ... \| ...; `finalUrlPath`: `string`; `consoleErrors`: ...[]; `pageErrors`: ...[]; `failedRequests`: ...[]; `droppedCount`: `number`; \}; \} \| \{ `kind`: `"not_checked"`; `code`: \| `"boot_runner_unavailable"` \| `"boot_browser_binding_missing"` \| `"boot_clone_unavailable"` \| `"boot_timeout"` \| `"boot_cleanup_failed"` \| `"ui_check_not_run_on_host"`; \}\>; `computerId?`: `string`; `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: (`signal`) => `Promise`\<...\>; `call`: (`capabilityId`, `input`, `context`) => `Promise`\<...\>; \}\> \| `Promise`\< \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `null`\> \| `null`; `appToolPolicy?`: (`actor`) => \| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`: `string`; \} \| `Promise`\< \| \{ `level`: ... \| ...; `revision`: `string`; `grantedBy`: `string`; \} \| `null`\> \| `null`; `keys?`: `Readonly`\<\{ `live`: `Promise`\< \| `Readonly`\<\{ `keyId`: ...; `owner`: ...; `grantVersion`: ...; `grants`: ...; \}\> \| `null`\>; \}\>; `guestLimits?`: `Partial`\<`Readonly`\<\{ `cpuMs`: `number`; `subRequests`: `number`; \}\>\>; `mcp?`: `Readonly`\<\{ `handleRequest`: (`request`) => `Promise`\<`Response`\>; `close?`: () => `Promise`\<`void`\>; \}\>; `git?`: `Readonly`\<\{ `writerOf`: `Extract`\<`GitWriter`, \{ `kind`: `"actor"`; \}\>; `workflowPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `buildPass?`: `Promise`\< \| `Readonly`\<\{ `kind`: ...; `actor`: ...; `role?`: ...; `workflow?`: ...; \}\> \| `null`\>; `git`: `Promise`\<`Readonly`\<\{ `push`: `Promise`\<...\>; `read`: `Promise`\<...\>; `binding`: `GitBinding`; \}\>\>; \}\>; `ownerRoutes?`: [`Routes`](authorization.md#routes)\<[`OysterEnv`](host.md#oysterenv)\>; `capabilities?`: readonly `Readonly`\<`object` & `object`\>[]; `workbench?`: `Readonly`\<\{ `directory`: `Promise`\<`Readonly`\<\{ `apps`: readonly ...[]; `roles`: [`OysterRootRoles`](root-data.md#oysterrootroles); `computer?`: ... \| ...; \}\>\>; `storage`: `Pick`\<`AppStorageWire`, `"read"` \| `"write"` \| `"reset"`\> & `Readonly`\<\{ `events`: `Promise`\<...\>; \}\>; \}\>; `homeInstallationId?`: `string`; `pageScript?`: `string`; `pageAssets?`: () => `Promise`\<\{ `pageScript`: `string`; `fontStyles`: `string`; `loginFontStyles`: `string`; `shellStyles`: `string`; `grantConsentScript`: `string`; \}\>; `title?`: `string`; \}\>, `"appToolPolicy"` \| `"guestLimits"`\> & `Readonly`\<\{ `workspace?`: `Readonly`\<\{ `computerId`: `string`; `files`: [`FileSource`](files.md#filesource); `computer?`: (`principal`) => \| `Readonly`\<\{ `getCapabilities`: ...; `call`: ...; \}\> \| `Promise`\<... \| ...\> \| `null`; \}\>; `scope?`: `Readonly`\<\{ `tenantId`: `string` & `Brand`\<`"OysterTenantId"`\>; `origin`: `string`; `durableName`: `string`; `computerName`: `string`; `workspacePrefix`: `string`; `repositoryPrefix`: `string`; \}\>; \}\> |
2975
2865
 
2976
2866
  #### Returns
2977
2867