@gjermundgaraba/clankerbox-sdk 0.19.0 → 0.20.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.
@@ -249,6 +249,7 @@ declare const Http: ActionHttp.Binding<readonly [Action.Action<"listMachines", S
249
249
  readonly setup: Schema.optionalKey<Schema.Struct<{
250
250
  readonly script: Schema.String;
251
251
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
252
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
252
253
  }>>;
253
254
  readonly profile: Schema.optionalKey<Schema.String>;
254
255
  readonly id: Schema.String;
@@ -451,6 +452,7 @@ declare const Http: ActionHttp.Binding<readonly [Action.Action<"listMachines", S
451
452
  readonly setup: Schema.Struct<{
452
453
  readonly script: Schema.String;
453
454
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
455
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
454
456
  }>;
455
457
  }>, Schema.Struct<{
456
458
  readonly checkpoint: Schema.Struct<{
@@ -506,6 +508,7 @@ declare const actionsByName: {
506
508
  readonly setup: Schema.optionalKey<Schema.Struct<{
507
509
  readonly script: Schema.String;
508
510
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
511
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
509
512
  }>>;
510
513
  readonly profile: Schema.optionalKey<Schema.String>;
511
514
  readonly id: Schema.String;
@@ -689,6 +692,7 @@ declare const actionsByName: {
689
692
  readonly setup: Schema.Struct<{
690
693
  readonly script: Schema.String;
691
694
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
695
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
692
696
  }>;
693
697
  }>, Schema.Struct<{
694
698
  readonly checkpoint: Schema.Struct<{
@@ -942,10 +946,20 @@ type Usage = typeof Usage.Type;
942
946
  type WithoutHost<Row> = Row extends unknown ? Omit<Row, "host"> : never;
943
947
  /** A `Usage` row as a runtime reads it, before the host names itself on it. */
944
948
  type Reading = WithoutHost<Usage>;
945
- /** Nothing logs the script: it can carry secrets. */
949
+ /**
950
+ * Public keys, as `.pub` files hold them: each line that isn't blank is `<type> <base64>
951
+ * [comment]`, the type an OpenSSH key's, its certificate's or a hardware key's, and at least one
952
+ * line is. Anything else, a private key included, is refused.
953
+ */
954
+ declare const PublicKeys: Schema.String;
955
+ /**
956
+ * Nothing logs the script: it can carry secrets. `authorizedKeys` is appended to the login user's
957
+ * `~/.ssh/authorized_keys` once the script exits 0, through the guest's `sudo`.
958
+ */
946
959
  declare const Setup: Schema.Struct<{
947
960
  readonly script: Schema.String;
948
961
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
962
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
949
963
  }>;
950
964
  type Setup = typeof Setup.Type;
951
965
  /** A profile file fills these in; the host sees only the `profile` label. */
@@ -957,6 +971,7 @@ declare const MachineSpec: Schema.Struct<{
957
971
  setup: Schema.optionalKey<Schema.Struct<{
958
972
  readonly script: Schema.String;
959
973
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
974
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
960
975
  }>>;
961
976
  profile: Schema.optionalKey<Schema.String>;
962
977
  }>;
@@ -970,6 +985,7 @@ declare const CreateRequest: Schema.Struct<{
970
985
  readonly setup: Schema.optionalKey<Schema.Struct<{
971
986
  readonly script: Schema.String;
972
987
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
988
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
973
989
  }>>;
974
990
  readonly profile: Schema.optionalKey<Schema.String>;
975
991
  readonly id: Schema.String;
@@ -986,6 +1002,7 @@ declare const PrebuildRequest: Schema.Struct<{
986
1002
  readonly setup: Schema.Struct<{
987
1003
  readonly script: Schema.String;
988
1004
  readonly timeoutSeconds: Schema.optionalKey<Schema.Int>;
1005
+ readonly authorizedKeys: Schema.optionalKey<Schema.String>;
989
1006
  }>;
990
1007
  }>;
991
1008
  type PrebuildRequest = typeof PrebuildRequest.Type;
@@ -1096,4 +1113,4 @@ declare class Client extends Client_base {}
1096
1113
  declare const make: (hosts: ReadonlyArray<HostEntry>, options?: Options) => Effect.Effect<Interface, Invalid, HttpClient.HttpClient>;
1097
1114
  declare const layer: (hosts: ReadonlyArray<HostEntry>, options?: Options) => Layer.Layer<Client, Invalid, HttpClient.HttpClient>;
1098
1115
  //#endregion
1099
- export { Conflict as A, ScriptFailed as B, stateLabel as C, readTimeout as D, actionsByName as E, NotFound as F, hostErrors as G, Unavailable as H, NotMade as I, retryable as K, NotOffered as L, Internal as M, Invalid as N, Capacity as O, Missing as P, PinMismatch as R, Usage as S, Http as T, Unsizable as U, Superseded as V, WrongState as W, Runtime as _, Options as a, SshLogin as b, CreateRequest as c, Machine as d, MachineSpec as f, Reading as g, Prebuilt as h, Interface as i, HostError as j, ClankerboxError as k, Desired as l, PrebuildRequest as m, CreateOptions as n, client_d_exports as o, Phase as p, HostEntry as r, Checkpoint as s, Client as t, Host as u, Setup as v, Declared as w, TailnetStatus as x, SshEndpoint as y, Refused as z };
1116
+ export { ClankerboxError as A, Refused as B, Usage as C, actionsByName as D, Http as E, Missing as F, WrongState as G, Superseded as H, NotFound as I, hostErrors as K, NotMade as L, HostError as M, Internal as N, readTimeout as O, Invalid as P, NotOffered as R, TailnetStatus as S, Declared as T, Unavailable as U, ScriptFailed as V, Unsizable as W, Reading as _, Options as a, SshEndpoint as b, CreateRequest as c, Machine as d, MachineSpec as f, PublicKeys as g, Prebuilt as h, Interface as i, Conflict as j, Capacity as k, Desired as l, PrebuildRequest as m, CreateOptions as n, client_d_exports as o, Phase as p, retryable as q, HostEntry as r, Checkpoint as s, Client as t, Host as u, Runtime as v, stateLabel as w, SshLogin as x, Setup as y, PinMismatch as z };
@@ -349,10 +349,25 @@ const Usage = Schema.Union([Schema.Struct({
349
349
  ...usageFields,
350
350
  unread: Schema.Array(Id)
351
351
  })]).annotate({ identifier: "Usage" });
352
- /** Nothing logs the script: it can carry secrets. */
352
+ const publicKeyLine = /^(?:ssh|ecdsa|sk)-[a-z0-9@.-]+ [A-Za-z0-9+/]+={0,3}(?: .*)?$/u;
353
+ const blankLine = /^\s*$/u;
354
+ /**
355
+ * Public keys, as `.pub` files hold them: each line that isn't blank is `<type> <base64>
356
+ * [comment]`, the type an OpenSSH key's, its certificate's or a hardware key's, and at least one
357
+ * line is. Anything else, a private key included, is refused.
358
+ */
359
+ const PublicKeys = Schema.String.check(Schema.makeFilter((text) => {
360
+ const lines = text.split("\n").filter((line) => !blankLine.test(line));
361
+ return lines.length > 0 && lines.every((line) => publicKeyLine.test(line)) || "each line that isn't blank is a public key, <type> <base64> [comment], as a .pub file holds it";
362
+ }));
363
+ /**
364
+ * Nothing logs the script: it can carry secrets. `authorizedKeys` is appended to the login user's
365
+ * `~/.ssh/authorized_keys` once the script exits 0, through the guest's `sudo`.
366
+ */
353
367
  const Setup = Schema.Struct({
354
368
  script: Schema.String,
355
- timeoutSeconds: Schema.optionalKey(Size)
369
+ timeoutSeconds: Schema.optionalKey(Size),
370
+ authorizedKeys: Schema.optionalKey(PublicKeys)
356
371
  });
357
372
  const specFields = {
358
373
  base: Schema.String,
@@ -547,7 +562,7 @@ const actionsByName = Action.byName(Http.actions);
547
562
  //#endregion
548
563
  //#region src/release.ts
549
564
  /** Also the version of the clankerbox CLI released with it. */
550
- const version = "0.19.0";
565
+ const version = "0.20.0";
551
566
  /** major.minor: releases that share it speak the same API. */
552
567
  const release = (of) => of.split(".").slice(0, 2).join(".");
553
568
  /** A host refuses a request whose `release` differs from its own, or that has none. */
@@ -755,4 +770,4 @@ const make = (hosts, options) => Effect.gen(function* () {
755
770
  });
756
771
  const layer = (hosts, options) => Layer.effect(Client, make(hosts, options));
757
772
  //#endregion
758
- export { formatId as A, NotFound as B, SshLogin as C, HostId as D, stateLabel as E, Conflict as F, ScriptFailed as G, NotOffered as H, HostError as I, Unsizable as J, Superseded as K, Internal as L, parseName as M, Capacity as N, Id as O, ClankerboxError as P, Invalid as R, SshEndpoint as S, Usage as T, PinMismatch as U, NotMade as V, Refused as W, hostErrors as X, WrongState as Y, retryable as Z, Phase as _, release as a, Runtime as b, Http as c, Checkpoint as d, CreateRequest as f, MachineSpec as g, Machine as h, describeIssues as i, parseId as j, Name as k, actionsByName as l, Host as m, layer as n, version as o, Desired as p, Unavailable as q, describeFileError as r, versionHeader as s, client_exports as t, readTimeout as u, PrebuildRequest as v, TailnetStatus as w, Setup as x, Prebuilt as y, Missing as z };
773
+ export { Name as A, Missing as B, SshEndpoint as C, stateLabel as D, Usage as E, ClankerboxError as F, Refused as G, NotMade as H, Conflict as I, Unavailable as J, ScriptFailed as K, HostError as L, parseId as M, parseName as N, HostId as O, Capacity as P, retryable as Q, Internal as R, Setup as S, TailnetStatus as T, NotOffered as U, NotFound as V, PinMismatch as W, WrongState as X, Unsizable as Y, hostErrors as Z, Phase as _, release as a, PublicKeys as b, Http as c, Checkpoint as d, CreateRequest as f, MachineSpec as g, Machine as h, describeIssues as i, formatId as j, Id as k, actionsByName as l, Host as m, layer as n, version as o, Desired as p, Superseded as q, describeFileError as r, versionHeader as s, client_exports as t, readTimeout as u, PrebuildRequest as v, SshLogin as w, Runtime as x, Prebuilt as y, Invalid as z };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as Conflict, B as ScriptFailed, C as stateLabel, D as readTimeout, E as actionsByName, F as NotFound, G as hostErrors, H as Unavailable, I as NotMade, K as retryable, L as NotOffered, M as Internal, N as Invalid, O as Capacity, P as Missing, R as PinMismatch, S as Usage, T as Http, U as Unsizable, V as Superseded, W as WrongState, _ as Runtime, b as SshLogin, c as CreateRequest, d as Machine, f as MachineSpec, g as Reading, h as Prebuilt, i as Interface, j as HostError, k as ClankerboxError, l as Desired, m as PrebuildRequest, n as CreateOptions$1, o as client_d_exports, p as Phase, s as Checkpoint, u as Host, v as Setup, w as Declared, x as TailnetStatus, y as SshEndpoint, z as Refused } from "./client-BodRGKAX.mjs";
1
+ import { A as ClankerboxError, B as Refused, C as Usage, D as actionsByName, E as Http, F as Missing, G as WrongState, H as Superseded, I as NotFound, K as hostErrors, L as NotMade, M as HostError, N as Internal, O as readTimeout, P as Invalid, R as NotOffered, S as TailnetStatus, T as Declared, U as Unavailable, V as ScriptFailed, W as Unsizable, _ as Reading, b as SshEndpoint, c as CreateRequest, d as Machine, f as MachineSpec, g as PublicKeys, h as Prebuilt, i as Interface, j as Conflict, k as Capacity, l as Desired, m as PrebuildRequest, n as CreateOptions$1, o as client_d_exports, p as Phase, q as retryable, s as Checkpoint, u as Host, v as Runtime, w as stateLabel, x as SshLogin, y as Setup, z as PinMismatch } from "./client-Dr3PcuCP.mjs";
2
2
  import { Effect, FileSystem, Path, PlatformError, Schema, Scope } from "effect";
3
3
  //#region src/ids.d.ts
4
4
  export declare const HostId: Schema.String;
@@ -18,8 +18,8 @@ declare namespace prebuild_d_exports {
18
18
  export { CreateOptions, Created, build, create, nameOf };
19
19
  }
20
20
  /**
21
- * A digest of the spec's label, base, sizes, setup script as sent, and the host's runtime
22
- * version: a `ram` checkpoint restores only under the release that saved it, so after a runtime
21
+ * A digest of the spec's label, base, sizes, setup script as sent, authorized keys, and the host's
22
+ * runtime version: a `ram` checkpoint restores only under the release that saved it, so after a runtime
23
23
  * bump a create misses the old prebuild instead of failing to restore it. The setup's timeout and
24
24
  * the base's image are no part of it.
25
25
  */
@@ -87,6 +87,8 @@ export type Overrides = { readonly [K in keyof Sizes]?: Sizes[K] | undefined; }
87
87
  readonly setup?: string | undefined;
88
88
  readonly setupTimeoutSeconds?: number | undefined;
89
89
  readonly host?: string | undefined;
90
+ /** A public-key file, already resolved, which a setup needs and which is read only for one. */
91
+ readonly authorizedKeys?: string | undefined;
90
92
  };
91
93
  export interface SpecRequest {
92
94
  readonly spec: MachineSpec;
@@ -107,6 +109,11 @@ export declare const specRequest: (what: string, profile: LoadedProfile | undefi
107
109
  export declare const packRecipe: (directory: string) => Effect.Effect<string, Invalid, FileSystem.FileSystem>;
108
110
  /** A script file's text, or a recipe directory packed into one script. */
109
111
  export declare const readSetup: (path: string) => Effect.Effect<string, Invalid, FileSystem.FileSystem>;
112
+ /**
113
+ * A public-key file's text, such as `~/.ssh/id_ed25519.pub`'s, for a setup's `authorizedKeys`, with
114
+ * its line endings as `\n`.
115
+ */
116
+ export declare const readAuthorizedKeys: (path: string) => Effect.Effect<string, Invalid, FileSystem.FileSystem>;
110
117
  //#endregion
111
118
  //#region src/ssh.d.ts
112
119
  export interface SshTarget {
@@ -145,4 +152,4 @@ export declare const formatMib: (mib: number) => string;
145
152
  /** As a size flag takes it: `60G`. */
146
153
  export declare const formatGib: (gib: number) => string;
147
154
  //#endregion
148
- export { Capacity, Checkpoint, ClankerboxError, client_d_exports as Client, Conflict, CreateRequest, Declared, Desired, Host, HostError, Http, Internal, Invalid, Machine, MachineSpec, Missing, NotFound, NotMade, NotOffered, Phase, PinMismatch, prebuild_d_exports as Prebuild, PrebuildRequest, Prebuilt, Reading, Refused, Runtime, ScriptFailed, Setup, SshEndpoint, SshLogin, Superseded, TailnetStatus, Unavailable, Unsizable, Usage, WrongState, actionsByName, hostErrors, readTimeout, retryable, stateLabel };
155
+ export { Capacity, Checkpoint, ClankerboxError, client_d_exports as Client, Conflict, CreateRequest, Declared, Desired, Host, HostError, Http, Internal, Invalid, Machine, MachineSpec, Missing, NotFound, NotMade, NotOffered, Phase, PinMismatch, prebuild_d_exports as Prebuild, PrebuildRequest, Prebuilt, PublicKeys, Reading, Refused, Runtime, ScriptFailed, Setup, SshEndpoint, SshLogin, Superseded, TailnetStatus, Unavailable, Unsizable, Usage, WrongState, actionsByName, hostErrors, readTimeout, retryable, stateLabel };
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { A as formatId, B as NotFound, C as SshLogin, D as HostId, E as stateLabel, F as Conflict, G as ScriptFailed, H as NotOffered, I as HostError, J as Unsizable, K as Superseded, L as Internal, M as parseName, N as Capacity, O as Id, P as ClankerboxError, R as Invalid, S as SshEndpoint, T as Usage, U as PinMismatch, V as NotMade, W as Refused, X as hostErrors, Y as WrongState, Z as retryable, _ as Phase, a as release, b as Runtime, c as Http, d as Checkpoint, f as CreateRequest, g as MachineSpec, h as Machine, i as describeIssues, j as parseId, k as Name, l as actionsByName, m as Host, o as version, p as Desired, q as Unavailable, r as describeFileError, s as versionHeader, t as client_exports, u as readTimeout, v as PrebuildRequest, w as TailnetStatus, x as Setup, y as Prebuilt, z as Missing } from "./client-BwhQ_WUi.mjs";
2
+ import { A as Name, B as Missing, C as SshEndpoint, D as stateLabel, E as Usage, F as ClankerboxError, G as Refused, H as NotMade, I as Conflict, J as Unavailable, K as ScriptFailed, L as HostError, M as parseId, N as parseName, O as HostId, P as Capacity, Q as retryable, R as Internal, S as Setup, T as TailnetStatus, U as NotOffered, V as NotFound, W as PinMismatch, X as WrongState, Y as Unsizable, Z as hostErrors, _ as Phase, a as release, b as PublicKeys, c as Http, d as Checkpoint, f as CreateRequest, g as MachineSpec, h as Machine, i as describeIssues, j as formatId, k as Id, l as actionsByName, m as Host, o as version, p as Desired, q as Superseded, r as describeFileError, s as versionHeader, t as client_exports, u as readTimeout, v as PrebuildRequest, w as SshLogin, x as Runtime, y as Prebuilt, z as Invalid } from "./client-S3cTnrsp.mjs";
3
3
  import { Effect, FileSystem, Option, Path, Predicate, Record, Schema } from "effect";
4
4
  import { Base64, Hex } from "effect/encoding";
5
5
  //#region src/prebuild.ts
@@ -11,8 +11,8 @@ var prebuild_exports = /* @__PURE__ */ __exportAll({
11
11
  const prefix = "prebuilt-";
12
12
  const digestDigits = 12;
13
13
  /**
14
- * A digest of the spec's label, base, sizes, setup script as sent, and the host's runtime
15
- * version: a `ram` checkpoint restores only under the release that saved it, so after a runtime
14
+ * A digest of the spec's label, base, sizes, setup script as sent, authorized keys, and the host's
15
+ * runtime version: a `ram` checkpoint restores only under the release that saved it, so after a runtime
16
16
  * bump a create misses the old prebuild instead of failing to restore it. The setup's timeout and
17
17
  * the base's image are no part of it.
18
18
  */
@@ -23,6 +23,7 @@ const nameOf = (spec, host) => Effect.promise(() => globalThis.crypto.subtle.dig
23
23
  spec.ramMib,
24
24
  spec.diskGib,
25
25
  spec.setup?.script ?? null,
26
+ spec.setup?.authorizedKeys ?? null,
26
27
  host.runtimeVersion
27
28
  ])))).pipe(Effect.map((digest) => `${prefix}${Hex.encode(new Uint8Array(digest)).slice(0, digestDigits)}`));
28
29
  const lookup = (client, id) => client.getCheckpoint({ id }).pipe(Effect.map(Option.some), Effect.catchTag("NotFound", () => Effect.succeedNone));
@@ -131,6 +132,21 @@ const readSetup = (path) => Effect.gen(function* () {
131
132
  message: `couldn't read setup ${path}: ${describeFileError(error)}`,
132
133
  file: path
133
134
  }))));
135
+ const decodePublicKeys = Schema.decodeUnknownEffect(PublicKeys);
136
+ /**
137
+ * A public-key file's text, such as `~/.ssh/id_ed25519.pub`'s, for a setup's `authorizedKeys`, with
138
+ * its line endings as `\n`.
139
+ */
140
+ const readAuthorizedKeys = (path) => Effect.gen(function* () {
141
+ const text = yield* (yield* FileSystem.FileSystem).readFileString(path).pipe(Effect.mapError((error) => new Invalid({
142
+ message: `couldn't read authorized keys ${path}: ${describeFileError(error)}`,
143
+ file: path
144
+ })));
145
+ return yield* decodePublicKeys(text.replaceAll("\r\n", "\n")).pipe(Effect.mapError((error) => new Invalid({
146
+ message: `authorized keys ${path}: ${describeIssues(error)}`,
147
+ file: path
148
+ })));
149
+ });
134
150
  //#endregion
135
151
  //#region src/profile.ts
136
152
  /**
@@ -189,16 +205,18 @@ const specRequest = (what, profile, overrides, names) => Effect.gen(function* ()
189
205
  const file = overrides.setup ?? profile?.setup?.path;
190
206
  const timeoutSeconds = overrides.setupTimeoutSeconds ?? profile?.setup?.timeoutSeconds;
191
207
  if (file === void 0 && overrides.setupTimeoutSeconds !== void 0) return yield* new Invalid({ message: `${what}: ${names?.get("setupTimeoutSeconds") ?? "the setup timeout"} needs a setup to time` });
192
- const script = file === void 0 ? void 0 : yield* readSetup(file);
208
+ const keys = overrides.authorizedKeys;
209
+ const setup = file === void 0 ? void 0 : keys === void 0 ? yield* new Invalid({ message: `${what}: a setup needs ${names?.get("authorizedKeys") ?? "authorizedKeys"}, the public keys the host installs for the login user after it` }) : Record.filter({
210
+ script: yield* readSetup(file),
211
+ timeoutSeconds,
212
+ authorizedKeys: yield* readAuthorizedKeys(keys)
213
+ }, Predicate.isNotUndefined);
193
214
  const fields = {
194
215
  base: overrides.base ?? profile?.base,
195
216
  cpu: overrides.cpu ?? profile?.cpu,
196
217
  ramMib: overrides.ramMib ?? profile?.ramMib,
197
218
  diskGib: overrides.diskGib ?? profile?.diskGib,
198
- setup: script === void 0 ? void 0 : Record.filter({
199
- script,
200
- timeoutSeconds
201
- }, Predicate.isNotUndefined),
219
+ setup,
202
220
  profile: profile?.label
203
221
  };
204
222
  return {
@@ -274,4 +292,4 @@ const formatMib = (mib) => mib >= 1024 && mib % 512 === 0 ? `${mib / mibPerGib}G
274
292
  /** As a size flag takes it: `60G`. */
275
293
  const formatGib = (gib) => `${gib}G`;
276
294
  //#endregion
277
- export { Capacity, Checkpoint, ClankerboxError, client_exports as Client, Conflict, CreateRequest, Desired, Host, HostError, HostId, Http, Id, Internal, Invalid, Machine, MachineSpec, Missing, Name, NotFound, NotMade, NotOffered, Phase, PinMismatch, prebuild_exports as Prebuild, PrebuildRequest, Prebuilt, Profile, Refused, Runtime, ScriptFailed, Setup, SshEndpoint, SshLogin, Superseded, TailnetStatus, Unavailable, Unsizable, Usage, WrongState, actionsByName, describeFileError, describeIssues, formatGib, formatId, formatMib, hostErrors, knownHostsLine, loadProfile, mibPerGib, packRecipe, parseId, parseName, pinnedSsh, readSetup, readTimeout, release, retryable, specRequest, sshTarget, stateLabel, version, versionHeader };
295
+ export { Capacity, Checkpoint, ClankerboxError, client_exports as Client, Conflict, CreateRequest, Desired, Host, HostError, HostId, Http, Id, Internal, Invalid, Machine, MachineSpec, Missing, Name, NotFound, NotMade, NotOffered, Phase, PinMismatch, prebuild_exports as Prebuild, PrebuildRequest, Prebuilt, Profile, PublicKeys, Refused, Runtime, ScriptFailed, Setup, SshEndpoint, SshLogin, Superseded, TailnetStatus, Unavailable, Unsizable, Usage, WrongState, actionsByName, describeFileError, describeIssues, formatGib, formatId, formatMib, hostErrors, knownHostsLine, loadProfile, mibPerGib, packRecipe, parseId, parseName, pinnedSsh, readAuthorizedKeys, readSetup, readTimeout, release, retryable, specRequest, sshTarget, stateLabel, version, versionHeader };
package/dist/node.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { N as Invalid, a as Options, r as HostEntry, t as Client } from "./client-BodRGKAX.mjs";
1
+ import { P as Invalid, a as Options, r as HostEntry, t as Client } from "./client-Dr3PcuCP.mjs";
2
2
  import { Layer } from "effect";
3
3
  //#region src/node.d.ts
4
4
  /**
package/dist/node.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { n as layer$1 } from "./client-BwhQ_WUi.mjs";
1
+ import { n as layer$1 } from "./client-S3cTnrsp.mjs";
2
2
  import { Layer } from "effect";
3
3
  import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
4
4
  //#region src/node.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjermundgaraba/clankerbox-sdk",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "clankerbox's API contract and client library, for Effect",
5
5
  "license": "MIT",
6
6
  "repository": {