@fungi.computer/oyster 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/README.md +396 -72
  2. package/dist/agents.d.ts +3 -2
  3. package/dist/agents.js +4 -2
  4. package/dist/app-builds.d.ts +81 -8
  5. package/dist/app-builds.js +213 -60
  6. package/dist/app-storage.d.ts +3 -3
  7. package/dist/approval-capability.d.ts +5 -0
  8. package/dist/approval-capability.js +46 -0
  9. package/dist/approval-home.d.ts +51 -0
  10. package/dist/approval-home.js +226 -0
  11. package/dist/apps/catalog.d.ts +335 -0
  12. package/dist/apps/catalog.js +46 -0
  13. package/dist/apps/gate.d.ts +20 -6
  14. package/dist/apps/gate.js +42 -16
  15. package/dist/apps/index.d.ts +3 -1
  16. package/dist/apps/index.js +3 -1
  17. package/dist/apps/installation.d.ts +132 -51
  18. package/dist/apps/installation.js +176 -70
  19. package/dist/apps/permissions.d.ts +247 -0
  20. package/dist/apps/permissions.js +255 -0
  21. package/dist/boot-capability-route.d.ts +15 -0
  22. package/dist/boot-capability-route.js +196 -0
  23. package/dist/boot-capability.d.ts +103 -0
  24. package/dist/boot-capability.js +141 -0
  25. package/dist/boot-construction.d.ts +12 -0
  26. package/dist/boot-construction.js +175 -0
  27. package/dist/boot-gate.d.ts +267 -0
  28. package/dist/boot-gate.js +236 -0
  29. package/dist/boot-host-script.d.ts +2 -0
  30. package/dist/boot-host-script.js +1 -0
  31. package/dist/boot-mount.d.ts +21 -0
  32. package/dist/boot-mount.js +65 -0
  33. package/dist/browser/boot.d.ts +73 -0
  34. package/dist/browser/boot.js +502 -0
  35. package/dist/browser/browser.d.ts +104 -0
  36. package/dist/browser/browser.js +374 -0
  37. package/dist/browser/capability-source.d.ts +76 -0
  38. package/dist/browser/capability-source.js +338 -0
  39. package/dist/browser/cdp-client.d.ts +56 -0
  40. package/dist/browser/cdp-client.js +184 -0
  41. package/dist/browser/errors.d.ts +79 -0
  42. package/dist/browser/errors.js +32 -0
  43. package/dist/browser/index.d.ts +16 -0
  44. package/dist/browser/index.js +14 -0
  45. package/dist/browser/lease-registry.d.ts +61 -0
  46. package/dist/browser/lease-registry.js +101 -0
  47. package/dist/browser/operations.d.ts +225 -0
  48. package/dist/browser/operations.js +137 -0
  49. package/dist/browser/page.d.ts +25 -0
  50. package/dist/browser/page.js +172 -0
  51. package/dist/browser/quick-reads.d.ts +29 -0
  52. package/dist/browser/quick-reads.js +160 -0
  53. package/dist/browser/sessions.d.ts +52 -0
  54. package/dist/browser/sessions.js +118 -0
  55. package/dist/browser/url-policy.d.ts +18 -0
  56. package/dist/browser/url-policy.js +58 -0
  57. package/dist/build/app-imports.d.ts +12 -0
  58. package/dist/build/app-imports.js +105 -0
  59. package/dist/build/build-policy.d.ts +5 -3
  60. package/dist/build/build-policy.js +5 -3
  61. package/dist/build/candidate-builder.d.ts +1 -1
  62. package/dist/build/candidate-cli.mjs +8375 -334
  63. package/dist/build/local-build.d.ts +2 -0
  64. package/dist/build/local-build.js +28 -6
  65. package/dist/build/snapshot-package-store.d.ts +1 -1
  66. package/dist/build/snapshot-package-store.js +7 -2
  67. package/dist/build/workspace-build.d.ts +92 -5
  68. package/dist/build/workspace-build.js +93 -19
  69. package/dist/build.d.ts +1 -1
  70. package/dist/build.js +1 -1
  71. package/dist/catalog-frame.js +1 -1
  72. package/dist/cloudflare.d.ts +13 -3
  73. package/dist/cloudflare.js +102 -4
  74. package/dist/frame-binding-wire-script.js +1 -1
  75. package/dist/frame-binding-wire.js +4 -2
  76. package/dist/git-auth.d.ts +0 -2
  77. package/dist/git-auth.js +0 -2
  78. package/dist/git.d.ts +0 -1
  79. package/dist/git.js +0 -2
  80. package/dist/host.d.ts +39 -13
  81. package/dist/host.js +268 -142
  82. package/dist/index.d.ts +25 -15
  83. package/dist/index.js +39 -16
  84. package/dist/install-release-cli.d.ts +2 -0
  85. package/dist/install-release-cli.js +46 -0
  86. package/dist/installation-client.d.ts +43 -0
  87. package/dist/installation-client.js +178 -0
  88. package/dist/installation-execution.d.ts +11 -0
  89. package/dist/installation-execution.js +184 -0
  90. package/dist/installation-operations.d.ts +1437 -0
  91. package/dist/installation-operations.js +664 -0
  92. package/dist/installation-store-generation.d.ts +3 -0
  93. package/dist/installation-store-generation.js +16 -0
  94. package/dist/instance-id.d.ts +10 -0
  95. package/dist/instance-id.js +10 -0
  96. package/dist/instance-refusal.d.ts +11 -0
  97. package/dist/instance-refusal.js +21 -0
  98. package/dist/internal/delivery.js +4 -2
  99. package/dist/internal/host-gate.js +7 -1
  100. package/dist/internal/registry-installations.js +4 -4
  101. package/dist/keys.d.ts +5 -1
  102. package/dist/keys.js +10 -2
  103. package/dist/machine-link/authority.d.ts +89 -0
  104. package/dist/machine-link/authority.js +37 -0
  105. package/dist/machine-link/client.d.ts +66 -0
  106. package/dist/machine-link/client.js +94 -0
  107. package/dist/machine-link/delivery.d.ts +18 -0
  108. package/dist/machine-link/delivery.js +55 -0
  109. package/dist/machine-link/enrollment.d.ts +111 -0
  110. package/dist/machine-link/enrollment.js +286 -0
  111. package/dist/machine-link/fences.d.ts +37 -0
  112. package/dist/machine-link/fences.js +166 -0
  113. package/dist/machine-link/home.d.ts +20 -0
  114. package/dist/machine-link/home.js +24 -0
  115. package/dist/machine-link/host.d.ts +43 -0
  116. package/dist/machine-link/host.js +189 -0
  117. package/dist/machine-link/index.d.ts +15 -0
  118. package/dist/machine-link/index.js +15 -0
  119. package/dist/machine-link/link.d.ts +48 -0
  120. package/dist/machine-link/link.js +223 -0
  121. package/dist/machine-link/presence.d.ts +10 -0
  122. package/dist/machine-link/presence.js +25 -0
  123. package/dist/machine-link/workers.d.ts +6 -0
  124. package/dist/machine-link/workers.js +6 -0
  125. package/dist/mcp-owner.d.ts +2 -2
  126. package/dist/mcp-owner.js +41 -33
  127. package/dist/mcp.d.ts +15 -3
  128. package/dist/mcp.js +146 -25
  129. package/dist/older-oyster-store-refusal.d.ts +4 -0
  130. package/dist/older-oyster-store-refusal.js +18 -0
  131. package/dist/older-oyster-store.d.ts +21 -0
  132. package/dist/older-oyster-store.js +43 -0
  133. package/dist/pack.d.ts +14 -3
  134. package/dist/pack.js +44 -19
  135. package/dist/page/app-access.d.ts +7 -0
  136. package/dist/page/app-access.js +75 -0
  137. package/dist/page/boot-host.js +57 -0
  138. package/dist/page/capabilities.d.ts +3 -3
  139. package/dist/page/capabilities.js +16 -12
  140. package/dist/page/computer-handles.d.ts +3 -3
  141. package/dist/page/computer-target.d.ts +3 -0
  142. package/dist/page/computer-target.js +9 -0
  143. package/dist/page/mount.d.ts +23 -3
  144. package/dist/page/mount.js +152 -16
  145. package/dist/page-assets.d.ts +22 -0
  146. package/dist/page-assets.js +28 -0
  147. package/dist/page-script.d.ts +3 -0
  148. package/dist/page-script.js +5 -4
  149. package/dist/release.d.ts +13 -6
  150. package/dist/release.js +10 -7
  151. package/dist/root-data.d.ts +16 -6
  152. package/dist/root-data.js +2 -2
  153. package/dist/source/index.d.ts +1 -1
  154. package/dist/source/team-source.d.ts +20 -8
  155. package/dist/source/team-source.js +39 -10
  156. package/dist/source/template-seed.d.ts +2 -2
  157. package/dist/standalone/agent-mail.d.ts +24 -0
  158. package/dist/standalone/agent-mail.js +62 -0
  159. package/dist/standalone/agent-store.d.ts +9 -0
  160. package/dist/standalone/agent-store.js +30 -0
  161. package/dist/standalone/agents.d.ts +68 -9
  162. package/dist/standalone/agents.js +428 -56
  163. package/dist/standalone/app-builds-binding.d.ts +20 -2
  164. package/dist/standalone/app-builds-binding.js +147 -23
  165. package/dist/standalone/app-set.d.ts +5 -2
  166. package/dist/standalone/app-set.js +186 -144
  167. package/dist/standalone/browser.d.ts +11 -0
  168. package/dist/standalone/browser.js +72 -0
  169. package/dist/standalone/builds.d.ts +13 -4
  170. package/dist/standalone/builds.js +28 -44
  171. package/dist/standalone/computer-egress.d.ts +2 -0
  172. package/dist/standalone/computer-egress.js +13 -4
  173. package/dist/standalone/computer-fleet.d.ts +43 -0
  174. package/dist/standalone/computer-fleet.js +200 -0
  175. package/dist/standalone/computer.d.ts +44 -9
  176. package/dist/standalone/computer.js +129 -22
  177. package/dist/standalone/install-apps-cli.js +43 -6
  178. package/dist/standalone/instance.d.ts +2 -2
  179. package/dist/standalone/instance.js +8 -11
  180. package/dist/standalone/machine-link.d.ts +354 -0
  181. package/dist/standalone/machine-link.js +368 -0
  182. package/dist/standalone/media.d.ts +2 -2
  183. package/dist/standalone/media.js +19 -16
  184. package/dist/standalone/preview.d.ts +2 -2
  185. package/dist/standalone/preview.js +37 -10
  186. package/dist/standalone/registry.d.ts +151 -9
  187. package/dist/standalone/registry.js +305 -8
  188. package/dist/standalone/worker.d.ts +19 -5
  189. package/dist/standalone/worker.js +90 -54
  190. package/dist/standalone/workflow-binding.d.ts +18 -22
  191. package/dist/standalone/workflow-binding.js +18 -18
  192. package/dist/standalone/workflow-control.d.ts +4 -0
  193. package/dist/standalone/workflow-control.js +40 -0
  194. package/dist/standalone/workflow-events.d.ts +2 -2
  195. package/dist/standalone/workflow-events.js +9 -10
  196. package/dist/standalone/workflow-git-capture.js +4 -3
  197. package/dist/standalone/workflow-host.d.ts +162 -161
  198. package/dist/standalone/workflow-host.js +101 -21
  199. package/dist/standalone/workflow-node-capture.js +11 -4
  200. package/dist/standalone/workflow-schedules.d.ts +5 -2
  201. package/dist/standalone/workflow-schedules.js +9 -10
  202. package/dist/standalone/workflow-trigger-host.d.ts +65 -5
  203. package/dist/standalone/workflow-trigger-host.js +2 -2
  204. package/dist/standalone/workflow-webhooks.d.ts +22 -0
  205. package/dist/standalone/workflow-webhooks.js +39 -0
  206. package/dist/standalone/workflows.d.ts +140 -43
  207. package/dist/standalone/workflows.js +198 -39
  208. package/dist/storage-frame.d.ts +6 -6
  209. package/dist/testing/capabilities.js +14 -3
  210. package/dist/testing/installation.js +26 -2
  211. package/dist/testing/worker.js +1 -1
  212. package/dist/testing/workers-runtime.d.ts +8 -2
  213. package/dist/testing/workers-runtime.js +20 -2
  214. package/dist/webhook-abuse.d.ts +25 -0
  215. package/dist/webhook-abuse.js +54 -0
  216. package/dist/webhook-custody.d.ts +144 -0
  217. package/dist/webhook-custody.js +222 -0
  218. package/dist/webhook-ingress.d.ts +36 -0
  219. package/dist/webhook-ingress.js +146 -0
  220. package/dist/webhooks.d.ts +111 -0
  221. package/dist/webhooks.js +189 -0
  222. package/dist/workers-git.d.ts +12 -17
  223. package/dist/workers-git.js +64 -52
  224. package/dist/workers.d.ts +226 -13
  225. package/dist/workers.js +363 -51
  226. package/dist/workflow-agent-authority.d.ts +8 -0
  227. package/dist/workflow-agent-authority.js +42 -0
  228. package/dist/workflows.d.ts +66 -0
  229. package/dist/workflows.js +97 -0
  230. package/docs/api/README.md +63 -37
  231. package/docs/api/agents.md +17 -0
  232. package/docs/api/app-storage.md +1 -1
  233. package/docs/api/apps.md +1394 -543
  234. package/docs/api/browser/boot.md +132 -0
  235. package/docs/api/browser.md +1440 -0
  236. package/docs/api/build-contract.md +38 -25
  237. package/docs/api/build.md +263 -84
  238. package/docs/api/cloudflare.md +93 -7
  239. package/docs/api/git.md +3 -13
  240. package/docs/api/host.md +944 -118
  241. package/docs/api/index.md +320 -18
  242. package/docs/api/keys.md +24 -1
  243. package/docs/api/mcp.md +59 -12
  244. package/docs/api/modules.md +33 -40
  245. package/docs/api/pack.md +57 -8
  246. package/docs/api/page/mount.md +92 -4
  247. package/docs/api/workers-git.md +103 -24
  248. package/docs/api/workers.md +1594 -244
  249. package/docs/site/agent-quickstart.mdx +28 -14
  250. package/examples/standalone/worker.ts +3 -1
  251. package/examples/standalone/wrangler.jsonc +2 -0
  252. package/package.json +73 -71
  253. package/dist/installation-consent.d.ts +0 -81
  254. package/dist/installation-consent.js +0 -84
  255. package/dist/shell/app-directory.d.ts +0 -542
  256. package/dist/shell/app-directory.js +0 -196
  257. package/dist/shell/browser-actions.d.ts +0 -7
  258. package/dist/shell/browser-actions.js +0 -56
  259. package/dist/shell/command-host.d.ts +0 -112
  260. package/dist/shell/command-host.js +0 -502
  261. package/dist/shell/commands.d.ts +0 -25
  262. package/dist/shell/commands.js +0 -78
  263. package/dist/shell/index.d.ts +0 -8
  264. package/dist/shell/index.js +0 -8
  265. package/dist/shell/keys.d.ts +0 -41
  266. package/dist/shell/keys.js +0 -134
  267. package/dist/shell/shell-module.d.ts +0 -55
  268. package/dist/shell/shell-module.js +0 -86
  269. package/dist/shell/window-manager.d.ts +0 -128
  270. package/dist/shell/window-manager.js +0 -730
  271. package/dist/shell/workbench-contract.d.ts +0 -68
  272. package/dist/shell/workbench-directory.d.ts +0 -332
  273. package/dist/shell/workbench-directory.js +0 -35
  274. package/dist/shell/workbench-host-types.d.ts +0 -96
  275. package/dist/shell/workbench-host-types.js +0 -1
  276. package/dist/shell/workbench-host.d.ts +0 -34
  277. package/dist/shell/workbench-host.js +0 -352
  278. package/dist/shell/workbench-model.d.ts +0 -194
  279. package/dist/shell/workbench-model.js +0 -53
  280. package/dist/shell/workbench.d.ts +0 -4
  281. package/dist/shell/workbench.js +0 -2
  282. package/docs/api/shell/app-directory.md +0 -599
  283. package/docs/api/shell/command-host.md +0 -224
  284. package/docs/api/shell/commands.md +0 -197
  285. package/docs/api/shell/keys.md +0 -183
  286. package/docs/api/shell/shell-module.md +0 -204
  287. package/docs/api/shell/window-manager.md +0 -267
  288. package/docs/api/shell/workbench-directory.md +0 -119
  289. package/docs/api/shell/workbench.md +0 -205
  290. package/docs/api/shell.md +0 -1915
  291. /package/dist/{shell/workbench-contract.js → page/boot-host.d.ts} +0 -0
package/docs/api/mcp.md CHANGED
@@ -176,6 +176,54 @@ capabilities stay fixed.
176
176
 
177
177
  ---
178
178
 
179
+ ### oysterAppSnapshot()
180
+
181
+ ```ts
182
+ function oysterAppSnapshot(
183
+ host,
184
+ surfaces,
185
+ principal,
186
+ installations,
187
+ access,
188
+ sessionId?,
189
+ familyListingCache?,
190
+ ): Promise<
191
+ Readonly<{
192
+ modules: Readonly<Record<string, ModuleRegistration>>;
193
+ levels: Readonly<Record<string, AppToolPolicy["level"]>>;
194
+ fences: Readonly<Record<string, string>>;
195
+ effects: Readonly<
196
+ Record<string, Readonly<Record<string, "read" | "write" | "external">>>
197
+ >;
198
+ }>
199
+ >;
200
+ ```
201
+
202
+ Derive the current principal's admitted App modules and grants.
203
+
204
+ #### Parameters
205
+
206
+ | Parameter | Type | Description |
207
+ | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
208
+ | `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"`\> | - |
209
+ | `surfaces` | [`AppSurfaceCache`](#appsurfacecache) | - |
210
+ | `principal` | [`OysterPrincipal`](host.md#oysterprincipal) | - |
211
+ | `installations` | readonly `Readonly`\<\{ `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`: \| `"approvals"` \| `"agent.list"` \| `"agent.manage"` \| `"agent.rename"` \| `"agent.avatar"` \| `"agent.toolPolicy"` \| `"agent.read"` \| `"agent.send"` \| `"computer.list"` \| `"computer.readFile"` \| `"computer.writeFile"` \| `"computer.execute"` \| `"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`; \}\>[] | - |
212
+ | `access` | [`OysterCallerAccess`](#oystercalleraccess) | - |
213
+ | `sessionId?` | `string` | - |
214
+ | `familyListingCache?` | `Map`\<`string`, `unknown`\> | Shares one tool-family listing per Instance across the two `appModules` passes one `oysterAppMethods` call can make (the eager grants/version pass, and a session-scoped re-derivation); never shared across separate calls, so it never serves another request's listing. |
215
+
216
+ #### Returns
217
+
218
+ `Promise`\<`Readonly`\<\{ `modules`: `Readonly`\<`Record`\<`string`,
219
+ `ModuleRegistration`\>\>; `levels`: `Readonly`\<`Record`\<`string`,
220
+ [`AppToolPolicy`](apps.md#apptoolpolicy)\[`"level"`\]\>\>; `fences`:
221
+ `Readonly`\<`Record`\<`string`, `string`\>\>; `effects`:
222
+ `Readonly`\<`Record`\<`string`, `Readonly`\<`Record`\<`string`, `"read"` \|
223
+ `"write"` \| `"external"`\>\>\>\>; \}\>\>
224
+
225
+ ---
226
+
179
227
  ### oysterAppMethods()
180
228
 
181
229
  ```ts
@@ -210,13 +258,13 @@ Releases, installation authority or the caller's own grants.
210
258
 
211
259
  #### Parameters
212
260
 
213
- | Parameter | Type |
214
- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
215
- | `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"`\> |
216
- | `principal` | [`OysterPrincipal`](host.md#oysterprincipal) |
217
- | `access` | [`OysterCallerAccess`](#oystercalleraccess) |
218
- | `surfaces` | [`AppSurfaceCache`](#appsurfacecache) |
219
- | `preloadedInstallations?` | readonly `Readonly`\<\{ `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"`; `authorityVersion`: `number`; `status`: `"enabled"` \| `"disabled"` \| `"deleted"`; `visibility`: `"private"` \| `"public"`; `declaredOperationsDigest`: `Sha256Digest`; `approvedGrants`: readonly `Readonly`\<\{ `capability`: \| `"agent.list"` \| `"agent.manage"` \| `"agent.rename"` \| `"agent.toolPolicy"` \| `"agent.read"` \| `"agent.send"` \| `"computer.list"` \| `"computer.readFile"` \| `"computer.writeFile"` \| `"computer.execute"` \| `"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`; `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`; \}\>[] |
261
+ | Parameter | Type |
262
+ | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
263
+ | `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"` \| `"approvals"`\> |
264
+ | `principal` | [`OysterPrincipal`](host.md#oysterprincipal) |
265
+ | `access` | [`OysterCallerAccess`](#oystercalleraccess) |
266
+ | `surfaces` | [`AppSurfaceCache`](#appsurfacecache) |
267
+ | `preloadedInstallations?` | readonly `Readonly`\<\{ `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`: \| `"approvals"` \| `"agent.list"` \| `"agent.manage"` \| `"agent.rename"` \| `"agent.avatar"` \| `"agent.toolPolicy"` \| `"agent.read"` \| `"agent.send"` \| `"computer.list"` \| `"computer.readFile"` \| `"computer.writeFile"` \| `"computer.execute"` \| `"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`\<...\>[]; \}\>[]; `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`; \}\>[] |
220
268
 
221
269
  #### Returns
222
270
 
@@ -273,7 +321,6 @@ function oysterMcpCatalogLoad(host): (principal) => Promise<Readonly<{
273
321
  }>>;
274
322
  }>[];
275
323
  grants: Grants;
276
- approvedWrites?: readonly string[];
277
324
  }>>;
278
325
  ```
279
326
 
@@ -289,13 +336,13 @@ stored approval, and passes the App's gate.
289
336
 
290
337
  #### Parameters
291
338
 
292
- | Parameter | Type |
293
- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
294
- | `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"computer"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"`\> |
339
+ | Parameter | Type |
340
+ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
341
+ | `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"computer"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"` \| `"workflows"`\> |
295
342
 
296
343
  #### Returns
297
344
 
298
345
  (`principal`) => `Promise`\<`Readonly`\<\{ `instructions`: `string`; `sources`:
299
346
  readonly `Readonly`\<\{ `id`: `string`; `acquire`: (`context`) =>
300
347
  `Promise`\<`Readonly`\<\{ `snapshot`: ...; `release`: ...; \}\>\>; \}\>[];
301
- `grants`: `Grants`; `approvedWrites?`: readonly `string`[]; \}\>\>
348
+ `grants`: `Grants`; \}\>\>
@@ -8,43 +8,36 @@
8
8
 
9
9
  ## Modules
10
10
 
11
- | Module | Description |
12
- | --------------------------------------------------------- | ----------- |
13
- | [agents](agents.md) | - |
14
- | [app-storage](app-storage.md) | - |
15
- | [apps](apps.md) | - |
16
- | [auth](auth.md) | - |
17
- | [build-contract](build-contract.md) | - |
18
- | [build](build.md) | - |
19
- | [cloudflare](cloudflare.md) | - |
20
- | [computer](computer.md) | - |
21
- | [files](files.md) | - |
22
- | [git](git.md) | - |
23
- | [host](host.md) | - |
24
- | [index](index.md) | - |
25
- | [invocation](invocation.md) | - |
26
- | [keys](keys.md) | - |
27
- | [mcp](mcp.md) | - |
28
- | [media](media.md) | - |
29
- | [pack](pack.md) | - |
30
- | [page/mount](page/mount.md) | - |
31
- | [root-data](root-data.md) | - |
32
- | [shell/app-directory](shell/app-directory.md) | - |
33
- | [shell/command-host](shell/command-host.md) | - |
34
- | [shell/commands](shell/commands.md) | - |
35
- | [shell](shell.md) | - |
36
- | [shell/keys](shell/keys.md) | - |
37
- | [shell/shell-module](shell/shell-module.md) | - |
38
- | [shell/window-manager](shell/window-manager.md) | - |
39
- | [shell/workbench-directory](shell/workbench-directory.md) | - |
40
- | [shell/workbench](shell/workbench.md) | - |
41
- | [tenancy/auth0](tenancy/auth0.md) | - |
42
- | [tenancy/cloudflare](tenancy/cloudflare.md) | - |
43
- | [tenancy/cold-directory](tenancy/cold-directory.md) | - |
44
- | [tenancy](tenancy.md) | - |
45
- | [tenancy/owner-key](tenancy/owner-key.md) | - |
46
- | [tenancy/registry](tenancy/registry.md) | - |
47
- | [tenancy/resolve](tenancy/resolve.md) | - |
48
- | [tenant](tenant.md) | - |
49
- | [workers-git](workers-git.md) | - |
50
- | [workers](workers.md) | - |
11
+ | Module | Description |
12
+ | --------------------------------------------------- | ----------- |
13
+ | [agents](agents.md) | - |
14
+ | [app-storage](app-storage.md) | - |
15
+ | [apps](apps.md) | - |
16
+ | [auth](auth.md) | - |
17
+ | [browser/boot](browser/boot.md) | - |
18
+ | [browser](browser.md) | - |
19
+ | [build-contract](build-contract.md) | - |
20
+ | [build](build.md) | - |
21
+ | [cloudflare](cloudflare.md) | - |
22
+ | [computer](computer.md) | - |
23
+ | [files](files.md) | - |
24
+ | [git](git.md) | - |
25
+ | [host](host.md) | - |
26
+ | [index](index.md) | - |
27
+ | [invocation](invocation.md) | - |
28
+ | [keys](keys.md) | - |
29
+ | [mcp](mcp.md) | - |
30
+ | [media](media.md) | - |
31
+ | [pack](pack.md) | - |
32
+ | [page/mount](page/mount.md) | - |
33
+ | [root-data](root-data.md) | - |
34
+ | [tenancy/auth0](tenancy/auth0.md) | - |
35
+ | [tenancy/cloudflare](tenancy/cloudflare.md) | - |
36
+ | [tenancy/cold-directory](tenancy/cold-directory.md) | - |
37
+ | [tenancy](tenancy.md) | - |
38
+ | [tenancy/owner-key](tenancy/owner-key.md) | - |
39
+ | [tenancy/registry](tenancy/registry.md) | - |
40
+ | [tenancy/resolve](tenancy/resolve.md) | - |
41
+ | [tenant](tenant.md) | - |
42
+ | [workers-git](workers-git.md) | - |
43
+ | [workers](workers.md) | - |
package/docs/api/pack.md CHANGED
@@ -8,6 +8,49 @@
8
8
 
9
9
  # pack
10
10
 
11
+ ## Classes
12
+
13
+ ### InstallationObservationError
14
+
15
+ Observer failure supplies no installation outcome and never cancels its owner.
16
+
17
+ #### Extends
18
+
19
+ - `Error`
20
+
21
+ #### Constructors
22
+
23
+ ##### Constructor
24
+
25
+ ```ts
26
+ new InstallationObservationError(requestId, options?): InstallationObservationError;
27
+ ```
28
+
29
+ ###### Parameters
30
+
31
+ | Parameter | Type |
32
+ | ----------- | -------------- |
33
+ | `requestId` | `string` |
34
+ | `options?` | `ErrorOptions` |
35
+
36
+ ###### Returns
37
+
38
+ [`InstallationObservationError`](#installationobservationerror)
39
+
40
+ ###### Overrides
41
+
42
+ ```ts
43
+ Error.constructor;
44
+ ```
45
+
46
+ #### Properties
47
+
48
+ ##### requestId
49
+
50
+ ```ts
51
+ readonly requestId: string;
52
+ ```
53
+
11
54
  ## Type Aliases
12
55
 
13
56
  ### PackOptions
@@ -81,13 +124,15 @@ function installFromSource(input): Promise<Response>;
81
124
 
82
125
  Capture an Artifacts Git commit, build its Release, upload it to an Oyster, and
83
126
  install it, or switch an existing installation to it
84
- ([installRelease](#installrelease)).
127
+ ([installRelease](#installrelease)). `waitMs` starts with the upload/observation
128
+ phase after packing; a supplied caller signal retains its original lifetime
129
+ through that phase.
85
130
 
86
131
  #### Parameters
87
132
 
88
- | Parameter | Type |
89
- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90
- | `input` | `Readonly`\<\{ `appId`: `string`; `releaseId?`: `string`; `recipe`: [`PackOptions`](#packoptions)\[`"recipe"`\]; `source`: `Readonly`\<\{ `remote`: `string`; `token`: `string`; `sourceRevision`: `string`; \}\>; `packageStoreDirectory?`: `string`; `url`: `string`; `key`: `string`; `installationId`: `string`; \}\> |
133
+ | Parameter | Type |
134
+ | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
135
+ | `input` | `Readonly`\<\{ `appId`: `string`; `releaseId?`: `string`; `recipe`: \{ `kind?`: `"bundled-html"` \| `"source-html"`; `entry`: `string`; `assets?`: \{ `maxManifestBytes`: `number`; `maxObjects`: `number`; `maxObjectBytes`: `number`; `maxTotalBytes`: `number`; \}; `assetBase?`: `string`; `backend`: \| \{ `entry?`: `string`; `runtime`: \{ `kind`: `"durable-facet"`; `stateSchema`: `number`; \}; `compatibilityDate`: `string`; `exportName`: `string`; \} \| `null`; `maxOutputBytes`: `number`; \}; `source`: `Readonly`\<\{ `remote`: `string`; `token`: `string`; `sourceRevision`: `string`; \}\>; `packageStoreDirectory?`: `string`; `url`: `string`; `key`: `string`; `installationId`: `string`; \}\> & `Readonly`\<\{ `waitMs?`: `number`; `signal?`: `AbortSignal`; \}\> |
91
136
 
92
137
  #### Returns
93
138
 
@@ -103,13 +148,17 @@ function installRelease(input): Promise<Response>;
103
148
 
104
149
  Upload a packed Release to an Oyster and install it. The host installs a new
105
150
  installation (201) or switches an existing one to this Release (200), keeping
106
- its state; both go through its one install-or-select owner.
151
+ its state. Uploads precede admission; this helper then waits for the correlated
152
+ terminal owner receipt, not merely the HTTP acknowledgement. Uploads and
153
+ observation share the caller signal or explicit `waitMs`; absent either, the
154
+ installer owns a twenty-minute default. Expiry does not cancel admitted work and
155
+ is reported as an unconfirmed observation, not refusal.
107
156
 
108
157
  #### Parameters
109
158
 
110
- | Parameter | Type |
111
- | --------- | --------------------------------------------------------------------------------------------------------- |
112
- | `input` | `Readonly`\<\{ `directory`: `string`; `url`: `string`; `key`: `string`; `installationId?`: `string`; \}\> |
159
+ | Parameter | Type |
160
+ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
161
+ | `input` | `Readonly`\<\{ `directory`: `string`; `url`: `string`; `key`: `string`; `installationId?`: `string`; `onAdmitted?`: (`operation`) => `void`; \}\> & `Readonly`\<\{ `waitMs?`: `number`; `signal?`: `AbortSignal`; \}\> |
113
162
 
114
163
  #### Returns
115
164
 
@@ -8,6 +8,91 @@
8
8
 
9
9
  # page/mount
10
10
 
11
+ ## Classes
12
+
13
+ ### OysterAgentBrowserHost
14
+
15
+ One page-wide selected Session, using only its reporting App's admitted view.
16
+
17
+ #### Constructors
18
+
19
+ ##### Constructor
20
+
21
+ ```ts
22
+ new OysterAgentBrowserHost(signal): OysterAgentBrowserHost;
23
+ ```
24
+
25
+ End the selected connection with the page's own lifetime.
26
+
27
+ ###### Parameters
28
+
29
+ | Parameter | Type |
30
+ | --------- | ------------- |
31
+ | `signal` | `AbortSignal` |
32
+
33
+ ###### Returns
34
+
35
+ [`OysterAgentBrowserHost`](#oysteragentbrowserhost)
36
+
37
+ #### Methods
38
+
39
+ ##### release()
40
+
41
+ ```ts
42
+ release(frame): void;
43
+ ```
44
+
45
+ A departing or deselecting mount cannot close a different active mount.
46
+
47
+ ###### Parameters
48
+
49
+ | Parameter | Type |
50
+ | --------- | ------------------- |
51
+ | `frame` | `HTMLIFrameElement` |
52
+
53
+ ###### Returns
54
+
55
+ `void`
56
+
57
+ ##### dispose()
58
+
59
+ ```ts
60
+ dispose(): void;
61
+ ```
62
+
63
+ Release the page's current selection; later reports cannot reconnect it.
64
+
65
+ ###### Returns
66
+
67
+ `void`
68
+
69
+ ##### report()
70
+
71
+ ```ts
72
+ report(
73
+ frame,
74
+ selection,
75
+ capabilities,
76
+ whistle
77
+ ): Promise<void>;
78
+ ```
79
+
80
+ Bind the reporting mount's current command view to its explicitly selected
81
+ Session.
82
+
83
+ ###### Parameters
84
+
85
+ | Parameter | Type |
86
+ | -------------- | ---------------------------------------------------------------------------- |
87
+ | `frame` | `HTMLIFrameElement` |
88
+ | `selection` | \| `Readonly`\<\{ `agentId`: `string`; `sessionId`: `string`; \}\> \| `null` |
89
+ | `capabilities` | `CapabilityDirectory` |
90
+ | `whistle` | `Pick`\<`WhistleRuntime`, `"snapshot"` \| `"execute"`\> |
91
+
92
+ ###### Returns
93
+
94
+ `Promise`\<`void`\>
95
+
11
96
  ## Type Aliases
12
97
 
13
98
  ### OysterAppOpenRouting
@@ -41,6 +126,9 @@ The host-admitted App configuration served by Oyster.
41
126
  ```ts
42
127
  type OysterAppConnectionOptions = Readonly<{
43
128
  config: OysterAppConfig;
129
+ agentBrowser: OysterAgentBrowserHost;
130
+ agentCommands: Pick<WhistleRuntime, "snapshot" | "execute">;
131
+ computerTarget?: string;
44
132
  frame: HTMLIFrameElement;
45
133
  signal: AbortSignal;
46
134
  handlers: AppHostHandlers;
@@ -218,7 +306,7 @@ would, without a frame between the shell and its host.
218
306
 
219
307
  | Name | Type | Description |
220
308
  | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
221
- | `storage` | \| `Readonly`\<\{ `read`: `Promise`\<\{ `value`: `Json`; `source`: `"team"` \| `"member"` \| `"none"`; `team`: \| \{ `value`: `Json`; `revision`: `number`; \} \| `null`; `member`: \| \{ `value`: `Json`; `revision`: `number`; \} \| `null`; `canWriteTeam`: `boolean`; \}\>; `write`: `Promise`\<\{ `revision`: `number`; \}\>; `reset`: `Promise`\<\{ `revision`: `number`; \}\>; `watch`: `Promise`\<`AppStorageWatch`\>; \}\> \| `null` | - |
309
+ | `storage` | \| `Readonly`\<\{ `read`: `Promise`\<\{ `value`: `Json`; `source`: `"member"` \| `"team"` \| `"none"`; `team`: \| \{ `value`: `Json`; `revision`: `number`; \} \| `null`; `member`: \| \{ `value`: `Json`; `revision`: `number`; \} \| `null`; `canWriteTeam`: `boolean`; \}\>; `write`: `Promise`\<\{ `revision`: `number`; \}\>; `reset`: `Promise`\<\{ `revision`: `number`; \}\>; `watch`: `Promise`\<`AppStorageWatch`\>; \}\> \| `null` | - |
222
310
  | `methods` | `object` | - |
223
311
  | `call()` | (`method`, `input`) => `Promise`\<`WhistleJsonValue`\> | Call the named method with JSON-encoded `input`; resolves with its JSON result. |
224
312
 
@@ -269,9 +357,9 @@ Resolve only the slots admitted for this installation by its current host.
269
357
 
270
358
  #### Parameters
271
359
 
272
- | Parameter | Type |
273
- | --------- | -------------------------------------------------------------------------------------------------------------- |
274
- | `options` | `Pick`\<[`OysterAppConnectionOptions`](#oysterappconnectionoptions), `"config"` \| `"signal"` \| `"appOpen"`\> |
360
+ | Parameter | Type |
361
+ | --------- | ------------------------------------------------------------------------------------------------------------------------------------ |
362
+ | `options` | `Pick`\<[`OysterAppConnectionOptions`](#oysterappconnectionoptions), `"config"` \| `"signal"` \| `"appOpen"` \| `"computerTarget"`\> |
275
363
 
276
364
  #### Returns
277
365