@fungi.computer/oyster 0.0.0-stage → 0.1.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 (339) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1134 -2
  3. package/dist/agents.d.ts +114 -0
  4. package/dist/agents.js +322 -0
  5. package/dist/app-builds.d.ts +210 -0
  6. package/dist/app-builds.js +499 -0
  7. package/dist/app-sandbox.d.ts +2 -0
  8. package/dist/app-sandbox.js +2 -0
  9. package/dist/app-sources.d.ts +31 -0
  10. package/dist/app-sources.js +370 -0
  11. package/dist/app-storage.d.ts +141 -0
  12. package/dist/app-storage.js +281 -0
  13. package/dist/apps/gate.d.ts +105 -0
  14. package/dist/apps/gate.js +273 -0
  15. package/dist/apps/index.d.ts +5 -0
  16. package/dist/apps/index.js +5 -0
  17. package/dist/apps/installation.d.ts +248 -0
  18. package/dist/apps/installation.js +307 -0
  19. package/dist/apps/operations.d.ts +8 -0
  20. package/dist/apps/operations.js +98 -0
  21. package/dist/apps/tools.d.ts +33 -0
  22. package/dist/apps/tools.js +17 -0
  23. package/dist/auth.d.ts +11 -0
  24. package/dist/auth.js +93 -0
  25. package/dist/backend-request.d.ts +3 -0
  26. package/dist/backend-request.js +53 -0
  27. package/dist/build/artifact-writer.d.ts +40 -0
  28. package/dist/build/artifact-writer.js +181 -0
  29. package/dist/build/build-jobs.d.ts +128 -0
  30. package/dist/build/build-jobs.js +203 -0
  31. package/dist/build/build-policy.d.ts +10 -0
  32. package/dist/build/build-policy.js +10 -0
  33. package/dist/build/build-step.d.ts +37 -0
  34. package/dist/build/build-step.js +28 -0
  35. package/dist/build/bundled-html.d.ts +7 -0
  36. package/dist/build/bundled-html.js +64 -0
  37. package/dist/build/candidate-builder.d.ts +68 -0
  38. package/dist/build/candidate-builder.js +91 -0
  39. package/dist/build/candidate-cli.d.ts +1 -0
  40. package/dist/build/candidate-cli.js +119 -0
  41. package/dist/build/candidate-cli.mjs +28170 -0
  42. package/dist/build/content-objects.d.ts +37 -0
  43. package/dist/build/content-objects.js +53 -0
  44. package/dist/build/definition-emission.d.ts +34 -0
  45. package/dist/build/definition-emission.js +201 -0
  46. package/dist/build/effect.d.ts +249 -0
  47. package/dist/build/effect.js +436 -0
  48. package/dist/build/git-environment.d.ts +9 -0
  49. package/dist/build/git-environment.js +60 -0
  50. package/dist/build/html-recipe.d.ts +20 -0
  51. package/dist/build/html-recipe.js +51 -0
  52. package/dist/build/local-build.d.ts +67 -0
  53. package/dist/build/local-build.js +1128 -0
  54. package/dist/build/snapshot-package-store.d.ts +12 -0
  55. package/dist/build/snapshot-package-store.js +36 -0
  56. package/dist/build/snapshot-program-scripts.d.ts +6 -0
  57. package/dist/build/snapshot-program-scripts.js +2 -0
  58. package/dist/build/snapshot-programs/snapshot-path.d.ts +2 -0
  59. package/dist/build/snapshot-programs/snapshot-path.js +6 -0
  60. package/dist/build/submission-contract.d.ts +828 -0
  61. package/dist/build/submission-contract.js +180 -0
  62. package/dist/build/workspace-build.d.ts +55 -0
  63. package/dist/build/workspace-build.js +200 -0
  64. package/dist/build-contract.d.ts +7 -0
  65. package/dist/build-contract.js +7 -0
  66. package/dist/build-egress.d.ts +62 -0
  67. package/dist/build-egress.js +148 -0
  68. package/dist/build-jobs.d.ts +2 -0
  69. package/dist/build-jobs.js +2 -0
  70. package/dist/build.d.ts +12 -0
  71. package/dist/build.js +14 -0
  72. package/dist/capability-descriptor.d.ts +46 -0
  73. package/dist/capability-descriptor.js +51 -0
  74. package/dist/catalog-frame.d.ts +39 -0
  75. package/dist/catalog-frame.js +72 -0
  76. package/dist/cause-class.d.ts +19 -0
  77. package/dist/cause-class.js +54 -0
  78. package/dist/cloudflare.d.ts +123 -0
  79. package/dist/cloudflare.js +391 -0
  80. package/dist/computer-terminal.d.ts +38 -0
  81. package/dist/computer-terminal.js +410 -0
  82. package/dist/computer.d.ts +60 -0
  83. package/dist/computer.js +33 -0
  84. package/dist/event-recipients.d.ts +57 -0
  85. package/dist/event-recipients.js +144 -0
  86. package/dist/facet-invocation.d.ts +4 -0
  87. package/dist/facet-invocation.js +45 -0
  88. package/dist/files.d.ts +42 -0
  89. package/dist/files.js +123 -0
  90. package/dist/frame-binding-wire-script.d.ts +2 -0
  91. package/dist/frame-binding-wire-script.js +1 -0
  92. package/dist/frame-binding-wire.d.ts +28 -0
  93. package/dist/frame-binding-wire.js +54 -0
  94. package/dist/git-admission.d.ts +52 -0
  95. package/dist/git-admission.js +188 -0
  96. package/dist/git-auth.d.ts +11 -0
  97. package/dist/git-auth.js +27 -0
  98. package/dist/git-door.d.ts +35 -0
  99. package/dist/git-door.js +108 -0
  100. package/dist/git-journal.d.ts +31 -0
  101. package/dist/git-journal.js +188 -0
  102. package/dist/git.d.ts +31 -0
  103. package/dist/git.js +64 -0
  104. package/dist/guest-policy.d.ts +9 -0
  105. package/dist/guest-policy.js +13 -0
  106. package/dist/host.d.ts +244 -0
  107. package/dist/host.js +1043 -0
  108. package/dist/index.d.ts +166 -0
  109. package/dist/index.js +320 -0
  110. package/dist/installation-consent.d.ts +79 -0
  111. package/dist/installation-consent.js +82 -0
  112. package/dist/internal/background-origins.d.ts +3 -0
  113. package/dist/internal/background-origins.js +8 -0
  114. package/dist/internal/delivery.d.ts +12 -0
  115. package/dist/internal/delivery.js +167 -0
  116. package/dist/internal/host-gate.d.ts +14 -0
  117. package/dist/internal/host-gate.js +62 -0
  118. package/dist/internal/registry-installations.d.ts +6 -0
  119. package/dist/internal/registry-installations.js +12 -0
  120. package/dist/invocation.d.ts +251 -0
  121. package/dist/invocation.js +377 -0
  122. package/dist/keys.d.ts +48 -0
  123. package/dist/keys.js +52 -0
  124. package/dist/mcp-owner.d.ts +27 -0
  125. package/dist/mcp-owner.js +155 -0
  126. package/dist/mcp.d.ts +89 -0
  127. package/dist/mcp.js +429 -0
  128. package/dist/media.d.ts +23 -0
  129. package/dist/media.js +12 -0
  130. package/dist/pack.d.ts +79 -0
  131. package/dist/pack.js +151 -0
  132. package/dist/page/capabilities.d.ts +23 -0
  133. package/dist/page/capabilities.js +256 -0
  134. package/dist/page/computer-handles.d.ts +79 -0
  135. package/dist/page/computer-handles.js +44 -0
  136. package/dist/page/gill-observation.d.ts +4 -0
  137. package/dist/page/gill-observation.js +31 -0
  138. package/dist/page/lifetime.d.ts +6 -0
  139. package/dist/page/lifetime.js +19 -0
  140. package/dist/page/mount.d.ts +163 -0
  141. package/dist/page/mount.js +390 -0
  142. package/dist/page/storage.d.ts +3 -0
  143. package/dist/page/storage.js +82 -0
  144. package/dist/page/terminal.d.ts +5 -0
  145. package/dist/page/terminal.js +7 -0
  146. package/dist/page/window-launch.d.ts +18 -0
  147. package/dist/page/window-launch.js +11 -0
  148. package/dist/page-script.d.ts +14 -0
  149. package/dist/page-script.js +5 -0
  150. package/dist/r2-files.d.ts +3 -0
  151. package/dist/r2-files.js +79 -0
  152. package/dist/release.d.ts +83 -0
  153. package/dist/release.js +167 -0
  154. package/dist/root-data.d.ts +86 -0
  155. package/dist/root-data.js +69 -0
  156. package/dist/shell/app-directory.d.ts +542 -0
  157. package/dist/shell/app-directory.js +199 -0
  158. package/dist/shell/browser-actions.d.ts +7 -0
  159. package/dist/shell/browser-actions.js +56 -0
  160. package/dist/shell/command-host.d.ts +112 -0
  161. package/dist/shell/command-host.js +502 -0
  162. package/dist/shell/commands.d.ts +25 -0
  163. package/dist/shell/commands.js +78 -0
  164. package/dist/shell/index.d.ts +8 -0
  165. package/dist/shell/index.js +8 -0
  166. package/dist/shell/keys.d.ts +41 -0
  167. package/dist/shell/keys.js +134 -0
  168. package/dist/shell/shell-module.d.ts +55 -0
  169. package/dist/shell/shell-module.js +86 -0
  170. package/dist/shell/window-manager.d.ts +124 -0
  171. package/dist/shell/window-manager.js +711 -0
  172. package/dist/shell/workbench-contract.d.ts +68 -0
  173. package/dist/shell/workbench-contract.js +1 -0
  174. package/dist/shell/workbench-directory.d.ts +332 -0
  175. package/dist/shell/workbench-directory.js +35 -0
  176. package/dist/shell/workbench-host-types.d.ts +96 -0
  177. package/dist/shell/workbench-host-types.js +1 -0
  178. package/dist/shell/workbench-host.d.ts +34 -0
  179. package/dist/shell/workbench-host.js +347 -0
  180. package/dist/shell/workbench-model.d.ts +192 -0
  181. package/dist/shell/workbench-model.js +53 -0
  182. package/dist/shell/workbench.d.ts +4 -0
  183. package/dist/shell/workbench.js +2 -0
  184. package/dist/source/fork.d.ts +27 -0
  185. package/dist/source/fork.js +46 -0
  186. package/dist/source/index.d.ts +10 -0
  187. package/dist/source/index.js +10 -0
  188. package/dist/source/seed-receipt.d.ts +53 -0
  189. package/dist/source/seed-receipt.js +18 -0
  190. package/dist/source/team-source.d.ts +32 -0
  191. package/dist/source/team-source.js +42 -0
  192. package/dist/source/template-push.d.ts +33 -0
  193. package/dist/source/template-push.js +223 -0
  194. package/dist/source/template-repository.d.ts +4 -0
  195. package/dist/source/template-repository.js +21 -0
  196. package/dist/source/template-seed.d.ts +68 -0
  197. package/dist/source/template-seed.js +80 -0
  198. package/dist/standalone/agent-directory.d.ts +4 -0
  199. package/dist/standalone/agent-directory.js +4 -0
  200. package/dist/standalone/agents.d.ts +220 -0
  201. package/dist/standalone/agents.js +795 -0
  202. package/dist/standalone/app-builds-binding.d.ts +36 -0
  203. package/dist/standalone/app-builds-binding.js +119 -0
  204. package/dist/standalone/app-set.d.ts +91 -0
  205. package/dist/standalone/app-set.js +395 -0
  206. package/dist/standalone/app-source.d.ts +41 -0
  207. package/dist/standalone/app-source.js +59 -0
  208. package/dist/standalone/builds.d.ts +18 -0
  209. package/dist/standalone/builds.js +101 -0
  210. package/dist/standalone/computer-egress.d.ts +37 -0
  211. package/dist/standalone/computer-egress.js +111 -0
  212. package/dist/standalone/computer.d.ts +122 -0
  213. package/dist/standalone/computer.js +714 -0
  214. package/dist/standalone/install-apps-cli.d.ts +2 -0
  215. package/dist/standalone/install-apps-cli.js +126 -0
  216. package/dist/standalone/instance.d.ts +35 -0
  217. package/dist/standalone/instance.js +74 -0
  218. package/dist/standalone/media.d.ts +76 -0
  219. package/dist/standalone/media.js +227 -0
  220. package/dist/standalone/preview.d.ts +51 -0
  221. package/dist/standalone/preview.js +167 -0
  222. package/dist/standalone/registry.d.ts +102 -0
  223. package/dist/standalone/registry.js +193 -0
  224. package/dist/standalone/tenancy.d.ts +42 -0
  225. package/dist/standalone/tenancy.js +241 -0
  226. package/dist/standalone/worker.d.ts +55 -0
  227. package/dist/standalone/worker.js +147 -0
  228. package/dist/standalone/workflow-authority-readers.d.ts +16 -0
  229. package/dist/standalone/workflow-authority-readers.js +35 -0
  230. package/dist/standalone/workflow-binding.d.ts +216 -0
  231. package/dist/standalone/workflow-binding.js +217 -0
  232. package/dist/standalone/workflow-events.d.ts +46 -0
  233. package/dist/standalone/workflow-events.js +39 -0
  234. package/dist/standalone/workflow-git-capture.d.ts +7 -0
  235. package/dist/standalone/workflow-git-capture.js +62 -0
  236. package/dist/standalone/workflow-host.d.ts +931 -0
  237. package/dist/standalone/workflow-host.js +751 -0
  238. package/dist/standalone/workflow-node-capture.d.ts +13 -0
  239. package/dist/standalone/workflow-node-capture.js +72 -0
  240. package/dist/standalone/workflow-root-authority.d.ts +27 -0
  241. package/dist/standalone/workflow-root-authority.js +87 -0
  242. package/dist/standalone/workflow-schedules.d.ts +52 -0
  243. package/dist/standalone/workflow-schedules.js +40 -0
  244. package/dist/standalone/workflow-trigger-host.d.ts +1694 -0
  245. package/dist/standalone/workflow-trigger-host.js +52 -0
  246. package/dist/standalone/workflows.d.ts +657 -0
  247. package/dist/standalone/workflows.js +554 -0
  248. package/dist/storage-frame.d.ts +64 -0
  249. package/dist/storage-frame.js +28 -0
  250. package/dist/tenancy/auth0.d.ts +64 -0
  251. package/dist/tenancy/auth0.js +198 -0
  252. package/dist/tenancy/cloudflare/rate-limit.d.ts +8 -0
  253. package/dist/tenancy/cloudflare/rate-limit.js +19 -0
  254. package/dist/tenancy/cloudflare/registry.d.ts +50 -0
  255. package/dist/tenancy/cloudflare/registry.js +301 -0
  256. package/dist/tenancy/cloudflare.d.ts +2 -0
  257. package/dist/tenancy/cloudflare.js +2 -0
  258. package/dist/tenancy/cold-directory.d.ts +13 -0
  259. package/dist/tenancy/cold-directory.js +43 -0
  260. package/dist/tenancy/contracts.d.ts +195 -0
  261. package/dist/tenancy/contracts.js +1 -0
  262. package/dist/tenancy/index.d.ts +19 -0
  263. package/dist/tenancy/index.js +156 -0
  264. package/dist/tenancy/owner-key.d.ts +26 -0
  265. package/dist/tenancy/owner-key.js +63 -0
  266. package/dist/tenancy/oyster.d.ts +4 -0
  267. package/dist/tenancy/oyster.js +25 -0
  268. package/dist/tenancy/registry-record.d.ts +7 -0
  269. package/dist/tenancy/registry-record.js +44 -0
  270. package/dist/tenancy/registry.d.ts +27 -0
  271. package/dist/tenancy/registry.js +138 -0
  272. package/dist/tenancy/resolve.d.ts +7 -0
  273. package/dist/tenancy/resolve.js +64 -0
  274. package/dist/tenant.d.ts +81 -0
  275. package/dist/tenant.js +71 -0
  276. package/dist/testing/capabilities.d.ts +29 -0
  277. package/dist/testing/capabilities.js +130 -0
  278. package/dist/testing/catalog.d.ts +3 -0
  279. package/dist/testing/catalog.js +53 -0
  280. package/dist/testing/index.d.ts +10 -0
  281. package/dist/testing/index.js +10 -0
  282. package/dist/testing/installation.d.ts +11 -0
  283. package/dist/testing/installation.js +25 -0
  284. package/dist/testing/native-worker.d.ts +21 -0
  285. package/dist/testing/native-worker.js +106 -0
  286. package/dist/testing/worker.d.ts +18 -0
  287. package/dist/testing/worker.js +67 -0
  288. package/dist/testing/workers-runtime.d.ts +24 -0
  289. package/dist/testing/workers-runtime.js +33 -0
  290. package/dist/webhook-delivery.d.ts +14 -0
  291. package/dist/webhook-delivery.js +17 -0
  292. package/dist/workers-git.d.ts +285 -0
  293. package/dist/workers-git.js +1174 -0
  294. package/dist/workers.d.ts +352 -0
  295. package/dist/workers.js +868 -0
  296. package/docs/api/README.md +82 -0
  297. package/docs/api/agents.md +332 -0
  298. package/docs/api/app-storage.md +209 -0
  299. package/docs/api/apps.md +1375 -0
  300. package/docs/api/auth.md +63 -0
  301. package/docs/api/build-contract.md +1304 -0
  302. package/docs/api/build.md +1712 -0
  303. package/docs/api/cloudflare.md +421 -0
  304. package/docs/api/computer.md +203 -0
  305. package/docs/api/files.md +117 -0
  306. package/docs/api/git.md +470 -0
  307. package/docs/api/host.md +1328 -0
  308. package/docs/api/index.md +430 -0
  309. package/docs/api/invocation.md +738 -0
  310. package/docs/api/keys.md +175 -0
  311. package/docs/api/mcp.md +301 -0
  312. package/docs/api/media.md +40 -0
  313. package/docs/api/modules.md +50 -0
  314. package/docs/api/pack.md +141 -0
  315. package/docs/api/page/mount.md +298 -0
  316. package/docs/api/root-data.md +111 -0
  317. package/docs/api/shell/app-directory.md +599 -0
  318. package/docs/api/shell/command-host.md +224 -0
  319. package/docs/api/shell/commands.md +197 -0
  320. package/docs/api/shell/keys.md +183 -0
  321. package/docs/api/shell/shell-module.md +204 -0
  322. package/docs/api/shell/window-manager.md +267 -0
  323. package/docs/api/shell/workbench-directory.md +119 -0
  324. package/docs/api/shell/workbench.md +205 -0
  325. package/docs/api/shell.md +1915 -0
  326. package/docs/api/tenancy/auth0.md +110 -0
  327. package/docs/api/tenancy/cloudflare.md +221 -0
  328. package/docs/api/tenancy/cold-directory.md +46 -0
  329. package/docs/api/tenancy/owner-key.md +63 -0
  330. package/docs/api/tenancy/registry.md +77 -0
  331. package/docs/api/tenancy/resolve.md +69 -0
  332. package/docs/api/tenancy.md +430 -0
  333. package/docs/api/tenant.md +194 -0
  334. package/docs/api/workers-git.md +1646 -0
  335. package/docs/api/workers.md +1691 -0
  336. package/docs/site/agent-quickstart.mdx +346 -0
  337. package/examples/standalone/worker.ts +7 -0
  338. package/examples/standalone/wrangler.jsonc +82 -0
  339. package/package.json +300 -3
@@ -0,0 +1,1304 @@
1
+ <!-- Generated by Botanical API docs (TypeDoc + typedoc-plugin-markdown). Do not edit. -->
2
+
3
+ [**@fungi.computer/oyster**](README.md)
4
+
5
+ ---
6
+
7
+ [@fungi.computer/oyster](modules.md) / build-contract
8
+
9
+ # build-contract
10
+
11
+ ## Type Aliases
12
+
13
+ ### ContentObjectBucket
14
+
15
+ ```ts
16
+ type ContentObjectBucket = Readonly<{
17
+ head: Promise<Readonly<{
18
+ size: number;
19
+ checksums: Readonly<{
20
+ sha256?: ArrayBuffer;
21
+ }>;
22
+ }> | null>;
23
+ put: Promise<object | null>;
24
+ }>;
25
+ ```
26
+
27
+ The parts of an R2 bucket a content-object store uses.
28
+
29
+ ---
30
+
31
+ ### CandidateObject
32
+
33
+ ```ts
34
+ type CandidateObject = Schema.Schema.Type<typeof candidateObjectSchema>;
35
+ ```
36
+
37
+ One uploaded object, as a manifest names it.
38
+
39
+ ---
40
+
41
+ ### CandidateOutputManifest
42
+
43
+ ```ts
44
+ type CandidateOutputManifest = Schema.Schema.Type<
45
+ typeof candidateOutputManifestSchema
46
+ >;
47
+ ```
48
+
49
+ One build output by reference.
50
+
51
+ ---
52
+
53
+ ### TeamAppCandidateManifest
54
+
55
+ ```ts
56
+ type TeamAppCandidateManifest = Schema.Schema.Type<
57
+ typeof teamAppCandidateManifestSchema
58
+ >;
59
+ ```
60
+
61
+ One submitted Team App candidate manifest.
62
+
63
+ ---
64
+
65
+ ### PreparedTeamAppCandidateManifest
66
+
67
+ ```ts
68
+ type PreparedTeamAppCandidateManifest = Schema.Schema.Type<
69
+ typeof preparedCandidateManifestSchema
70
+ >;
71
+ ```
72
+
73
+ One Team App candidate manifest with its reserved Release ID.
74
+
75
+ ---
76
+
77
+ ### CandidateObjectMediaType
78
+
79
+ ```ts
80
+ type CandidateObjectMediaType = (typeof candidateObjectMediaTypes)[number];
81
+ ```
82
+
83
+ One of [candidateObjectMediaTypes](#candidateobjectmediatypes).
84
+
85
+ ---
86
+
87
+ ### CandidateUpload
88
+
89
+ ```ts
90
+ type CandidateUpload = CandidateObject &
91
+ Readonly<{
92
+ mediaType: CandidateObjectMediaType;
93
+ }>;
94
+ ```
95
+
96
+ One object a build uploads, with the media type it is stored under.
97
+
98
+ ## Variables
99
+
100
+ ### workspaceBuildPolicy
101
+
102
+ ```ts
103
+ const workspaceBuildPolicy: "package-json-fungi-build-v2" =
104
+ "package-json-fungi-build-v2";
105
+ ```
106
+
107
+ The pinned workspace build policy: how a captured workspace's manifests build
108
+ (`package.json#fungi.build`). v2 lets a dependency name its own package build
109
+ script, which only an admitted Computer build runs.
110
+
111
+ It is part of every workspace HTML recipe's toolchain, so its digest moves with
112
+ it, and the Computer build request carries it at the top level, where a builder
113
+ compiled before it existed refuses the request outright.
114
+
115
+ ---
116
+
117
+ ### TEAM\_APP\_CANDIDATE\_MANIFEST\_MAX\_BYTES
118
+
119
+ ```ts
120
+ const TEAM_APP_CANDIDATE_MANIFEST_MAX_BYTES: number;
121
+ ```
122
+
123
+ The largest candidate manifest request body, in bytes. A manifest names objects;
124
+ their bytes are uploaded one at a time, never inside it.
125
+
126
+ ---
127
+
128
+ ### candidateObjectSchema
129
+
130
+ ```ts
131
+ const candidateObjectSchema: Struct<{
132
+ digest: refine<Sha256Digest, String>;
133
+ byteLength: Number;
134
+ }>;
135
+ ```
136
+
137
+ One content-addressed object a build uploaded before its manifest.
138
+
139
+ ---
140
+
141
+ ### candidateOutputManifestSchema
142
+
143
+ ```ts
144
+ const candidateOutputManifestSchema: Union<readonly [Struct<{
145
+ declaration: optionalKey<Codec<Readonly<{
146
+ api?: Readonly<{
147
+ methods: ...;
148
+ toolFamily?: ...;
149
+ events?: ...;
150
+ }>;
151
+ displayName?: string;
152
+ capabilities: readonly (
153
+ | "agent.list"
154
+ | "agent.manage"
155
+ | "agent.rename"
156
+ | "agent.toolPolicy"
157
+ | "agent.read"
158
+ | "agent.send"
159
+ | "computer.list"
160
+ | "computer.readFile"
161
+ | "computer.writeFile"
162
+ | "computer.execute"
163
+ | "llm.generation"
164
+ | "media.generation"
165
+ | "games:servers"
166
+ | "git.repository"
167
+ | "apps.open"
168
+ | "apps.call"
169
+ | "app.storage"
170
+ | "app.events.emit"
171
+ | "team.workbenchHost"
172
+ | "marketplace.browse"
173
+ | "marketplace.purchase"
174
+ | "workflow.run"
175
+ | "workflow.publish"
176
+ | "workflow.arm"
177
+ | "world"
178
+ | "channels.read"
179
+ | "channels.personal.manage")[];
180
+ calls?: readonly Readonly<...>[];
181
+ guidance?: string;
182
+ handlers: readonly "file.open"[];
183
+ receives?: readonly "git.push"[];
184
+ icon?: string;
185
+ roles: readonly ("dashboard" | "inbox" | "files" | "media" | "sessions" | "terminal")[];
186
+ storage?: readonly Readonly<...>[];
187
+ commands?: readonly Readonly<...>[];
188
+ gills?: readonly Readonly<...>[];
189
+ backend?: Readonly<{
190
+ bindings: ...;
191
+ sync?: ...;
192
+ }>;
193
+ }>, Readonly<{
194
+ api?: Readonly<{
195
+ methods: ...;
196
+ toolFamily?: ...;
197
+ events?: ...;
198
+ }>;
199
+ displayName?: string;
200
+ capabilities: readonly (
201
+ | "agent.list"
202
+ | "agent.manage"
203
+ | "agent.rename"
204
+ | "agent.toolPolicy"
205
+ | "agent.read"
206
+ | "agent.send"
207
+ | "computer.list"
208
+ | "computer.readFile"
209
+ | "computer.writeFile"
210
+ | "computer.execute"
211
+ | "llm.generation"
212
+ | "media.generation"
213
+ | "games:servers"
214
+ | "git.repository"
215
+ | "apps.open"
216
+ | "apps.call"
217
+ | "app.storage"
218
+ | "app.events.emit"
219
+ | "team.workbenchHost"
220
+ | "marketplace.browse"
221
+ | "marketplace.purchase"
222
+ | "workflow.run"
223
+ | "workflow.publish"
224
+ | "workflow.arm"
225
+ | "world"
226
+ | "channels.read"
227
+ | "channels.personal.manage")[];
228
+ calls?: readonly Readonly<...>[];
229
+ guidance?: string;
230
+ handlers: readonly "file.open"[];
231
+ receives?: readonly "git.push"[];
232
+ icon?: string;
233
+ roles: readonly ("dashboard" | "inbox" | "files" | "media" | "sessions" | "terminal")[];
234
+ storage?: readonly Readonly<...>[];
235
+ commands?: readonly Readonly<...>[];
236
+ gills?: readonly Readonly<...>[];
237
+ backend?: Readonly<{
238
+ bindings: ...;
239
+ sync?: ...;
240
+ }>;
241
+ }>, never, never>>;
242
+ kind: Literal<"ui">;
243
+ ui: Union<readonly [Struct<{
244
+ mediaType: Literal<"text/html; charset=utf-8">;
245
+ content: Struct<{
246
+ digest: refine<..., ...>;
247
+ byteLength: Number;
248
+ kind: Literal<...>;
249
+ }>;
250
+ }>, Struct<{
251
+ mediaType: Literal<"application/vnd.fungi.app-assets+json">;
252
+ content: Struct<{
253
+ kind: Literal<...>;
254
+ base: String;
255
+ assets: $Array<...>;
256
+ }>;
257
+ }>]>;
258
+ }>, Struct<{
259
+ declaration: optionalKey<Codec<Readonly<{
260
+ api?: Readonly<{
261
+ methods: ...;
262
+ toolFamily?: ...;
263
+ events?: ...;
264
+ }>;
265
+ displayName?: string;
266
+ capabilities: readonly (
267
+ | "agent.list"
268
+ | "agent.manage"
269
+ | "agent.rename"
270
+ | "agent.toolPolicy"
271
+ | "agent.read"
272
+ | "agent.send"
273
+ | "computer.list"
274
+ | "computer.readFile"
275
+ | "computer.writeFile"
276
+ | "computer.execute"
277
+ | "llm.generation"
278
+ | "media.generation"
279
+ | "games:servers"
280
+ | "git.repository"
281
+ | "apps.open"
282
+ | "apps.call"
283
+ | "app.storage"
284
+ | "app.events.emit"
285
+ | "team.workbenchHost"
286
+ | "marketplace.browse"
287
+ | "marketplace.purchase"
288
+ | "workflow.run"
289
+ | "workflow.publish"
290
+ | "workflow.arm"
291
+ | "world"
292
+ | "channels.read"
293
+ | "channels.personal.manage")[];
294
+ calls?: readonly Readonly<...>[];
295
+ guidance?: string;
296
+ handlers: readonly "file.open"[];
297
+ receives?: readonly "git.push"[];
298
+ icon?: string;
299
+ roles: readonly ("dashboard" | "inbox" | "files" | "media" | "sessions" | "terminal")[];
300
+ storage?: readonly Readonly<...>[];
301
+ commands?: readonly Readonly<...>[];
302
+ gills?: readonly Readonly<...>[];
303
+ backend?: Readonly<{
304
+ bindings: ...;
305
+ sync?: ...;
306
+ }>;
307
+ }>, Readonly<{
308
+ api?: Readonly<{
309
+ methods: ...;
310
+ toolFamily?: ...;
311
+ events?: ...;
312
+ }>;
313
+ displayName?: string;
314
+ capabilities: readonly (
315
+ | "agent.list"
316
+ | "agent.manage"
317
+ | "agent.rename"
318
+ | "agent.toolPolicy"
319
+ | "agent.read"
320
+ | "agent.send"
321
+ | "computer.list"
322
+ | "computer.readFile"
323
+ | "computer.writeFile"
324
+ | "computer.execute"
325
+ | "llm.generation"
326
+ | "media.generation"
327
+ | "games:servers"
328
+ | "git.repository"
329
+ | "apps.open"
330
+ | "apps.call"
331
+ | "app.storage"
332
+ | "app.events.emit"
333
+ | "team.workbenchHost"
334
+ | "marketplace.browse"
335
+ | "marketplace.purchase"
336
+ | "workflow.run"
337
+ | "workflow.publish"
338
+ | "workflow.arm"
339
+ | "world"
340
+ | "channels.read"
341
+ | "channels.personal.manage")[];
342
+ calls?: readonly Readonly<...>[];
343
+ guidance?: string;
344
+ handlers: readonly "file.open"[];
345
+ receives?: readonly "git.push"[];
346
+ icon?: string;
347
+ roles: readonly ("dashboard" | "inbox" | "files" | "media" | "sessions" | "terminal")[];
348
+ storage?: readonly Readonly<...>[];
349
+ commands?: readonly Readonly<...>[];
350
+ gills?: readonly Readonly<...>[];
351
+ backend?: Readonly<{
352
+ bindings: ...;
353
+ sync?: ...;
354
+ }>;
355
+ }>, never, never>>;
356
+ kind: Literal<"backend">;
357
+ backend: Struct<{
358
+ digest: refine<Sha256Digest, String>;
359
+ byteLength: Number;
360
+ }>;
361
+ }>, Struct<{
362
+ declaration: optionalKey<Codec<Readonly<{
363
+ api?: Readonly<{
364
+ methods: ...;
365
+ toolFamily?: ...;
366
+ events?: ...;
367
+ }>;
368
+ displayName?: string;
369
+ capabilities: readonly (
370
+ | "agent.list"
371
+ | "agent.manage"
372
+ | "agent.rename"
373
+ | "agent.toolPolicy"
374
+ | "agent.read"
375
+ | "agent.send"
376
+ | "computer.list"
377
+ | "computer.readFile"
378
+ | "computer.writeFile"
379
+ | "computer.execute"
380
+ | "llm.generation"
381
+ | "media.generation"
382
+ | "games:servers"
383
+ | "git.repository"
384
+ | "apps.open"
385
+ | "apps.call"
386
+ | "app.storage"
387
+ | "app.events.emit"
388
+ | "team.workbenchHost"
389
+ | "marketplace.browse"
390
+ | "marketplace.purchase"
391
+ | "workflow.run"
392
+ | "workflow.publish"
393
+ | "workflow.arm"
394
+ | "world"
395
+ | "channels.read"
396
+ | "channels.personal.manage")[];
397
+ calls?: readonly Readonly<...>[];
398
+ guidance?: string;
399
+ handlers: readonly "file.open"[];
400
+ receives?: readonly "git.push"[];
401
+ icon?: string;
402
+ roles: readonly ("dashboard" | "inbox" | "files" | "media" | "sessions" | "terminal")[];
403
+ storage?: readonly Readonly<...>[];
404
+ commands?: readonly Readonly<...>[];
405
+ gills?: readonly Readonly<...>[];
406
+ backend?: Readonly<{
407
+ bindings: ...;
408
+ sync?: ...;
409
+ }>;
410
+ }>, Readonly<{
411
+ api?: Readonly<{
412
+ methods: ...;
413
+ toolFamily?: ...;
414
+ events?: ...;
415
+ }>;
416
+ displayName?: string;
417
+ capabilities: readonly (
418
+ | "agent.list"
419
+ | "agent.manage"
420
+ | "agent.rename"
421
+ | "agent.toolPolicy"
422
+ | "agent.read"
423
+ | "agent.send"
424
+ | "computer.list"
425
+ | "computer.readFile"
426
+ | "computer.writeFile"
427
+ | "computer.execute"
428
+ | "llm.generation"
429
+ | "media.generation"
430
+ | "games:servers"
431
+ | "git.repository"
432
+ | "apps.open"
433
+ | "apps.call"
434
+ | "app.storage"
435
+ | "app.events.emit"
436
+ | "team.workbenchHost"
437
+ | "marketplace.browse"
438
+ | "marketplace.purchase"
439
+ | "workflow.run"
440
+ | "workflow.publish"
441
+ | "workflow.arm"
442
+ | "world"
443
+ | "channels.read"
444
+ | "channels.personal.manage")[];
445
+ calls?: readonly Readonly<...>[];
446
+ guidance?: string;
447
+ handlers: readonly "file.open"[];
448
+ receives?: readonly "git.push"[];
449
+ icon?: string;
450
+ roles: readonly ("dashboard" | "inbox" | "files" | "media" | "sessions" | "terminal")[];
451
+ storage?: readonly Readonly<...>[];
452
+ commands?: readonly Readonly<...>[];
453
+ gills?: readonly Readonly<...>[];
454
+ backend?: Readonly<{
455
+ bindings: ...;
456
+ sync?: ...;
457
+ }>;
458
+ }>, never, never>>;
459
+ kind: Literal<"app">;
460
+ ui: Union<readonly [Struct<{
461
+ mediaType: Literal<"text/html; charset=utf-8">;
462
+ content: Struct<{
463
+ digest: refine<..., ...>;
464
+ byteLength: Number;
465
+ kind: Literal<...>;
466
+ }>;
467
+ }>, Struct<{
468
+ mediaType: Literal<"application/vnd.fungi.app-assets+json">;
469
+ content: Struct<{
470
+ kind: Literal<...>;
471
+ base: String;
472
+ assets: $Array<...>;
473
+ }>;
474
+ }>]>;
475
+ backend: Struct<{
476
+ digest: refine<Sha256Digest, String>;
477
+ byteLength: Number;
478
+ }>;
479
+ }>]>;
480
+ ```
481
+
482
+ A build's output by reference: the same surfaces as its bytes, sized.
483
+
484
+ ---
485
+
486
+ ### teamAppCandidateManifestSchema
487
+
488
+ ```ts
489
+ const teamAppCandidateManifestSchema: Struct<{
490
+ appId: refine<AppId, String>;
491
+ output: Union<readonly [Struct<{
492
+ declaration: optionalKey<Codec<Readonly<{
493
+ api?: ... | ...;
494
+ displayName?: ... | ...;
495
+ capabilities: readonly ...[];
496
+ calls?: ... | ...;
497
+ guidance?: ... | ...;
498
+ handlers: readonly ...[];
499
+ receives?: ... | ...;
500
+ icon?: ... | ...;
501
+ roles: readonly ...[];
502
+ storage?: ... | ...;
503
+ commands?: ... | ...;
504
+ gills?: ... | ...;
505
+ backend?: ... | ...;
506
+ }>, Readonly<{
507
+ api?: ... | ...;
508
+ displayName?: ... | ...;
509
+ capabilities: readonly ...[];
510
+ calls?: ... | ...;
511
+ guidance?: ... | ...;
512
+ handlers: readonly ...[];
513
+ receives?: ... | ...;
514
+ icon?: ... | ...;
515
+ roles: readonly ...[];
516
+ storage?: ... | ...;
517
+ commands?: ... | ...;
518
+ gills?: ... | ...;
519
+ backend?: ... | ...;
520
+ }>, never, never>>;
521
+ kind: Literal<"ui">;
522
+ ui: Union<readonly [Struct<{
523
+ mediaType: Literal<...>;
524
+ content: Struct<...>;
525
+ }>, Struct<{
526
+ mediaType: Literal<...>;
527
+ content: Struct<...>;
528
+ }>]>;
529
+ }>, Struct<{
530
+ declaration: optionalKey<Codec<Readonly<{
531
+ api?: ... | ...;
532
+ displayName?: ... | ...;
533
+ capabilities: readonly ...[];
534
+ calls?: ... | ...;
535
+ guidance?: ... | ...;
536
+ handlers: readonly ...[];
537
+ receives?: ... | ...;
538
+ icon?: ... | ...;
539
+ roles: readonly ...[];
540
+ storage?: ... | ...;
541
+ commands?: ... | ...;
542
+ gills?: ... | ...;
543
+ backend?: ... | ...;
544
+ }>, Readonly<{
545
+ api?: ... | ...;
546
+ displayName?: ... | ...;
547
+ capabilities: readonly ...[];
548
+ calls?: ... | ...;
549
+ guidance?: ... | ...;
550
+ handlers: readonly ...[];
551
+ receives?: ... | ...;
552
+ icon?: ... | ...;
553
+ roles: readonly ...[];
554
+ storage?: ... | ...;
555
+ commands?: ... | ...;
556
+ gills?: ... | ...;
557
+ backend?: ... | ...;
558
+ }>, never, never>>;
559
+ kind: Literal<"backend">;
560
+ backend: Struct<{
561
+ digest: refine<Sha256Digest, String>;
562
+ byteLength: Number;
563
+ }>;
564
+ }>, Struct<{
565
+ declaration: optionalKey<Codec<Readonly<{
566
+ api?: ... | ...;
567
+ displayName?: ... | ...;
568
+ capabilities: readonly ...[];
569
+ calls?: ... | ...;
570
+ guidance?: ... | ...;
571
+ handlers: readonly ...[];
572
+ receives?: ... | ...;
573
+ icon?: ... | ...;
574
+ roles: readonly ...[];
575
+ storage?: ... | ...;
576
+ commands?: ... | ...;
577
+ gills?: ... | ...;
578
+ backend?: ... | ...;
579
+ }>, Readonly<{
580
+ api?: ... | ...;
581
+ displayName?: ... | ...;
582
+ capabilities: readonly ...[];
583
+ calls?: ... | ...;
584
+ guidance?: ... | ...;
585
+ handlers: readonly ...[];
586
+ receives?: ... | ...;
587
+ icon?: ... | ...;
588
+ roles: readonly ...[];
589
+ storage?: ... | ...;
590
+ commands?: ... | ...;
591
+ gills?: ... | ...;
592
+ backend?: ... | ...;
593
+ }>, never, never>>;
594
+ kind: Literal<"app">;
595
+ ui: Union<readonly [Struct<{
596
+ mediaType: Literal<...>;
597
+ content: Struct<...>;
598
+ }>, Struct<{
599
+ mediaType: Literal<...>;
600
+ content: Struct<...>;
601
+ }>]>;
602
+ backend: Struct<{
603
+ digest: refine<Sha256Digest, String>;
604
+ byteLength: Number;
605
+ }>;
606
+ }>]>;
607
+ provenance: Struct<{
608
+ sourceRevision: refine<SourceRevision, String>;
609
+ sourceTreeDigest: refine<Sha256Digest, String>;
610
+ buildRecipeDigest: refine<Sha256Digest, String>;
611
+ }>;
612
+ }>;
613
+ ```
614
+
615
+ A submitted Team App candidate: its output's objects by digest and size, and its
616
+ provenance, before the Team assigns a stable Release ID.
617
+
618
+ ---
619
+
620
+ ### preparedCandidateManifestSchema
621
+
622
+ ```ts
623
+ const preparedCandidateManifestSchema: Struct<{
624
+ appId: refine<AppId, String>;
625
+ output: Union<readonly [Struct<{
626
+ declaration: optionalKey<Codec<Readonly<{
627
+ api?: ... | ...;
628
+ displayName?: ... | ...;
629
+ capabilities: readonly ...[];
630
+ calls?: ... | ...;
631
+ guidance?: ... | ...;
632
+ handlers: readonly ...[];
633
+ receives?: ... | ...;
634
+ icon?: ... | ...;
635
+ roles: readonly ...[];
636
+ storage?: ... | ...;
637
+ commands?: ... | ...;
638
+ gills?: ... | ...;
639
+ backend?: ... | ...;
640
+ }>, Readonly<{
641
+ api?: ... | ...;
642
+ displayName?: ... | ...;
643
+ capabilities: readonly ...[];
644
+ calls?: ... | ...;
645
+ guidance?: ... | ...;
646
+ handlers: readonly ...[];
647
+ receives?: ... | ...;
648
+ icon?: ... | ...;
649
+ roles: readonly ...[];
650
+ storage?: ... | ...;
651
+ commands?: ... | ...;
652
+ gills?: ... | ...;
653
+ backend?: ... | ...;
654
+ }>, never, never>>;
655
+ kind: Literal<"ui">;
656
+ ui: Union<readonly [Struct<{
657
+ mediaType: Literal<...>;
658
+ content: Struct<...>;
659
+ }>, Struct<{
660
+ mediaType: Literal<...>;
661
+ content: Struct<...>;
662
+ }>]>;
663
+ }>, Struct<{
664
+ declaration: optionalKey<Codec<Readonly<{
665
+ api?: ... | ...;
666
+ displayName?: ... | ...;
667
+ capabilities: readonly ...[];
668
+ calls?: ... | ...;
669
+ guidance?: ... | ...;
670
+ handlers: readonly ...[];
671
+ receives?: ... | ...;
672
+ icon?: ... | ...;
673
+ roles: readonly ...[];
674
+ storage?: ... | ...;
675
+ commands?: ... | ...;
676
+ gills?: ... | ...;
677
+ backend?: ... | ...;
678
+ }>, Readonly<{
679
+ api?: ... | ...;
680
+ displayName?: ... | ...;
681
+ capabilities: readonly ...[];
682
+ calls?: ... | ...;
683
+ guidance?: ... | ...;
684
+ handlers: readonly ...[];
685
+ receives?: ... | ...;
686
+ icon?: ... | ...;
687
+ roles: readonly ...[];
688
+ storage?: ... | ...;
689
+ commands?: ... | ...;
690
+ gills?: ... | ...;
691
+ backend?: ... | ...;
692
+ }>, never, never>>;
693
+ kind: Literal<"backend">;
694
+ backend: Struct<{
695
+ digest: refine<Sha256Digest, String>;
696
+ byteLength: Number;
697
+ }>;
698
+ }>, Struct<{
699
+ declaration: optionalKey<Codec<Readonly<{
700
+ api?: ... | ...;
701
+ displayName?: ... | ...;
702
+ capabilities: readonly ...[];
703
+ calls?: ... | ...;
704
+ guidance?: ... | ...;
705
+ handlers: readonly ...[];
706
+ receives?: ... | ...;
707
+ icon?: ... | ...;
708
+ roles: readonly ...[];
709
+ storage?: ... | ...;
710
+ commands?: ... | ...;
711
+ gills?: ... | ...;
712
+ backend?: ... | ...;
713
+ }>, Readonly<{
714
+ api?: ... | ...;
715
+ displayName?: ... | ...;
716
+ capabilities: readonly ...[];
717
+ calls?: ... | ...;
718
+ guidance?: ... | ...;
719
+ handlers: readonly ...[];
720
+ receives?: ... | ...;
721
+ icon?: ... | ...;
722
+ roles: readonly ...[];
723
+ storage?: ... | ...;
724
+ commands?: ... | ...;
725
+ gills?: ... | ...;
726
+ backend?: ... | ...;
727
+ }>, never, never>>;
728
+ kind: Literal<"app">;
729
+ ui: Union<readonly [Struct<{
730
+ mediaType: Literal<...>;
731
+ content: Struct<...>;
732
+ }>, Struct<{
733
+ mediaType: Literal<...>;
734
+ content: Struct<...>;
735
+ }>]>;
736
+ backend: Struct<{
737
+ digest: refine<Sha256Digest, String>;
738
+ byteLength: Number;
739
+ }>;
740
+ }>]>;
741
+ provenance: Struct<{
742
+ sourceRevision: refine<SourceRevision, String>;
743
+ sourceTreeDigest: refine<Sha256Digest, String>;
744
+ buildRecipeDigest: refine<Sha256Digest, String>;
745
+ }>;
746
+ releaseId: refine<ReleaseId, String>;
747
+ }>;
748
+ ```
749
+
750
+ Publisher persistence input after TeamDO reserves retry-stable identities.
751
+
752
+ ---
753
+
754
+ ### preparedCandidateSchema
755
+
756
+ ```ts
757
+ const preparedCandidateSchema: Struct<{
758
+ appId: refine<AppId, String>;
759
+ releaseId: refine<ReleaseId, String>;
760
+ output: Union<readonly [Struct<{
761
+ declaration: optionalKey<Codec<Readonly<{
762
+ api?: ... | ...;
763
+ displayName?: ... | ...;
764
+ capabilities: readonly ...[];
765
+ calls?: ... | ...;
766
+ guidance?: ... | ...;
767
+ handlers: readonly ...[];
768
+ receives?: ... | ...;
769
+ icon?: ... | ...;
770
+ roles: readonly ...[];
771
+ storage?: ... | ...;
772
+ commands?: ... | ...;
773
+ gills?: ... | ...;
774
+ backend?: ... | ...;
775
+ }>, Readonly<{
776
+ api?: ... | ...;
777
+ displayName?: ... | ...;
778
+ capabilities: readonly ...[];
779
+ calls?: ... | ...;
780
+ guidance?: ... | ...;
781
+ handlers: readonly ...[];
782
+ receives?: ... | ...;
783
+ icon?: ... | ...;
784
+ roles: readonly ...[];
785
+ storage?: ... | ...;
786
+ commands?: ... | ...;
787
+ gills?: ... | ...;
788
+ backend?: ... | ...;
789
+ }>, never, never>>;
790
+ kind: Literal<"ui">;
791
+ ui: Union<readonly [Struct<{
792
+ mediaType: Literal<...>;
793
+ content: Struct<...>;
794
+ }>, Struct<{
795
+ mediaType: Literal<...>;
796
+ content: Struct<...>;
797
+ }>]>;
798
+ }>, Struct<{
799
+ declaration: optionalKey<Codec<Readonly<{
800
+ api?: ... | ...;
801
+ displayName?: ... | ...;
802
+ capabilities: readonly ...[];
803
+ calls?: ... | ...;
804
+ guidance?: ... | ...;
805
+ handlers: readonly ...[];
806
+ receives?: ... | ...;
807
+ icon?: ... | ...;
808
+ roles: readonly ...[];
809
+ storage?: ... | ...;
810
+ commands?: ... | ...;
811
+ gills?: ... | ...;
812
+ backend?: ... | ...;
813
+ }>, Readonly<{
814
+ api?: ... | ...;
815
+ displayName?: ... | ...;
816
+ capabilities: readonly ...[];
817
+ calls?: ... | ...;
818
+ guidance?: ... | ...;
819
+ handlers: readonly ...[];
820
+ receives?: ... | ...;
821
+ icon?: ... | ...;
822
+ roles: readonly ...[];
823
+ storage?: ... | ...;
824
+ commands?: ... | ...;
825
+ gills?: ... | ...;
826
+ backend?: ... | ...;
827
+ }>, never, never>>;
828
+ kind: Literal<"backend">;
829
+ backend: Uint8ArrayFromBase64;
830
+ }>, Struct<{
831
+ declaration: optionalKey<Codec<Readonly<{
832
+ api?: ... | ...;
833
+ displayName?: ... | ...;
834
+ capabilities: readonly ...[];
835
+ calls?: ... | ...;
836
+ guidance?: ... | ...;
837
+ handlers: readonly ...[];
838
+ receives?: ... | ...;
839
+ icon?: ... | ...;
840
+ roles: readonly ...[];
841
+ storage?: ... | ...;
842
+ commands?: ... | ...;
843
+ gills?: ... | ...;
844
+ backend?: ... | ...;
845
+ }>, Readonly<{
846
+ api?: ... | ...;
847
+ displayName?: ... | ...;
848
+ capabilities: readonly ...[];
849
+ calls?: ... | ...;
850
+ guidance?: ... | ...;
851
+ handlers: readonly ...[];
852
+ receives?: ... | ...;
853
+ icon?: ... | ...;
854
+ roles: readonly ...[];
855
+ storage?: ... | ...;
856
+ commands?: ... | ...;
857
+ gills?: ... | ...;
858
+ backend?: ... | ...;
859
+ }>, never, never>>;
860
+ kind: Literal<"app">;
861
+ ui: Union<readonly [Struct<{
862
+ mediaType: Literal<...>;
863
+ content: Struct<...>;
864
+ }>, Struct<{
865
+ mediaType: Literal<...>;
866
+ content: Struct<...>;
867
+ }>]>;
868
+ backend: Uint8ArrayFromBase64;
869
+ }>]>;
870
+ provenance: Struct<{
871
+ sourceRevision: refine<SourceRevision, String>;
872
+ sourceTreeDigest: refine<Sha256Digest, String>;
873
+ buildRecipeDigest: refine<Sha256Digest, String>;
874
+ }>;
875
+ }>;
876
+ ```
877
+
878
+ A platform App candidate the trusted operator built and packed itself, with its
879
+ bytes inline: the operator's platform publication request only. A Team candidate
880
+ never carries bytes; it is a manifest.
881
+
882
+ ---
883
+
884
+ ### candidateObjectMediaTypes
885
+
886
+ ```ts
887
+ const candidateObjectMediaTypes: readonly [
888
+ "text/html; charset=utf-8",
889
+ "application/vnd.fungi.app-backend+json",
890
+ "application/octet-stream",
891
+ ];
892
+ ```
893
+
894
+ The media type an uploaded object is stored with. A store that reads an HTML
895
+ document or backend descriptor by its stored type (the Publisher's) needs it; an
896
+ asset's type is its manifest's, so it is an octet stream.
897
+
898
+ ## Functions
899
+
900
+ ### contentObjectRef()
901
+
902
+ ```ts
903
+ function contentObjectRef(digest): ArtifactRef;
904
+ ```
905
+
906
+ The store key of one content-addressed object.
907
+
908
+ #### Parameters
909
+
910
+ | Parameter | Type |
911
+ | --------- | -------------- |
912
+ | `digest` | `Sha256Digest` |
913
+
914
+ #### Returns
915
+
916
+ `ArtifactRef`
917
+
918
+ ---
919
+
920
+ ### headContentObject()
921
+
922
+ ```ts
923
+ function headContentObject(
924
+ bucket,
925
+ artifactRef,
926
+ ): Promise<Readonly<{
927
+ byteLength: number;
928
+ digest: Sha256Digest | null;
929
+ }> | null>;
930
+ ```
931
+
932
+ Describe a stored object by its size and the SHA-256 the store verified.
933
+
934
+ #### Parameters
935
+
936
+ | Parameter | Type |
937
+ | ------------- | --------------------------------------------- |
938
+ | `bucket` | [`ContentObjectBucket`](#contentobjectbucket) |
939
+ | `artifactRef` | `ArtifactRef` |
940
+
941
+ #### Returns
942
+
943
+ `Promise`\< \| `Readonly`\<\{ `byteLength`: `number`; `digest`: `Sha256Digest`
944
+ \| `null`; \}\> \| `null`\>
945
+
946
+ ---
947
+
948
+ ### putContentObject()
949
+
950
+ ```ts
951
+ function putContentObject(
952
+ bucket,
953
+ object,
954
+ body,
955
+ mediaType,
956
+ ): Promise<"refused" | "stored">;
957
+ ```
958
+
959
+ Stream one object into the store under its digest. The store refuses a body
960
+ whose SHA-256 differs; an object already stored with the same verified digest
961
+ and size is kept (write-once: a stored version may be pinned by a Release) and
962
+ the body is discarded, never stored.
963
+
964
+ #### Parameters
965
+
966
+ | Parameter | Type |
967
+ | ------------------- | ------------------------------------------------------------------------------------------------------------- |
968
+ | `bucket` | [`ContentObjectBucket`](#contentobjectbucket) |
969
+ | `object` | \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \} |
970
+ | `object.digest` | `Sha256Digest` |
971
+ | `object.byteLength` | `number` |
972
+ | `body` | `ReadableStream`\<`Uint8Array`\<`ArrayBufferLike`\>\> \| `null` |
973
+ | `mediaType` | \| `"text/html; charset=utf-8"` \| `"application/vnd.fungi.app-backend+json"` \| `"application/octet-stream"` |
974
+
975
+ #### Returns
976
+
977
+ `Promise`\<`"refused"` \| `"stored"`\>
978
+
979
+ ---
980
+
981
+ ### encodeTeamAppCandidateManifest()
982
+
983
+ ```ts
984
+ function encodeTeamAppCandidateManifest(manifest): string;
985
+ ```
986
+
987
+ Canonical manifest bytes, so a digest is independent of JSON spacing.
988
+
989
+ #### Parameters
990
+
991
+ | Parameter | Type |
992
+ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
993
+ | `manifest` | \{ `appId`: `AppId`; `output`: \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"ui"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"backend"`; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"app"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \}; `provenance`: \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \}; \} |
994
+ | `manifest.appId` | `AppId` |
995
+ | `manifest.output` | \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"ui"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"backend"`; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"app"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} |
996
+ | `manifest.provenance` | \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \} |
997
+ | `manifest.provenance.sourceRevision` | `SourceRevision` |
998
+ | `manifest.provenance.sourceTreeDigest` | `Sha256Digest` |
999
+ | `manifest.provenance.buildRecipeDigest` | `Sha256Digest` |
1000
+
1001
+ #### Returns
1002
+
1003
+ `string`
1004
+
1005
+ ---
1006
+
1007
+ ### digestTeamAppCandidateManifest()
1008
+
1009
+ ```ts
1010
+ function digestTeamAppCandidateManifest(manifest): Promise<string>;
1011
+ ```
1012
+
1013
+ The hex SHA-256 of a manifest's canonical bytes: its App root's name.
1014
+
1015
+ #### Parameters
1016
+
1017
+ | Parameter | Type |
1018
+ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
1019
+ | `manifest` | \{ `appId`: `AppId`; `output`: \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"ui"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"backend"`; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"app"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \}; `provenance`: \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \}; \} |
1020
+ | `manifest.appId` | `AppId` |
1021
+ | `manifest.output` | \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"ui"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"backend"`; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<..., ...\>\>; `toolFamily?`: `Readonly`\<...\>; `events?`: `Readonly`\<...\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly ...[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly ...[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: ... \| ...; `sigil?`: ... \| ...; `projections?`: ... \| ...; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: ... \| ...; `watch?`: ... \| ...; `desktop?`: ... \| ...; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<...\>[]; `sync?`: `Readonly`\<...\>; \}\>; \}\>; `kind`: `"app"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} |
1022
+ | `manifest.provenance` | \{ `sourceRevision`: `SourceRevision`; `sourceTreeDigest`: `Sha256Digest`; `buildRecipeDigest`: `Sha256Digest`; \} |
1023
+ | `manifest.provenance.sourceRevision` | `SourceRevision` |
1024
+ | `manifest.provenance.sourceTreeDigest` | `Sha256Digest` |
1025
+ | `manifest.provenance.buildRecipeDigest` | `Sha256Digest` |
1026
+
1027
+ #### Returns
1028
+
1029
+ `Promise`\<`string`\>
1030
+
1031
+ ---
1032
+
1033
+ ### candidateObjectMediaType()
1034
+
1035
+ ```ts
1036
+ function candidateObjectMediaType(
1037
+ value,
1038
+ ):
1039
+ | "text/html; charset=utf-8"
1040
+ | "application/vnd.fungi.app-backend+json"
1041
+ | "application/octet-stream"
1042
+ | null;
1043
+ ```
1044
+
1045
+ The stored media type a request names, if it is one an object may carry.
1046
+
1047
+ #### Parameters
1048
+
1049
+ | Parameter | Type |
1050
+ | --------- | ------------------ |
1051
+ | `value` | `string` \| `null` |
1052
+
1053
+ #### Returns
1054
+
1055
+ \| `"text/html; charset=utf-8"` \| `"application/vnd.fungi.app-backend+json"` \|
1056
+ `"application/octet-stream"` \| `null`
1057
+
1058
+ ---
1059
+
1060
+ ### candidateManifestObjects()
1061
+
1062
+ ```ts
1063
+ function candidateManifestObjects(output): readonly CandidateUpload[];
1064
+ ```
1065
+
1066
+ Every distinct object a manifest names, each once, in manifest order.
1067
+
1068
+ #### Parameters
1069
+
1070
+ | Parameter | Type |
1071
+ | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1072
+ | `output` | \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<`string`, `Readonly`\<...\>\>\>; `toolFamily?`: `Readonly`\<\{ `name`: ...; `list`: ...; `call`: ...; \}\>; `events?`: `Readonly`\<`Record`\<..., ...\>\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly `string`[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly (... \| ...)[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: `string`; `sigil?`: `string`; `projections?`: `Readonly`\<...\>; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: readonly ...[]; `watch?`: `AppGillWatch`; `desktop?`: `Readonly`\<...\>; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<\{ `name`: ...; `operations`: ...; \}\>[]; `sync?`: `Readonly`\<\{ `method`: ...; \}\>; \}\>; \}\>; `kind`: `"ui"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<`string`, `Readonly`\<...\>\>\>; `toolFamily?`: `Readonly`\<\{ `name`: ...; `list`: ...; `call`: ...; \}\>; `events?`: `Readonly`\<`Record`\<..., ...\>\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly `string`[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly (... \| ...)[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: `string`; `sigil?`: `string`; `projections?`: `Readonly`\<...\>; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: readonly ...[]; `watch?`: `AppGillWatch`; `desktop?`: `Readonly`\<...\>; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<\{ `name`: ...; `operations`: ...; \}\>[]; `sync?`: `Readonly`\<\{ `method`: ...; \}\>; \}\>; \}\>; `kind`: `"backend"`; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} \| \{ `declaration?`: `Readonly`\<\{ `api?`: `Readonly`\<\{ `methods`: `Readonly`\<`Record`\<`string`, `Readonly`\<...\>\>\>; `toolFamily?`: `Readonly`\<\{ `name`: ...; `list`: ...; `call`: ...; \}\>; `events?`: `Readonly`\<`Record`\<..., ...\>\>; \}\>; `displayName?`: `string`; `capabilities`: readonly ( \| `"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"`)[]; `calls?`: readonly `Readonly`\<\{ `appId`: `string`; `methods`: readonly `string`[]; \}\>[]; `guidance?`: `string`; `handlers`: readonly `"file.open"`[]; `receives?`: readonly `"git.push"`[]; `icon?`: `string`; `roles`: readonly (`"dashboard"` \| `"inbox"` \| `"files"` \| `"media"` \| `"sessions"` \| `"terminal"`)[]; `storage?`: readonly `Readonly`\<\{ `key`: `string`; `scopes`: readonly (... \| ...)[]; `maxBytes`: `number`; \}\>[]; `commands?`: readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`; `description?`: `string`; `sigil?`: `string`; `projections?`: `Readonly`\<...\>; \}\>[]; `gills?`: readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`; `params?`: readonly ...[]; `watch?`: `AppGillWatch`; `desktop?`: `Readonly`\<...\>; \}\>[]; `backend?`: `Readonly`\<\{ `bindings`: readonly `Readonly`\<\{ `name`: ...; `operations`: ...; \}\>[]; `sync?`: `Readonly`\<\{ `method`: ...; \}\>; \}\>; \}\>; `kind`: `"app"`; `ui`: \| \{ `mediaType`: `"text/html; charset=utf-8"`; `content`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; `kind`: `"html"`; \}; \} \| \{ `mediaType`: `"application/vnd.fungi.app-assets+json"`; `content`: \{ `kind`: `"assets"`; `base`: `string`; `assets`: readonly `object`[]; \}; \}; `backend`: \{ `digest`: `Sha256Digest`; `byteLength`: `number`; \}; \} |
1073
+
1074
+ #### Returns
1075
+
1076
+ readonly [`CandidateUpload`](#candidateupload)[]
1077
+
1078
+ ---
1079
+
1080
+ ### decodeCandidateBackend()
1081
+
1082
+ ```ts
1083
+ function decodeCandidateBackend(bytes): object;
1084
+ ```
1085
+
1086
+ Decode a stored backend descriptor; a manifest's backend must be one.
1087
+
1088
+ #### Parameters
1089
+
1090
+ | Parameter | Type |
1091
+ | --------- | ------------ |
1092
+ | `bytes` | `Uint8Array` |
1093
+
1094
+ #### Returns
1095
+
1096
+ `object`
1097
+
1098
+ | Name | Type |
1099
+ | --------------------- | ----------------- |
1100
+ | `runtime` | `object` |
1101
+ | `runtime.kind` | `"durable-facet"` |
1102
+ | `runtime.stateSchema` | `number` |
1103
+ | `compatibilityDate` | `string` |
1104
+ | `exportName` | `string` |
1105
+ | `code` | `string` |
1106
+
1107
+ ## References
1108
+
1109
+ ### pinnedRecipeSchema
1110
+
1111
+ Re-exports [pinnedRecipeSchema](build.md#pinnedrecipeschema)
1112
+
1113
+ ---
1114
+
1115
+ ### AppPublisherCoreConfigSchema
1116
+
1117
+ Re-exports [AppPublisherCoreConfigSchema](build.md#apppublishercoreconfigschema)
1118
+
1119
+ ---
1120
+
1121
+ ### AppPublisherCoreConfigInput
1122
+
1123
+ Re-exports [AppPublisherCoreConfigInput](build.md#apppublishercoreconfiginput)
1124
+
1125
+ ---
1126
+
1127
+ ### appBackendExportConditions
1128
+
1129
+ Re-exports [appBackendExportConditions](build.md#appbackendexportconditions)
1130
+
1131
+ ---
1132
+
1133
+ ### capturedPinnedRecipeSchema
1134
+
1135
+ Re-exports [capturedPinnedRecipeSchema](build.md#capturedpinnedrecipeschema)
1136
+
1137
+ ---
1138
+
1139
+ ### PinnedRecipe
1140
+
1141
+ Re-exports [PinnedRecipe](build.md#pinnedrecipe)
1142
+
1143
+ ---
1144
+
1145
+ ### CapturedSource
1146
+
1147
+ Re-exports [CapturedSource](build.md#capturedsource)
1148
+
1149
+ ---
1150
+
1151
+ ### RawBuildOutput
1152
+
1153
+ Re-exports [RawBuildOutput](build.md#rawbuildoutput)
1154
+
1155
+ ---
1156
+
1157
+ ### UiBuildOutput
1158
+
1159
+ Re-exports [UiBuildOutput](build.md#uibuildoutput)
1160
+
1161
+ ---
1162
+
1163
+ ### BuildExecutorOutput
1164
+
1165
+ Re-exports [BuildExecutorOutput](build.md#buildexecutoroutput)
1166
+
1167
+ ---
1168
+
1169
+ ### PreparedUiOutput
1170
+
1171
+ Re-exports [PreparedUiOutput](build.md#prepareduioutput)
1172
+
1173
+ ---
1174
+
1175
+ ### BuildOutput
1176
+
1177
+ Re-exports [BuildOutput](build.md#buildoutput)
1178
+
1179
+ ---
1180
+
1181
+ ### StoredArtifact
1182
+
1183
+ Re-exports [StoredArtifact](build.md#storedartifact)
1184
+
1185
+ ---
1186
+
1187
+ ### PreparedCandidate
1188
+
1189
+ Re-exports [PreparedCandidate](build.md#preparedcandidate)
1190
+
1191
+ ---
1192
+
1193
+ ### SourceCapture
1194
+
1195
+ Re-exports [SourceCapture](build.md#sourcecapture)
1196
+
1197
+ ---
1198
+
1199
+ ### BuildExecutor
1200
+
1201
+ Re-exports [BuildExecutor](build.md#buildexecutor)
1202
+
1203
+ ---
1204
+
1205
+ ### ArtifactWriter
1206
+
1207
+ Re-exports [ArtifactWriter](build.md#artifactwriter)
1208
+
1209
+ ---
1210
+
1211
+ ### ReleaseCreator
1212
+
1213
+ Re-exports [ReleaseCreator](build.md#releasecreator)
1214
+
1215
+ ---
1216
+
1217
+ ### AppPublisherOptions
1218
+
1219
+ Re-exports [AppPublisherOptions](build.md#apppublisheroptions)
1220
+
1221
+ ---
1222
+
1223
+ ### AppPublisher
1224
+
1225
+ Re-exports [AppPublisher](build.md#apppublisher)
1226
+
1227
+ ---
1228
+
1229
+ ### AppCandidatePreparer
1230
+
1231
+ Re-exports [AppCandidatePreparer](build.md#appcandidatepreparer)
1232
+
1233
+ ---
1234
+
1235
+ ### AppPublisherStage
1236
+
1237
+ Re-exports [AppPublisherStage](build.md#apppublisherstage)
1238
+
1239
+ ---
1240
+
1241
+ ### AppPublisherError
1242
+
1243
+ Re-exports [AppPublisherError](build.md#apppublishererror)
1244
+
1245
+ ---
1246
+
1247
+ ### CapturedConfig
1248
+
1249
+ Re-exports [CapturedConfig](build.md#capturedconfig)
1250
+
1251
+ ---
1252
+
1253
+ ### pinsCurrentToolchain
1254
+
1255
+ Re-exports [pinsCurrentToolchain](build.md#pinscurrenttoolchain)
1256
+
1257
+ ---
1258
+
1259
+ ### digestPinnedRecipe
1260
+
1261
+ Re-exports [digestPinnedRecipe](build.md#digestpinnedrecipe)
1262
+
1263
+ ---
1264
+
1265
+ ### normalizeAppPublisherRecipe
1266
+
1267
+ Re-exports [normalizeAppPublisherRecipe](build.md#normalizeapppublisherrecipe)
1268
+
1269
+ ---
1270
+
1271
+ ### pinnedRecipeObjectBound
1272
+
1273
+ Re-exports [pinnedRecipeObjectBound](build.md#pinnedrecipeobjectbound)
1274
+
1275
+ ---
1276
+
1277
+ ### fitsPinnedRecipe
1278
+
1279
+ Re-exports [fitsPinnedRecipe](build.md#fitspinnedrecipe)
1280
+
1281
+ ---
1282
+
1283
+ ### createAppCandidatePreparer
1284
+
1285
+ Re-exports [createAppCandidatePreparer](build.md#createappcandidatepreparer)
1286
+
1287
+ ---
1288
+
1289
+ ### createCapturedCandidatePreparer
1290
+
1291
+ Re-exports
1292
+ [createCapturedCandidatePreparer](build.md#createcapturedcandidatepreparer)
1293
+
1294
+ ---
1295
+
1296
+ ### commitPreparedCandidate
1297
+
1298
+ Re-exports [commitPreparedCandidate](build.md#commitpreparedcandidate)
1299
+
1300
+ ---
1301
+
1302
+ ### createAppPublisher
1303
+
1304
+ Re-exports [createAppPublisher](build.md#createapppublisher)