@fungi.computer/oyster 0.0.1 → 0.2.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 (195) hide show
  1. package/README.md +228 -176
  2. package/dist/agent-avatars.d.ts +103 -0
  3. package/dist/agent-avatars.js +66 -0
  4. package/dist/agents.d.ts +12 -2
  5. package/dist/agents.js +39 -2
  6. package/dist/app-builds.d.ts +76 -17
  7. package/dist/app-builds.js +207 -63
  8. package/dist/app-sources.d.ts +7 -22
  9. package/dist/app-sources.js +49 -14
  10. package/dist/apps/gate.d.ts +7 -7
  11. package/dist/apps/gate.js +6 -6
  12. package/dist/apps/installation.d.ts +35 -35
  13. package/dist/apps/installation.js +20 -19
  14. package/dist/build/artifact-writer.d.ts +40 -0
  15. package/dist/build/artifact-writer.js +181 -0
  16. package/dist/build/build-jobs.js +7 -1
  17. package/dist/build/build-policy.d.ts +10 -0
  18. package/dist/build/build-policy.js +10 -0
  19. package/dist/build/build-step.d.ts +12 -1
  20. package/dist/build/build-step.js +9 -1
  21. package/dist/build/candidate-builder.d.ts +68 -0
  22. package/dist/build/candidate-builder.js +91 -0
  23. package/dist/build/candidate-cli.d.ts +1 -0
  24. package/dist/build/candidate-cli.js +119 -0
  25. package/dist/build/candidate-cli.mjs +28220 -0
  26. package/dist/build/content-objects.d.ts +37 -0
  27. package/dist/build/content-objects.js +53 -0
  28. package/dist/build/effect.d.ts +18 -0
  29. package/dist/build/effect.js +52 -12
  30. package/dist/build/git-environment.d.ts +3 -0
  31. package/dist/build/git-environment.js +21 -9
  32. package/dist/build/local-build.d.ts +13 -3
  33. package/dist/build/local-build.js +149 -99
  34. package/dist/build/snapshot-package-store.d.ts +10 -0
  35. package/dist/build/snapshot-package-store.js +15 -0
  36. package/dist/build/snapshot-program-scripts.js +1 -1
  37. package/dist/build/snapshot-programs/snapshot-path.d.ts +2 -0
  38. package/dist/build/snapshot-programs/snapshot-path.js +6 -0
  39. package/dist/build/submission-contract.d.ts +461 -17
  40. package/dist/build/submission-contract.js +136 -26
  41. package/dist/build/workspace-build.d.ts +7 -2
  42. package/dist/build/workspace-build.js +55 -11
  43. package/dist/build-contract.d.ts +3 -0
  44. package/dist/build-contract.js +3 -0
  45. package/dist/build-egress.d.ts +62 -0
  46. package/dist/build-egress.js +148 -0
  47. package/dist/build.d.ts +1 -0
  48. package/dist/build.js +1 -0
  49. package/dist/cloudflare.js +4 -4
  50. package/dist/frame-binding-wire-script.js +1 -1
  51. package/dist/frame-binding-wire.d.ts +1 -1
  52. package/dist/frame-binding-wire.js +1 -1
  53. package/dist/git-journal.js +4 -4
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +1 -0
  56. package/dist/installation-consent.d.ts +3 -1
  57. package/dist/installation-consent.js +2 -0
  58. package/dist/mcp-owner.js +20 -8
  59. package/dist/pack.d.ts +6 -3
  60. package/dist/pack.js +28 -11
  61. package/dist/page/gill-observation.d.ts +4 -0
  62. package/dist/page/gill-observation.js +31 -0
  63. package/dist/page/mount.d.ts +4 -8
  64. package/dist/page/window-launch.d.ts +18 -0
  65. package/dist/page/window-launch.js +11 -0
  66. package/dist/page-script.js +4 -4
  67. package/dist/release.d.ts +11 -0
  68. package/dist/release.js +4 -1
  69. package/dist/shell/app-directory.d.ts +50 -45
  70. package/dist/shell/app-directory.js +19 -18
  71. package/dist/shell/shell-module.d.ts +26 -2
  72. package/dist/shell/shell-module.js +51 -2
  73. package/dist/shell/window-manager.d.ts +5 -1
  74. package/dist/shell/window-manager.js +21 -2
  75. package/dist/shell/workbench-directory.d.ts +332 -0
  76. package/dist/shell/workbench-directory.js +35 -0
  77. package/dist/shell/workbench-host-types.d.ts +1 -1
  78. package/dist/shell/workbench-host.js +5 -0
  79. package/dist/shell/workbench-model.d.ts +3 -1
  80. package/dist/source/index.d.ts +6 -7
  81. package/dist/source/index.js +6 -7
  82. package/dist/source/template-push.d.ts +33 -0
  83. package/dist/source/template-push.js +223 -0
  84. package/dist/source/template-repository.d.ts +2 -0
  85. package/dist/source/template-repository.js +13 -0
  86. package/dist/source/{template-write.d.ts → template-seed.d.ts} +19 -20
  87. package/dist/source/template-seed.js +80 -0
  88. package/dist/standalone/agent-directory.d.ts +4 -0
  89. package/dist/standalone/agent-directory.js +4 -0
  90. package/dist/standalone/agents.d.ts +227 -0
  91. package/dist/standalone/agents.js +834 -0
  92. package/dist/standalone/app-builds-binding.d.ts +36 -0
  93. package/dist/standalone/app-builds-binding.js +119 -0
  94. package/dist/standalone/app-set.d.ts +91 -0
  95. package/dist/standalone/app-set.js +395 -0
  96. package/dist/standalone/app-source.d.ts +41 -0
  97. package/dist/standalone/app-source.js +59 -0
  98. package/dist/standalone/builds.d.ts +18 -0
  99. package/dist/standalone/builds.js +101 -0
  100. package/dist/standalone/computer-egress.d.ts +37 -0
  101. package/dist/standalone/computer-egress.js +111 -0
  102. package/dist/standalone/computer.d.ts +122 -0
  103. package/dist/standalone/computer.js +714 -0
  104. package/dist/standalone/install-apps-cli.d.ts +2 -0
  105. package/dist/standalone/install-apps-cli.js +126 -0
  106. package/dist/standalone/instance.d.ts +35 -0
  107. package/dist/standalone/instance.js +74 -0
  108. package/dist/standalone/media.d.ts +76 -0
  109. package/dist/standalone/media.js +227 -0
  110. package/dist/standalone/preview.d.ts +51 -0
  111. package/dist/standalone/preview.js +167 -0
  112. package/dist/standalone/registry.d.ts +102 -0
  113. package/dist/standalone/registry.js +193 -0
  114. package/dist/standalone/tenancy.d.ts +42 -0
  115. package/dist/standalone/tenancy.js +241 -0
  116. package/dist/standalone/worker.d.ts +55 -0
  117. package/dist/standalone/worker.js +147 -0
  118. package/dist/standalone/workflow-authority-readers.d.ts +16 -0
  119. package/dist/standalone/workflow-authority-readers.js +35 -0
  120. package/dist/standalone/workflow-binding.d.ts +216 -0
  121. package/dist/standalone/workflow-binding.js +217 -0
  122. package/dist/standalone/workflow-events.d.ts +46 -0
  123. package/dist/standalone/workflow-events.js +39 -0
  124. package/dist/standalone/workflow-git-capture.d.ts +7 -0
  125. package/dist/standalone/workflow-git-capture.js +62 -0
  126. package/dist/standalone/workflow-host.d.ts +955 -0
  127. package/dist/standalone/workflow-host.js +778 -0
  128. package/dist/standalone/workflow-node-capture.d.ts +13 -0
  129. package/dist/standalone/workflow-node-capture.js +72 -0
  130. package/dist/standalone/workflow-root-authority.d.ts +27 -0
  131. package/dist/standalone/workflow-root-authority.js +87 -0
  132. package/dist/standalone/workflow-schedules.d.ts +52 -0
  133. package/dist/standalone/workflow-schedules.js +40 -0
  134. package/dist/standalone/workflow-trigger-host.d.ts +1716 -0
  135. package/dist/standalone/workflow-trigger-host.js +52 -0
  136. package/dist/standalone/workflows.d.ts +713 -0
  137. package/dist/standalone/workflows.js +554 -0
  138. package/dist/tenancy/auth0.d.ts +64 -0
  139. package/dist/tenancy/auth0.js +198 -0
  140. package/dist/tenancy/cloudflare/rate-limit.d.ts +8 -0
  141. package/dist/tenancy/cloudflare/rate-limit.js +19 -0
  142. package/dist/tenancy/cloudflare/registry.d.ts +50 -0
  143. package/dist/tenancy/cloudflare/registry.js +301 -0
  144. package/dist/tenancy/cloudflare.d.ts +2 -0
  145. package/dist/tenancy/cloudflare.js +2 -0
  146. package/dist/tenancy/cold-directory.d.ts +13 -0
  147. package/dist/tenancy/cold-directory.js +43 -0
  148. package/dist/tenancy/contracts.d.ts +195 -0
  149. package/dist/tenancy/contracts.js +1 -0
  150. package/dist/tenancy/index.d.ts +19 -0
  151. package/dist/tenancy/index.js +156 -0
  152. package/dist/tenancy/owner-key.d.ts +26 -0
  153. package/dist/tenancy/owner-key.js +63 -0
  154. package/dist/tenancy/oyster.d.ts +4 -0
  155. package/dist/tenancy/oyster.js +25 -0
  156. package/dist/tenancy/registry-record.d.ts +7 -0
  157. package/dist/tenancy/registry-record.js +44 -0
  158. package/dist/tenancy/registry.d.ts +27 -0
  159. package/dist/tenancy/registry.js +138 -0
  160. package/dist/tenancy/resolve.d.ts +7 -0
  161. package/dist/tenancy/resolve.js +64 -0
  162. package/dist/workers-git.js +1 -4
  163. package/dist/workers.d.ts +2 -2
  164. package/dist/workers.js +3 -1
  165. package/docs/api/build-contract.md +829 -32
  166. package/docs/api/build.md +253 -17
  167. package/docs/api/modules.md +40 -32
  168. package/docs/api/pack.md +6 -3
  169. package/docs/api/shell/app-directory.md +267 -0
  170. package/docs/api/shell/shell-module.md +64 -3
  171. package/docs/api/shell/workbench-directory.md +119 -0
  172. package/docs/api/shell/workbench.md +19 -0
  173. package/docs/api/shell.md +127 -0
  174. package/docs/api/tenancy/auth0.md +110 -0
  175. package/docs/api/tenancy/cloudflare.md +221 -0
  176. package/docs/api/tenancy/cold-directory.md +46 -0
  177. package/docs/api/tenancy/owner-key.md +63 -0
  178. package/docs/api/tenancy/registry.md +77 -0
  179. package/docs/api/tenancy/resolve.md +69 -0
  180. package/docs/api/tenancy.md +430 -0
  181. package/docs/api/workers-git.md +140 -21
  182. package/docs/api/workers.md +15 -2
  183. package/docs/site/agent-quickstart.mdx +52 -55
  184. package/examples/standalone/worker.ts +7 -14
  185. package/examples/standalone/wrangler.jsonc +67 -6
  186. package/package.json +78 -25
  187. package/dist/build/r2-artifact-writer.d.ts +0 -31
  188. package/dist/build/r2-artifact-writer.js +0 -179
  189. package/dist/source/template-write.js +0 -344
  190. package/docs/media/architecture.mmd +0 -32
  191. package/docs/media/architecture.png +0 -0
  192. package/docs/media/bonsai-network.png +0 -0
  193. package/docs/media/bonsai-repository.png +0 -0
  194. package/examples/git/worker.ts +0 -39
  195. package/examples/git/wrangler.jsonc +0 -32
package/docs/api/build.md CHANGED
@@ -59,6 +59,46 @@ readonly stage: AppPublisherStage;
59
59
 
60
60
  ## Type Aliases
61
61
 
62
+ ### ImmutableArtifactObjects
63
+
64
+ ```ts
65
+ type ImmutableArtifactObjects = Readonly<{
66
+ create: Promise<"created" | "exists">;
67
+ read: Promise<Uint8Array<ArrayBufferLike> | null>;
68
+ }>;
69
+ ```
70
+
71
+ Write-once object storage for one artifact root.
72
+
73
+ ---
74
+
75
+ ### StagedArtifactObject
76
+
77
+ ```ts
78
+ type StagedArtifactObject = Readonly<{
79
+ artifactRef: ArtifactRef;
80
+ bytes: Uint8Array;
81
+ digest: Sha256Digest;
82
+ }>;
83
+ ```
84
+
85
+ One object ready to store under its reference.
86
+
87
+ ---
88
+
89
+ ### StagedBuildOutput
90
+
91
+ ```ts
92
+ type StagedBuildOutput = Readonly<{
93
+ manifest: CandidateOutputManifest;
94
+ objects: readonly StagedArtifactObject[];
95
+ }>;
96
+ ```
97
+
98
+ A build's output manifest and each distinct object it names.
99
+
100
+ ---
101
+
62
102
  ### WorkspaceBuildStep
63
103
 
64
104
  ```ts
@@ -471,6 +511,20 @@ A first-party editable source tree ready to seed into an Artifacts template.
471
511
 
472
512
  ---
473
513
 
514
+ ### LocalBuildExecutorOptions
515
+
516
+ ```ts
517
+ type LocalBuildExecutorOptions = Readonly<{
518
+ packageStoreDirectory?: string;
519
+ packageScripts?: "run";
520
+ onPhase?: (phase, milliseconds) => void;
521
+ }>;
522
+ ```
523
+
524
+ How one build executor is composed; never part of a recipe or request.
525
+
526
+ ---
527
+
474
528
  ### LocalAppPublisherOptions
475
529
 
476
530
  ```ts
@@ -513,6 +567,16 @@ One App page build derived from its manifests and package graph.
513
567
 
514
568
  ## Variables
515
569
 
570
+ ### dependencyBuildProgram
571
+
572
+ ```ts
573
+ const dependencyBuildProgram: string = bundledDependencyBuildProgram;
574
+ ```
575
+
576
+ Captured-dependency build program with guarded filesystem access.
577
+
578
+ ---
579
+
516
580
  ### workspaceBuildStepSchema
517
581
 
518
582
  ```ts
@@ -527,6 +591,11 @@ const workspaceBuildStepSchema: Union<
527
591
  input: String;
528
592
  output: String;
529
593
  }>,
594
+ Struct<{
595
+ kind: Literal<"script">;
596
+ directory: String;
597
+ script: String;
598
+ }>,
530
599
  ]
531
600
  >;
532
601
  ```
@@ -534,7 +603,9 @@ const workspaceBuildStepSchema: Union<
534
603
  One captured dependency build step. Paths are relative to the captured snapshot
535
604
  root. A TypeScript step compiles one config; a Tailwind step compiles one
536
605
  stylesheet input into its output (the same path for an App's own stylesheet,
537
- which compiles in place).
606
+ which compiles in place). A script step runs the one `package.json` script a
607
+ workspace dependency names as its build (`fungi.build.script`), with pnpm, in
608
+ that package's directory; only an admitted Computer build executes it.
538
609
 
539
610
  ---
540
611
 
@@ -684,16 +755,6 @@ ceilings cannot be raised by a publication request.
684
755
 
685
756
  ---
686
757
 
687
- ### dependencyBuildProgram
688
-
689
- ```ts
690
- const dependencyBuildProgram: string;
691
- ```
692
-
693
- Captured-dependency build program with guarded filesystem access.
694
-
695
- ---
696
-
697
758
  ### workspaceBuildPolicySchema
698
759
 
699
760
  ```ts
@@ -703,6 +764,7 @@ const workspaceBuildPolicySchema: Struct<{
703
764
  packageStylesheets: optional<$Array<String>>;
704
765
  stylesheets: optional<$Array<String>>;
705
766
  typescript: optional<$Array<String>>;
767
+ script: optional<NonEmptyString>;
706
768
  stylesheet: optional<
707
769
  Struct<{
708
770
  input: String;
@@ -717,8 +779,11 @@ declares how its page builds: `react`, `shellEntry`, the workspace packages
717
779
  whose declared stylesheets compile first (`packageStylesheets`) and its own
718
780
  `stylesheets`, compiled in place, in order. A workspace package declares its
719
781
  build products: extra TypeScript configs compiled after its
720
- `tsconfig.build.json`, and its stylesheet input and output. Every path is
721
- relative to the manifest that declares it.
782
+ `tsconfig.build.json`, and its stylesheet input and output; or, instead of
783
+ TypeScript configs, the one `package.json` script that builds it (`script`),
784
+ which only an admitted Computer build runs. Every path is relative to the
785
+ manifest that declares it. Unknown build fields are refused, so a builder never
786
+ silently ignores a policy it does not know.
722
787
 
723
788
  ---
724
789
 
@@ -732,6 +797,60 @@ The pnpm arguments that list a source tree's workspace projects.
732
797
 
733
798
  ## Functions
734
799
 
800
+ ### stageBuildOutput()
801
+
802
+ ```ts
803
+ function stageBuildOutput(output): StagedBuildOutput;
804
+ ```
805
+
806
+ Stage a build's bytes: the output manifest that names each object by its digest
807
+ and size, and each distinct object once.
808
+
809
+ #### Parameters
810
+
811
+ | Parameter | Type |
812
+ | --------- | ----------------------------- |
813
+ | `output` | [`BuildOutput`](#buildoutput) |
814
+
815
+ #### Returns
816
+
817
+ [`StagedBuildOutput`](#stagedbuildoutput)
818
+
819
+ ---
820
+
821
+ ### writeArtifactRoot()
822
+
823
+ ```ts
824
+ function writeArtifactRoot(
825
+ manifest,
826
+ objects,
827
+ options,
828
+ ): Promise<
829
+ Readonly<{
830
+ artifactRef: ArtifactRef;
831
+ artifactDigest: Sha256Digest;
832
+ }>
833
+ >;
834
+ ```
835
+
836
+ Write the asset manifest and App root an output manifest names. The objects it
837
+ names are already stored, and checked, by the caller.
838
+
839
+ #### Parameters
840
+
841
+ | Parameter | Type |
842
+ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
843
+ | `manifest` | \| \{ `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`; \}; \} |
844
+ | `objects` | [`ImmutableArtifactObjects`](#immutableartifactobjects) |
845
+ | `options` | `Readonly`\<\{ `rootArtifactRef`: `ArtifactRef`; `assetPolicy`: `AssetBuildPolicy` \| `undefined`; \}\> |
846
+
847
+ #### Returns
848
+
849
+ `Promise`\<`Readonly`\<\{ `artifactRef`: `ArtifactRef`; `artifactDigest`:
850
+ `Sha256Digest`; \}\>\>
851
+
852
+ ---
853
+
735
854
  ### readBundledHtml()
736
855
 
737
856
  ```ts
@@ -934,6 +1053,43 @@ readonly `Readonly`\<\{ `id`: `string`; `source`: `string`; `title`: `string`;
934
1053
 
935
1054
  ---
936
1055
 
1056
+ ### pinsCurrentToolchain()
1057
+
1058
+ ```ts
1059
+ function pinsCurrentToolchain(recipe): boolean;
1060
+ ```
1061
+
1062
+ Whether a pinned recipe pins this Publisher's current toolchain (its build
1063
+ policy included). An executor refuses any other: a recipe pinned under another
1064
+ policy describes a build this code does not perform.
1065
+
1066
+ #### Parameters
1067
+
1068
+ | Parameter | Type |
1069
+ | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1070
+ | `recipe` | \{ `kind?`: `"bundled-html"` \| `"source-html"`; `bundle`: `true`; `entry`: `string`; `format`: `"html"` \| `"assets"` \| `"esm"`; `assets?`: \{ `maxManifestBytes`: `number`; `maxObjects`: `number`; `maxObjectBytes`: `number`; `maxTotalBytes`: `number`; \}; `assetBase?`: `string`; `toolchain`: \{ \[`key`: `string`\]: `string`; \}; `maxOutputBytes`: `number`; `platform`: `"browser"` \| `"neutral"`; `backend`: \| \{ `entry?`: `string`; `runtime`: \{ `kind`: `"durable-facet"`; `stateSchema`: `number`; \}; `compatibilityDate`: `string`; `exportName`: `string`; \} \| `null`; `target`: readonly \[`"es2022"`\]; \} |
1071
+ | `recipe.kind?` | `"bundled-html"` \| `"source-html"` |
1072
+ | `recipe.bundle` | `true` |
1073
+ | `recipe.entry` | `string` |
1074
+ | `recipe.format` | `"html"` \| `"assets"` \| `"esm"` |
1075
+ | `recipe.assets?` | \{ `maxManifestBytes`: `number`; `maxObjects`: `number`; `maxObjectBytes`: `number`; `maxTotalBytes`: `number`; \} |
1076
+ | `recipe.assets.maxManifestBytes` | `number` |
1077
+ | `recipe.assets.maxObjects` | `number` |
1078
+ | `recipe.assets.maxObjectBytes` | `number` |
1079
+ | `recipe.assets.maxTotalBytes` | `number` |
1080
+ | `recipe.assetBase?` | `string` |
1081
+ | `recipe.toolchain` | \{ \[`key`: `string`\]: `string`; \} |
1082
+ | `recipe.maxOutputBytes` | `number` |
1083
+ | `recipe.platform` | `"browser"` \| `"neutral"` |
1084
+ | `recipe.backend` | \| \{ `entry?`: `string`; `runtime`: \{ `kind`: `"durable-facet"`; `stateSchema`: `number`; \}; `compatibilityDate`: `string`; `exportName`: `string`; \} \| `null` |
1085
+ | `recipe.target` | readonly \[`"es2022"`\] |
1086
+
1087
+ #### Returns
1088
+
1089
+ `boolean`
1090
+
1091
+ ---
1092
+
937
1093
  ### digestPinnedRecipe()
938
1094
 
939
1095
  ```ts
@@ -1005,6 +1161,80 @@ Decode and normalize Publisher-owned recipe policy for durable seed proof.
1005
1161
 
1006
1162
  ---
1007
1163
 
1164
+ ### pinnedRecipeObjectBound()
1165
+
1166
+ ```ts
1167
+ function pinnedRecipeObjectBound(recipe): number;
1168
+ ```
1169
+
1170
+ The largest single object a build under this recipe may upload: no larger than
1171
+ the largest output bound the recipe could assign it under.
1172
+
1173
+ #### Parameters
1174
+
1175
+ | Parameter | Type |
1176
+ | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1177
+ | `recipe` | \{ `kind?`: `"bundled-html"` \| `"source-html"`; `bundle`: `true`; `entry`: `string`; `format`: `"html"` \| `"assets"` \| `"esm"`; `assets?`: \{ `maxManifestBytes`: `number`; `maxObjects`: `number`; `maxObjectBytes`: `number`; `maxTotalBytes`: `number`; \}; `assetBase?`: `string`; `toolchain`: \{ \[`key`: `string`\]: `string`; \}; `maxOutputBytes`: `number`; `platform`: `"browser"` \| `"neutral"`; `backend`: \| \{ `entry?`: `string`; `runtime`: \{ `kind`: `"durable-facet"`; `stateSchema`: `number`; \}; `compatibilityDate`: `string`; `exportName`: `string`; \} \| `null`; `target`: readonly \[`"es2022"`\]; \} |
1178
+ | `recipe.kind?` | `"bundled-html"` \| `"source-html"` |
1179
+ | `recipe.bundle` | `true` |
1180
+ | `recipe.entry` | `string` |
1181
+ | `recipe.format` | `"html"` \| `"assets"` \| `"esm"` |
1182
+ | `recipe.assets?` | \{ `maxManifestBytes`: `number`; `maxObjects`: `number`; `maxObjectBytes`: `number`; `maxTotalBytes`: `number`; \} |
1183
+ | `recipe.assets.maxManifestBytes` | `number` |
1184
+ | `recipe.assets.maxObjects` | `number` |
1185
+ | `recipe.assets.maxObjectBytes` | `number` |
1186
+ | `recipe.assets.maxTotalBytes` | `number` |
1187
+ | `recipe.assetBase?` | `string` |
1188
+ | `recipe.toolchain` | \{ \[`key`: `string`\]: `string`; \} |
1189
+ | `recipe.maxOutputBytes` | `number` |
1190
+ | `recipe.platform` | `"browser"` \| `"neutral"` |
1191
+ | `recipe.backend` | \| \{ `entry?`: `string`; `runtime`: \{ `kind`: `"durable-facet"`; `stateSchema`: `number`; \}; `compatibilityDate`: `string`; `exportName`: `string`; \} \| `null` |
1192
+ | `recipe.target` | readonly \[`"es2022"`\] |
1193
+
1194
+ #### Returns
1195
+
1196
+ `number`
1197
+
1198
+ ---
1199
+
1200
+ ### fitsPinnedRecipe()
1201
+
1202
+ ```ts
1203
+ function fitsPinnedRecipe(output, recipe): boolean;
1204
+ ```
1205
+
1206
+ Whether output built elsewhere (a Computer's candidate manifest) is one this
1207
+ recipe could assign: the same surfaces and `maxOutputBytes` bound the preparer
1208
+ applies here. Asset sizes stay the artifact writer's policy.
1209
+
1210
+ #### Parameters
1211
+
1212
+ | Parameter | Type |
1213
+ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1214
+ | `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`; \}; \} |
1215
+ | `recipe` | \{ `kind?`: `"bundled-html"` \| `"source-html"`; `bundle`: `true`; `entry`: `string`; `format`: `"html"` \| `"assets"` \| `"esm"`; `assets?`: \{ `maxManifestBytes`: `number`; `maxObjects`: `number`; `maxObjectBytes`: `number`; `maxTotalBytes`: `number`; \}; `assetBase?`: `string`; `toolchain`: \{ \[`key`: `string`\]: `string`; \}; `maxOutputBytes`: `number`; `platform`: `"browser"` \| `"neutral"`; `backend`: \| \{ `entry?`: `string`; `runtime`: \{ `kind`: `"durable-facet"`; `stateSchema`: `number`; \}; `compatibilityDate`: `string`; `exportName`: `string`; \} \| `null`; `target`: readonly \[`"es2022"`\]; \} |
1216
+ | `recipe.kind?` | `"bundled-html"` \| `"source-html"` |
1217
+ | `recipe.bundle` | `true` |
1218
+ | `recipe.entry` | `string` |
1219
+ | `recipe.format` | `"html"` \| `"assets"` \| `"esm"` |
1220
+ | `recipe.assets?` | \{ `maxManifestBytes`: `number`; `maxObjects`: `number`; `maxObjectBytes`: `number`; `maxTotalBytes`: `number`; \} |
1221
+ | `recipe.assets.maxManifestBytes` | `number` |
1222
+ | `recipe.assets.maxObjects` | `number` |
1223
+ | `recipe.assets.maxObjectBytes` | `number` |
1224
+ | `recipe.assets.maxTotalBytes` | `number` |
1225
+ | `recipe.assetBase?` | `string` |
1226
+ | `recipe.toolchain` | \{ \[`key`: `string`\]: `string`; \} |
1227
+ | `recipe.maxOutputBytes` | `number` |
1228
+ | `recipe.platform` | `"browser"` \| `"neutral"` |
1229
+ | `recipe.backend` | \| \{ `entry?`: `string`; `runtime`: \{ `kind`: `"durable-facet"`; `stateSchema`: `number`; \}; `compatibilityDate`: `string`; `exportName`: `string`; \} \| `null` |
1230
+ | `recipe.target` | readonly \[`"es2022"`\] |
1231
+
1232
+ #### Returns
1233
+
1234
+ `boolean`
1235
+
1236
+ ---
1237
+
1008
1238
  ### createAppCandidatePreparer()
1009
1239
 
1010
1240
  ```ts
@@ -1352,9 +1582,9 @@ Local proving adapter; it builds only the captured extracted snapshot.
1352
1582
 
1353
1583
  #### Parameters
1354
1584
 
1355
- | Parameter | Type |
1356
- | --------- | ------------------------------------------------------- |
1357
- | `options` | `Readonly`\<\{ `packageStoreDirectory?`: `string`; \}\> |
1585
+ | Parameter | Type |
1586
+ | --------- | --------------------------------------------------------- |
1587
+ | `options` | [`LocalBuildExecutorOptions`](#localbuildexecutoroptions) |
1358
1588
 
1359
1589
  #### Returns
1360
1590
 
@@ -1448,6 +1678,11 @@ function resolveWorkspaceBuild(options): Promise<
1448
1678
  input: string;
1449
1679
  output: string;
1450
1680
  }
1681
+ | {
1682
+ kind: "script";
1683
+ directory: string;
1684
+ script: string;
1685
+ }
1451
1686
  )[];
1452
1687
  }>
1453
1688
  >;
@@ -1473,4 +1708,5 @@ declares its own extra build products.
1473
1708
  `react`: `boolean`; `shellEntry?`: `string`; `dependencies`: readonly
1474
1709
  `string`[]; `steps`: readonly ( \| \{ `kind`: `"typescript"`; `config`:
1475
1710
  `string`; \} \| \{ `kind`: `"tailwind"`; `input`: `string`; `output`: `string`;
1476
- \})[]; \}\>\>
1711
+ \} \| \{ `kind`: `"script"`; `directory`: `string`; `script`: `string`; \})[];
1712
+ \}\>\>