@fungi.computer/oyster 0.6.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.
- package/README.md +132 -78
- package/dist/agent-archive-projection.d.ts +8 -0
- package/dist/agent-archive-projection.js +49 -0
- package/dist/agent-schedules.d.ts +50 -0
- package/dist/agent-schedules.js +17 -0
- package/dist/agents.d.ts +35 -14
- package/dist/agents.js +93 -144
- package/dist/app-builds.d.ts +7 -2
- package/dist/app-builds.js +19 -2
- package/dist/approval-capability.d.ts +1 -1
- package/dist/approval-capability.js +11 -16
- package/dist/approval-home.d.ts +2 -1
- package/dist/approval-home.js +5 -3
- package/dist/apps/catalog.js +1 -1
- package/dist/apps/gate.d.ts +4 -7
- package/dist/apps/gate.js +14 -29
- package/dist/apps/index.d.ts +1 -1
- package/dist/apps/installation.d.ts +4 -42
- package/dist/apps/installation.js +7 -75
- package/dist/apps/operations.js +0 -10
- package/dist/apps/permissions.d.ts +18 -8
- package/dist/apps/permissions.js +7 -1
- package/dist/auth.d.ts +1 -24
- package/dist/auth.js +9 -39
- package/dist/authorization.d.ts +307 -0
- package/dist/authorization.js +542 -0
- package/dist/boot-host-script.js +1 -1
- package/dist/build/build-jobs.d.ts +2 -2
- package/dist/build/candidate-builder.d.ts +2 -0
- package/dist/build/candidate-builder.js +5 -1
- package/dist/build/candidate-cli.js +3 -0
- package/dist/build/candidate-cli.mjs +59 -21
- package/dist/build/job-log.d.ts +23 -0
- package/dist/build/job-log.js +88 -0
- package/dist/build/local-build.d.ts +2 -0
- package/dist/build/local-build.js +11 -9
- package/dist/cloudflare.d.ts +4 -1
- package/dist/cloudflare.js +1 -1
- package/dist/files.js +9 -8
- package/dist/git-admission.d.ts +3 -3
- package/dist/git-admission.js +4 -6
- package/dist/git-door.d.ts +8 -7
- package/dist/git-door.js +18 -17
- package/dist/git.d.ts +1 -1
- package/dist/host.d.ts +33 -40
- package/dist/host.js +153 -272
- package/dist/installation-execution.js +10 -5
- package/dist/installation-operations.d.ts +4 -180
- package/dist/installation-operations.js +1 -5
- package/dist/installation-store-generation.d.ts +4 -1
- package/dist/installation-store-generation.js +59 -6
- package/dist/internal/delivery.js +0 -1
- package/dist/internal/host-gate.d.ts +3 -2
- package/dist/internal/host-gate.js +5 -18
- package/dist/internal/invocation-timing.d.ts +16 -0
- package/dist/internal/invocation-timing.js +23 -0
- package/dist/internal/registry-installations.js +1 -0
- package/dist/invocation.d.ts +15 -14
- package/dist/invocation.js +58 -26
- package/dist/keys.d.ts +2 -19
- package/dist/keys.js +1 -37
- package/dist/mcp.d.ts +15 -27
- package/dist/mcp.js +105 -155
- package/dist/page/agent-browser.d.ts +15 -0
- package/dist/page/agent-browser.js +162 -0
- package/dist/page/app-permissions-port.d.ts +3 -0
- package/dist/page/app-permissions-port.js +43 -0
- package/dist/page/app-permissions.d.ts +11 -0
- package/dist/page/app-permissions.js +296 -0
- package/dist/page/isolated-page-theme.d.ts +2 -0
- package/dist/page/isolated-page-theme.js +11 -0
- package/dist/page/mount.d.ts +2 -13
- package/dist/page/mount.js +7 -93
- package/dist/page-script.d.ts +0 -3
- package/dist/page-script.js +3 -4
- package/dist/standalone/agent-archive-owner.d.ts +42 -0
- package/dist/standalone/agent-archive-owner.js +116 -0
- package/dist/standalone/agent-archive-schedules.d.ts +6 -0
- package/dist/standalone/agent-archive-schedules.js +76 -0
- package/dist/standalone/agent-archive.d.ts +31 -0
- package/dist/standalone/agent-archive.js +67 -0
- package/dist/standalone/agent-computers.d.ts +7 -6
- package/dist/standalone/agent-computers.js +4 -7
- package/dist/standalone/agent-mail.d.ts +2 -2
- package/dist/standalone/agents.d.ts +157 -20
- package/dist/standalone/agents.js +234 -30
- package/dist/standalone/app-builds-binding.js +1 -1
- package/dist/standalone/app-set.js +2 -54
- package/dist/standalone/app-source.d.ts +3 -4
- package/dist/standalone/app-source.js +12 -9
- package/dist/standalone/builds.d.ts +2 -14
- package/dist/standalone/builds.js +15 -13
- package/dist/standalone/computer-fleet.d.ts +4 -4
- package/dist/standalone/computer-fleet.js +13 -42
- package/dist/standalone/computer.d.ts +4 -3
- package/dist/standalone/computer.js +52 -53
- package/dist/standalone/dashboard-approval.d.ts +10 -0
- package/dist/standalone/dashboard-approval.js +66 -0
- package/dist/standalone/machine-link.d.ts +4 -221
- package/dist/standalone/machine-link.js +21 -15
- package/dist/standalone/media.d.ts +1 -0
- package/dist/standalone/media.js +20 -14
- package/dist/standalone/owner-routes.d.ts +16 -0
- package/dist/standalone/owner-routes.js +21 -0
- package/dist/standalone/permission-resources.d.ts +5 -0
- package/dist/standalone/permission-resources.js +31 -0
- package/dist/standalone/registry.d.ts +7 -0
- package/dist/standalone/registry.js +3 -0
- package/dist/standalone/tenancy.d.ts +0 -3
- package/dist/standalone/tenancy.js +2 -5
- package/dist/standalone/worker-routes.d.ts +19 -0
- package/dist/standalone/worker-routes.js +9 -0
- package/dist/standalone/worker.d.ts +1 -1
- package/dist/standalone/worker.js +27 -35
- package/dist/standalone/workflow-binding.d.ts +8 -3
- package/dist/standalone/workflow-binding.js +14 -5
- package/dist/standalone/workflow-git-capture.js +2 -1
- package/dist/standalone/workflow-host.d.ts +8 -103
- package/dist/standalone/workflow-host.js +1 -1
- package/dist/standalone/workflow-node-capture.js +2 -2
- package/dist/standalone/workflow-root-authority.d.ts +1 -1
- package/dist/standalone/workflow-root-authority.js +1 -1
- package/dist/standalone/workflow-schedules.d.ts +14 -5
- package/dist/standalone/workflow-schedules.js +11 -5
- package/dist/standalone/workflow-webhooks.d.ts +4 -18
- package/dist/standalone/workflow-webhooks.js +5 -5
- package/dist/standalone/workflows.d.ts +36 -28
- package/dist/standalone/workflows.js +6 -3
- package/dist/storage-frame.d.ts +6 -6
- package/dist/testing/capabilities.d.ts +7 -6
- package/dist/testing/capabilities.js +3 -6
- package/dist/testing/installation.d.ts +0 -1
- package/dist/testing/installation.js +2 -5
- package/dist/workers-git.d.ts +12 -4
- package/dist/workers-git.js +38 -35
- package/dist/workers.d.ts +9 -1
- package/dist/workers.js +44 -8
- package/dist/workflows.d.ts +2 -0
- package/dist/workflows.js +1 -0
- package/docs/api/README.md +7 -0
- package/docs/api/agent-schedules.md +175 -0
- package/docs/api/agents.md +34 -13
- package/docs/api/app-storage.md +1 -1
- package/docs/api/apps.md +323 -225
- package/docs/api/auth.md +0 -55
- package/docs/api/authorization.md +1300 -0
- package/docs/api/build.md +40 -37
- package/docs/api/cloudflare.md +3 -3
- package/docs/api/git.md +20 -11
- package/docs/api/host.md +64 -192
- package/docs/api/index.md +1 -1
- package/docs/api/invocation.md +14 -14
- package/docs/api/keys.md +1 -98
- package/docs/api/mcp.md +43 -40
- package/docs/api/modules.md +2 -0
- package/docs/api/page/mount.md +16 -19
- package/docs/api/workers-git.md +46 -12
- package/docs/api/workers.md +124 -235
- package/package.json +39 -20
- package/dist/page/computer-target.d.ts +0 -3
- package/dist/page/computer-target.js +0 -9
- package/dist/standalone/channel-session-door.d.ts +0 -4
- package/dist/standalone/channel-session-door.js +0 -72
package/docs/api/keys.md
CHANGED
|
@@ -74,8 +74,7 @@ type LiveOysterKey = Readonly<{
|
|
|
74
74
|
|
|
75
75
|
The minimal live facts `OysterHost`'s `keys.live` port returns: enough to gate
|
|
76
76
|
one call, never the key's name or timestamps. `null` for an unknown, revoked,
|
|
77
|
-
expired or suspended key
|
|
78
|
-
`keyAllowsComputerUse` already treat as no authority.
|
|
77
|
+
expired or suspended key, which `authorization.ts` treats as no authority.
|
|
79
78
|
|
|
80
79
|
## Variables
|
|
81
80
|
|
|
@@ -122,99 +121,3 @@ A grant reaching every current and future installation for `capability`.
|
|
|
122
121
|
#### Returns
|
|
123
122
|
|
|
124
123
|
`Grant`\<[`OysterKeyCapability`](#oysterkeycapability)\>
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
### keyAppAccess()
|
|
129
|
-
|
|
130
|
-
```ts
|
|
131
|
-
function keyAppAccess(
|
|
132
|
-
key,
|
|
133
|
-
installationId,
|
|
134
|
-
): {
|
|
135
|
-
level: "read" | "write";
|
|
136
|
-
revision: string;
|
|
137
|
-
grantedBy: string;
|
|
138
|
-
} | null;
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
One live key's access to one installation: `write` when its grants admit
|
|
142
|
-
`apps.use` there, `read` when they admit `apps.read`, otherwise `null` --
|
|
143
|
-
including for an installation added after the key was issued, unless the key
|
|
144
|
-
holds "All Apps" (`targets: {kind: "all"}`). The same shape as an Agent's stored
|
|
145
|
-
[AppToolPolicy](apps.md#apptoolpolicy); its caller adds `bindingName` (which
|
|
146
|
-
varies by caller: the plain installation id for the gate, the uppercased binding
|
|
147
|
-
name for MCP) to reach the full `AppToolAccess`.
|
|
148
|
-
|
|
149
|
-
#### Parameters
|
|
150
|
-
|
|
151
|
-
| Parameter | Type |
|
|
152
|
-
| ---------------- | --------------------------------- |
|
|
153
|
-
| `key` | [`LiveOysterKey`](#liveoysterkey) |
|
|
154
|
-
| `installationId` | `string` |
|
|
155
|
-
|
|
156
|
-
#### Returns
|
|
157
|
-
|
|
158
|
-
\| \{ `level`: `"read"` \| `"write"`; `revision`: `string`; `grantedBy`:
|
|
159
|
-
`string`; \} \| `null`
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
### keyAgentAccess()
|
|
164
|
-
|
|
165
|
-
```ts
|
|
166
|
-
function keyAgentAccess(key, agentId): boolean;
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
Agent access is scoped to the granted Agent ids, never inferred from App grants.
|
|
170
|
-
|
|
171
|
-
#### Parameters
|
|
172
|
-
|
|
173
|
-
| Parameter | Type |
|
|
174
|
-
| --------- | --------------------------------- |
|
|
175
|
-
| `key` | [`LiveOysterKey`](#liveoysterkey) |
|
|
176
|
-
| `agentId` | `string` |
|
|
177
|
-
|
|
178
|
-
#### Returns
|
|
179
|
-
|
|
180
|
-
`boolean`
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
### keyAllowsComputerUse()
|
|
185
|
-
|
|
186
|
-
```ts
|
|
187
|
-
function keyAllowsComputerUse(key): boolean;
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
Whether a live key's own grants turn its Computer access on. Off by default.
|
|
191
|
-
|
|
192
|
-
#### Parameters
|
|
193
|
-
|
|
194
|
-
| Parameter | Type |
|
|
195
|
-
| --------- | --------------------------------- |
|
|
196
|
-
| `key` | [`LiveOysterKey`](#liveoysterkey) |
|
|
197
|
-
|
|
198
|
-
#### Returns
|
|
199
|
-
|
|
200
|
-
`boolean`
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
### keyAllowsMachineEnroll()
|
|
205
|
-
|
|
206
|
-
```ts
|
|
207
|
-
function keyAllowsMachineEnroll(key): boolean;
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
Whether a live key's grants permit a one-use device enrollment.
|
|
211
|
-
|
|
212
|
-
#### Parameters
|
|
213
|
-
|
|
214
|
-
| Parameter | Type |
|
|
215
|
-
| --------- | --------------------------------- |
|
|
216
|
-
| `key` | [`LiveOysterKey`](#liveoysterkey) |
|
|
217
|
-
|
|
218
|
-
#### Returns
|
|
219
|
-
|
|
220
|
-
`boolean`
|
package/docs/api/mcp.md
CHANGED
|
@@ -165,7 +165,7 @@ type OysterCallerAccess =
|
|
|
165
165
|
The App-tool access one caller's catalog capture used, re-checked at call time
|
|
166
166
|
against a fresh read. An Agent's policy is one blanket level for every
|
|
167
167
|
installation (`host.appToolPolicy`); a key's is its own grants, resolved per
|
|
168
|
-
installation (`
|
|
168
|
+
installation (`appToolAccess`) -- an installation the key has no grant for is
|
|
169
169
|
captured as absent, never merely refused, so it is never listed at all.
|
|
170
170
|
|
|
171
171
|
---
|
|
@@ -177,12 +177,11 @@ type ReleaseSurface = Readonly<{
|
|
|
177
177
|
release: VerifiedRelease;
|
|
178
178
|
api: NonNullable<VerifiedRelease["api"]>;
|
|
179
179
|
declaredOperations: DeclaredOperations;
|
|
180
|
-
|
|
180
|
+
methods: NonNullable<VerifiedRelease["api"]>["methods"];
|
|
181
181
|
}>;
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
-
|
|
185
|
-
declared operations and its compiled tool schemas.
|
|
184
|
+
Immutable Release data shared by captures; no validator graphs live here.
|
|
186
185
|
|
|
187
186
|
---
|
|
188
187
|
|
|
@@ -192,15 +191,9 @@ declared operations and its compiled tool schemas.
|
|
|
192
191
|
type AppSurfaceCache = (release) => Promise<ReleaseSurface | null>;
|
|
193
192
|
```
|
|
194
193
|
|
|
195
|
-
Per-host
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
artifact digest, not on every catalog capture: an MCP call captures the catalog
|
|
199
|
-
several times (refresh, session acquire, the pre-call authority check), and
|
|
200
|
-
redoing this for every installed App on each one exhausted a Durable Object's
|
|
201
|
-
CPU and memory. Only Release-derived facts are cached; installation authority,
|
|
202
|
-
caller access and tool-family listings are still read fresh on every capture. A
|
|
203
|
-
failed build is not cached.
|
|
194
|
+
Per-host verified data, keyed by immutable Release ID and artifact digest.
|
|
195
|
+
Authority, caller access and tool-family listings stay fresh per capture. Failed
|
|
196
|
+
verification is not cached.
|
|
204
197
|
|
|
205
198
|
#### Parameters
|
|
206
199
|
|
|
@@ -212,6 +205,16 @@ failed build is not cached.
|
|
|
212
205
|
|
|
213
206
|
`Promise`\<[`ReleaseSurface`](#releasesurface) \| `null`\>
|
|
214
207
|
|
|
208
|
+
## Variables
|
|
209
|
+
|
|
210
|
+
### appApprovalInstructions
|
|
211
|
+
|
|
212
|
+
```ts
|
|
213
|
+
const appApprovalInstructions: string;
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Shared host result guidance for Agent and MCP instructions, not per method.
|
|
217
|
+
|
|
215
218
|
## Functions
|
|
216
219
|
|
|
217
220
|
### computerControlSpecs()
|
|
@@ -258,8 +261,8 @@ One set of schemas and operations for MCP and direct broker invocation.
|
|
|
258
261
|
| `create.replay` | `"unsafe"` | - | - |
|
|
259
262
|
| `create.description` | `string` | `"Create a Computer with an optional friendly name. Request identity is generated automatically. If the outcome is uncertain, retry with its returned requestId and the original name input; do not start a second creation."` | - |
|
|
260
263
|
| `create.input` | `ZodObject`\<\{ `name`: `ZodDefault`\<`ZodNullable`\<`ZodString`\>\>; `requestId`: `ZodDefault`\<`ZodNullable`\<`ZodString`\>\>; \}, `$strict`\> | `fleetCreate` | - |
|
|
261
|
-
| `create.output` | `ZodDiscriminatedUnion`\<\[`ZodObject`\<\{ `kind`: `ZodLiteral`\<`"created"`\>; `requestId`: `ZodString`; `computer`: `ZodObject`\<\{ `computerId`: `ZodString`; `name`: `ZodString`; \}, `$strict`\>; \}, `$strict`\>, `ZodObject`\<\{ `kind`: `ZodEnum`\<\{ `
|
|
262
|
-
| `create.execute()` | (`input`, `context`) => `Promise`\< \| \{ `kind`: `"created"`; `requestId`: `string`; `computer`: \{ `computerId`: `string`; `name`: `string`; \}; \} \| \{ `kind`: `"
|
|
264
|
+
| `create.output` | `ZodDiscriminatedUnion`\<\[`ZodObject`\<\{ `kind`: `ZodLiteral`\<`"created"`\>; `requestId`: `ZodString`; `computer`: `ZodObject`\<\{ `computerId`: `ZodString`; `name`: `ZodString`; \}, `$strict`\>; \}, `$strict`\>, `ZodObject`\<\{ `kind`: `ZodEnum`\<\{ `invalid`: `"invalid"`; `conflict`: `"conflict"`; `denied`: `"denied"`; `uncertain`: `"uncertain"`; \}\>; `requestId`: `ZodString`; \}, `$strict`\>\], `"kind"`\> | `fleetCreation` | - |
|
|
265
|
+
| `create.execute()` | (`input`, `context`) => `Promise`\< \| \{ `kind`: `"created"`; `requestId`: `string`; `computer`: \{ `computerId`: `string`; `name`: `string`; \}; \} \| \{ `kind`: `"invalid"` \| `"conflict"` \| `"denied"` \| `"uncertain"`; `requestId`: `string`; \}\> | - | Mint one identity or preserve the requestId for an uncertain retry. |
|
|
263
266
|
|
|
264
267
|
---
|
|
265
268
|
|
|
@@ -313,8 +316,8 @@ function oysterAppSnapshot(
|
|
|
313
316
|
principal,
|
|
314
317
|
installations,
|
|
315
318
|
access,
|
|
316
|
-
sessionId
|
|
317
|
-
|
|
319
|
+
sessionId,
|
|
320
|
+
mode,
|
|
318
321
|
): Promise<
|
|
319
322
|
Readonly<{
|
|
320
323
|
modules: Readonly<Record<string, ModuleRegistration>>;
|
|
@@ -331,15 +334,15 @@ Derive the current principal's admitted App modules and grants.
|
|
|
331
334
|
|
|
332
335
|
#### Parameters
|
|
333
336
|
|
|
334
|
-
| Parameter
|
|
335
|
-
|
|
|
336
|
-
| `host`
|
|
337
|
-
| `surfaces`
|
|
338
|
-
| `principal`
|
|
339
|
-
| `installations`
|
|
340
|
-
| `access`
|
|
341
|
-
| `sessionId
|
|
342
|
-
| `
|
|
337
|
+
| Parameter | Type |
|
|
338
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
339
|
+
| `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"` \| `"approvals"`\> |
|
|
340
|
+
| `surfaces` | [`AppSurfaceCache`](#appsurfacecache) |
|
|
341
|
+
| `principal` | [`TenantPrincipal`](tenant.md#tenantprincipal) |
|
|
342
|
+
| `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`: \| `"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"`; \}\>[] |
|
|
343
|
+
| `access` | [`OysterCallerAccess`](#oystercalleraccess) |
|
|
344
|
+
| `sessionId` | `string` \| `null` |
|
|
345
|
+
| `mode` | `"approval"` \| `"direct"` |
|
|
343
346
|
|
|
344
347
|
#### Returns
|
|
345
348
|
|
|
@@ -377,22 +380,22 @@ function oysterAppMethods(
|
|
|
377
380
|
|
|
378
381
|
Capture installed App methods for MCP or agents as one principal-scoped source.
|
|
379
382
|
Enabled installations become `env.<APP>` modules using the Instance call path; a
|
|
380
|
-
dotted method such as `repos.list` is `env.<APP>.repos.list()`.
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
383
|
+
dotted method such as `repos.list` is `env.<APP>.repos.list()`. Owners see every
|
|
384
|
+
discoverable method. A key sees only the installations its own grants admit,
|
|
385
|
+
each at the level (`read`/`write`) those grants give it; Mycelium itself refuses
|
|
386
|
+
a write call up front when the module's own grant is `read`
|
|
387
|
+
(`mycelium/src/access.ts`). Call again to capture changes to Releases,
|
|
388
|
+
installation authority or the caller's own grants.
|
|
386
389
|
|
|
387
390
|
#### Parameters
|
|
388
391
|
|
|
389
|
-
| Parameter | Type
|
|
390
|
-
| ------------------------- |
|
|
391
|
-
| `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"` \| `"approvals"`\>
|
|
392
|
-
| `principal` | [`
|
|
393
|
-
| `access` | [`OysterCallerAccess`](#oystercalleraccess)
|
|
394
|
-
| `surfaces` | [`AppSurfaceCache`](#appsurfacecache)
|
|
395
|
-
| `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`: \| `"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`\<...\>[]; \}\>[]; `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"`;
|
|
392
|
+
| Parameter | Type |
|
|
393
|
+
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
394
|
+
| `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), \| `"installations"` \| `"instances"` \| `"artifacts"` \| `"guestLimits"` \| `"backgroundOriginKey"` \| `"computerId"` \| `"capabilities"` \| `"appToolPolicy"` \| `"keys"` \| `"approvals"`\> |
|
|
395
|
+
| `principal` | [`TenantPrincipal`](tenant.md#tenantprincipal) |
|
|
396
|
+
| `access` | [`OysterCallerAccess`](#oystercalleraccess) |
|
|
397
|
+
| `surfaces` | [`AppSurfaceCache`](#appsurfacecache) |
|
|
398
|
+
| `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`: \| `"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`\<...\>[]; \}\>[]; `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"`; \}\>[] |
|
|
396
399
|
|
|
397
400
|
#### Returns
|
|
398
401
|
|
|
@@ -426,7 +429,7 @@ caller has no access. Grants name the captured module.
|
|
|
426
429
|
| Parameter | Type |
|
|
427
430
|
| ----------- | ---------------------------------------------------------------------------- |
|
|
428
431
|
| `host` | `Pick`\<[`OysterHost`](host.md#oysterhost), `"computerId"` \| `"computer"`\> |
|
|
429
|
-
| `principal` | [`
|
|
432
|
+
| `principal` | [`TenantPrincipal`](tenant.md#tenantprincipal) |
|
|
430
433
|
|
|
431
434
|
#### Returns
|
|
432
435
|
|
package/docs/api/modules.md
CHANGED
|
@@ -10,10 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
| Module | Description |
|
|
12
12
|
| --------------------------------------------------- | ----------- |
|
|
13
|
+
| [agent-schedules](agent-schedules.md) | - |
|
|
13
14
|
| [agents](agents.md) | - |
|
|
14
15
|
| [app-storage](app-storage.md) | - |
|
|
15
16
|
| [apps](apps.md) | - |
|
|
16
17
|
| [auth](auth.md) | - |
|
|
18
|
+
| [authorization](authorization.md) | - |
|
|
17
19
|
| [browser/boot](browser/boot.md) | - |
|
|
18
20
|
| [browser](browser.md) | - |
|
|
19
21
|
| [build-contract](build-contract.md) | - |
|
package/docs/api/page/mount.md
CHANGED
|
@@ -8,33 +8,33 @@
|
|
|
8
8
|
|
|
9
9
|
# page/mount
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Interfaces
|
|
12
12
|
|
|
13
13
|
### OysterAgentBrowserHost
|
|
14
14
|
|
|
15
|
-
One page
|
|
15
|
+
One admitted page's live windows and selected Agent Session, never a global
|
|
16
|
+
catalog.
|
|
16
17
|
|
|
17
|
-
####
|
|
18
|
+
#### Methods
|
|
18
19
|
|
|
19
|
-
#####
|
|
20
|
+
##### mount()
|
|
20
21
|
|
|
21
22
|
```ts
|
|
22
|
-
|
|
23
|
+
mount(frame, commands): () => void;
|
|
23
24
|
```
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
Borrow a Release-validated window view only for this exact frame lifetime.
|
|
26
27
|
|
|
27
28
|
###### Parameters
|
|
28
29
|
|
|
29
|
-
| Parameter
|
|
30
|
-
|
|
|
31
|
-
| `
|
|
30
|
+
| Parameter | Type |
|
|
31
|
+
| ---------- | ------------------------------------------------------- |
|
|
32
|
+
| `frame` | `HTMLIFrameElement` |
|
|
33
|
+
| `commands` | `Pick`\<`WhistleRuntime`, `"snapshot"` \| `"execute"`\> |
|
|
32
34
|
|
|
33
35
|
###### Returns
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
#### Methods
|
|
37
|
+
() => `void`
|
|
38
38
|
|
|
39
39
|
##### release()
|
|
40
40
|
|
|
@@ -42,7 +42,7 @@ End the selected connection with the page's own lifetime.
|
|
|
42
42
|
release(frame): void;
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
A departing or deselecting
|
|
45
|
+
A departing or deselecting window cannot close a different selection.
|
|
46
46
|
|
|
47
47
|
###### Parameters
|
|
48
48
|
|
|
@@ -60,7 +60,7 @@ A departing or deselecting mount cannot close a different active mount.
|
|
|
60
60
|
dispose(): void;
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
Release
|
|
63
|
+
Release this page's window registrations and selected Agent connection.
|
|
64
64
|
|
|
65
65
|
###### Returns
|
|
66
66
|
|
|
@@ -72,13 +72,11 @@ Release the page's current selection; later reports cannot reconnect it.
|
|
|
72
72
|
report(
|
|
73
73
|
frame,
|
|
74
74
|
selection,
|
|
75
|
-
capabilities
|
|
76
|
-
whistle
|
|
75
|
+
capabilities
|
|
77
76
|
): Promise<void>;
|
|
78
77
|
```
|
|
79
78
|
|
|
80
|
-
|
|
81
|
-
Session.
|
|
79
|
+
Admit the selected Agent through the reporting App's existing write door.
|
|
82
80
|
|
|
83
81
|
###### Parameters
|
|
84
82
|
|
|
@@ -87,7 +85,6 @@ Session.
|
|
|
87
85
|
| `frame` | `HTMLIFrameElement` |
|
|
88
86
|
| `selection` | \| `Readonly`\<\{ `agentId`: `string`; `sessionId`: `string`; \}\> \| `null` |
|
|
89
87
|
| `capabilities` | `CapabilityDirectory` |
|
|
90
|
-
| `whistle` | `Pick`\<`WhistleRuntime`, `"snapshot"` \| `"execute"`\> |
|
|
91
88
|
|
|
92
89
|
###### Returns
|
|
93
90
|
|