@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.
Files changed (163) hide show
  1. package/README.md +132 -78
  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 +93 -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.d.ts +1 -24
  24. package/dist/auth.js +9 -39
  25. package/dist/authorization.d.ts +307 -0
  26. package/dist/authorization.js +542 -0
  27. package/dist/boot-host-script.js +1 -1
  28. package/dist/build/build-jobs.d.ts +2 -2
  29. package/dist/build/candidate-builder.d.ts +2 -0
  30. package/dist/build/candidate-builder.js +5 -1
  31. package/dist/build/candidate-cli.js +3 -0
  32. package/dist/build/candidate-cli.mjs +59 -21
  33. package/dist/build/job-log.d.ts +23 -0
  34. package/dist/build/job-log.js +88 -0
  35. package/dist/build/local-build.d.ts +2 -0
  36. package/dist/build/local-build.js +11 -9
  37. package/dist/cloudflare.d.ts +4 -1
  38. package/dist/cloudflare.js +1 -1
  39. package/dist/files.js +9 -8
  40. package/dist/git-admission.d.ts +3 -3
  41. package/dist/git-admission.js +4 -6
  42. package/dist/git-door.d.ts +8 -7
  43. package/dist/git-door.js +18 -17
  44. package/dist/git.d.ts +1 -1
  45. package/dist/host.d.ts +33 -40
  46. package/dist/host.js +153 -272
  47. package/dist/installation-execution.js +10 -5
  48. package/dist/installation-operations.d.ts +4 -180
  49. package/dist/installation-operations.js +1 -5
  50. package/dist/installation-store-generation.d.ts +4 -1
  51. package/dist/installation-store-generation.js +59 -6
  52. package/dist/internal/delivery.js +0 -1
  53. package/dist/internal/host-gate.d.ts +3 -2
  54. package/dist/internal/host-gate.js +5 -18
  55. package/dist/internal/invocation-timing.d.ts +16 -0
  56. package/dist/internal/invocation-timing.js +23 -0
  57. package/dist/internal/registry-installations.js +1 -0
  58. package/dist/invocation.d.ts +15 -14
  59. package/dist/invocation.js +58 -26
  60. package/dist/keys.d.ts +2 -19
  61. package/dist/keys.js +1 -37
  62. package/dist/mcp.d.ts +15 -27
  63. package/dist/mcp.js +105 -155
  64. package/dist/page/agent-browser.d.ts +15 -0
  65. package/dist/page/agent-browser.js +162 -0
  66. package/dist/page/app-permissions-port.d.ts +3 -0
  67. package/dist/page/app-permissions-port.js +43 -0
  68. package/dist/page/app-permissions.d.ts +11 -0
  69. package/dist/page/app-permissions.js +296 -0
  70. package/dist/page/isolated-page-theme.d.ts +2 -0
  71. package/dist/page/isolated-page-theme.js +11 -0
  72. package/dist/page/mount.d.ts +2 -13
  73. package/dist/page/mount.js +7 -93
  74. package/dist/page-script.d.ts +0 -3
  75. package/dist/page-script.js +3 -4
  76. package/dist/standalone/agent-archive-owner.d.ts +42 -0
  77. package/dist/standalone/agent-archive-owner.js +116 -0
  78. package/dist/standalone/agent-archive-schedules.d.ts +6 -0
  79. package/dist/standalone/agent-archive-schedules.js +76 -0
  80. package/dist/standalone/agent-archive.d.ts +31 -0
  81. package/dist/standalone/agent-archive.js +67 -0
  82. package/dist/standalone/agent-computers.d.ts +7 -6
  83. package/dist/standalone/agent-computers.js +4 -7
  84. package/dist/standalone/agent-mail.d.ts +2 -2
  85. package/dist/standalone/agents.d.ts +157 -20
  86. package/dist/standalone/agents.js +234 -30
  87. package/dist/standalone/app-builds-binding.js +1 -1
  88. package/dist/standalone/app-set.js +2 -54
  89. package/dist/standalone/app-source.d.ts +3 -4
  90. package/dist/standalone/app-source.js +12 -9
  91. package/dist/standalone/builds.d.ts +2 -14
  92. package/dist/standalone/builds.js +15 -13
  93. package/dist/standalone/computer-fleet.d.ts +4 -4
  94. package/dist/standalone/computer-fleet.js +13 -42
  95. package/dist/standalone/computer.d.ts +4 -3
  96. package/dist/standalone/computer.js +52 -53
  97. package/dist/standalone/dashboard-approval.d.ts +10 -0
  98. package/dist/standalone/dashboard-approval.js +66 -0
  99. package/dist/standalone/machine-link.d.ts +4 -221
  100. package/dist/standalone/machine-link.js +21 -15
  101. package/dist/standalone/media.d.ts +1 -0
  102. package/dist/standalone/media.js +20 -14
  103. package/dist/standalone/owner-routes.d.ts +16 -0
  104. package/dist/standalone/owner-routes.js +21 -0
  105. package/dist/standalone/permission-resources.d.ts +5 -0
  106. package/dist/standalone/permission-resources.js +31 -0
  107. package/dist/standalone/registry.d.ts +7 -0
  108. package/dist/standalone/registry.js +3 -0
  109. package/dist/standalone/tenancy.d.ts +0 -3
  110. package/dist/standalone/tenancy.js +2 -5
  111. package/dist/standalone/worker-routes.d.ts +19 -0
  112. package/dist/standalone/worker-routes.js +9 -0
  113. package/dist/standalone/worker.d.ts +1 -1
  114. package/dist/standalone/worker.js +27 -35
  115. package/dist/standalone/workflow-binding.d.ts +8 -3
  116. package/dist/standalone/workflow-binding.js +14 -5
  117. package/dist/standalone/workflow-git-capture.js +2 -1
  118. package/dist/standalone/workflow-host.d.ts +8 -103
  119. package/dist/standalone/workflow-host.js +1 -1
  120. package/dist/standalone/workflow-node-capture.js +2 -2
  121. package/dist/standalone/workflow-root-authority.d.ts +1 -1
  122. package/dist/standalone/workflow-root-authority.js +1 -1
  123. package/dist/standalone/workflow-schedules.d.ts +14 -5
  124. package/dist/standalone/workflow-schedules.js +11 -5
  125. package/dist/standalone/workflow-webhooks.d.ts +4 -18
  126. package/dist/standalone/workflow-webhooks.js +5 -5
  127. package/dist/standalone/workflows.d.ts +36 -28
  128. package/dist/standalone/workflows.js +6 -3
  129. package/dist/storage-frame.d.ts +6 -6
  130. package/dist/testing/capabilities.d.ts +7 -6
  131. package/dist/testing/capabilities.js +3 -6
  132. package/dist/testing/installation.d.ts +0 -1
  133. package/dist/testing/installation.js +2 -5
  134. package/dist/workers-git.d.ts +12 -4
  135. package/dist/workers-git.js +38 -35
  136. package/dist/workers.d.ts +9 -1
  137. package/dist/workers.js +44 -8
  138. package/dist/workflows.d.ts +2 -0
  139. package/dist/workflows.js +1 -0
  140. package/docs/api/README.md +7 -0
  141. package/docs/api/agent-schedules.md +175 -0
  142. package/docs/api/agents.md +34 -13
  143. package/docs/api/app-storage.md +1 -1
  144. package/docs/api/apps.md +323 -225
  145. package/docs/api/auth.md +0 -55
  146. package/docs/api/authorization.md +1300 -0
  147. package/docs/api/build.md +40 -37
  148. package/docs/api/cloudflare.md +3 -3
  149. package/docs/api/git.md +20 -11
  150. package/docs/api/host.md +64 -192
  151. package/docs/api/index.md +1 -1
  152. package/docs/api/invocation.md +14 -14
  153. package/docs/api/keys.md +1 -98
  154. package/docs/api/mcp.md +43 -40
  155. package/docs/api/modules.md +2 -0
  156. package/docs/api/page/mount.md +16 -19
  157. package/docs/api/workers-git.md +46 -12
  158. package/docs/api/workers.md +124 -235
  159. package/package.json +39 -20
  160. package/dist/page/computer-target.d.ts +0 -3
  161. package/dist/page/computer-target.js +0 -9
  162. package/dist/standalone/channel-session-door.d.ts +0 -4
  163. package/dist/standalone/channel-session-door.js +0 -72
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fungi.computer/oyster",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "author": "Levi <levi@technomancy.dev>",
5
5
  "description": "Run your own Apps on Cloudflare Workers or celld: installable App Releases, each with its own Durable Object, SQLite database and declared bindings",
6
6
  "type": "module",
@@ -160,6 +160,14 @@
160
160
  "types": "./dist/agents.d.ts",
161
161
  "import": "./dist/agents.js"
162
162
  },
163
+ "./agent-schedules": {
164
+ "types": "./dist/agent-schedules.d.ts",
165
+ "import": "./dist/agent-schedules.js"
166
+ },
167
+ "./agent-archive": {
168
+ "types": "./dist/standalone/agent-archive-owner.d.ts",
169
+ "import": "./dist/standalone/agent-archive-owner.js"
170
+ },
163
171
  "./agent-computers": {
164
172
  "types": "./dist/agent-computers.d.ts",
165
173
  "import": "./dist/agent-computers.js"
@@ -260,10 +268,22 @@
260
268
  "types": "./dist/apps/index.d.ts",
261
269
  "import": "./dist/apps/index.js"
262
270
  },
271
+ "./apps/permissions-view": {
272
+ "types": "./dist/page/app-permissions.d.ts",
273
+ "import": "./dist/page/app-permissions.js"
274
+ },
275
+ "./apps/permissions-port": {
276
+ "types": "./dist/page/app-permissions-port.d.ts",
277
+ "import": "./dist/page/app-permissions-port.js"
278
+ },
263
279
  "./keys": {
264
280
  "types": "./dist/keys.d.ts",
265
281
  "import": "./dist/keys.js"
266
282
  },
283
+ "./authorization": {
284
+ "types": "./dist/authorization.d.ts",
285
+ "import": "./dist/authorization.js"
286
+ },
267
287
  "./testing": {
268
288
  "types": "./dist/testing/index.d.ts",
269
289
  "import": "./dist/testing/index.js"
@@ -288,42 +308,41 @@
288
308
  "dependencies": {
289
309
  "@cfworker/json-schema": "4.1.1",
290
310
  "@earendil-works/pi-ai": "1.3.0",
291
- "@fungi.computer/agar": "0.5.0",
292
- "@fungi.computer/bird-dog": "0.3.0",
293
- "@fungi.computer/braid": "0.2.4",
294
- "@fungi.computer/burrow": "0.1.0",
311
+ "@fungi.computer/agar": "0.6.0",
312
+ "@fungi.computer/bird-dog": "0.3.1",
313
+ "@fungi.computer/braid": "0.3.0",
314
+ "@fungi.computer/burrow": "0.2.0",
295
315
  "@fungi.computer/cairn": "0.1.0",
296
316
  "@fungi.computer/capnweb": "0.12.0",
297
- "@fungi.computer/caps": "0.4.0",
317
+ "@fungi.computer/caps": "0.5.0",
298
318
  "@fungi.computer/carrier": "0.2.0",
299
- "@fungi.computer/computer": "0.3.2",
300
- "@fungi.computer/computer-contract": "0.0.5",
301
- "@fungi.computer/darkroom": "0.3.1",
319
+ "@fungi.computer/computer": "0.4.0",
320
+ "@fungi.computer/computer-contract": "0.0.6",
321
+ "@fungi.computer/darkroom": "0.4.0",
302
322
  "@fungi.computer/ear-tag": "0.1.0",
303
- "@fungi.computer/forage": "0.2.0",
323
+ "@fungi.computer/forage": "0.2.1",
304
324
  "@fungi.computer/gills": "0.2.0",
305
- "@fungi.computer/knapsack": "0.4.0",
306
- "@fungi.computer/mycelium": "0.2.3",
307
- "@fungi.computer/nacre": "0.1.0",
308
- "@fungi.computer/puffball": "0.2.0",
325
+ "@fungi.computer/knapsack": "0.4.1",
326
+ "@fungi.computer/mycelium": "0.3.0",
327
+ "@fungi.computer/nacre": "0.1.1",
328
+ "@fungi.computer/puffball": "0.3.0",
309
329
  "@fungi.computer/seam": "0.2.0",
310
- "@fungi.computer/shiitake": "0.6.0",
311
- "@fungi.computer/shiitake-extensions": "0.4.0",
330
+ "@fungi.computer/shiitake": "0.7.0",
331
+ "@fungi.computer/shiitake-extensions": "0.5.0",
312
332
  "@fungi.computer/sigils": "0.2.0",
313
333
  "@fungi.computer/sprite": "0.2.0",
314
- "@fungi.computer/sprite-zdog": "0.2.0",
334
+ "@fungi.computer/sprite-zdog": "0.3.0",
315
335
  "@fungi.computer/veil": "0.2.1",
316
336
  "@fungi.computer/watchdog": "0.1.0",
317
337
  "@fungi.computer/whistle": "0.3.0",
318
- "@fungi.computer/workflows-wire": "0.2.4",
319
- "@fungi.computer/zookeeper": "0.0.5",
338
+ "@fungi.computer/workflows-wire": "0.3.0",
339
+ "@fungi.computer/zookeeper": "0.0.6",
320
340
  "@modelcontextprotocol/server": "2.0.0",
321
341
  "@pnpm/lockfile.fs": "1100.2.13",
322
342
  "@pnpm/lockfile.pruner": "1100.0.27",
323
343
  "effect": "4.0.2",
324
344
  "esbuild": "0.28.2",
325
345
  "eventsource": "5.1.1",
326
- "fast-json-stable-stringify": "2.1.0",
327
346
  "hono": "4.13.5",
328
347
  "jose": "6.2.11",
329
348
  "mime": "4.1.0",
@@ -1,3 +0,0 @@
1
- /** Serialize a window's routing hint. The server must admit it through the live
2
- * owner and fleet before constructing that request's workspace. */
3
- export declare function computerTargetUrl(path: string, computerId?: string): string;
@@ -1,9 +0,0 @@
1
- /** Serialize a window's routing hint. The server must admit it through the live
2
- * owner and fleet before constructing that request's workspace. */
3
- export function computerTargetUrl(path, computerId) {
4
- if (computerId === undefined)
5
- return path;
6
- const url = new URL(path, "https://oyster.invalid");
7
- url.searchParams.set("computerId", computerId);
8
- return url.pathname + url.search;
9
- }
@@ -1,4 +0,0 @@
1
- import type { ShiitakeOwnerAgent } from "@fungi.computer/shiitake/cloudflare";
2
- import type { ChannelConversations, SessionDoor } from "../channels/conversations.js";
3
- /** Translate a standalone Agent's Shiitake owner into Oyster's channel Session port. */
4
- export declare function channelSessionDoor(open: () => Promise<ShiitakeOwnerAgent>, deliverGrants: (sessionId: string) => void, conversations: () => ChannelConversations): SessionDoor;
@@ -1,72 +0,0 @@
1
- import { authorMeta } from "@fungi.computer/agar/agents";
2
- import { ShiitakeError } from "@fungi.computer/shiitake";
3
- import { participantSnapshot, visitorPendingPrompt, visitorSnapshot, } from "@fungi.computer/shiitake/client";
4
- import { visitorStream } from "@fungi.computer/shiitake/server-visitor-stream";
5
- /** Translate a standalone Agent's Shiitake owner into Oyster's channel Session port. */
6
- export function channelSessionDoor(open, deliverGrants, conversations) {
7
- const policy = () => conversations();
8
- return {
9
- createSession: async (requestId) => (await open()).createSession(requestId),
10
- deliverGrants,
11
- withdraw: async (sessionId, requestId) => (await open()).session(sessionId).withdraw(requestId),
12
- latestPending: async (sessionId, visitor) => {
13
- const prompt = await (await open())
14
- .withMeta(authorMeta(visitor))
15
- .session(sessionId)
16
- .latestPending();
17
- return prompt === null ? null : visitorPendingPrompt(prompt, visitor.id);
18
- },
19
- participantDocument: async (sessionId, visitorId, options) => {
20
- const snapshot = await (await open()).session(sessionId).read(options);
21
- return JSON.stringify(visitorSnapshot(participantSnapshot(snapshot, policy()), visitorId));
22
- },
23
- participantStream: async (sessionId, visitorId, options) => {
24
- let watch;
25
- try {
26
- watch = await (await open()).session(sessionId).watch();
27
- }
28
- catch (cause) {
29
- options.release();
30
- throw cause;
31
- }
32
- return visitorStream({
33
- ...options,
34
- watch,
35
- visitorId,
36
- filter: (snapshot) => participantSnapshot(snapshot, policy()),
37
- read: async () => (await open()).session(sessionId).read(),
38
- onError: (event, cause) => {
39
- console.warn(event, cause);
40
- },
41
- });
42
- },
43
- prompt: async (sessionId, { requestId, text, meta }) => {
44
- // The conversation row exists now, so its channel admission is known;
45
- // deliver Agent tools before the first run can call one.
46
- deliverGrants(sessionId);
47
- const agent = await open();
48
- return await agent.withMeta(meta).session(sessionId).command({
49
- type: "prompt",
50
- requestId,
51
- text,
52
- delivery: "followUp",
53
- });
54
- },
55
- line: async (sessionId, input) => {
56
- const agent = await open();
57
- const meta = input.author === "operator" ? authorMeta(input.identity) : input.meta;
58
- await agent.withMeta(meta).session(sessionId).command({
59
- type: "operator",
60
- requestId: input.requestId,
61
- author: input.author,
62
- text: input.text,
63
- });
64
- },
65
- errorKind: (error, requestId) => error instanceof ShiitakeError &&
66
- error.boundary === "contract" &&
67
- error.cause === "closed" &&
68
- error.requestId === requestId
69
- ? "closed_request"
70
- : null,
71
- };
72
- }