@sealant/sdk-next 0.40.0-next.790 → 0.40.0-next.792

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js CHANGED
@@ -153,10 +153,12 @@ export class Sealant {
153
153
  ownerUserId: payload.ownerUserId,
154
154
  registryId: payload.registryId,
155
155
  spec: payload.spec,
156
+ ...(payload.imageScopeId === undefined ? {} : { imageScopeId: payload.imageScopeId }),
156
157
  }));
157
158
  return {
158
159
  imageKey: imageSpecKey(payload.spec),
159
160
  planHash: answered.planHash,
161
+ ...(answered.publication === undefined ? {} : { publication: answered.publication }),
160
162
  ...(answered.publishedImage === undefined
161
163
  ? {}
162
164
  : { image: toWorkspaceImage(answered.publishedImage) }),
@@ -856,6 +856,14 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
856
856
  }>>;
857
857
  }>>;
858
858
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
859
+ readonly purgeResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"purgeResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/purge", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
860
+ readonly resourceDomainId: import("effect/Schema").String;
861
+ readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
862
+ }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
863
+ readonly expectedInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
864
+ }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
865
+ readonly kind: import("effect/Schema").Literals<readonly ["purged", "already-purged"]>;
866
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstancePurgeRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
859
867
  readonly stopResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"stopResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/stop", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
860
868
  readonly resourceDomainId: import("effect/Schema").String;
861
869
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
@@ -1621,6 +1629,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1621
1629
  readonly sshUser: import("effect/Schema").Null;
1622
1630
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
1623
1631
  readonly createWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"createWorkspace", "POST", "/v1/workspaces/", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
1632
+ readonly imageScopeId: import("effect/Schema").optional<import("effect/Schema").String>;
1624
1633
  readonly ownerUserId: import("effect/Schema").String;
1625
1634
  readonly registryId: import("effect/Schema").String;
1626
1635
  readonly repository: import("effect/Schema").String;
@@ -1662,7 +1671,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1662
1671
  readonly tag: import("effect/Schema").String;
1663
1672
  readonly runId: import("effect/Schema").optional<import("effect/Schema").String>;
1664
1673
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
1665
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
1674
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
1666
1675
  readonly resourceId: import("effect/Schema").String;
1667
1676
  readonly reference: import("effect/Schema").String;
1668
1677
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -1673,7 +1682,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1673
1682
  }>>;
1674
1683
  readonly replayed: import("effect/Schema").optional<import("effect/Schema").Boolean>;
1675
1684
  readonly launchId: import("effect/Schema").optional<import("effect/Schema").String>;
1676
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceSshOwnerRefusedError | typeof import("@sealant/api-contracts").WorkspaceForbiddenError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
1685
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceSshOwnerRefusedError | typeof import("@sealant/api-contracts").WorkspaceForbiddenError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
1677
1686
  readonly execWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"execWorkspace", "POST", "/v1/workspaces/:workspaceId/exec", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
1678
1687
  readonly workspaceId: import("effect/Schema").String;
1679
1688
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
@@ -1826,7 +1835,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1826
1835
  readonly repository: import("effect/Schema").optional<import("effect/Schema").String>;
1827
1836
  readonly tag: import("effect/Schema").optional<import("effect/Schema").String>;
1828
1837
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
1829
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
1838
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
1830
1839
  readonly resourceId: import("effect/Schema").String;
1831
1840
  readonly reference: import("effect/Schema").String;
1832
1841
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -1847,6 +1856,56 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1847
1856
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
1848
1857
  }>>;
1849
1858
  }>>;
1859
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
1860
+ readonly kind: import("effect/Schema").Literal<"oci">;
1861
+ readonly publicationId: import("effect/Schema").String;
1862
+ readonly image: import("effect/Schema").Struct<{
1863
+ readonly repository: import("effect/Schema").String;
1864
+ readonly tag: import("effect/Schema").String;
1865
+ readonly reference: import("effect/Schema").String;
1866
+ readonly digestReference: import("effect/Schema").String;
1867
+ readonly digest: import("effect/Schema").String;
1868
+ }>;
1869
+ }>, import("effect/Schema").Struct<{
1870
+ readonly kind: import("effect/Schema").Literal<"microvm">;
1871
+ readonly publicationId: import("effect/Schema").String;
1872
+ readonly image: import("effect/Schema").Struct<{
1873
+ readonly imageArn: import("effect/Schema").String;
1874
+ readonly imageVersion: import("effect/Schema").String;
1875
+ readonly planHash: import("effect/Schema").String;
1876
+ }>;
1877
+ }>, import("effect/Schema").Struct<{
1878
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
1879
+ readonly publicationId: import("effect/Schema").String;
1880
+ readonly snapshot: import("effect/Schema").Struct<{
1881
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
1882
+ readonly owner: import("effect/Schema").String;
1883
+ readonly build: import("effect/Schema").String;
1884
+ readonly recipeHash: import("effect/Schema").String;
1885
+ readonly receiptHash: import("effect/Schema").String;
1886
+ readonly identity: import("effect/Schema").Struct<{
1887
+ readonly name: import("effect/Schema").String;
1888
+ readonly sourceSandboxId: import("effect/Schema").String;
1889
+ readonly createdAt: import("effect/Schema").String;
1890
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
1891
+ }>;
1892
+ }>;
1893
+ readonly evidence: import("effect/Schema").Struct<{
1894
+ readonly recipeHash: import("effect/Schema").String;
1895
+ readonly receiptHash: import("effect/Schema").String;
1896
+ readonly assetsHash: import("effect/Schema").String;
1897
+ readonly runtime: import("effect/Schema").Struct<{
1898
+ readonly source: import("effect/Schema").String;
1899
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
1900
+ readonly manifest: import("effect/Schema").String;
1901
+ readonly sealantd: import("effect/Schema").String;
1902
+ readonly socat: import("effect/Schema").String;
1903
+ readonly relay: import("effect/Schema").String;
1904
+ }>;
1905
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
1906
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
1907
+ }>;
1908
+ }>]>>;
1850
1909
  readonly processUser: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>>;
1851
1910
  readonly error: import("effect/Schema").optional<import("effect/Schema").Struct<{
1852
1911
  readonly message: import("effect/Schema").String;
@@ -1988,7 +2047,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1988
2047
  readonly workspaceId: import("effect/Schema").String;
1989
2048
  readonly attemptId: import("effect/Schema").String;
1990
2049
  readonly runtime: import("effect/Schema").Struct<{
1991
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
2050
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
1992
2051
  readonly resourceId: import("effect/Schema").String;
1993
2052
  readonly reference: import("effect/Schema").String;
1994
2053
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped"]>;
@@ -1998,6 +2057,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1998
2057
  readonly sshKeyFingerprint: import("effect/Schema").optional<import("effect/Schema").String>;
1999
2058
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceUnauthorizedError | typeof import("@sealant/api-contracts").WorkspaceSshKeyNoLongerRegisteredError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
2000
2059
  readonly inspectWorkspaceImage: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"inspectWorkspaceImage", "POST", "/v1/workspaces/image", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
2060
+ readonly imageScopeId: import("effect/Schema").optional<import("effect/Schema").String>;
2001
2061
  readonly ownerUserId: import("effect/Schema").String;
2002
2062
  readonly registryId: import("effect/Schema").String;
2003
2063
  readonly spec: import("effect/Schema").Unknown;
@@ -2015,6 +2075,56 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
2015
2075
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2016
2076
  }>>;
2017
2077
  }>>;
2078
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
2079
+ readonly kind: import("effect/Schema").Literal<"oci">;
2080
+ readonly publicationId: import("effect/Schema").String;
2081
+ readonly image: import("effect/Schema").Struct<{
2082
+ readonly repository: import("effect/Schema").String;
2083
+ readonly tag: import("effect/Schema").String;
2084
+ readonly reference: import("effect/Schema").String;
2085
+ readonly digestReference: import("effect/Schema").String;
2086
+ readonly digest: import("effect/Schema").String;
2087
+ }>;
2088
+ }>, import("effect/Schema").Struct<{
2089
+ readonly kind: import("effect/Schema").Literal<"microvm">;
2090
+ readonly publicationId: import("effect/Schema").String;
2091
+ readonly image: import("effect/Schema").Struct<{
2092
+ readonly imageArn: import("effect/Schema").String;
2093
+ readonly imageVersion: import("effect/Schema").String;
2094
+ readonly planHash: import("effect/Schema").String;
2095
+ }>;
2096
+ }>, import("effect/Schema").Struct<{
2097
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
2098
+ readonly publicationId: import("effect/Schema").String;
2099
+ readonly snapshot: import("effect/Schema").Struct<{
2100
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
2101
+ readonly owner: import("effect/Schema").String;
2102
+ readonly build: import("effect/Schema").String;
2103
+ readonly recipeHash: import("effect/Schema").String;
2104
+ readonly receiptHash: import("effect/Schema").String;
2105
+ readonly identity: import("effect/Schema").Struct<{
2106
+ readonly name: import("effect/Schema").String;
2107
+ readonly sourceSandboxId: import("effect/Schema").String;
2108
+ readonly createdAt: import("effect/Schema").String;
2109
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
2110
+ }>;
2111
+ }>;
2112
+ readonly evidence: import("effect/Schema").Struct<{
2113
+ readonly recipeHash: import("effect/Schema").String;
2114
+ readonly receiptHash: import("effect/Schema").String;
2115
+ readonly assetsHash: import("effect/Schema").String;
2116
+ readonly runtime: import("effect/Schema").Struct<{
2117
+ readonly source: import("effect/Schema").String;
2118
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
2119
+ readonly manifest: import("effect/Schema").String;
2120
+ readonly sealantd: import("effect/Schema").String;
2121
+ readonly socat: import("effect/Schema").String;
2122
+ readonly relay: import("effect/Schema").String;
2123
+ }>;
2124
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2125
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
2126
+ }>;
2127
+ }>]>>;
2018
2128
  readonly personLayout: import("effect/Schema").Struct<{
2019
2129
  readonly status: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2020
2130
  readonly missing: import("effect/Schema").$Array<import("effect/Schema").String>;
@@ -2022,7 +2132,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
2022
2132
  readonly runtime: import("effect/Schema").String;
2023
2133
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2024
2134
  }>;
2025
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
2135
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
2026
2136
  readonly listWorkspaceAttempts: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"listWorkspaceAttempts", "GET", "/v1/workspaces/:workspaceId/attempts", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
2027
2137
  readonly workspaceId: import("effect/Schema").String;
2028
2138
  }>>, import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
@@ -2036,7 +2146,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
2036
2146
  readonly triggerType: import("effect/Schema").Literals<readonly ["manual", "schedule", "api", "retry"]>;
2037
2147
  readonly triggerRef: import("effect/Schema").optional<import("effect/Schema").String>;
2038
2148
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
2039
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
2149
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
2040
2150
  readonly resourceId: import("effect/Schema").String;
2041
2151
  readonly reference: import("effect/Schema").String;
2042
2152
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -2057,6 +2167,56 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
2057
2167
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2058
2168
  }>>;
2059
2169
  }>>;
2170
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
2171
+ readonly kind: import("effect/Schema").Literal<"oci">;
2172
+ readonly publicationId: import("effect/Schema").String;
2173
+ readonly image: import("effect/Schema").Struct<{
2174
+ readonly repository: import("effect/Schema").String;
2175
+ readonly tag: import("effect/Schema").String;
2176
+ readonly reference: import("effect/Schema").String;
2177
+ readonly digestReference: import("effect/Schema").String;
2178
+ readonly digest: import("effect/Schema").String;
2179
+ }>;
2180
+ }>, import("effect/Schema").Struct<{
2181
+ readonly kind: import("effect/Schema").Literal<"microvm">;
2182
+ readonly publicationId: import("effect/Schema").String;
2183
+ readonly image: import("effect/Schema").Struct<{
2184
+ readonly imageArn: import("effect/Schema").String;
2185
+ readonly imageVersion: import("effect/Schema").String;
2186
+ readonly planHash: import("effect/Schema").String;
2187
+ }>;
2188
+ }>, import("effect/Schema").Struct<{
2189
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
2190
+ readonly publicationId: import("effect/Schema").String;
2191
+ readonly snapshot: import("effect/Schema").Struct<{
2192
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
2193
+ readonly owner: import("effect/Schema").String;
2194
+ readonly build: import("effect/Schema").String;
2195
+ readonly recipeHash: import("effect/Schema").String;
2196
+ readonly receiptHash: import("effect/Schema").String;
2197
+ readonly identity: import("effect/Schema").Struct<{
2198
+ readonly name: import("effect/Schema").String;
2199
+ readonly sourceSandboxId: import("effect/Schema").String;
2200
+ readonly createdAt: import("effect/Schema").String;
2201
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
2202
+ }>;
2203
+ }>;
2204
+ readonly evidence: import("effect/Schema").Struct<{
2205
+ readonly recipeHash: import("effect/Schema").String;
2206
+ readonly receiptHash: import("effect/Schema").String;
2207
+ readonly assetsHash: import("effect/Schema").String;
2208
+ readonly runtime: import("effect/Schema").Struct<{
2209
+ readonly source: import("effect/Schema").String;
2210
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
2211
+ readonly manifest: import("effect/Schema").String;
2212
+ readonly sealantd: import("effect/Schema").String;
2213
+ readonly socat: import("effect/Schema").String;
2214
+ readonly relay: import("effect/Schema").String;
2215
+ }>;
2216
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2217
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
2218
+ }>;
2219
+ }>]>>;
2060
2220
  readonly error: import("effect/Schema").optional<import("effect/Schema").Struct<{
2061
2221
  readonly message: import("effect/Schema").String;
2062
2222
  readonly code: import("effect/Schema").optional<import("effect/Schema").String>;
@@ -2150,7 +2310,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
2150
2310
  readonly repository: import("effect/Schema").optional<import("effect/Schema").String>;
2151
2311
  readonly tag: import("effect/Schema").optional<import("effect/Schema").String>;
2152
2312
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
2153
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
2313
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
2154
2314
  readonly resourceId: import("effect/Schema").String;
2155
2315
  readonly reference: import("effect/Schema").String;
2156
2316
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -2171,6 +2331,56 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
2171
2331
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2172
2332
  }>>;
2173
2333
  }>>;
2334
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
2335
+ readonly kind: import("effect/Schema").Literal<"oci">;
2336
+ readonly publicationId: import("effect/Schema").String;
2337
+ readonly image: import("effect/Schema").Struct<{
2338
+ readonly repository: import("effect/Schema").String;
2339
+ readonly tag: import("effect/Schema").String;
2340
+ readonly reference: import("effect/Schema").String;
2341
+ readonly digestReference: import("effect/Schema").String;
2342
+ readonly digest: import("effect/Schema").String;
2343
+ }>;
2344
+ }>, import("effect/Schema").Struct<{
2345
+ readonly kind: import("effect/Schema").Literal<"microvm">;
2346
+ readonly publicationId: import("effect/Schema").String;
2347
+ readonly image: import("effect/Schema").Struct<{
2348
+ readonly imageArn: import("effect/Schema").String;
2349
+ readonly imageVersion: import("effect/Schema").String;
2350
+ readonly planHash: import("effect/Schema").String;
2351
+ }>;
2352
+ }>, import("effect/Schema").Struct<{
2353
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
2354
+ readonly publicationId: import("effect/Schema").String;
2355
+ readonly snapshot: import("effect/Schema").Struct<{
2356
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
2357
+ readonly owner: import("effect/Schema").String;
2358
+ readonly build: import("effect/Schema").String;
2359
+ readonly recipeHash: import("effect/Schema").String;
2360
+ readonly receiptHash: import("effect/Schema").String;
2361
+ readonly identity: import("effect/Schema").Struct<{
2362
+ readonly name: import("effect/Schema").String;
2363
+ readonly sourceSandboxId: import("effect/Schema").String;
2364
+ readonly createdAt: import("effect/Schema").String;
2365
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
2366
+ }>;
2367
+ }>;
2368
+ readonly evidence: import("effect/Schema").Struct<{
2369
+ readonly recipeHash: import("effect/Schema").String;
2370
+ readonly receiptHash: import("effect/Schema").String;
2371
+ readonly assetsHash: import("effect/Schema").String;
2372
+ readonly runtime: import("effect/Schema").Struct<{
2373
+ readonly source: import("effect/Schema").String;
2374
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
2375
+ readonly manifest: import("effect/Schema").String;
2376
+ readonly sealantd: import("effect/Schema").String;
2377
+ readonly socat: import("effect/Schema").String;
2378
+ readonly relay: import("effect/Schema").String;
2379
+ }>;
2380
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
2381
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
2382
+ }>;
2383
+ }>]>>;
2174
2384
  readonly processUser: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>>;
2175
2385
  readonly error: import("effect/Schema").optional<import("effect/Schema").Struct<{
2176
2386
  readonly message: import("effect/Schema").String;
@@ -2370,7 +2580,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
2370
2580
  readonly workspaceId: import("effect/Schema").String;
2371
2581
  readonly runId: import("effect/Schema").String;
2372
2582
  readonly status: import("effect/Schema").Literals<readonly ["queued", "running", "ready", "failed", "cancelled", "stopped", "retained"]>;
2373
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
2583
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
2374
2584
  readonly stopWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"stopWorkspace", "POST", "/v1/workspaces/:workspaceId/stop", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
2375
2585
  readonly workspaceId: import("effect/Schema").String;
2376
2586
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
@@ -3253,6 +3463,14 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
3253
3463
  }>>;
3254
3464
  }>>;
3255
3465
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3466
+ readonly purgeResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"purgeResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/purge", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3467
+ readonly resourceDomainId: import("effect/Schema").String;
3468
+ readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
3469
+ }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3470
+ readonly expectedInstanceId: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceId">;
3471
+ }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
3472
+ readonly kind: import("effect/Schema").Literals<readonly ["purged", "already-purged"]>;
3473
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").ResourceDomainForbiddenError | typeof import("@sealant/api-contracts").ResourceDomainNotFoundError | typeof import("@sealant/api-contracts").ResourceDomainInternalServerError | typeof import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | typeof import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | typeof import("@sealant/api-contracts").ResourceInstancePurgeRefusedError | typeof import("@sealant/api-contracts").ResourceInstanceBusyError | typeof import("@sealant/api-contracts").ResourceInstanceBudgetError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
3256
3474
  readonly stopResourceInstance: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"stopResourceInstance", "POST", "/v1/resource-domains/:resourceDomainId/instances/:key/stop", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
3257
3475
  readonly resourceDomainId: import("effect/Schema").String;
3258
3476
  readonly key: import("effect/Schema").brand<import("effect/Schema").String, "ResourceInstanceKey">;
@@ -4018,6 +4236,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4018
4236
  readonly sshUser: import("effect/Schema").Null;
4019
4237
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
4020
4238
  readonly createWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"createWorkspace", "POST", "/v1/workspaces/", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
4239
+ readonly imageScopeId: import("effect/Schema").optional<import("effect/Schema").String>;
4021
4240
  readonly ownerUserId: import("effect/Schema").String;
4022
4241
  readonly registryId: import("effect/Schema").String;
4023
4242
  readonly repository: import("effect/Schema").String;
@@ -4059,7 +4278,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4059
4278
  readonly tag: import("effect/Schema").String;
4060
4279
  readonly runId: import("effect/Schema").optional<import("effect/Schema").String>;
4061
4280
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
4062
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
4281
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
4063
4282
  readonly resourceId: import("effect/Schema").String;
4064
4283
  readonly reference: import("effect/Schema").String;
4065
4284
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -4070,7 +4289,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4070
4289
  }>>;
4071
4290
  readonly replayed: import("effect/Schema").optional<import("effect/Schema").Boolean>;
4072
4291
  readonly launchId: import("effect/Schema").optional<import("effect/Schema").String>;
4073
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceSshOwnerRefusedError | typeof import("@sealant/api-contracts").WorkspaceForbiddenError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
4292
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceSshOwnerRefusedError | typeof import("@sealant/api-contracts").WorkspaceForbiddenError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
4074
4293
  readonly execWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"execWorkspace", "POST", "/v1/workspaces/:workspaceId/exec", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
4075
4294
  readonly workspaceId: import("effect/Schema").String;
4076
4295
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
@@ -4223,7 +4442,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4223
4442
  readonly repository: import("effect/Schema").optional<import("effect/Schema").String>;
4224
4443
  readonly tag: import("effect/Schema").optional<import("effect/Schema").String>;
4225
4444
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
4226
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
4445
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
4227
4446
  readonly resourceId: import("effect/Schema").String;
4228
4447
  readonly reference: import("effect/Schema").String;
4229
4448
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -4244,6 +4463,56 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4244
4463
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4245
4464
  }>>;
4246
4465
  }>>;
4466
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
4467
+ readonly kind: import("effect/Schema").Literal<"oci">;
4468
+ readonly publicationId: import("effect/Schema").String;
4469
+ readonly image: import("effect/Schema").Struct<{
4470
+ readonly repository: import("effect/Schema").String;
4471
+ readonly tag: import("effect/Schema").String;
4472
+ readonly reference: import("effect/Schema").String;
4473
+ readonly digestReference: import("effect/Schema").String;
4474
+ readonly digest: import("effect/Schema").String;
4475
+ }>;
4476
+ }>, import("effect/Schema").Struct<{
4477
+ readonly kind: import("effect/Schema").Literal<"microvm">;
4478
+ readonly publicationId: import("effect/Schema").String;
4479
+ readonly image: import("effect/Schema").Struct<{
4480
+ readonly imageArn: import("effect/Schema").String;
4481
+ readonly imageVersion: import("effect/Schema").String;
4482
+ readonly planHash: import("effect/Schema").String;
4483
+ }>;
4484
+ }>, import("effect/Schema").Struct<{
4485
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
4486
+ readonly publicationId: import("effect/Schema").String;
4487
+ readonly snapshot: import("effect/Schema").Struct<{
4488
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
4489
+ readonly owner: import("effect/Schema").String;
4490
+ readonly build: import("effect/Schema").String;
4491
+ readonly recipeHash: import("effect/Schema").String;
4492
+ readonly receiptHash: import("effect/Schema").String;
4493
+ readonly identity: import("effect/Schema").Struct<{
4494
+ readonly name: import("effect/Schema").String;
4495
+ readonly sourceSandboxId: import("effect/Schema").String;
4496
+ readonly createdAt: import("effect/Schema").String;
4497
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
4498
+ }>;
4499
+ }>;
4500
+ readonly evidence: import("effect/Schema").Struct<{
4501
+ readonly recipeHash: import("effect/Schema").String;
4502
+ readonly receiptHash: import("effect/Schema").String;
4503
+ readonly assetsHash: import("effect/Schema").String;
4504
+ readonly runtime: import("effect/Schema").Struct<{
4505
+ readonly source: import("effect/Schema").String;
4506
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
4507
+ readonly manifest: import("effect/Schema").String;
4508
+ readonly sealantd: import("effect/Schema").String;
4509
+ readonly socat: import("effect/Schema").String;
4510
+ readonly relay: import("effect/Schema").String;
4511
+ }>;
4512
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4513
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
4514
+ }>;
4515
+ }>]>>;
4247
4516
  readonly processUser: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>>;
4248
4517
  readonly error: import("effect/Schema").optional<import("effect/Schema").Struct<{
4249
4518
  readonly message: import("effect/Schema").String;
@@ -4385,7 +4654,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4385
4654
  readonly workspaceId: import("effect/Schema").String;
4386
4655
  readonly attemptId: import("effect/Schema").String;
4387
4656
  readonly runtime: import("effect/Schema").Struct<{
4388
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
4657
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
4389
4658
  readonly resourceId: import("effect/Schema").String;
4390
4659
  readonly reference: import("effect/Schema").String;
4391
4660
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped"]>;
@@ -4395,6 +4664,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4395
4664
  readonly sshKeyFingerprint: import("effect/Schema").optional<import("effect/Schema").String>;
4396
4665
  }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceUnauthorizedError | typeof import("@sealant/api-contracts").WorkspaceSshKeyNoLongerRegisteredError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
4397
4666
  readonly inspectWorkspaceImage: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"inspectWorkspaceImage", "POST", "/v1/workspaces/image", never, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
4667
+ readonly imageScopeId: import("effect/Schema").optional<import("effect/Schema").String>;
4398
4668
  readonly ownerUserId: import("effect/Schema").String;
4399
4669
  readonly registryId: import("effect/Schema").String;
4400
4670
  readonly spec: import("effect/Schema").Unknown;
@@ -4412,6 +4682,56 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4412
4682
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4413
4683
  }>>;
4414
4684
  }>>;
4685
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
4686
+ readonly kind: import("effect/Schema").Literal<"oci">;
4687
+ readonly publicationId: import("effect/Schema").String;
4688
+ readonly image: import("effect/Schema").Struct<{
4689
+ readonly repository: import("effect/Schema").String;
4690
+ readonly tag: import("effect/Schema").String;
4691
+ readonly reference: import("effect/Schema").String;
4692
+ readonly digestReference: import("effect/Schema").String;
4693
+ readonly digest: import("effect/Schema").String;
4694
+ }>;
4695
+ }>, import("effect/Schema").Struct<{
4696
+ readonly kind: import("effect/Schema").Literal<"microvm">;
4697
+ readonly publicationId: import("effect/Schema").String;
4698
+ readonly image: import("effect/Schema").Struct<{
4699
+ readonly imageArn: import("effect/Schema").String;
4700
+ readonly imageVersion: import("effect/Schema").String;
4701
+ readonly planHash: import("effect/Schema").String;
4702
+ }>;
4703
+ }>, import("effect/Schema").Struct<{
4704
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
4705
+ readonly publicationId: import("effect/Schema").String;
4706
+ readonly snapshot: import("effect/Schema").Struct<{
4707
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
4708
+ readonly owner: import("effect/Schema").String;
4709
+ readonly build: import("effect/Schema").String;
4710
+ readonly recipeHash: import("effect/Schema").String;
4711
+ readonly receiptHash: import("effect/Schema").String;
4712
+ readonly identity: import("effect/Schema").Struct<{
4713
+ readonly name: import("effect/Schema").String;
4714
+ readonly sourceSandboxId: import("effect/Schema").String;
4715
+ readonly createdAt: import("effect/Schema").String;
4716
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
4717
+ }>;
4718
+ }>;
4719
+ readonly evidence: import("effect/Schema").Struct<{
4720
+ readonly recipeHash: import("effect/Schema").String;
4721
+ readonly receiptHash: import("effect/Schema").String;
4722
+ readonly assetsHash: import("effect/Schema").String;
4723
+ readonly runtime: import("effect/Schema").Struct<{
4724
+ readonly source: import("effect/Schema").String;
4725
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
4726
+ readonly manifest: import("effect/Schema").String;
4727
+ readonly sealantd: import("effect/Schema").String;
4728
+ readonly socat: import("effect/Schema").String;
4729
+ readonly relay: import("effect/Schema").String;
4730
+ }>;
4731
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4732
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
4733
+ }>;
4734
+ }>]>>;
4415
4735
  readonly personLayout: import("effect/Schema").Struct<{
4416
4736
  readonly status: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4417
4737
  readonly missing: import("effect/Schema").$Array<import("effect/Schema").String>;
@@ -4419,7 +4739,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4419
4739
  readonly runtime: import("effect/Schema").String;
4420
4740
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4421
4741
  }>;
4422
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
4742
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
4423
4743
  readonly listWorkspaceAttempts: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"listWorkspaceAttempts", "GET", "/v1/workspaces/:workspaceId/attempts", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
4424
4744
  readonly workspaceId: import("effect/Schema").String;
4425
4745
  }>>, import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
@@ -4433,7 +4753,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4433
4753
  readonly triggerType: import("effect/Schema").Literals<readonly ["manual", "schedule", "api", "retry"]>;
4434
4754
  readonly triggerRef: import("effect/Schema").optional<import("effect/Schema").String>;
4435
4755
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
4436
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
4756
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
4437
4757
  readonly resourceId: import("effect/Schema").String;
4438
4758
  readonly reference: import("effect/Schema").String;
4439
4759
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -4454,6 +4774,56 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4454
4774
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4455
4775
  }>>;
4456
4776
  }>>;
4777
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
4778
+ readonly kind: import("effect/Schema").Literal<"oci">;
4779
+ readonly publicationId: import("effect/Schema").String;
4780
+ readonly image: import("effect/Schema").Struct<{
4781
+ readonly repository: import("effect/Schema").String;
4782
+ readonly tag: import("effect/Schema").String;
4783
+ readonly reference: import("effect/Schema").String;
4784
+ readonly digestReference: import("effect/Schema").String;
4785
+ readonly digest: import("effect/Schema").String;
4786
+ }>;
4787
+ }>, import("effect/Schema").Struct<{
4788
+ readonly kind: import("effect/Schema").Literal<"microvm">;
4789
+ readonly publicationId: import("effect/Schema").String;
4790
+ readonly image: import("effect/Schema").Struct<{
4791
+ readonly imageArn: import("effect/Schema").String;
4792
+ readonly imageVersion: import("effect/Schema").String;
4793
+ readonly planHash: import("effect/Schema").String;
4794
+ }>;
4795
+ }>, import("effect/Schema").Struct<{
4796
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
4797
+ readonly publicationId: import("effect/Schema").String;
4798
+ readonly snapshot: import("effect/Schema").Struct<{
4799
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
4800
+ readonly owner: import("effect/Schema").String;
4801
+ readonly build: import("effect/Schema").String;
4802
+ readonly recipeHash: import("effect/Schema").String;
4803
+ readonly receiptHash: import("effect/Schema").String;
4804
+ readonly identity: import("effect/Schema").Struct<{
4805
+ readonly name: import("effect/Schema").String;
4806
+ readonly sourceSandboxId: import("effect/Schema").String;
4807
+ readonly createdAt: import("effect/Schema").String;
4808
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
4809
+ }>;
4810
+ }>;
4811
+ readonly evidence: import("effect/Schema").Struct<{
4812
+ readonly recipeHash: import("effect/Schema").String;
4813
+ readonly receiptHash: import("effect/Schema").String;
4814
+ readonly assetsHash: import("effect/Schema").String;
4815
+ readonly runtime: import("effect/Schema").Struct<{
4816
+ readonly source: import("effect/Schema").String;
4817
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
4818
+ readonly manifest: import("effect/Schema").String;
4819
+ readonly sealantd: import("effect/Schema").String;
4820
+ readonly socat: import("effect/Schema").String;
4821
+ readonly relay: import("effect/Schema").String;
4822
+ }>;
4823
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4824
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
4825
+ }>;
4826
+ }>]>>;
4457
4827
  readonly error: import("effect/Schema").optional<import("effect/Schema").Struct<{
4458
4828
  readonly message: import("effect/Schema").String;
4459
4829
  readonly code: import("effect/Schema").optional<import("effect/Schema").String>;
@@ -4547,7 +4917,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4547
4917
  readonly repository: import("effect/Schema").optional<import("effect/Schema").String>;
4548
4918
  readonly tag: import("effect/Schema").optional<import("effect/Schema").String>;
4549
4919
  readonly runtime: import("effect/Schema").optional<import("effect/Schema").Struct<{
4550
- readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm"]>;
4920
+ readonly adapter: import("effect/Schema").Literals<readonly ["docker", "k8s", "k3s", "cloudflare", "microvm", "boat"]>;
4551
4921
  readonly resourceId: import("effect/Schema").String;
4552
4922
  readonly reference: import("effect/Schema").String;
4553
4923
  readonly status: import("effect/Schema").Literals<readonly ["pending", "running", "ready", "failed", "stopped", "retained"]>;
@@ -4568,6 +4938,56 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4568
4938
  readonly acl: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4569
4939
  }>>;
4570
4940
  }>>;
4941
+ readonly publication: import("effect/Schema").optional<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
4942
+ readonly kind: import("effect/Schema").Literal<"oci">;
4943
+ readonly publicationId: import("effect/Schema").String;
4944
+ readonly image: import("effect/Schema").Struct<{
4945
+ readonly repository: import("effect/Schema").String;
4946
+ readonly tag: import("effect/Schema").String;
4947
+ readonly reference: import("effect/Schema").String;
4948
+ readonly digestReference: import("effect/Schema").String;
4949
+ readonly digest: import("effect/Schema").String;
4950
+ }>;
4951
+ }>, import("effect/Schema").Struct<{
4952
+ readonly kind: import("effect/Schema").Literal<"microvm">;
4953
+ readonly publicationId: import("effect/Schema").String;
4954
+ readonly image: import("effect/Schema").Struct<{
4955
+ readonly imageArn: import("effect/Schema").String;
4956
+ readonly imageVersion: import("effect/Schema").String;
4957
+ readonly planHash: import("effect/Schema").String;
4958
+ }>;
4959
+ }>, import("effect/Schema").Struct<{
4960
+ readonly kind: import("effect/Schema").Literal<"boat-native">;
4961
+ readonly publicationId: import("effect/Schema").String;
4962
+ readonly snapshot: import("effect/Schema").Struct<{
4963
+ readonly kind: import("effect/Schema").Literal<"boat-saved-snapshot">;
4964
+ readonly owner: import("effect/Schema").String;
4965
+ readonly build: import("effect/Schema").String;
4966
+ readonly recipeHash: import("effect/Schema").String;
4967
+ readonly receiptHash: import("effect/Schema").String;
4968
+ readonly identity: import("effect/Schema").Struct<{
4969
+ readonly name: import("effect/Schema").String;
4970
+ readonly sourceSandboxId: import("effect/Schema").String;
4971
+ readonly createdAt: import("effect/Schema").String;
4972
+ readonly snapshotId: import("effect/Schema").optional<import("effect/Schema").String>;
4973
+ }>;
4974
+ }>;
4975
+ readonly evidence: import("effect/Schema").Struct<{
4976
+ readonly recipeHash: import("effect/Schema").String;
4977
+ readonly receiptHash: import("effect/Schema").String;
4978
+ readonly assetsHash: import("effect/Schema").String;
4979
+ readonly runtime: import("effect/Schema").Struct<{
4980
+ readonly source: import("effect/Schema").String;
4981
+ readonly platform: import("effect/Schema").Literal<"linux/amd64">;
4982
+ readonly manifest: import("effect/Schema").String;
4983
+ readonly sealantd: import("effect/Schema").String;
4984
+ readonly socat: import("effect/Schema").String;
4985
+ readonly relay: import("effect/Schema").String;
4986
+ }>;
4987
+ readonly daemonRecovery: import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>;
4988
+ readonly executorRecovery: import("effect/Schema").Literal<"unverified">;
4989
+ }>;
4990
+ }>]>>;
4571
4991
  readonly processUser: import("effect/Schema").optional<import("effect/Schema").Literals<readonly ["supported", "unsupported", "unknown"]>>;
4572
4992
  readonly error: import("effect/Schema").optional<import("effect/Schema").Struct<{
4573
4993
  readonly message: import("effect/Schema").String;
@@ -4767,7 +5187,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
4767
5187
  readonly workspaceId: import("effect/Schema").String;
4768
5188
  readonly runId: import("effect/Schema").String;
4769
5189
  readonly status: import("effect/Schema").Literals<readonly ["queued", "running", "ready", "failed", "cancelled", "stopped", "retained"]>;
4770
- }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
5190
+ }>>, import("effect/Schema").toCodecJson<typeof import("@sealant/api-contracts").BudgetExceededError | typeof import("@sealant/api-contracts").WorkspaceBadRequestError | typeof import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | typeof import("@sealant/api-contracts").WorkspaceNotFoundError | typeof import("@sealant/api-contracts").WorkspaceConflictError | typeof import("@sealant/api-contracts").WorkspaceBadGatewayError | typeof import("@sealant/api-contracts").WorkspaceServiceUnavailableError | typeof import("@sealant/api-contracts").WorkspaceInternalServerError>, import("@sealant/api-contracts").RequestBudget | import("@sealant/api-contracts").RequestRefusal, never>, never, never>;
4771
5191
  readonly stopWorkspace: HttpApiClient.Client.Method<import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"stopWorkspace", "POST", "/v1/workspaces/:workspaceId/stop", import("effect/Schema").toCodecStringTree<import("effect/Schema").Struct<{
4772
5192
  readonly workspaceId: import("effect/Schema").String;
4773
5193
  }>>, never, import("effect/Schema").toCodecJson<import("effect/Schema").Struct<{
@@ -16,7 +16,7 @@ export declare const createWorkspaceOp: (payload: CreateWorkspaceRequest, idempo
16
16
  readonly tag: string;
17
17
  readonly runId?: string | undefined;
18
18
  readonly runtime?: {
19
- readonly adapter: "cloudflare" | "docker" | "k3s" | "k8s" | "microvm";
19
+ readonly adapter: "boat" | "cloudflare" | "docker" | "k3s" | "k8s" | "microvm";
20
20
  readonly resourceId: string;
21
21
  readonly reference: string;
22
22
  readonly status: "failed" | "pending" | "ready" | "retained" | "running" | "stopped";
@@ -27,7 +27,7 @@ export declare const createWorkspaceOp: (payload: CreateWorkspaceRequest, idempo
27
27
  } | undefined;
28
28
  readonly replayed?: boolean | undefined;
29
29
  readonly launchId?: string | undefined;
30
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | Schema.SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError | import("@sealant/api-contracts").WorkspaceSshOwnerRefusedError, SealantApiClient>;
30
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | Schema.SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError | import("@sealant/api-contracts").WorkspaceSshOwnerRefusedError, SealantApiClient>;
31
31
  export declare const getWorkspaceOp: (workspaceId: string, ownerUserId?: string) => Effect.Effect<{
32
32
  readonly workspaceId: string;
33
33
  readonly name: string;
@@ -37,7 +37,7 @@ export declare const getWorkspaceOp: (workspaceId: string, ownerUserId?: string)
37
37
  readonly repository?: string | undefined;
38
38
  readonly tag?: string | undefined;
39
39
  readonly runtime?: {
40
- readonly adapter: "cloudflare" | "docker" | "k3s" | "k8s" | "microvm";
40
+ readonly adapter: "boat" | "cloudflare" | "docker" | "k3s" | "k8s" | "microvm";
41
41
  readonly resourceId: string;
42
42
  readonly reference: string;
43
43
  readonly status: "failed" | "pending" | "ready" | "retained" | "running" | "stopped";
@@ -58,6 +58,56 @@ export declare const getWorkspaceOp: (workspaceId: string, ownerUserId?: string)
58
58
  readonly acl: "supported" | "unknown" | "unsupported";
59
59
  } | undefined;
60
60
  } | undefined;
61
+ readonly publication?: {
62
+ readonly kind: "oci";
63
+ readonly publicationId: string;
64
+ readonly image: {
65
+ readonly repository: string;
66
+ readonly tag: string;
67
+ readonly reference: string;
68
+ readonly digestReference: string;
69
+ readonly digest: string;
70
+ };
71
+ } | {
72
+ readonly kind: "microvm";
73
+ readonly publicationId: string;
74
+ readonly image: {
75
+ readonly imageArn: string;
76
+ readonly imageVersion: string;
77
+ readonly planHash: string;
78
+ };
79
+ } | {
80
+ readonly kind: "boat-native";
81
+ readonly publicationId: string;
82
+ readonly snapshot: {
83
+ readonly kind: "boat-saved-snapshot";
84
+ readonly owner: string;
85
+ readonly build: string;
86
+ readonly recipeHash: string;
87
+ readonly receiptHash: string;
88
+ readonly identity: {
89
+ readonly name: string;
90
+ readonly sourceSandboxId: string;
91
+ readonly createdAt: string;
92
+ readonly snapshotId?: string | undefined;
93
+ };
94
+ };
95
+ readonly evidence: {
96
+ readonly recipeHash: string;
97
+ readonly receiptHash: string;
98
+ readonly assetsHash: string;
99
+ readonly runtime: {
100
+ readonly source: string;
101
+ readonly platform: "linux/amd64";
102
+ readonly manifest: string;
103
+ readonly sealantd: string;
104
+ readonly socat: string;
105
+ readonly relay: string;
106
+ };
107
+ readonly daemonRecovery: "supported" | "unknown" | "unsupported";
108
+ readonly executorRecovery: "unverified";
109
+ };
110
+ } | undefined;
61
111
  readonly processUser?: "supported" | "unknown" | "unsupported" | undefined;
62
112
  readonly error?: {
63
113
  readonly message: string;
@@ -146,7 +196,7 @@ export declare const listWorkspacesOp: (query: ListWorkspacesQuery) => Effect.Ef
146
196
  readonly repository?: string | undefined;
147
197
  readonly tag?: string | undefined;
148
198
  readonly runtime?: {
149
- readonly adapter: "cloudflare" | "docker" | "k3s" | "k8s" | "microvm";
199
+ readonly adapter: "boat" | "cloudflare" | "docker" | "k3s" | "k8s" | "microvm";
150
200
  readonly resourceId: string;
151
201
  readonly reference: string;
152
202
  readonly status: "failed" | "pending" | "ready" | "retained" | "running" | "stopped";
@@ -167,6 +217,56 @@ export declare const listWorkspacesOp: (query: ListWorkspacesQuery) => Effect.Ef
167
217
  readonly acl: "supported" | "unknown" | "unsupported";
168
218
  } | undefined;
169
219
  } | undefined;
220
+ readonly publication?: {
221
+ readonly kind: "oci";
222
+ readonly publicationId: string;
223
+ readonly image: {
224
+ readonly repository: string;
225
+ readonly tag: string;
226
+ readonly reference: string;
227
+ readonly digestReference: string;
228
+ readonly digest: string;
229
+ };
230
+ } | {
231
+ readonly kind: "microvm";
232
+ readonly publicationId: string;
233
+ readonly image: {
234
+ readonly imageArn: string;
235
+ readonly imageVersion: string;
236
+ readonly planHash: string;
237
+ };
238
+ } | {
239
+ readonly kind: "boat-native";
240
+ readonly publicationId: string;
241
+ readonly snapshot: {
242
+ readonly kind: "boat-saved-snapshot";
243
+ readonly owner: string;
244
+ readonly build: string;
245
+ readonly recipeHash: string;
246
+ readonly receiptHash: string;
247
+ readonly identity: {
248
+ readonly name: string;
249
+ readonly sourceSandboxId: string;
250
+ readonly createdAt: string;
251
+ readonly snapshotId?: string | undefined;
252
+ };
253
+ };
254
+ readonly evidence: {
255
+ readonly recipeHash: string;
256
+ readonly receiptHash: string;
257
+ readonly assetsHash: string;
258
+ readonly runtime: {
259
+ readonly source: string;
260
+ readonly platform: "linux/amd64";
261
+ readonly manifest: string;
262
+ readonly sealantd: string;
263
+ readonly socat: string;
264
+ readonly relay: string;
265
+ };
266
+ readonly daemonRecovery: "supported" | "unknown" | "unsupported";
267
+ readonly executorRecovery: "unverified";
268
+ };
269
+ } | undefined;
170
270
  readonly processUser?: "supported" | "unknown" | "unsupported" | undefined;
171
271
  readonly error?: {
172
272
  readonly message: string;
@@ -412,7 +512,7 @@ export declare const restartWorkspaceOp: (workspaceId: string, payload: RestartW
412
512
  readonly workspaceId: string;
413
513
  readonly runId: string;
414
514
  readonly status: "cancelled" | "failed" | "queued" | "ready" | "retained" | "running" | "stopped";
415
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | Schema.SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError, SealantApiClient>;
515
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | Schema.SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError, SealantApiClient>;
416
516
  export declare const inspectWorkspaceImageOp: (payload: InspectWorkspaceImageRequest) => Effect.Effect<{
417
517
  readonly planHash: string;
418
518
  readonly publishedImage?: {
@@ -427,6 +527,56 @@ export declare const inspectWorkspaceImageOp: (payload: InspectWorkspaceImageReq
427
527
  readonly acl: "supported" | "unknown" | "unsupported";
428
528
  } | undefined;
429
529
  } | undefined;
530
+ readonly publication?: {
531
+ readonly kind: "oci";
532
+ readonly publicationId: string;
533
+ readonly image: {
534
+ readonly repository: string;
535
+ readonly tag: string;
536
+ readonly reference: string;
537
+ readonly digestReference: string;
538
+ readonly digest: string;
539
+ };
540
+ } | {
541
+ readonly kind: "microvm";
542
+ readonly publicationId: string;
543
+ readonly image: {
544
+ readonly imageArn: string;
545
+ readonly imageVersion: string;
546
+ readonly planHash: string;
547
+ };
548
+ } | {
549
+ readonly kind: "boat-native";
550
+ readonly publicationId: string;
551
+ readonly snapshot: {
552
+ readonly kind: "boat-saved-snapshot";
553
+ readonly owner: string;
554
+ readonly build: string;
555
+ readonly recipeHash: string;
556
+ readonly receiptHash: string;
557
+ readonly identity: {
558
+ readonly name: string;
559
+ readonly sourceSandboxId: string;
560
+ readonly createdAt: string;
561
+ readonly snapshotId?: string | undefined;
562
+ };
563
+ };
564
+ readonly evidence: {
565
+ readonly recipeHash: string;
566
+ readonly receiptHash: string;
567
+ readonly assetsHash: string;
568
+ readonly runtime: {
569
+ readonly source: string;
570
+ readonly platform: "linux/amd64";
571
+ readonly manifest: string;
572
+ readonly sealantd: string;
573
+ readonly socat: string;
574
+ readonly relay: string;
575
+ };
576
+ readonly daemonRecovery: "supported" | "unknown" | "unsupported";
577
+ readonly executorRecovery: "unverified";
578
+ };
579
+ } | undefined;
430
580
  readonly personLayout: {
431
581
  readonly status: "supported" | "unknown" | "unsupported";
432
582
  readonly missing: readonly string[];
@@ -434,7 +584,7 @@ export declare const inspectWorkspaceImageOp: (payload: InspectWorkspaceImageReq
434
584
  readonly runtime: string;
435
585
  readonly acl: "supported" | "unknown" | "unsupported";
436
586
  };
437
- }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | Schema.SchemaError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError, SealantApiClient>;
587
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | Schema.SchemaError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeRequirementUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError, SealantApiClient>;
438
588
  export declare const putWorkspaceCredentialsOp: (workspaceId: string, payload: PutWorkspaceCredentialsRequest) => Effect.Effect<{
439
589
  readonly workspaceId: string;
440
590
  readonly runId: string;
@@ -1507,6 +1657,9 @@ export declare const archiveResourceInstanceOp: (resourceDomainId: string, key:
1507
1657
  readonly bytes: number | null;
1508
1658
  }[];
1509
1659
  }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstanceNotFoundError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1660
+ export declare const purgeResourceInstanceOp: (resourceDomainId: string, key: string, expectedInstanceId: string) => Effect.Effect<{
1661
+ readonly kind: "already-purged" | "purged";
1662
+ }, import("@sealant/api-contracts").BudgetExceededError | import("effect/http/HttpClientError").HttpClientError | import("@sealant/api-contracts").RequestRefusedError | import("@sealant/api-contracts").ResourceDomainForbiddenError | import("@sealant/api-contracts").ResourceDomainInternalServerError | import("@sealant/api-contracts").ResourceDomainNotFoundError | import("@sealant/api-contracts").ResourceInstanceBudgetError | import("@sealant/api-contracts").ResourceInstanceBusyError | import("@sealant/api-contracts").ResourceInstancePurgeRefusedError | import("@sealant/api-contracts").ResourceInstanceSpecRefusedError | import("@sealant/api-contracts").ResourceRuntimeUnsupportedError | Schema.SchemaError | import("effect/Cause").UnknownError, SealantApiClient>;
1510
1663
  export declare const linkResourceWorkspaceOp: (resourceDomainId: string, workspaceId: string, worktreeKey: string, aliases?: Readonly<Record<string, "project" | "worktree">>) => Effect.Effect<{
1511
1664
  readonly workspaceId: string;
1512
1665
  readonly worktreeKey: string & import("effect/Brand").Brand<"ResourceWorktreeKey">;
@@ -1,4 +1,4 @@
1
- import { ResourceInstanceKey, ResourceReachAliases, ResourceWorktreeKey, } from "@sealant/api-contracts";
1
+ import { ResourceInstanceId, ResourceInstanceKey, ResourceReachAliases, ResourceWorktreeKey, } from "@sealant/api-contracts";
2
2
  import { Effect, Schema } from "effect";
3
3
  import { CurrentRequestPriority, SealantApiClient } from "./api-client.js";
4
4
  // ---- workspaces ----
@@ -127,6 +127,14 @@ export const stopResourceInstanceOp = (resourceDomainId, key, by) => Effect.flat
127
127
  export const archiveResourceInstanceOp = (resourceDomainId, key) => Effect.flatMap(Effect.all([SealantApiClient, instanceKey(key)]), ([client, checked]) => client.resourceInstances.archiveResourceInstance({
128
128
  params: { resourceDomainId, key: checked },
129
129
  }));
130
+ export const purgeResourceInstanceOp = (resourceDomainId, key, expectedInstanceId) => Effect.flatMap(Effect.all([
131
+ SealantApiClient,
132
+ instanceKey(key),
133
+ Effect.try(() => ResourceInstanceId.make(expectedInstanceId)),
134
+ ]), ([client, checked, id]) => client.resourceInstances.purgeResourceInstance({
135
+ params: { resourceDomainId, key: checked },
136
+ payload: { expectedInstanceId: id },
137
+ })).pipe(Effect.provideService(CurrentRequestPriority, "interactive"));
130
138
  export const linkResourceWorkspaceOp = (resourceDomainId, workspaceId, worktreeKey, aliases) => Effect.flatMap(Effect.all([
131
139
  SealantApiClient,
132
140
  Effect.try(() => ResourceWorktreeKey.make(worktreeKey)),
@@ -443,6 +443,10 @@ export const makeWorkspace = (ctx, init) => {
443
443
  const details = await ctx.runtime.run(getWorkspaceOp(init.id, ctx.config.hostLocal.ownerUserId));
444
444
  return details.publishedImage === undefined ? null : toWorkspaceImage(details.publishedImage);
445
445
  },
446
+ publication: async () => {
447
+ const details = await ctx.runtime.run(getWorkspaceOp(init.id, ctx.config.hostLocal.ownerUserId));
448
+ return details.publication ?? null;
449
+ },
446
450
  processUser: async () => {
447
451
  const details = await ctx.runtime.run(getWorkspaceOp(init.id, ctx.config.hostLocal.ownerUserId));
448
452
  return details.processUser ?? "unknown";
@@ -516,6 +520,7 @@ export const makeWorkspace = (ctx, init) => {
516
520
  ...(details.publishedImage === undefined
517
521
  ? {}
518
522
  : { image: toWorkspaceImage(details.publishedImage) }),
523
+ ...(details.publication === undefined ? {} : { publication: details.publication }),
519
524
  ...(details.processUser === undefined ? {} : { processUser: details.processUser }),
520
525
  };
521
526
  }
package/dist/index.d.ts CHANGED
@@ -19,6 +19,6 @@ export { claudeCode, codex, customHarness, opencode, pi } from "./harness.js";
19
19
  export { ForwardDialError, type ForwardDialFailure, type ForwardDialReason, ForwardResetError, SealantApiError, SealantBudgetExceededError, SealantError, SealantNotImplementedError, SealantRuntimeError, } from "./errors.js";
20
20
  export type * from "./types.js";
21
21
  export type { EnsuredScope, ScopeBudget, ScopeBudgetDimension, ScopeBudgetLimits, ScopeBudgets, ScopeClient, ScopeInfo, ScopeMember, ScopeMemberDecision, ScopeMemberPage, ScopeMembers, ScopesNamespace, } from "./scopes.js";
22
- export type { ScopeArchivedVolume, ScopeExecResult, ScopeInstance, ScopeInstances, ScopeInstanceSpec, ScopeInstanceState, ScopeInstanceStopReason, ScopeWorkspaces, } from "./scope-instances.js";
22
+ export type { ScopeArchivedVolume, ScopeExecResult, ScopeInstance, ScopeInstances, ScopeInstanceSpec, ScopeInstanceState, ScopeInstanceStopReason, ScopeInstancePurgeResult, ScopeWorkspaces, } from "./scope-instances.js";
23
23
  export { findWorkspaceEnvReservedRule, findWorkspaceSecretEnvReservedRule, formatWorkspaceEnvIssue, parseWorkspaceEnv, parseWorkspaceSecretEnv, WORKSPACE_ENV_MAX_ENTRIES, WORKSPACE_ENV_MAX_NAME_LENGTH, WORKSPACE_ENV_MAX_TOTAL_BYTES, WORKSPACE_ENV_MAX_VALUE_BYTES, WORKSPACE_ENV_NAME_PATTERN, WORKSPACE_ENV_SECRET_MARKERS, } from "@sealant/api-contracts/workspace-environment";
24
24
  export type { WorkspaceEnvIssue, WorkspaceEnvParseResult, WorkspaceEnvReservedRule, } from "@sealant/api-contracts/workspace-environment";
@@ -261,6 +261,7 @@ export const buildCreateWorkspaceRequest = (options, config) => {
261
261
  return {
262
262
  payload: {
263
263
  ownerUserId: config.hostLocal.ownerUserId,
264
+ ...(options.imageScopeId === undefined ? {} : { imageScopeId: options.imageScopeId }),
264
265
  registryId: config.hostLocal.registryId,
265
266
  repository: sanitizeRepoSlug(tail),
266
267
  tag: `sdk-${randomUUID().slice(0, 8)}`,
@@ -1,3 +1,9 @@
1
+ /**
2
+ * A scope's long-running instances (a project's Postgres, Redis or any image), the workspaces that
3
+ * reach them, and the scope's archive. Organization and installation scopes use caller-only
4
+ * reach on Docker or Kubernetes. Other providers reject with `ResourceRuntimeUnsupportedError`.
5
+ */
6
+ import { type ResourceInstancePurgeResult } from "@sealant/api-contracts";
1
7
  import type { SdkRuntime } from "./effect/runtime.js";
2
8
  import { type SealantInternalConfig } from "./internal/config.js";
3
9
  /**
@@ -124,7 +130,17 @@ export interface ScopeExecResult {
124
130
  readonly truncated: boolean;
125
131
  readonly timedOut: boolean;
126
132
  }
133
+ /** Whether this call removed the instance or found its key already absent. */
134
+ export type ScopeInstancePurgeResult = ResourceInstancePurgeResult;
127
135
  export interface ScopeInstances {
136
+ /**
137
+ * Irreversibly delete a stopped or archived caller-owned instance, including retained volumes
138
+ * and sealed env. Pass its observed id to protect a replacement using the same key. No Core
139
+ * backup is retained; previously downloaded copies belong to their recipient.
140
+ */
141
+ purge(key: string, options: {
142
+ readonly expectedInstanceId: string;
143
+ }): Promise<ScopeInstancePurgeResult>;
128
144
  /**
129
145
  * Create or update the instance by key, start it and answer once its ready check passed or its
130
146
  * start failed (`state.kind`). `cause: "use"` (a launch, a wake) leaves an instance a person
@@ -4,7 +4,7 @@
4
4
  * reach on Docker or Kubernetes. Other providers reject with `ResourceRuntimeUnsupportedError`.
5
5
  */
6
6
  import { RESOURCE_INSTANCE_EXEC, RESOURCE_INSTANCE_BACKUP, } from "@sealant/api-contracts";
7
- import { archiveResourceDomainOp, archiveResourceInstanceOp, getResourceInstanceOp, linkResourceWorkspaceOp, listResourceInstancesOp, stopResourceInstanceOp, upResourceInstanceOp, } from "./effect/operations.js";
7
+ import { archiveResourceDomainOp, archiveResourceInstanceOp, purgeResourceInstanceOp, getResourceInstanceOp, linkResourceWorkspaceOp, listResourceInstancesOp, stopResourceInstanceOp, upResourceInstanceOp, } from "./effect/operations.js";
8
8
  import { SealantApiError, SealantBudgetExceededError, SealantError } from "./errors.js";
9
9
  import { resolveRequestPriority } from "./internal/config.js";
10
10
  import { toSealantError } from "./internal/map-error.js";
@@ -138,6 +138,7 @@ const exec = async (config, scopeId, key, options) => {
138
138
  };
139
139
  export const makeScopeInstances = (runtime, config, scopeId) => ({
140
140
  instances: {
141
+ purge: (key, options) => runtime.run(purgeResourceInstanceOp(scopeId, key, options.expectedInstanceId)),
141
142
  up: async (key, spec, { cause, secretEnv }) => toInstance(await runtime.run(upResourceInstanceOp(scopeId, key, {
142
143
  spec: { ...spec },
143
144
  cause,
package/dist/types.d.ts CHANGED
@@ -15,7 +15,7 @@
15
15
  * `SealantNotImplementedError` at runtime, see `./errors.js`).
16
16
  */
17
17
  import type { ReadableStream as NodeReadableStream, WritableStream as NodeWritableStream } from "node:stream/web";
18
- import type { ConnectedAccountLogin, ConnectedAccountLoginClass, ForwardBinding, ForwardResetReason } from "@sealant/api-contracts";
18
+ import type { WorkspacePublication as WireWorkspacePublication, ConnectedAccountLogin, ConnectedAccountLoginClass, ForwardBinding, ForwardResetReason } from "@sealant/api-contracts";
19
19
  /** A request hint. Interactive requests may use the server's reserved capacity. */
20
20
  export type RequestPriority = "normal" | "interactive";
21
21
  /**
@@ -784,6 +784,8 @@ export interface WorkspaceEnvFromSource {
784
784
  readonly name: string;
785
785
  }
786
786
  export interface CreateOptions {
787
+ /** Reuse images within this existing resource domain, subject to current owner membership. */
788
+ readonly imageScopeId?: string;
787
789
  /**
788
790
  * Source git repository to build the workspace around (e.g. `"github.com/acme/billing-service"`).
789
791
  * Exactly one of `repository` or `source` must be provided.
@@ -962,8 +964,8 @@ export interface WorkspaceCreateState {
962
964
  * record at launch and to name in `stop({ completion })`.
963
965
  */
964
966
  export interface WorkspaceRuntimeInfo {
965
- /** The runtime family: `docker`, `k8s`, `k3s`, `cloudflare` or `microvm`. */
966
- readonly kind: "docker" | "k8s" | "k3s" | "cloudflare" | "microvm";
967
+ /** Recorded runtime family. Boat records remain readable while execution is unavailable. */
968
+ readonly kind: "docker" | "k8s" | "k3s" | "cloudflare" | "microvm" | "boat";
967
969
  /** The executor's id on its runtime: the container id, the Pod name, the MicroVM id. */
968
970
  readonly resourceId: string;
969
971
  /** The runtime's name for it (container name, Pod name, MicroVM id). */
@@ -992,6 +994,7 @@ export interface WorkspaceLaunch {
992
994
  readonly launchId?: string;
993
995
  /** The image the executor booted, with its per-person capability; filled in by `ready()`. */
994
996
  readonly image?: WorkspaceImage;
997
+ readonly publication?: WorkspacePublication;
995
998
  /** Whether its processes can be started as a user (`processUser()`); filled in by `ready()`. */
996
999
  readonly processUser?: WorkspaceProcessUserCapability;
997
1000
  }
@@ -1058,6 +1061,8 @@ export interface Workspace {
1058
1061
  runtime(): Promise<WorkspaceRuntimeInfo | null>;
1059
1062
  /** The image the workspace's latest launch booted, with its per-person capability. */
1060
1063
  image(): Promise<WorkspaceImage | null>;
1064
+ /** Exact typed artifact used by this workspace, including native provenance. */
1065
+ publication(): Promise<WorkspacePublication | null>;
1061
1066
  /**
1062
1067
  * Whether this workspace's processes can be started as a person's Linux user (`user` on
1063
1068
  * `exec()` and `sessions.open()`), read now (see {@link WorkspaceProcessUserCapability}).
@@ -1480,6 +1485,8 @@ export interface SealantFeatures {
1480
1485
  */
1481
1486
  readonly connectedAccountApiKeys: boolean;
1482
1487
  }
1488
+ /** Tagged artifact facts reported by the control plane. */
1489
+ export type WorkspacePublication = WireWorkspacePublication;
1483
1490
  /** A published workspace image. */
1484
1491
  export interface WorkspaceImage {
1485
1492
  readonly reference: string;
@@ -1496,6 +1503,7 @@ export interface WorkspaceImageInspection {
1496
1503
  readonly planHash: string;
1497
1504
  /** The latest image published for the plan, when this owner has built one. */
1498
1505
  readonly image?: WorkspaceImage;
1506
+ readonly publication?: WorkspacePublication;
1499
1507
  /** The image's per-person capability (`unknown` when none has been built yet). */
1500
1508
  readonly personLayout: WorkspaceImagePersonLayout;
1501
1509
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealant/sdk-next",
3
- "version": "0.40.0-next.790",
3
+ "version": "0.40.0-next.792",
4
4
  "description": "The fluent public SDK for Sealant — create a workspace, run a harness, replay the record.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -26,12 +26,12 @@
26
26
  "node": ">=20"
27
27
  },
28
28
  "dependencies": {
29
- "@sealant/api-contracts": "npm:@sealant/api-contracts-next@0.40.0-next.790"
29
+ "@sealant/api-contracts": "npm:@sealant/api-contracts-next@0.40.0-next.792"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "effect": "^4.0.5"
33
33
  },
34
- "gitHead": "67830c522d414c65ba5ee22db29bac4b0fa31fc4",
34
+ "gitHead": "4e2e3b67c44c2836488e314ebbdacd57edac91d0",
35
35
  "publishConfig": {
36
36
  "access": "public"
37
37
  }