@fabiofiorita/porcelain 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/server/src/cli/main.mjs +268 -266
  4. package/web/dist/assets/_-SXora1ht.js +1 -0
  5. package/web/dist/assets/_paired-BCPA-YCM.js +1 -0
  6. package/web/dist/assets/{_paired-DulRqWh5.js → _paired-CGQTTSHp.js} +1 -1
  7. package/web/dist/assets/_paired-pNBoeL-S.js +1 -0
  8. package/web/dist/assets/_paired-sVJK5H-T.js +1 -0
  9. package/web/dist/assets/_section-DQP8WbsY.js +1 -0
  10. package/web/dist/assets/_worktreeId-5htkHyl6.js +1 -0
  11. package/web/dist/assets/_worktreeId-BCPA-YCM.js +1 -0
  12. package/web/dist/assets/_worktreeId-BWG5NAM5.js +1 -0
  13. package/web/dist/assets/_worktreeId-pNBoeL-S.js +1 -0
  14. package/web/dist/assets/access-CPhEsXzL.js +1 -0
  15. package/web/dist/assets/cloneFileDiffMetadata-OfK4h7R8.js +1 -0
  16. package/web/dist/assets/connected-workspace-BXEtKqT6.js +1 -0
  17. package/web/dist/assets/desktop-actions-RoxqQ9e0.js +23 -0
  18. package/web/dist/assets/file-editor-CFsceVoh.js +588 -0
  19. package/web/dist/assets/files-C5tj8k0_.js +17 -0
  20. package/web/dist/assets/{index-l0ZrxQZJ.js → index-DorwZ1cT.js} +4 -4
  21. package/web/dist/assets/index-DyVQojbz.css +2 -0
  22. package/web/dist/assets/{lazyRouteComponent-DzjAS4Ua.js → lazyRouteComponent-B9x-YtK9.js} +1 -1
  23. package/web/dist/assets/{link-82OWhnou.js → link-BoThC6As.js} +1 -1
  24. package/web/dist/assets/pair-4yJqvWh6.js +1 -0
  25. package/web/dist/assets/pair-BCPA-YCM.js +1 -0
  26. package/web/dist/assets/settings-page-DaJrOaSI.js +1357 -0
  27. package/web/dist/assets/store-CbAgmgQ3.js +1556 -0
  28. package/web/dist/assets/{useMatch-BfG81Osp.js → useMatch-CPMblfIp.js} +1 -1
  29. package/web/dist/assets/useRouterState-CxryhT4B.js +1 -0
  30. package/web/dist/assets/{workspace-error-WgJhsFQh.js → workspace-error-Ch3XHtz-.js} +1 -1
  31. package/web/dist/assets/{workspace-pending-CuIxZqCb.js → workspace-pending-BOqTN6bt.js} +1 -1
  32. package/web/dist/index.html +10 -10
  33. package/web/dist/assets/_-CUiVgd1P.js +0 -1
  34. package/web/dist/assets/_paired-BQ4zvgTl.js +0 -1
  35. package/web/dist/assets/_paired-D53rFQOm.js +0 -1
  36. package/web/dist/assets/_paired-b-omTaSX.js +0 -1
  37. package/web/dist/assets/_section-cagtcy7G.js +0 -1
  38. package/web/dist/assets/_worktreeId-CThUIoTM.js +0 -1
  39. package/web/dist/assets/_worktreeId-D53rFQOm.js +0 -1
  40. package/web/dist/assets/_worktreeId-DpH-vYss.js +0 -1
  41. package/web/dist/assets/_worktreeId-b-omTaSX.js +0 -1
  42. package/web/dist/assets/access-DZtk9_ZO.js +0 -1
  43. package/web/dist/assets/cloneFileDiffMetadata-zVRGqYgv.js +0 -1
  44. package/web/dist/assets/connected-workspace-CJrJi9V0.js +0 -1
  45. package/web/dist/assets/desktop-actions-5oLi8NTj.js +0 -11
  46. package/web/dist/assets/edit-file-C2ZWXEDJ.js +0 -1568
  47. package/web/dist/assets/file-editor-Tv5rckrw.js +0 -588
  48. package/web/dist/assets/files-BbuoUlj4.js +0 -17
  49. package/web/dist/assets/index-C-v0DMR2.css +0 -2
  50. package/web/dist/assets/pair-VKM46ps6.js +0 -1
  51. package/web/dist/assets/pair-b-omTaSX.js +0 -1
  52. package/web/dist/assets/settings-page-CH2ar5aA.js +0 -1345
  53. package/web/dist/assets/useRouterState-B-M09Je-.js +0 -1
@@ -2995,12 +2995,12 @@ import {
2995
2995
  } from "effect";
2996
2996
 
2997
2997
  // apps/server/src/config/environment-settings.ts
2998
- import { Config as Config2, Context as Context68, Effect as Effect23, Layer as Layer20, Option as Option12, Schema as Schema182 } from "effect";
2998
+ import { Config as Config2, Context as Context68, Effect as Effect23, Layer as Layer20, Option as Option12, Schema as Schema183 } from "effect";
2999
2999
 
3000
3000
  // apps/server/src/config/server-settings.ts
3001
3001
  import { isIP } from "node:net";
3002
3002
  import { isAbsolute } from "node:path";
3003
- import { Effect as Effect22, Result as Result4, Schema as Schema181 } from "effect";
3003
+ import { Effect as Effect22, Result as Result4, Schema as Schema182 } from "effect";
3004
3004
 
3005
3005
  // apps/server/src/config/errors/serve-configuration-error.ts
3006
3006
  var ServeConfigurationError = class extends Error {
@@ -7005,8 +7005,43 @@ var ReviewsApi = class extends porcelainApi.add(
7005
7005
  ) {
7006
7006
  };
7007
7007
 
7008
+ // packages/contracts/src/reviews/summary-api.ts
7009
+ import { HttpApiEndpoint as HttpApiEndpoint7, HttpApiGroup as HttpApiGroup7, HttpApiSchema as HttpApiSchema4 } from "effect/http-api";
7010
+
7011
+ // packages/contracts/src/reviews/review-summary.ts
7012
+ import { Schema as Schema181 } from "effect";
7013
+ var readReviewSummaryParamsSchema = Schema181.Struct({
7014
+ token: Schema181.String.check(Schema181.isUUID())
7015
+ });
7016
+ var readReviewSummaryQuerySchema = Schema181.Struct({
7017
+ expires: isoDateTimeSchema,
7018
+ signature: Schema181.String.check(Schema181.isPattern(/^[A-Za-z0-9_-]{43}$/))
7019
+ });
7020
+ var readReviewSummaryResponseSchema = Schema181.String;
7021
+
7022
+ // packages/contracts/src/reviews/summary-api.ts
7023
+ var ReviewSummaryApi = class extends porcelainApi.add(
7024
+ HttpApiGroup7.make("reviewSummary").add(
7025
+ HttpApiEndpoint7.get("readReviewSummary", "/review-summaries/:token", {
7026
+ disableCodecs: true,
7027
+ params: readReviewSummaryParamsSchema,
7028
+ query: readReviewSummaryQuerySchema.fields,
7029
+ success: readReviewSummaryResponseSchema.pipe(
7030
+ HttpApiSchema4.asText({ contentType: "text/html; charset=utf-8" })
7031
+ ),
7032
+ error: ReviewSummaryNotFoundError.pipe(
7033
+ HttpApiSchema4.asNoContent({
7034
+ decode: () => new ReviewSummaryNotFoundError()
7035
+ }),
7036
+ HttpApiSchema4.status("NotFound")
7037
+ )
7038
+ })
7039
+ )
7040
+ ) {
7041
+ };
7042
+
7008
7043
  // packages/contracts/src/shared/client-api.ts
7009
- var PorcelainClientApi = class extends porcelainApi.addHttpApi(AccessApi).addHttpApi(ProjectsApi).addHttpApi(FilesApi).addHttpApi(ChangesApi).addHttpApi(ReviewsApi).addHttpApi(GitActionsApi) {
7044
+ var PorcelainClientApi = class extends porcelainApi.addHttpApi(AccessApi).addHttpApi(ProjectsApi).addHttpApi(FilesApi).addHttpApi(ChangesApi).addHttpApi(ReviewsApi).addHttpApi(ReviewSummaryApi).addHttpApi(GitActionsApi) {
7010
7045
  };
7011
7046
 
7012
7047
  // apps/server/src/config/limits.ts
@@ -7271,35 +7306,35 @@ function isValidListenHost(host) {
7271
7306
  return false;
7272
7307
  return labels.every((label) => HOSTNAME_LABEL.test(label));
7273
7308
  }
7274
- var absolutePathSchema2 = Schema181.String.check(
7275
- Schema181.makeFilter((path) => isAbsolute(path) && !path.includes("\0"), {
7309
+ var absolutePathSchema2 = Schema182.String.check(
7310
+ Schema182.makeFilter((path) => isAbsolute(path) && !path.includes("\0"), {
7276
7311
  message: "Path must be absolute and contain no null bytes"
7277
7312
  })
7278
7313
  );
7279
- var listenHostSchema = Schema181.String.check(
7280
- Schema181.makeFilter(isValidListenHost, {
7314
+ var listenHostSchema = Schema182.String.check(
7315
+ Schema182.makeFilter(isValidListenHost, {
7281
7316
  message: "Host must be a valid IP address or hostname"
7282
7317
  })
7283
7318
  );
7284
- var listenPortSchema = Schema181.Int.check(
7285
- Schema181.isBetween({ minimum: 0, maximum: LIMITS.network.maxPort })
7319
+ var listenPortSchema = Schema182.Int.check(
7320
+ Schema182.isBetween({ minimum: 0, maximum: LIMITS.network.maxPort })
7286
7321
  );
7287
- var serverSettingsSchema = Schema181.Struct({
7322
+ var serverSettingsSchema = Schema182.Struct({
7288
7323
  dataDirectory: absolutePathSchema2,
7289
7324
  projectHome: absolutePathSchema2,
7290
7325
  host: listenHostSchema.pipe(
7291
- Schema181.withDecodingDefault(Effect22.succeed(DEFAULT_LISTEN_HOST))
7326
+ Schema182.withDecodingDefault(Effect22.succeed(DEFAULT_LISTEN_HOST))
7292
7327
  ),
7293
7328
  port: listenPortSchema.pipe(
7294
- Schema181.withDecodingDefault(Effect22.succeed(DEFAULT_LISTEN_PORT))
7329
+ Schema182.withDecodingDefault(Effect22.succeed(DEFAULT_LISTEN_PORT))
7295
7330
  ),
7296
- webRoot: Schema181.optional(absolutePathSchema2),
7297
- allowedHosts: Schema181.Array(listenHostSchema).pipe(
7298
- Schema181.withDecodingDefault(Effect22.succeed([]))
7331
+ webRoot: Schema182.optional(absolutePathSchema2),
7332
+ allowedHosts: Schema182.Array(listenHostSchema).pipe(
7333
+ Schema182.withDecodingDefault(Effect22.succeed([]))
7299
7334
  )
7300
7335
  });
7301
7336
  function readServerSettings(input) {
7302
- const parsed2 = Schema181.decodeUnknownResult(serverSettingsSchema)(input);
7337
+ const parsed2 = Schema182.decodeUnknownResult(serverSettingsSchema)(input);
7303
7338
  if (Result4.isFailure(parsed2))
7304
7339
  throw new ServeConfigurationError(
7305
7340
  `Invalid server settings: ${parsed2.failure.message}`
@@ -7329,8 +7364,8 @@ var EnvironmentSettings = class extends Context68.Service()("@porcelain/server/E
7329
7364
  static layer = Layer20.succeed(this, {
7330
7365
  read: Effect23.gen(function* () {
7331
7366
  const settings = yield* configuration;
7332
- const allowedHosts = yield* Schema182.decodeUnknownEffect(
7333
- Schema182.Array(listenHostSchema)
7367
+ const allowedHosts = yield* Schema183.decodeUnknownEffect(
7368
+ Schema183.Array(listenHostSchema)
7334
7369
  )(settings.allowedHosts);
7335
7370
  return { ...settings, allowedHosts };
7336
7371
  })
@@ -7338,11 +7373,11 @@ var EnvironmentSettings = class extends Context68.Service()("@porcelain/server/E
7338
7373
  };
7339
7374
 
7340
7375
  // apps/server/src/cli/package-version.ts
7341
- import { Effect as Effect26, Path as Path3, Schema as Schema189 } from "effect";
7376
+ import { Effect as Effect26, Path as Path3, Schema as Schema190 } from "effect";
7342
7377
  import { fileURLToPath as fileURLToPath2 } from "node:url";
7343
7378
 
7344
7379
  // apps/server/src/installer/json-file.ts
7345
- import { Effect as Effect24, FileSystem as FileSystem3, Path as Path2, Schema as Schema183, Result as Result5 } from "effect";
7380
+ import { Effect as Effect24, FileSystem as FileSystem3, Path as Path2, Schema as Schema184, Result as Result5 } from "effect";
7346
7381
  import { randomUUID as randomUUID2 } from "node:crypto";
7347
7382
  var exists = Effect24.fn("Installer.exists")(function* (path) {
7348
7383
  const fs = yield* FileSystem3.FileSystem;
@@ -7357,7 +7392,7 @@ var readJsonFile = Effect24.fn("Installer.readJsonFile")(function* (path, schema
7357
7392
  )
7358
7393
  );
7359
7394
  if (text.kind === "missing") return { kind: "missing" };
7360
- const result = Schema183.decodeUnknownResult(Schema183.fromJsonString(schema))(
7395
+ const result = Schema184.decodeUnknownResult(Schema184.fromJsonString(schema))(
7361
7396
  text.text
7362
7397
  );
7363
7398
  return Result5.isSuccess(result) ? { kind: "value", value: result.success } : { kind: "invalid" };
@@ -7386,11 +7421,11 @@ var writeJsonFile = Effect24.fn("Installer.writeJsonFile")(function* (path, valu
7386
7421
  });
7387
7422
 
7388
7423
  // apps/server/src/installer/records.ts
7389
- import { Effect as Effect25, Schema as Schema187 } from "effect";
7424
+ import { Effect as Effect25, Schema as Schema188 } from "effect";
7390
7425
 
7391
7426
  // apps/server/src/installer/errors/invalid-installed-record-error.ts
7392
- import { Schema as Schema184 } from "effect";
7393
- var InvalidInstalledRecordError = class extends Schema184.TaggedError()(
7427
+ import { Schema as Schema185 } from "effect";
7428
+ var InvalidInstalledRecordError = class extends Schema185.TaggedError()(
7394
7429
  "InvalidInstalledRecordError",
7395
7430
  {}
7396
7431
  ) {
@@ -7400,8 +7435,8 @@ var InvalidInstalledRecordError = class extends Schema184.TaggedError()(
7400
7435
  };
7401
7436
 
7402
7437
  // apps/server/src/installer/errors/invalid-service-configuration-error.ts
7403
- import { Schema as Schema185 } from "effect";
7404
- var InvalidServiceConfigurationError = class extends Schema185.TaggedError()(
7438
+ import { Schema as Schema186 } from "effect";
7439
+ var InvalidServiceConfigurationError = class extends Schema186.TaggedError()(
7405
7440
  "InvalidServiceConfigurationError",
7406
7441
  {}
7407
7442
  ) {
@@ -7411,11 +7446,11 @@ var InvalidServiceConfigurationError = class extends Schema185.TaggedError()(
7411
7446
  };
7412
7447
 
7413
7448
  // apps/server/src/installer/errors/invalid-update-journal-error.ts
7414
- import { Schema as Schema186 } from "effect";
7415
- var InvalidUpdateJournalError = class extends Schema186.TaggedError()(
7449
+ import { Schema as Schema187 } from "effect";
7450
+ var InvalidUpdateJournalError = class extends Schema187.TaggedError()(
7416
7451
  "InvalidUpdateJournalError",
7417
7452
  {
7418
- path: Schema186.String
7453
+ path: Schema187.String
7419
7454
  }
7420
7455
  ) {
7421
7456
  get message() {
@@ -7424,34 +7459,34 @@ var InvalidUpdateJournalError = class extends Schema186.TaggedError()(
7424
7459
  };
7425
7460
 
7426
7461
  // apps/server/src/installer/records.ts
7427
- var serviceConfigurationSchema = Schema187.Struct({
7428
- dataDirectory: Schema187.String,
7429
- port: Schema187.Finite.check(Schema187.isInt())
7462
+ var serviceConfigurationSchema = Schema188.Struct({
7463
+ dataDirectory: Schema188.String,
7464
+ port: Schema188.Finite.check(Schema188.isInt())
7430
7465
  });
7431
- var installedRecordSchema = Schema187.Struct({
7432
- version: Schema187.String
7466
+ var installedRecordSchema = Schema188.Struct({
7467
+ version: Schema188.String
7433
7468
  });
7434
- var updateJournalSchema = Schema187.Struct({
7469
+ var updateJournalSchema = Schema188.Struct({
7435
7470
  installed: installedRecordSchema,
7436
- backup: Schema187.String,
7437
- target: Schema187.optional(Schema187.String),
7438
- healthy: Schema187.optional(Schema187.Boolean)
7439
- });
7440
- var updateRecordSchema = Schema187.Struct({
7441
- from: Schema187.String,
7442
- target: Schema187.String,
7443
- stage: Schema187.Literals([
7471
+ backup: Schema188.String,
7472
+ target: Schema188.optional(Schema188.String),
7473
+ healthy: Schema188.optional(Schema188.Boolean)
7474
+ });
7475
+ var updateRecordSchema = Schema188.Struct({
7476
+ from: Schema188.String,
7477
+ target: Schema188.String,
7478
+ stage: Schema188.Literals([
7444
7479
  "downloading",
7445
7480
  "installing",
7446
7481
  "restarting",
7447
7482
  "updated",
7448
7483
  "failed"
7449
7484
  ]),
7450
- reason: Schema187.optional(Schema187.String)
7485
+ reason: Schema188.optional(Schema188.String)
7451
7486
  });
7452
- var packageManifestSchema = Schema187.Struct({
7453
- name: Schema187.optional(Schema187.String),
7454
- version: Schema187.NonEmptyString
7487
+ var packageManifestSchema = Schema188.Struct({
7488
+ name: Schema188.optional(Schema188.String),
7489
+ version: Schema188.NonEmptyString
7455
7490
  });
7456
7491
  var readInstalledRecord = Effect25.fn("Installer.readInstalledRecord")(
7457
7492
  function* (path) {
@@ -7485,10 +7520,10 @@ var readUpdateJournal = Effect25.fn("Installer.readUpdateJournal")(
7485
7520
  );
7486
7521
 
7487
7522
  // apps/server/src/cli/errors/cli-package-version-error.ts
7488
- import { Schema as Schema188 } from "effect";
7489
- var CliPackageVersionError = class extends Schema188.TaggedError()(
7523
+ import { Schema as Schema189 } from "effect";
7524
+ var CliPackageVersionError = class extends Schema189.TaggedError()(
7490
7525
  "CliPackageVersionError",
7491
- { path: Schema188.String }
7526
+ { path: Schema189.String }
7492
7527
  ) {
7493
7528
  get message() {
7494
7529
  return `Porcelain could not read a required package version from ${this.path}. Check the package build.`;
@@ -7504,7 +7539,7 @@ var cliPackageRoot = Effect26.fn("Cli.packageRoot")(function* (moduleUrl = impor
7504
7539
  );
7505
7540
  const identity3 = yield* readJsonFile(
7506
7541
  pathApi.join(serverRoot, "package.json"),
7507
- Schema189.Struct({ name: Schema189.String })
7542
+ Schema190.Struct({ name: Schema190.String })
7508
7543
  );
7509
7544
  return identity3.kind === "value" && identity3.value.name === "@porcelain/server" ? serverRoot : pathApi.dirname(serverRoot);
7510
7545
  });
@@ -7513,7 +7548,7 @@ var readCliVersion = Effect26.fn("Cli.readVersion")(function* (packageRoot) {
7513
7548
  const manifestPath = pathApi.join(packageRoot, "package.json");
7514
7549
  const identity3 = yield* readJsonFile(
7515
7550
  manifestPath,
7516
- Schema189.Struct({ name: Schema189.String })
7551
+ Schema190.Struct({ name: Schema190.String })
7517
7552
  );
7518
7553
  const versionPath = identity3.kind === "value" && identity3.value.name === "@porcelain/server" ? pathApi.resolve(packageRoot, "../../package.json") : manifestPath;
7519
7554
  const manifest = yield* readJsonFile(versionPath, packageManifestSchema);
@@ -7529,7 +7564,7 @@ import { Console, Effect as Effect57, Ref as Ref3, Result as Result6 } from "eff
7529
7564
  import { CliError, Command as Command2 } from "effect/cli";
7530
7565
 
7531
7566
  // apps/server/src/cli/command-tree.ts
7532
- import { Context as Context74, Effect as Effect56, Option as Option14, Ref as Ref2, Schema as Schema229 } from "effect";
7567
+ import { Context as Context74, Effect as Effect56, Option as Option14, Ref as Ref2, Schema as Schema230 } from "effect";
7533
7568
  import { Argument, Command, Flag, GlobalFlag } from "effect/cli";
7534
7569
 
7535
7570
  // apps/server/src/cli/operations.ts
@@ -7697,8 +7732,8 @@ var commandRunner = Effect28.fn("commandRunner")(function* (limits) {
7697
7732
  });
7698
7733
 
7699
7734
  // apps/server/src/installer/errors/no-user-id-error.ts
7700
- import { Schema as Schema190 } from "effect";
7701
- var NoUserIdError = class extends Schema190.TaggedError()(
7735
+ import { Schema as Schema191 } from "effect";
7736
+ var NoUserIdError = class extends Schema191.TaggedError()(
7702
7737
  "NoUserIdError",
7703
7738
  {}
7704
7739
  ) {
@@ -7708,8 +7743,8 @@ var NoUserIdError = class extends Schema190.TaggedError()(
7708
7743
  };
7709
7744
 
7710
7745
  // apps/server/src/installer/errors/root-user-error.ts
7711
- import { Schema as Schema191 } from "effect";
7712
- var RootUserError = class extends Schema191.TaggedError()(
7746
+ import { Schema as Schema192 } from "effect";
7747
+ var RootUserError = class extends Schema192.TaggedError()(
7713
7748
  "RootUserError",
7714
7749
  {}
7715
7750
  ) {
@@ -7719,22 +7754,22 @@ var RootUserError = class extends Schema191.TaggedError()(
7719
7754
  };
7720
7755
 
7721
7756
  // apps/server/src/installer/errors/installer-operation-error.ts
7722
- import { Schema as Schema192 } from "effect";
7723
- var InstallerOperationError = class extends Schema192.TaggedError()(
7757
+ import { Schema as Schema193 } from "effect";
7758
+ var InstallerOperationError = class extends Schema193.TaggedError()(
7724
7759
  "InstallerOperationError",
7725
7760
  {
7726
- message: Schema192.String,
7727
- cause: Schema192.Defect()
7761
+ message: Schema193.String,
7762
+ cause: Schema193.Defect()
7728
7763
  }
7729
7764
  ) {
7730
7765
  };
7731
7766
 
7732
7767
  // apps/server/src/installer/errors/installer-error.ts
7733
- import { Schema as Schema222 } from "effect";
7768
+ import { Schema as Schema223 } from "effect";
7734
7769
 
7735
7770
  // apps/server/src/installer/errors/already-installed-error.ts
7736
- import { Schema as Schema193 } from "effect";
7737
- var AlreadyInstalledError = class extends Schema193.TaggedError()(
7771
+ import { Schema as Schema194 } from "effect";
7772
+ var AlreadyInstalledError = class extends Schema194.TaggedError()(
7738
7773
  "AlreadyInstalledError",
7739
7774
  {}
7740
7775
  ) {
@@ -7744,8 +7779,8 @@ var AlreadyInstalledError = class extends Schema193.TaggedError()(
7744
7779
  };
7745
7780
 
7746
7781
  // apps/server/src/installer/errors/app-managed-update-error.ts
7747
- import { Schema as Schema194 } from "effect";
7748
- var AppManagedUpdateError = class extends Schema194.TaggedError()(
7782
+ import { Schema as Schema195 } from "effect";
7783
+ var AppManagedUpdateError = class extends Schema195.TaggedError()(
7749
7784
  "AppManagedUpdateError",
7750
7785
  {}
7751
7786
  ) {
@@ -7755,12 +7790,12 @@ var AppManagedUpdateError = class extends Schema194.TaggedError()(
7755
7790
  };
7756
7791
 
7757
7792
  // apps/server/src/installer/errors/data-directory-busy-error.ts
7758
- import { Schema as Schema195 } from "effect";
7759
- var DataDirectoryBusyError = class extends Schema195.TaggedError()(
7793
+ import { Schema as Schema196 } from "effect";
7794
+ var DataDirectoryBusyError = class extends Schema196.TaggedError()(
7760
7795
  "DataDirectoryBusyError",
7761
7796
  {
7762
- state: Schema195.Literals(["running", "unreadable"]),
7763
- phase: Schema195.Literals(["install", "update"])
7797
+ state: Schema196.Literals(["running", "unreadable"]),
7798
+ phase: Schema196.Literals(["install", "update"])
7764
7799
  }
7765
7800
  ) {
7766
7801
  get message() {
@@ -7769,12 +7804,12 @@ var DataDirectoryBusyError = class extends Schema195.TaggedError()(
7769
7804
  };
7770
7805
 
7771
7806
  // apps/server/src/installer/errors/handed-off-update-failed-error.ts
7772
- import { Schema as Schema196 } from "effect";
7773
- var HandedOffUpdateFailedError = class extends Schema196.TaggedError()(
7807
+ import { Schema as Schema197 } from "effect";
7808
+ var HandedOffUpdateFailedError = class extends Schema197.TaggedError()(
7774
7809
  "HandedOffUpdateFailedError",
7775
7810
  {
7776
- target: Schema196.String,
7777
- reason: Schema196.String
7811
+ target: Schema197.String,
7812
+ reason: Schema197.String
7778
7813
  }
7779
7814
  ) {
7780
7815
  get message() {
@@ -7783,11 +7818,11 @@ var HandedOffUpdateFailedError = class extends Schema196.TaggedError()(
7783
7818
  };
7784
7819
 
7785
7820
  // apps/server/src/installer/errors/install-cleanup-error.ts
7786
- import { Schema as Schema197 } from "effect";
7787
- var InstallCleanupError = class extends Schema197.TaggedError()(
7821
+ import { Schema as Schema198 } from "effect";
7822
+ var InstallCleanupError = class extends Schema198.TaggedError()(
7788
7823
  "InstallCleanupError",
7789
7824
  {
7790
- detail: Schema197.String
7825
+ detail: Schema198.String
7791
7826
  }
7792
7827
  ) {
7793
7828
  get message() {
@@ -7796,8 +7831,8 @@ var InstallCleanupError = class extends Schema197.TaggedError()(
7796
7831
  };
7797
7832
 
7798
7833
  // apps/server/src/installer/errors/installed-service-unhealthy-error.ts
7799
- import { Schema as Schema198 } from "effect";
7800
- var InstalledServiceUnhealthyError = class extends Schema198.TaggedError()(
7834
+ import { Schema as Schema199 } from "effect";
7835
+ var InstalledServiceUnhealthyError = class extends Schema199.TaggedError()(
7801
7836
  "InstalledServiceUnhealthyError",
7802
7837
  {}
7803
7838
  ) {
@@ -7807,8 +7842,8 @@ var InstalledServiceUnhealthyError = class extends Schema198.TaggedError()(
7807
7842
  };
7808
7843
 
7809
7844
  // apps/server/src/installer/errors/interrupted-update-unrecoverable-error.ts
7810
- import { Schema as Schema199 } from "effect";
7811
- var InterruptedUpdateUnrecoverableError = class extends Schema199.TaggedError()(
7845
+ import { Schema as Schema200 } from "effect";
7846
+ var InterruptedUpdateUnrecoverableError = class extends Schema200.TaggedError()(
7812
7847
  "InterruptedUpdateUnrecoverableError",
7813
7848
  {}
7814
7849
  ) {
@@ -7818,11 +7853,11 @@ var InterruptedUpdateUnrecoverableError = class extends Schema199.TaggedError()(
7818
7853
  };
7819
7854
 
7820
7855
  // apps/server/src/installer/errors/invalid-package-version-error.ts
7821
- import { Schema as Schema200 } from "effect";
7822
- var InvalidPackageVersionError = class extends Schema200.TaggedError()(
7856
+ import { Schema as Schema201 } from "effect";
7857
+ var InvalidPackageVersionError = class extends Schema201.TaggedError()(
7823
7858
  "InvalidPackageVersionError",
7824
7859
  {
7825
- version: Schema200.String
7860
+ version: Schema201.String
7826
7861
  }
7827
7862
  ) {
7828
7863
  get message() {
@@ -7831,8 +7866,8 @@ var InvalidPackageVersionError = class extends Schema200.TaggedError()(
7831
7866
  };
7832
7867
 
7833
7868
  // apps/server/src/installer/errors/management-lock-held-error.ts
7834
- import { Schema as Schema201 } from "effect";
7835
- var ManagementLockHeldError = class extends Schema201.TaggedError()(
7869
+ import { Schema as Schema202 } from "effect";
7870
+ var ManagementLockHeldError = class extends Schema202.TaggedError()(
7836
7871
  "ManagementLockHeldError",
7837
7872
  {}
7838
7873
  ) {
@@ -7842,8 +7877,8 @@ var ManagementLockHeldError = class extends Schema201.TaggedError()(
7842
7877
  };
7843
7878
 
7844
7879
  // apps/server/src/installer/errors/not-installed-error.ts
7845
- import { Schema as Schema202 } from "effect";
7846
- var NotInstalledError = class extends Schema202.TaggedError()(
7880
+ import { Schema as Schema203 } from "effect";
7881
+ var NotInstalledError = class extends Schema203.TaggedError()(
7847
7882
  "NotInstalledError",
7848
7883
  {}
7849
7884
  ) {
@@ -7853,8 +7888,8 @@ var NotInstalledError = class extends Schema202.TaggedError()(
7853
7888
  };
7854
7889
 
7855
7890
  // apps/server/src/installer/errors/not-packaged-cli-error.ts
7856
- import { Schema as Schema203 } from "effect";
7857
- var NotPackagedCliError = class extends Schema203.TaggedError()(
7891
+ import { Schema as Schema204 } from "effect";
7892
+ var NotPackagedCliError = class extends Schema204.TaggedError()(
7858
7893
  "NotPackagedCliError",
7859
7894
  {}
7860
7895
  ) {
@@ -7864,8 +7899,8 @@ var NotPackagedCliError = class extends Schema203.TaggedError()(
7864
7899
  };
7865
7900
 
7866
7901
  // apps/server/src/installer/errors/previous-service-unhealthy-error.ts
7867
- import { Schema as Schema204 } from "effect";
7868
- var PreviousServiceUnhealthyError = class extends Schema204.TaggedError()(
7902
+ import { Schema as Schema205 } from "effect";
7903
+ var PreviousServiceUnhealthyError = class extends Schema205.TaggedError()(
7869
7904
  "PreviousServiceUnhealthyError",
7870
7905
  {}
7871
7906
  ) {
@@ -7875,8 +7910,8 @@ var PreviousServiceUnhealthyError = class extends Schema204.TaggedError()(
7875
7910
  };
7876
7911
 
7877
7912
  // apps/server/src/installer/errors/published-version-unknown-error.ts
7878
- import { Schema as Schema205 } from "effect";
7879
- var PublishedVersionUnknownError = class extends Schema205.TaggedError()(
7913
+ import { Schema as Schema206 } from "effect";
7914
+ var PublishedVersionUnknownError = class extends Schema206.TaggedError()(
7880
7915
  "PublishedVersionUnknownError",
7881
7916
  {}
7882
7917
  ) {
@@ -7886,8 +7921,8 @@ var PublishedVersionUnknownError = class extends Schema205.TaggedError()(
7886
7921
  };
7887
7922
 
7888
7923
  // apps/server/src/installer/errors/restored-service-unhealthy-error.ts
7889
- import { Schema as Schema206 } from "effect";
7890
- var RestoredServiceUnhealthyError = class extends Schema206.TaggedError()(
7924
+ import { Schema as Schema207 } from "effect";
7925
+ var RestoredServiceUnhealthyError = class extends Schema207.TaggedError()(
7891
7926
  "RestoredServiceUnhealthyError",
7892
7927
  {}
7893
7928
  ) {
@@ -7897,11 +7932,11 @@ var RestoredServiceUnhealthyError = class extends Schema206.TaggedError()(
7897
7932
  };
7898
7933
 
7899
7934
  // apps/server/src/installer/errors/runtime-install-error.ts
7900
- import { Schema as Schema207 } from "effect";
7901
- var RuntimeInstallError = class extends Schema207.TaggedError()(
7935
+ import { Schema as Schema208 } from "effect";
7936
+ var RuntimeInstallError = class extends Schema208.TaggedError()(
7902
7937
  "RuntimeInstallError",
7903
7938
  {
7904
- detail: Schema207.String
7939
+ detail: Schema208.String
7905
7940
  }
7906
7941
  ) {
7907
7942
  get message() {
@@ -7910,11 +7945,11 @@ var RuntimeInstallError = class extends Schema207.TaggedError()(
7910
7945
  };
7911
7946
 
7912
7947
  // apps/server/src/installer/errors/runtime-native-modules-error.ts
7913
- import { Schema as Schema208 } from "effect";
7914
- var RuntimeNativeModulesError = class extends Schema208.TaggedError()(
7948
+ import { Schema as Schema209 } from "effect";
7949
+ var RuntimeNativeModulesError = class extends Schema209.TaggedError()(
7915
7950
  "RuntimeNativeModulesError",
7916
7951
  {
7917
- detail: Schema208.String
7952
+ detail: Schema209.String
7918
7953
  }
7919
7954
  ) {
7920
7955
  get message() {
@@ -7923,11 +7958,11 @@ var RuntimeNativeModulesError = class extends Schema208.TaggedError()(
7923
7958
  };
7924
7959
 
7925
7960
  // apps/server/src/installer/errors/runtime-split-effect-error.ts
7926
- import { Schema as Schema209 } from "effect";
7927
- var RuntimeSplitEffectError = class extends Schema209.TaggedError()(
7961
+ import { Schema as Schema210 } from "effect";
7962
+ var RuntimeSplitEffectError = class extends Schema210.TaggedError()(
7928
7963
  "RuntimeSplitEffectError",
7929
7964
  {
7930
- copies: Schema209.Array(Schema209.String)
7965
+ copies: Schema210.Array(Schema210.String)
7931
7966
  }
7932
7967
  ) {
7933
7968
  get message() {
@@ -7936,12 +7971,12 @@ var RuntimeSplitEffectError = class extends Schema209.TaggedError()(
7936
7971
  };
7937
7972
 
7938
7973
  // apps/server/src/installer/errors/runtime-version-mismatch-error.ts
7939
- import { Schema as Schema210 } from "effect";
7940
- var RuntimeVersionMismatchError = class extends Schema210.TaggedError()(
7974
+ import { Schema as Schema211 } from "effect";
7975
+ var RuntimeVersionMismatchError = class extends Schema211.TaggedError()(
7941
7976
  "RuntimeVersionMismatchError",
7942
7977
  {
7943
- reported: Schema210.optional(Schema210.String),
7944
- expected: Schema210.String
7978
+ reported: Schema211.optional(Schema211.String),
7979
+ expected: Schema211.String
7945
7980
  }
7946
7981
  ) {
7947
7982
  get message() {
@@ -7950,12 +7985,12 @@ var RuntimeVersionMismatchError = class extends Schema210.TaggedError()(
7950
7985
  };
7951
7986
 
7952
7987
  // apps/server/src/installer/errors/service-command-failed-error.ts
7953
- import { Schema as Schema211 } from "effect";
7954
- var ServiceCommandFailedError = class extends Schema211.TaggedError()(
7988
+ import { Schema as Schema212 } from "effect";
7989
+ var ServiceCommandFailedError = class extends Schema212.TaggedError()(
7955
7990
  "ServiceCommandFailedError",
7956
7991
  {
7957
- description: Schema211.String,
7958
- detail: Schema211.String
7992
+ description: Schema212.String,
7993
+ detail: Schema212.String
7959
7994
  }
7960
7995
  ) {
7961
7996
  get message() {
@@ -7964,12 +7999,12 @@ var ServiceCommandFailedError = class extends Schema211.TaggedError()(
7964
7999
  };
7965
8000
 
7966
8001
  // apps/server/src/installer/errors/service-downgrade-error.ts
7967
- import { Schema as Schema212 } from "effect";
7968
- var ServiceDowngradeError = class extends Schema212.TaggedError()(
8002
+ import { Schema as Schema213 } from "effect";
8003
+ var ServiceDowngradeError = class extends Schema213.TaggedError()(
7969
8004
  "ServiceDowngradeError",
7970
8005
  {
7971
- installed: Schema212.String,
7972
- candidate: Schema212.String
8006
+ installed: Schema213.String,
8007
+ candidate: Schema213.String
7973
8008
  }
7974
8009
  ) {
7975
8010
  get message() {
@@ -7978,11 +8013,11 @@ var ServiceDowngradeError = class extends Schema212.TaggedError()(
7978
8013
  };
7979
8014
 
7980
8015
  // apps/server/src/installer/errors/service-still-active-error.ts
7981
- import { Schema as Schema213 } from "effect";
7982
- var ServiceStillActiveError = class extends Schema213.TaggedError()(
8016
+ import { Schema as Schema214 } from "effect";
8017
+ var ServiceStillActiveError = class extends Schema214.TaggedError()(
7983
8018
  "ServiceStillActiveError",
7984
8019
  {
7985
- after: Schema213.Literals(["stop", "disable"])
8020
+ after: Schema214.Literals(["stop", "disable"])
7986
8021
  }
7987
8022
  ) {
7988
8023
  get message() {
@@ -7991,11 +8026,11 @@ var ServiceStillActiveError = class extends Schema213.TaggedError()(
7991
8026
  };
7992
8027
 
7993
8028
  // apps/server/src/installer/errors/unit-exists-error.ts
7994
- import { Schema as Schema214 } from "effect";
7995
- var UnitExistsError = class extends Schema214.TaggedError()(
8029
+ import { Schema as Schema215 } from "effect";
8030
+ var UnitExistsError = class extends Schema215.TaggedError()(
7996
8031
  "UnitExistsError",
7997
8032
  {
7998
- unitPath: Schema214.String
8033
+ unitPath: Schema215.String
7999
8034
  }
8000
8035
  ) {
8001
8036
  get message() {
@@ -8004,11 +8039,11 @@ var UnitExistsError = class extends Schema214.TaggedError()(
8004
8039
  };
8005
8040
 
8006
8041
  // apps/server/src/installer/errors/unrecognized-unit-error.ts
8007
- import { Schema as Schema215 } from "effect";
8008
- var UnrecognizedUnitError = class extends Schema215.TaggedError()(
8042
+ import { Schema as Schema216 } from "effect";
8043
+ var UnrecognizedUnitError = class extends Schema216.TaggedError()(
8009
8044
  "UnrecognizedUnitError",
8010
8045
  {
8011
- unitPath: Schema215.String
8046
+ unitPath: Schema216.String
8012
8047
  }
8013
8048
  ) {
8014
8049
  get message() {
@@ -8017,8 +8052,8 @@ var UnrecognizedUnitError = class extends Schema215.TaggedError()(
8017
8052
  };
8018
8053
 
8019
8054
  // apps/server/src/installer/errors/latest-update-downgrade-error.ts
8020
- import { Schema as Schema216 } from "effect";
8021
- var LatestUpdateDowngradeError = class extends Schema216.TaggedError()(
8055
+ import { Schema as Schema217 } from "effect";
8056
+ var LatestUpdateDowngradeError = class extends Schema217.TaggedError()(
8022
8057
  "LatestUpdateDowngradeError",
8023
8058
  {}
8024
8059
  ) {
@@ -8028,12 +8063,12 @@ var LatestUpdateDowngradeError = class extends Schema216.TaggedError()(
8028
8063
  };
8029
8064
 
8030
8065
  // apps/server/src/installer/errors/update-failed-error.ts
8031
- import { Schema as Schema217 } from "effect";
8032
- var UpdateFailedError = class extends Schema217.TaggedError()(
8066
+ import { Schema as Schema218 } from "effect";
8067
+ var UpdateFailedError = class extends Schema218.TaggedError()(
8033
8068
  "UpdateFailedError",
8034
8069
  {
8035
- recovery: Schema217.String,
8036
- detail: Schema217.String
8070
+ recovery: Schema218.String,
8071
+ detail: Schema218.String
8037
8072
  }
8038
8073
  ) {
8039
8074
  get message() {
@@ -8042,11 +8077,11 @@ var UpdateFailedError = class extends Schema217.TaggedError()(
8042
8077
  };
8043
8078
 
8044
8079
  // apps/server/src/installer/errors/update-hand-off-error.ts
8045
- import { Schema as Schema218 } from "effect";
8046
- var UpdateHandOffError = class extends Schema218.TaggedError()(
8080
+ import { Schema as Schema219 } from "effect";
8081
+ var UpdateHandOffError = class extends Schema219.TaggedError()(
8047
8082
  "UpdateHandOffError",
8048
8083
  {
8049
- detail: Schema218.String
8084
+ detail: Schema219.String
8050
8085
  }
8051
8086
  ) {
8052
8087
  get message() {
@@ -8055,11 +8090,11 @@ var UpdateHandOffError = class extends Schema218.TaggedError()(
8055
8090
  };
8056
8091
 
8057
8092
  // apps/server/src/installer/errors/update-recovery-error.ts
8058
- import { Schema as Schema219 } from "effect";
8059
- var UpdateRecoveryError = class extends Schema219.TaggedError()(
8093
+ import { Schema as Schema220 } from "effect";
8094
+ var UpdateRecoveryError = class extends Schema220.TaggedError()(
8060
8095
  "UpdateRecoveryError",
8061
8096
  {
8062
- detail: Schema219.String
8097
+ detail: Schema220.String
8063
8098
  }
8064
8099
  ) {
8065
8100
  get message() {
@@ -8068,11 +8103,11 @@ var UpdateRecoveryError = class extends Schema219.TaggedError()(
8068
8103
  };
8069
8104
 
8070
8105
  // apps/server/src/installer/errors/update-restart-error.ts
8071
- import { Schema as Schema220 } from "effect";
8072
- var UpdateRestartError = class extends Schema220.TaggedError()(
8106
+ import { Schema as Schema221 } from "effect";
8107
+ var UpdateRestartError = class extends Schema221.TaggedError()(
8073
8108
  "UpdateRestartError",
8074
8109
  {
8075
- detail: Schema220.String
8110
+ detail: Schema221.String
8076
8111
  }
8077
8112
  ) {
8078
8113
  get message() {
@@ -8081,8 +8116,8 @@ var UpdateRestartError = class extends Schema220.TaggedError()(
8081
8116
  };
8082
8117
 
8083
8118
  // apps/server/src/installer/errors/updated-service-unhealthy-error.ts
8084
- import { Schema as Schema221 } from "effect";
8085
- var UpdatedServiceUnhealthyError = class extends Schema221.TaggedError()(
8119
+ import { Schema as Schema222 } from "effect";
8120
+ var UpdatedServiceUnhealthyError = class extends Schema222.TaggedError()(
8086
8121
  "UpdatedServiceUnhealthyError",
8087
8122
  {}
8088
8123
  ) {
@@ -8092,7 +8127,7 @@ var UpdatedServiceUnhealthyError = class extends Schema221.TaggedError()(
8092
8127
  };
8093
8128
 
8094
8129
  // apps/server/src/installer/errors/installer-error.ts
8095
- var installerErrorSchema = Schema222.Union([
8130
+ var installerErrorSchema = Schema223.Union([
8096
8131
  InstallerOperationError,
8097
8132
  ServiceUpdateRunningError,
8098
8133
  AlreadyInstalledError,
@@ -8130,7 +8165,7 @@ var installerErrorSchema = Schema222.Union([
8130
8165
  UpdateRestartError,
8131
8166
  UpdatedServiceUnhealthyError
8132
8167
  ]);
8133
- var isInstallerError = Schema222.is(installerErrorSchema);
8168
+ var isInstallerError = Schema223.is(installerErrorSchema);
8134
8169
 
8135
8170
  // apps/server/src/installer/failure-detail.ts
8136
8171
  function failureDetail(error) {
@@ -8587,14 +8622,14 @@ var install = Effect35.fn("Installer.install")(function* (context, settings) {
8587
8622
  });
8588
8623
 
8589
8624
  // apps/server/src/runtime/directory-lock.ts
8590
- import { Clock as Clock3, DateTime as DateTime3, Effect as Effect36, FileSystem as FileSystem9, Path as Path6, Schema as Schema223 } from "effect";
8625
+ import { Clock as Clock3, DateTime as DateTime3, Effect as Effect36, FileSystem as FileSystem9, Path as Path6, Schema as Schema224 } from "effect";
8591
8626
  import * as PlatformError3 from "effect/PlatformError";
8592
8627
  import { randomUUID as randomUUID5 } from "node:crypto";
8593
- var lockOwnerSchema = Schema223.Struct({
8594
- pid: Schema223.Int,
8595
- token: Schema223.String,
8596
- bootId: Schema223.optional(Schema223.String),
8597
- startTime: Schema223.optional(Schema223.String)
8628
+ var lockOwnerSchema = Schema224.Struct({
8629
+ pid: Schema224.Int,
8630
+ token: Schema224.String,
8631
+ bootId: Schema224.optional(Schema224.String),
8632
+ startTime: Schema224.optional(Schema224.String)
8598
8633
  });
8599
8634
  var OWNER_FILE = "owner.json";
8600
8635
  function processIsAlive(pid) {
@@ -8609,7 +8644,7 @@ var ownerOf = Effect36.fn("DirectoryLock.ownerOf")(
8609
8644
  (fs, pathApi, lock) => fs.readFileString(pathApi.join(lock, OWNER_FILE)).pipe(
8610
8645
  Effect36.map((text) => {
8611
8646
  try {
8612
- return Schema223.decodeUnknownSync(lockOwnerSchema)(JSON.parse(text));
8647
+ return Schema224.decodeUnknownSync(lockOwnerSchema)(JSON.parse(text));
8613
8648
  } catch {
8614
8649
  return void 0;
8615
8650
  }
@@ -9733,37 +9768,37 @@ var openAppManagedUpdateRunner = Effect46.fn(
9733
9768
  import { Effect as Effect48 } from "effect";
9734
9769
 
9735
9770
  // packages/contracts/src/access/protocols.ts
9736
- import { HttpApiEndpoint as HttpApiEndpoint7, HttpApiGroup as HttpApiGroup7, HttpApiSchema as HttpApiSchema4 } from "effect/http-api";
9771
+ import { HttpApiEndpoint as HttpApiEndpoint8, HttpApiGroup as HttpApiGroup8, HttpApiSchema as HttpApiSchema5 } from "effect/http-api";
9737
9772
 
9738
9773
  // packages/contracts/src/access/mcp-http.ts
9739
- import { Schema as Schema224 } from "effect";
9740
- var mcpPayloadSchema = Schema224.Unknown;
9741
- var mcpAcceptedResponseSchema = Schema224.Undefined;
9774
+ import { Schema as Schema225 } from "effect";
9775
+ var mcpPayloadSchema = Schema225.Unknown;
9776
+ var mcpAcceptedResponseSchema = Schema225.Undefined;
9742
9777
 
9743
9778
  // packages/contracts/src/access/protocols.ts
9744
9779
  var LiveUpdatesApi = class extends porcelainApi.add(
9745
- HttpApiGroup7.make("live").add(
9746
- HttpApiEndpoint7.get("liveUpdates", "/api/live", {
9780
+ HttpApiGroup8.make("live").add(
9781
+ HttpApiEndpoint8.get("liveUpdates", "/api/live", {
9747
9782
  disableCodecs: true,
9748
9783
  query: liveUpdatesQuerySchema.fields,
9749
9784
  success: liveUpgradeResponseSchema.pipe(
9750
- HttpApiSchema4.asNoContent({ decode: () => void 0 }),
9751
- HttpApiSchema4.status("SwitchingProtocols")
9785
+ HttpApiSchema5.asNoContent({ decode: () => void 0 }),
9786
+ HttpApiSchema5.status("SwitchingProtocols")
9752
9787
  )
9753
9788
  })
9754
9789
  ).middleware(PairedRequest)
9755
9790
  ) {
9756
9791
  };
9757
9792
  var ReviewMcpApi = class extends porcelainApi.add(
9758
- HttpApiGroup7.make("reviewMcp").add(
9759
- HttpApiEndpoint7.post("reviewMcp", "/mcp", {
9793
+ HttpApiGroup8.make("reviewMcp").add(
9794
+ HttpApiEndpoint8.post("reviewMcp", "/mcp", {
9760
9795
  disableCodecs: true,
9761
9796
  payload: mcpPayloadSchema,
9762
9797
  success: [
9763
9798
  mcpPayloadSchema,
9764
9799
  mcpAcceptedResponseSchema.pipe(
9765
- HttpApiSchema4.asNoContent({ decode: () => void 0 }),
9766
- HttpApiSchema4.status("Accepted")
9800
+ HttpApiSchema5.asNoContent({ decode: () => void 0 }),
9801
+ HttpApiSchema5.status("Accepted")
9767
9802
  )
9768
9803
  ]
9769
9804
  })
@@ -9775,7 +9810,7 @@ var ReviewMcpApi = class extends porcelainApi.add(
9775
9810
  import qrcode from "qrcode-terminal";
9776
9811
 
9777
9812
  // apps/server/src/cli/owner-client.ts
9778
- import { Effect as Effect47, Schema as Schema227 } from "effect";
9813
+ import { Effect as Effect47, Schema as Schema228 } from "effect";
9779
9814
  import {
9780
9815
  HttpClient,
9781
9816
  HttpClientRequest,
@@ -9787,21 +9822,21 @@ import { NodeHttpClient } from "@effect/platform-node";
9787
9822
  import { connect } from "node:net";
9788
9823
 
9789
9824
  // apps/server/src/cli/errors/owner-request-error.ts
9790
- import { Schema as Schema225 } from "effect";
9791
- var OwnerRequestError = class extends Schema225.TaggedError()(
9825
+ import { Schema as Schema226 } from "effect";
9826
+ var OwnerRequestError = class extends Schema226.TaggedError()(
9792
9827
  "OwnerRequestError",
9793
9828
  {
9794
- message: Schema225.String
9829
+ message: Schema226.String
9795
9830
  }
9796
9831
  ) {
9797
9832
  };
9798
9833
 
9799
9834
  // apps/server/src/cli/errors/owner-socket-timeout-error.ts
9800
- import { Schema as Schema226 } from "effect";
9801
- var OwnerSocketTimeoutError = class extends Schema226.TaggedError()(
9835
+ import { Schema as Schema227 } from "effect";
9836
+ var OwnerSocketTimeoutError = class extends Schema227.TaggedError()(
9802
9837
  "OwnerSocketTimeoutError",
9803
9838
  {
9804
- message: Schema226.String
9839
+ message: Schema227.String
9805
9840
  }
9806
9841
  ) {
9807
9842
  };
@@ -9879,7 +9914,7 @@ var ownerClient = Effect47.fn("ownerClient")(function* (dataDirectory2, timeoutM
9879
9914
  httpClient: ownerHttpClient(dataDirectory2, timeoutMs)
9880
9915
  });
9881
9916
  });
9882
- var errorMessageSchema = Schema227.Struct({ message: Schema227.String });
9917
+ var errorMessageSchema = Schema228.Struct({ message: Schema228.String });
9883
9918
  var ownerRequest = (request2) => request2.pipe(
9884
9919
  Effect47.catch(
9885
9920
  (error) => Effect47.gen(function* () {
@@ -9898,7 +9933,7 @@ var ownerRequest = (request2) => request2.pipe(
9898
9933
  }
9899
9934
  }
9900
9935
  return yield* new OwnerRequestError({
9901
- message: Schema227.isSchemaError(error) ? "The server answered unrecognizably." : reasonOf(error)
9936
+ message: Schema228.isSchemaError(error) ? "The server answered unrecognizably." : reasonOf(error)
9902
9937
  });
9903
9938
  })
9904
9939
  )
@@ -10664,7 +10699,7 @@ var CliOperations = class _CliOperations extends Context72.Service()("@porcelain
10664
10699
  // apps/server/src/cli/settings.ts
10665
10700
  import { dirname as dirname2, join as join2, parse, resolve } from "node:path";
10666
10701
  import { fileURLToPath as fileURLToPath3 } from "node:url";
10667
- import { Context as Context73, Effect as Effect55, Option as Option13, Schema as Schema228 } from "effect";
10702
+ import { Context as Context73, Effect as Effect55, Option as Option13, Schema as Schema229 } from "effect";
10668
10703
  var CliInvocation = class extends Context73.Service()("@porcelain/server/CliInvocation") {
10669
10704
  };
10670
10705
  var defaultWebRoot = resolve(
@@ -10704,7 +10739,7 @@ var serverSettingsFor = Effect55.fn("Cli.serverSettings")(
10704
10739
  projectHome: environment.projectHome ?? homeDirectory,
10705
10740
  host,
10706
10741
  port: Option13.getOrElse(input.port, () => environment.port),
10707
- webRoot: Schema228.decodeUnknownSync(absolutePathSchema2)(
10742
+ webRoot: Schema229.decodeUnknownSync(absolutePathSchema2)(
10708
10743
  environment.webRoot ?? webRoot
10709
10744
  ),
10710
10745
  allowedHosts: [
@@ -10746,8 +10781,8 @@ var serveFlags = {
10746
10781
  ),
10747
10782
  lan: Flag.Boolean("lan").pipe(Flag.withDefault(false))
10748
10783
  };
10749
- var originSchema = Schema229.String.check(
10750
- Schema229.makeFilter(
10784
+ var originSchema = Schema230.String.check(
10785
+ Schema230.makeFilter(
10751
10786
  (value2) => {
10752
10787
  try {
10753
10788
  const url = new URL(value2);
@@ -10832,7 +10867,7 @@ var pair = Command.make(
10832
10867
  var revoke = Command.make(
10833
10868
  "revoke",
10834
10869
  {
10835
- id: Argument.String("id").pipe(Argument.withSchema(Schema229.NonEmptyString))
10870
+ id: Argument.String("id").pipe(Argument.withSchema(Schema230.NonEmptyString))
10836
10871
  },
10837
10872
  Effect56.fn("Cli.revokeCommand")(function* (input) {
10838
10873
  const operations2 = yield* CliOperations;
@@ -10848,7 +10883,7 @@ var trustCommand = (name, trusted) => Command.make(
10848
10883
  name,
10849
10884
  {
10850
10885
  id: Argument.String("id").pipe(
10851
- Argument.withSchema(Schema229.NonEmptyString)
10886
+ Argument.withSchema(Schema230.NonEmptyString)
10852
10887
  )
10853
10888
  },
10854
10889
  Effect56.fn(`Cli.${name}Command`)(function* (input) {
@@ -10915,7 +10950,7 @@ var share = Command.make(
10915
10950
  "tailscale",
10916
10951
  {
10917
10952
  hostname: Argument.String("hostname").pipe(
10918
- Argument.withSchema(Schema229.NonEmptyString)
10953
+ Argument.withSchema(Schema230.NonEmptyString)
10919
10954
  )
10920
10955
  },
10921
10956
  ({ hostname: hostname2 }) => shareHandler({
@@ -10927,7 +10962,7 @@ var share = Command.make(
10927
10962
  "cloudflare",
10928
10963
  {
10929
10964
  hostname: Argument.String("hostname").pipe(
10930
- Argument.withSchema(Schema229.NonEmptyString)
10965
+ Argument.withSchema(Schema230.NonEmptyString)
10931
10966
  )
10932
10967
  },
10933
10968
  ({ hostname: hostname2 }) => shareHandler({
@@ -11334,7 +11369,7 @@ import {
11334
11369
  FileSystem as FileSystem18,
11335
11370
  Layer as Layer30,
11336
11371
  Path as Path13,
11337
- Schema as Schema234
11372
+ Schema as Schema235
11338
11373
  } from "effect";
11339
11374
  import { ChildProcessSpawner as ChildProcessSpawner3 } from "effect/process";
11340
11375
 
@@ -11362,7 +11397,7 @@ var findExecutable = Effect63.fn("Provider.findExecutable")(function* (name) {
11362
11397
  });
11363
11398
 
11364
11399
  // packages/agents/src/commit-planning/commands/coding-model.ts
11365
- import { Effect as Effect64, JsonSchema, Layer as Layer29, Schema as Schema230, Stream as Stream4 } from "effect";
11400
+ import { Effect as Effect64, JsonSchema, Layer as Layer29, Schema as Schema231, Stream as Stream4 } from "effect";
11366
11401
  import { AiError, LanguageModel, Model as Model16 } from "effect/ai";
11367
11402
  function codingModel(provider, model, answer2) {
11368
11403
  return Model16.make(
@@ -11386,7 +11421,7 @@ function codingModel(provider, model, answer2) {
11386
11421
  );
11387
11422
  const prompt = message.content.map((part) => part.type === "text" ? part.text : "").join("");
11388
11423
  const document = JsonSchema.toDocumentDraft07(
11389
- Schema230.toJsonSchemaDocument(options.responseFormat.schema, {
11424
+ Schema231.toJsonSchemaDocument(options.responseFormat.schema, {
11390
11425
  onExcessProperty: "error"
11391
11426
  })
11392
11427
  );
@@ -11400,7 +11435,7 @@ function codingModel(provider, model, answer2) {
11400
11435
  (error) => AiError.make({
11401
11436
  module: provider,
11402
11437
  method: "generateObject",
11403
- reason: error instanceof Schema230.SchemaError ? AiError.InvalidOutputError.fromSchemaError(error) : new AiError.InternalProviderError({
11438
+ reason: error instanceof Schema231.SchemaError ? AiError.InvalidOutputError.fromSchemaError(error) : new AiError.InternalProviderError({
11404
11439
  description: error.message
11405
11440
  })
11406
11441
  })
@@ -11427,10 +11462,10 @@ function codingModel(provider, model, answer2) {
11427
11462
  import { Effect as Effect65 } from "effect";
11428
11463
 
11429
11464
  // packages/agents/src/commit-planning/errors/provider-process-failed-error.ts
11430
- import { Schema as Schema231 } from "effect";
11431
- var ProviderProcessFailedError = class extends Schema231.TaggedError()(
11465
+ import { Schema as Schema232 } from "effect";
11466
+ var ProviderProcessFailedError = class extends Schema232.TaggedError()(
11432
11467
  "ProviderProcessFailedError",
11433
- { cause: Schema231.optional(Schema231.Unknown) }
11468
+ { cause: Schema232.optional(Schema232.Unknown) }
11434
11469
  ) {
11435
11470
  get message() {
11436
11471
  return "Commit generation failed. Check that the selected CLI is up to date and signed in.";
@@ -11467,8 +11502,8 @@ var readBoundedText = Effect66.fn("Provider.readBoundedText")(function* (file, m
11467
11502
  });
11468
11503
 
11469
11504
  // packages/agents/src/commit-planning/errors/provider-not-installed-error.ts
11470
- import { Schema as Schema232 } from "effect";
11471
- var ProviderNotInstalledError = class extends Schema232.TaggedError()(
11505
+ import { Schema as Schema233 } from "effect";
11506
+ var ProviderNotInstalledError = class extends Schema233.TaggedError()(
11472
11507
  "ProviderNotInstalledError",
11473
11508
  {}
11474
11509
  ) {
@@ -11478,25 +11513,25 @@ var ProviderNotInstalledError = class extends Schema232.TaggedError()(
11478
11513
  };
11479
11514
 
11480
11515
  // packages/agents/src/commit-planning/parsers/parse-provider-answer.ts
11481
- import { Effect as Effect67, Schema as Schema233 } from "effect";
11482
- var claudeEnvelopeSchema = Schema233.fromJsonString(
11483
- Schema233.Struct({ structured_output: Schema233.Json })
11516
+ import { Effect as Effect67, Schema as Schema234 } from "effect";
11517
+ var claudeEnvelopeSchema = Schema234.fromJsonString(
11518
+ Schema234.Struct({ structured_output: Schema234.Json })
11484
11519
  );
11485
- var codexAnswerSchema = Schema233.fromJsonString(Schema233.Json);
11486
- var claudeAnswer = (output2) => Schema233.decodeUnknownEffect(claudeEnvelopeSchema)(output2).pipe(
11520
+ var codexAnswerSchema = Schema234.fromJsonString(Schema234.Json);
11521
+ var claudeAnswer = (output2) => Schema234.decodeUnknownEffect(claudeEnvelopeSchema)(output2).pipe(
11487
11522
  Effect67.map((reply) => reply.structured_output)
11488
11523
  );
11489
- var codexAnswer = Schema233.decodeUnknownEffect(codexAnswerSchema);
11524
+ var codexAnswer = Schema234.decodeUnknownEffect(codexAnswerSchema);
11490
11525
 
11491
11526
  // packages/agents/src/commit-planning/codex-provider.ts
11492
11527
  var modelSlug = /^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$/;
11493
- var modelCacheSchema = Schema234.fromJsonString(
11494
- Schema234.Struct({
11495
- models: Schema234.Array(
11496
- Schema234.Struct({
11497
- slug: Schema234.String,
11498
- display_name: Schema234.String,
11499
- visibility: Schema234.optional(Schema234.String)
11528
+ var modelCacheSchema = Schema235.fromJsonString(
11529
+ Schema235.Struct({
11530
+ models: Schema235.Array(
11531
+ Schema235.Struct({
11532
+ slug: Schema235.String,
11533
+ display_name: Schema235.String,
11534
+ visibility: Schema235.optional(Schema235.String)
11500
11535
  })
11501
11536
  )
11502
11537
  })
@@ -11525,7 +11560,7 @@ var CodexProvider = class _CodexProvider extends Context87.Service()(
11525
11560
  path.join(home, "models_cache.json"),
11526
11561
  limits.codexCacheBytes
11527
11562
  ).pipe(Effect68.provideService(FileSystem18.FileSystem, fs));
11528
- const listed2 = yield* Schema234.decodeUnknownEffect(modelCacheSchema)(text);
11563
+ const listed2 = yield* Schema235.decodeUnknownEffect(modelCacheSchema)(text);
11529
11564
  return listed2.models.filter(
11530
11565
  (model) => model.visibility === "list" && modelSlug.test(model.slug)
11531
11566
  ).map((model) => ({
@@ -11697,7 +11732,7 @@ var ClaudeProvider = class _ClaudeProvider extends Context88.Service()(
11697
11732
  };
11698
11733
 
11699
11734
  // packages/agents/src/commit-planning/commit-planner.ts
11700
- import { Context as Context89, Effect as Effect70, Layer as Layer32, Schema as Schema238 } from "effect";
11735
+ import { Context as Context89, Effect as Effect70, Layer as Layer32, Schema as Schema239 } from "effect";
11701
11736
  import { AiError as AiError2, LanguageModel as LanguageModel2 } from "effect/ai";
11702
11737
 
11703
11738
  // packages/agents/src/commit-planning/commands/plan-commit.ts
@@ -11713,31 +11748,31 @@ function commitPlanPrompt(request2) {
11713
11748
  }
11714
11749
 
11715
11750
  // packages/agents/src/commit-planning/dtos/commit-plan-schema.ts
11716
- import { Schema as Schema235 } from "effect";
11751
+ import { Schema as Schema236 } from "effect";
11717
11752
  function commitPlanSchema(limits) {
11718
- return Schema235.Struct({
11719
- groups: Schema235.Array(
11720
- Schema235.Struct({
11721
- message: Schema235.String.check(
11722
- Schema235.isMinLength(1),
11723
- Schema235.isMaxLength(limits.maxMessageLength)
11753
+ return Schema236.Struct({
11754
+ groups: Schema236.Array(
11755
+ Schema236.Struct({
11756
+ message: Schema236.String.check(
11757
+ Schema236.isMinLength(1),
11758
+ Schema236.isMaxLength(limits.maxMessageLength)
11724
11759
  ),
11725
- paths: Schema235.Array(
11726
- Schema235.String.check(
11727
- Schema235.isMinLength(1),
11728
- Schema235.isMaxLength(limits.maxPathLength)
11760
+ paths: Schema236.Array(
11761
+ Schema236.String.check(
11762
+ Schema236.isMinLength(1),
11763
+ Schema236.isMaxLength(limits.maxPathLength)
11729
11764
  )
11730
- ).check(Schema235.isMinLength(1), Schema235.isMaxLength(limits.maxPaths))
11765
+ ).check(Schema236.isMinLength(1), Schema236.isMaxLength(limits.maxPaths))
11731
11766
  })
11732
- ).check(Schema235.isMinLength(1), Schema235.isMaxLength(limits.maxGroups))
11767
+ ).check(Schema236.isMinLength(1), Schema236.isMaxLength(limits.maxGroups))
11733
11768
  });
11734
11769
  }
11735
11770
 
11736
11771
  // packages/agents/src/commit-planning/errors/commit-plan-failed-error.ts
11737
- import { Schema as Schema236 } from "effect";
11738
- var CommitPlanFailedError = class extends Schema236.TaggedError()(
11772
+ import { Schema as Schema237 } from "effect";
11773
+ var CommitPlanFailedError = class extends Schema237.TaggedError()(
11739
11774
  "CommitPlanFailedError",
11740
- { cause: Schema236.optional(Schema236.Unknown) }
11775
+ { cause: Schema237.optional(Schema237.Unknown) }
11741
11776
  ) {
11742
11777
  get message() {
11743
11778
  return "Commit generation failed.";
@@ -11745,8 +11780,8 @@ var CommitPlanFailedError = class extends Schema236.TaggedError()(
11745
11780
  };
11746
11781
 
11747
11782
  // packages/agents/src/commit-planning/errors/unsupported-commit-model-error.ts
11748
- import { Schema as Schema237 } from "effect";
11749
- var UnsupportedCommitModelError2 = class extends Schema237.TaggedError()(
11783
+ import { Schema as Schema238 } from "effect";
11784
+ var UnsupportedCommitModelError2 = class extends Schema238.TaggedError()(
11750
11785
  "UnsupportedCommitModelError",
11751
11786
  {}
11752
11787
  ) {
@@ -11787,8 +11822,8 @@ var CommitPlanner = class _CommitPlanner extends Context89.Service()("@porcelain
11787
11822
  (cause) => cause.reason instanceof AiError2.InvalidOutputError || cause.reason instanceof AiError2.StructuredOutputError || cause.reason instanceof AiError2.UnsupportedSchemaError ? new CommitPlanFailedError({ cause }) : new ProviderProcessFailedError({ cause })
11788
11823
  )
11789
11824
  );
11790
- const plan = yield* Schema238.decodeUnknownEffect(
11791
- Schema238.fromJsonString(schema),
11825
+ const plan = yield* Schema239.decodeUnknownEffect(
11826
+ Schema239.fromJsonString(schema),
11792
11827
  { onExcessProperty: "error" }
11793
11828
  )(response2.text).pipe(
11794
11829
  Effect70.mapError((cause) => new CommitPlanFailedError({ cause }))
@@ -11811,8 +11846,8 @@ import { Effect as Effect75, FileSystem as FileSystem21 } from "effect";
11811
11846
  import { Effect as Effect71 } from "effect";
11812
11847
 
11813
11848
  // packages/git/src/shared/errors/invalid-worktree-inventory-error.ts
11814
- import { Schema as Schema239 } from "effect";
11815
- var InvalidWorktreeInventoryError = class extends Schema239.TaggedError()(
11849
+ import { Schema as Schema240 } from "effect";
11850
+ var InvalidWorktreeInventoryError = class extends Schema240.TaggedError()(
11816
11851
  "InvalidWorktreeInventoryError",
11817
11852
  {}
11818
11853
  ) {
@@ -11937,8 +11972,8 @@ import { Effect as Effect74 } from "effect";
11937
11972
  import { devNull } from "node:os";
11938
11973
 
11939
11974
  // packages/git/src/shared/errors/git-output-limit-error.ts
11940
- import { Schema as Schema240 } from "effect";
11941
- var GitOutputLimitError = class extends Schema240.TaggedError()(
11975
+ import { Schema as Schema241 } from "effect";
11976
+ var GitOutputLimitError = class extends Schema241.TaggedError()(
11942
11977
  "GitOutputLimitError",
11943
11978
  {}
11944
11979
  ) {
@@ -13400,7 +13435,7 @@ var httpRouteListenerRunnerLayer = (target) => Layer60.effect(
13400
13435
  );
13401
13436
 
13402
13437
  // apps/server/src/adapters/access/http-tunnel-probe.ts
13403
- import { Clock as Clock11, Effect as Effect108, Layer as Layer61, Result as Result7, Schema as Schema241 } from "effect";
13438
+ import { Clock as Clock11, Effect as Effect108, Layer as Layer61, Result as Result7, Schema as Schema242 } from "effect";
13404
13439
  import { HttpApiClient as HttpApiClient2 } from "effect/http-api";
13405
13440
  import { FetchHttpClient, HttpClient as HttpClient2 } from "effect/http";
13406
13441
  var httpTunnelProbeLayer = (options) => Layer61.effect(
@@ -13435,7 +13470,7 @@ var httpTunnelProbeLayer = (options) => Layer61.effect(
13435
13470
  ),
13436
13471
  Effect108.catch(() => Effect108.succeed(void 0))
13437
13472
  );
13438
- const health = Schema241.decodeUnknownResult(readHealthResponseSchema)(
13473
+ const health = Schema242.decodeUnknownResult(readHealthResponseSchema)(
13439
13474
  body
13440
13475
  );
13441
13476
  return Result7.isSuccess(health) ? { kind: "answered", environmentId: health.success.environmentId } : { kind: "foreign" };
@@ -15849,7 +15884,7 @@ import { Effect as Effect152, Layer as Layer78 } from "effect";
15849
15884
  import { HttpRouter as HttpRouter3 } from "effect/http";
15850
15885
 
15851
15886
  // apps/server/src/http/request-context.ts
15852
- import { Context as Context120, Effect as Effect151, Layer as Layer77, Schema as Schema242 } from "effect";
15887
+ import { Context as Context120, Effect as Effect151, Layer as Layer77, Schema as Schema243 } from "effect";
15853
15888
  var RequestContext = class extends Context120.Service()("@porcelain/server/RequestContext") {
15854
15889
  };
15855
15890
  var requestServices = Layer77.mergeAll(
@@ -15869,7 +15904,7 @@ var requestServices = Layer77.mergeAll(
15869
15904
  PairedRequest,
15870
15905
  (httpEffect) => Effect151.flatMap(
15871
15906
  Effect151.serviceOption(RequestContext),
15872
- (context) => context._tag === "Some" && Schema242.is(RequestCaller.schema)(context.value.principal) ? Effect151.provideService(
15907
+ (context) => context._tag === "Some" && Schema243.is(RequestCaller.schema)(context.value.principal) ? Effect151.provideService(
15873
15908
  httpEffect,
15874
15909
  RequestCaller,
15875
15910
  context.value.principal
@@ -15948,17 +15983,6 @@ import { Effect as Effect228, Layer as Layer152 } from "effect";
15948
15983
  import { McpServer } from "effect/ai";
15949
15984
  import { HttpServerRequest as HttpServerRequest2 } from "effect/http";
15950
15985
 
15951
- // packages/contracts/src/reviews/review-summary.ts
15952
- import { Schema as Schema243 } from "effect";
15953
- var readReviewSummaryParamsSchema = Schema243.Struct({
15954
- token: Schema243.String.check(Schema243.isUUID())
15955
- });
15956
- var readReviewSummaryQuerySchema = Schema243.Struct({
15957
- expires: isoDateTimeSchema,
15958
- signature: Schema243.String.check(Schema243.isPattern(/^[A-Za-z0-9_-]{43}$/))
15959
- });
15960
- var readReviewSummaryResponseSchema = Schema243.String;
15961
-
15962
15986
  // packages/contracts/src/reviews/review-tools.ts
15963
15987
  import { Effect as Effect153, Schema as Schema244 } from "effect";
15964
15988
  var reviewToolScopeSchema = Schema244.Struct({
@@ -16007,28 +16031,6 @@ var resolveCommentToolRequestSchema = Schema244.Struct({
16007
16031
  }
16008
16032
  });
16009
16033
 
16010
- // packages/contracts/src/reviews/summary-api.ts
16011
- import { HttpApiEndpoint as HttpApiEndpoint8, HttpApiGroup as HttpApiGroup8, HttpApiSchema as HttpApiSchema5 } from "effect/http-api";
16012
- var ReviewSummaryApi = class extends porcelainApi.add(
16013
- HttpApiGroup8.make("reviewSummary").add(
16014
- HttpApiEndpoint8.get("readReviewSummary", "/review-summaries/:token", {
16015
- disableCodecs: true,
16016
- params: readReviewSummaryParamsSchema,
16017
- query: readReviewSummaryQuerySchema.fields,
16018
- success: readReviewSummaryResponseSchema.pipe(
16019
- HttpApiSchema5.asText({ contentType: "text/html; charset=utf-8" })
16020
- ),
16021
- error: ReviewSummaryNotFoundError.pipe(
16022
- HttpApiSchema5.asNoContent({
16023
- decode: () => new ReviewSummaryNotFoundError()
16024
- }),
16025
- HttpApiSchema5.status("NotFound")
16026
- )
16027
- })
16028
- )
16029
- ) {
16030
- };
16031
-
16032
16034
  // packages/contracts/src/reviews/review-toolkit.ts
16033
16035
  import { Schema as Schema245 } from "effect";
16034
16036
  import { Tool, Toolkit } from "effect/ai";